В този курс за техники за учене в ансамбъл преминахме през две статии. Когато в Статия 1 говорихме за основната идея зад всички прости и усъвършенствани техники за ансамбълно обучение, а в Статия 2 обсъждахме идеята как можем да приложим прости техники за ансамбълно обучение. В заключение на двете статии можем да кажем, че ансамбълното обучение е машинно обучение, което е техника, която генерира решения въз основа на решенията на множество модели. Когато говорим за прости техники за обучение в ансамбъл, можем да кажем, че обобщените резултати от тези методи са резултат от проста математика. В тази статия ще обсъдим усъвършенстваните техники за изпълнение на ансамбълно обучение. По време на курса ще следваме съдържанието по-долу.

Съдържание:

  • Подреждане
  1. Обяснение
  2. Внедряване
  • Смесване
  1. Обяснение
  2. Внедряване
  • Пакетиране
  1. Обяснение
  2. Внедряване

Подреждане

Обяснение:

Както беше обсъдено в член 1, подреждането е усъвършенстван метод за обучение на ансамбъл, при който прикрепяме няколко модела последователно, или можем да кажем, че добавяме модели един след друг. С прости думи можем да кажем, че идеята зад групирането на стекове е, че моделите, които са подредени, се учат от прогнозите на базовите модели. Ето как моделът на метода на подреждане научава сложната връзка между прогнозата на базовите модели и целевите променливи.

Подреждането може да бъде оптимален избор, когато основните режими са разнообразни и допълващи се в своите прогнози. Едно нещо, което е важно тук, е, че подреждането може да бъде предразположено към пренастройване, ако не се изпълнява внимателно. Нека да разгледаме как можем да го приложим.

Внедряване

За да приложим обучението за групиране на подреждане, ще използваме популярния проблем за класификация на рака на гърдата, който описва възможността за рак на гърдата въз основа на различни симптоми и стойности. Нека започнем изпълнението, като импортираме данните и необходимата библиотека.

Импортиране на библиотеки

от sklearn.datasets импортирайте load_breast_cancer

от sklearn.model_selection import train_test_split

от sklearn.linear_model import LogisticRegression

от sklearn.ensemble импортиране на RandomForestClassifier

от sklearn.svm импортирайте SVC

от sklearn.metrics импортирайте accuracy_score

Импортиране на данни

данни = load_breast_cancer()

X, y = data.data, data.target

печат (X)

print(y)

Изход:

Тук можем да видим целевите и независимите променливи в данните. Нека проверим другите подробности за данните.

print(“Имена на функции: \n”, data.feature_names)

print(“Имена на цели: \n”, data.target_names)

print(“Data Shape: \n”, data.data.shape)

Изход:

Предварителна обработка на данни

Нека разделим модела.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print(“Train set shape:”, X_train.shape, y_train.shape)

print(“Test set shape:”, X_test.shape, y_test.shape)

Изход:

Нека дефинираме три модела, които ще използваме в обучението на стеков ансамбъл.

model1 = LogisticRegression(random_state=42)

model2 = RandomForestClassifier(n_estimators=100, random_state=42)

модел3 = SVC(вероятност=Истина)

Нека обучим базовите модели в данните за обучение.

model1.fit(X_train, y_train)

model2.fit(X_train, y_train)

model3.fit(X_train, y_train)

Сега от нас се изисква да направим прогнозата, използвайки тестовия набор и обучените модели

pred1 = model1.predict(X_test)

pred2 = model2.predict(X_test)

pred3 = model3.predict(X_test)

След като направим прогнозата, ние сме готови да обучим моделите за подреждане, като използваме прогнозите, дадени от базовите модели:

импортиране на numpy като np

stacking_input = np.column_stack((pred1, pred2, pred3))

stacking_model = LogisticRegression(random_state=42)

stacking_model.fit(stacking_input, y_test)

Изход:

Нека направим прогнозите за набора за тестване, като използваме модела на подреждане.

stacking_pred = stacking_model.predict(stacking_input)

Тук получаваме нашите окончателни прогнози. Сега сме готови да оценим ефективността на модела за подреждане.

stacking_accuracy = accuracy_score(y_test, stacking_pred)

print(“Точност на подреждане:”, stacking_accuracy)

Изход:

Нека проверим производителността въз основа на матрицата на объркване:

от sklearn.metrics импортирайте confusion_matrix

cm = confusion_matrix(y_test, stacking_pred)

print(“Матрица на объркване:”)

печат (cm)

Изход:

Тук получаваме матрицата на объркването и като я погледнем, можем да кажем, че представянето на модела е добро. Сега нека преминем към метода на обучение в ансамбъл.

Смесване

Обяснение

В член 1 научихме, че с този метод използваме данни за валидиране, което прави смесването различно от метода на подреждане. Тук използваме данни за валидиране, за да правим прогнози. Валидирането и прогнозирането с помощта на набора за валидиране се използват за изпълнение на теста. Тук последните две стъпки правят разликата, тъй като наборът за валидиране и прогнозите, направени с помощта на набора за валидиране, помагат на новите модели да бъдат обучени. Да видим изпълнението.

Внедряване

Сега знаем, че при смесването просто трябва да разделим данните по различен начин и тук, в тази реализация, ще започнем процеса оттам, само за да можем да направим статията компактна по размер. Да започнем процеса:

Обработка на данни

Разделяне на данни в три групи.

X_train, X_validation, y_train, y_validation = train_test_split(X, y, test_size=0.2, random_state=42)

X_validation, X_test, y_validation, y_test = train_test_split(X_validation, y_validation, test_size=0.5, random_state=42)

print(“Train set shape:”, X_train.shape, y_train.shape)

print(“Форма на комплекта за проверка”, X_validation.shape, y_validation.shape)

print(“Test set shape:”, X_test.shape, y_test.shape)

Изход:

Тук в горните кодове сме разделили данните на влак и набори за валидиране. И след това разделяме набора за валидиране на тестови набори.

Изготвяне на прогнози

Правене на прогнози с помощта на набора за валидиране.

pred1_validation = model1.predict(X_validation)

pred2_validation = model2.predict(X_validation)

pred3_validation = model3.predict(X_validation)

Нека комбинираме прогнозите на базовите модели в набора за валидиране.

blending_input = [пред1_валидация, pred2_валидация, pred3_валидация]

blending_input = np.transpose(blending_input)

След като комбинираме прогнозите въз основа на валидиране, можем да обучим смесения модел на смесен вход.

blending_model = LogisticRegression(random_state=42)

blending_model.fit(blending_input, y_validation)

Изход:

Нека направим окончателната прогноза, като използваме смесения модел и набор от тестове.

blending_pred = blending_model.predict(blending_input)

Сега сме готови да оценим модела. Нека проверим точността на модела.

blending_accuracy = accuracy_score(y_test, blending_pred)

print(“Точност на смесване:”, blending_accuracy)

Изход:

Тук можем да видим, че точността на процедурата за моделиране се е подобрила. Сега нека проверим производителността с помощта на матрицата на объркване.

cm = confusion_matrix(y_test, blending_pred)

print(“Матрица на объркване:”)

печат (cm)

Изход:

Тук можем да видим подобрените резултати в матрицата на объркването. Сега нека проверим как можем да изпълним метода на пакетиране на ансамбълното обучение.

Пакетиране

Обяснение

Пакетирането е друга усъвършенствана техника на групово обучение, при която множество модели на данни научават модели на различните подчасти на данните. След като моделите са обучени на подчастите на данните, ние комбинираме резултатите от модела, за да получим окончателните прогнози.

Внедряване

Тук отново процесите на импортиране на данни и функционален процес на модели са същите, както направихме в предишната част на статията. Тук се нуждаем от модул за класификатор на пакетиране на sklearn. Също така, ансамбълното обучение може да се извърши с един или повече модели и тук ще използваме три модела, за да изпълним метода на пакетиране на ансамбълното машинно обучение.

Нека дефинираме моделите:

от sklearn.ensemble импортиране на BaggingClassifier

model1 = DecisionTreeClassifier(random_state=42)

model2 = LogisticRegression(random_state=42)

model3 = SVC(вероятност=Истина, случайно_състояние=42)

Сега сме готови да разделим тези модели на множество оценители:

bagging_model1 = BaggingClassifier(base_estimator=model1, n_estimators=10, random_state=42)

bagging_model2 = BaggingClassifier(base_estimator=model2, n_estimators=10, random_state=42)

bagging_model3 = BaggingClassifier(base_estimator=model3, n_estimators=10, random_state=42)

Нека обучим тези модели, като използваме данните за обучение и тестване, дефинирани в първия метод.

bagging_model1.fit(X_train, y_train)

bagging_model2.fit(X_train, y_train)

bagging_model3.fit(X_train, y_train)

След обучение сме готови да правим прогнози от обучени модели за опаковане. Нека направим прогнозите с помощта на тестовия набор.

predictions1 = bagging_model1.predict(X_test)

predictions2 = bagging_model2.predict(X_test)

predictions3 = bagging_model3.predict(X_test)

Комбиниране на прогнозите на моделите на ансамбъла за торбички

ensemble_predictions = (predictions1 + predictions2 + predictions3) // 3

Нека да оценим резултатите от моделирането на ансамбъл от торбички.

точност = accuracy_score(y_test, ensemble_predictions)

print(“Точност на ансамбъла:”, точност)

Изход:

Тук вече можем да видим точността на процедурата. Нека оценим точността на процедурата с помощта на матрицата на объркване.

cm = confusion_matrix(y_test, ensemble_predictions)

print(“Матрица на объркване:”)

печат (cm)

Изход:

Тук можем да видим, че резултатите от този метод са по-добри от първия метод и по този начин методите за обучение в ансамбъл помагат за подобряване на точността на процедурите за моделиране.

След тези усъвършенствани техники за ансамблиране, една техника, която трябва да знаем, е техниката на усилване. Говорейки за техники за усилване, можем да мислим за тях като за методи на последователно обучение, където един модел след друг се опитва да коригира обучението на предишния модел. С прости думи можем да кажем, че при повишаване на ансамбълното обучение, резултатът от режима зависи от обучението на модела, който вече е научил моделите.

Навлизайки в по-дълбоката страна на темата за усилване, намираме други различни методи, които попадат в темата за техниките за усилване. Ето някои основни видове техники за усилване:

  • AdaBoost (адаптивно усилване)
  • Градиентно усилване
  • XGBoost (изключително градиентно усилване)
  • LightGBM (Машина за усилване на светлинния градиент)
  • CatBoost (Категорично усилване)
  • Увеличаване на стохастичен градиент

В горните раздели научихме за усъвършенствани методи за обучение в ансамбъл. Разбира се, за да направим правилна линия и да вземем предвид дължината на статията, ще обсъдим техниките за усилване и различните видове техники за усилване в следващите статии.

Последни думи

В тази статия обсъдихме усъвършенстваните методи за обучение в ансамбъл. В последната статия постигнахме точност от 94% (приблизително), използвайки същите данни. Тук, благодарение на усъвършенстваните методи, ние видяхме как можем да увеличим точността. В следващата статия ще обсъдим метода на усилване, където ще обсъдим основите на метода на усилване и как работят различните методи на усилване.

Относно DSW

Data Science Wizards (DSW) е стартираща компания за изкуствен интелект и наука за данни, която предлага предимно платформи, решения и услуги за използване на данни като стратегия чрез AI и решения за анализ на данни и консултантски услуги, за да помогне на предприятията при решения, базирани на данни .

Водещата платформа на DSW UnifyAI е цялостна платформа с активиран AI за корпоративни клиенти за изграждане, внедряване, управление и публикуване на техните AI модели. UnifyAI ви помага да изградите вашия случай на бизнес употреба, като се възползвате от възможностите на AI и подобрявате резултатите от анализа.

Свържете се с нас на [email protected] и ни посетете на www.datasciencewizards.ai