Ансамбли могут дать нам результат в машинном обучении, объединив несколько моделей. По сути, ансамблевые модели состоят из нескольких индивидуально обученных контролируемых моделей обучения, и их результаты объединяются различными способами для достижения лучшей прогностической эффективности по сравнению с одной моделью. Методы ансамбля можно разделить на следующие две группы:
Последовательные методы ансамбля
Как следует из названия, в таких методах ансамбля базовые учащиеся генерируются последовательно. Мотивация таких методов заключается в использовании зависимости среди базовых учащихся.
Параллельные методы ансамбля
Как следует из названия, в таких методах ансамбля базовые учащиеся генерируются параллельно. Мотивация таких методов заключается в использовании независимости среди базовых учащихся.
Методы обучения ансамблю
Ниже приведены наиболее популярные методы ансамблевого обучения, то есть методы комбинирования прогнозов из разных моделей.
мешковина
Термин пакетирование также известен как агрегация начальной загрузки. В методах пакетирования ансамблевая модель пытается улучшить точность прогнозирования и уменьшить дисперсию модели, комбинируя прогнозы отдельных моделей, обученных по случайно сгенерированным обучающим выборкам. Окончательный прогноз модели ансамбля будет дан путем расчета среднего значения всех прогнозов по отдельным оценщикам. Одним из лучших примеров методов упаковки в мешки являются случайные леса.
стимулирование
В методе повышения, основной принцип построения ансамблевой модели состоит в том, чтобы строить ее постепенно, последовательно обучая каждый оценщик базовой модели. Как следует из названия, он в основном объединяет несколько недельных базовых учащихся, обученных последовательно в течение нескольких итераций обучающих данных, для создания мощного ансамбля. Во время обучения недельных базовых учеников более высокие веса присваиваются тем ученикам, которые были ошибочно классифицированы ранее. Примером метода повышения является AdaBoost.
голосование
В этой модели обучения ансамбля построено несколько моделей разных типов, и для комбинирования предсказаний используется некоторая простая статистика, такая как вычисление среднего или медианы и т. Д. Этот прогноз будет служить дополнительным входом для обучения, чтобы сделать окончательный прогноз.
Алгоритмы объединения в пакеты
Ниже приведены три алгоритма объединения в пакеты.
Усиление ансамблевых алгоритмов
Ниже приведены два наиболее распространенных алгоритма усиления ансамбля —
Стохастический градиент повышения
Алгоритмы голосования ансамбля
Как уже говорилось, голосование сначала создает две или более автономных моделей из обучающего набора данных, а затем классификатор голосования обернет модель вместе со средним значением прогнозов подмодели всякий раз, когда понадобятся новые данные.
В следующем рецепте Python мы собираемся построить модель ансамбля Voting для классификации с использованием класса sklearn VotingClassifier для набора данных диабета индейцев Pima. Мы объединяем прогнозы логистической регрессии, классификатора дерева решений и SVM вместе для задачи классификации следующим образом:
Сначала импортируйте необходимые пакеты следующим образом:
from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.ensemble import VotingClassifier
Теперь нам нужно загрузить набор данных диабета Pima, как это делалось в предыдущих примерах —
path = r"C:\pima-indians-diabetes.csv" headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = read_csv(path, names = headernames) array = data.values X = array[:,0:8] Y = array[:,8]
Затем введите 10-кратную перекрестную проверку следующим образом:
kfold = KFold(n_splits = 10, random_state = 7)
Далее нам нужно создать подмодели следующим образом:
estimators = [] model1 = LogisticRegression() estimators.append(('logistic', model1)) model2 = DecisionTreeClassifier() estimators.append(('cart', model2)) model3 = SVC() estimators.append(('svm', model3))
Теперь создайте модель ансамбля голосования, комбинируя предсказания созданных выше подмоделей.
ensemble = VotingClassifier(estimators) results = cross_val_score(ensemble, X, Y, cv = kfold) print(results.mean())
Выход
0.7382262474367738
Вывод выше показывает, что мы получили точность 74% нашей модели ансамбля классификатора голосования.