Учебники

Улучшение производительности моделей ML

Ансамбли могут дать нам результат в машинном обучении, объединив несколько моделей. По сути, ансамблевые модели состоят из нескольких индивидуально обученных контролируемых моделей обучения, и их результаты объединяются различными способами для достижения лучшей прогностической эффективности по сравнению с одной моделью. Методы ансамбля можно разделить на следующие две группы:

Последовательные методы ансамбля

Как следует из названия, в таких методах ансамбля базовые учащиеся генерируются последовательно. Мотивация таких методов заключается в использовании зависимости среди базовых учащихся.

Параллельные методы ансамбля

Как следует из названия, в таких методах ансамбля базовые учащиеся генерируются параллельно. Мотивация таких методов заключается в использовании независимости среди базовых учащихся.

Методы обучения ансамблю

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

мешковина

Термин пакетирование также известен как агрегация начальной загрузки. В методах пакетирования ансамблевая модель пытается улучшить точность прогнозирования и уменьшить дисперсию модели, комбинируя прогнозы отдельных моделей, обученных по случайно сгенерированным обучающим выборкам. Окончательный прогноз модели ансамбля будет дан путем расчета среднего значения всех прогнозов по отдельным оценщикам. Одним из лучших примеров методов упаковки в мешки являются случайные леса.

стимулирование

В методе повышения, основной принцип построения ансамблевой модели состоит в том, чтобы строить ее постепенно, последовательно обучая каждый оценщик базовой модели. Как следует из названия, он в основном объединяет несколько недельных базовых учащихся, обученных последовательно в течение нескольких итераций обучающих данных, для создания мощного ансамбля. Во время обучения недельных базовых учеников более высокие веса присваиваются тем ученикам, которые были ошибочно классифицированы ранее. Примером метода повышения является AdaBoost.

голосование

В этой модели обучения ансамбля построено несколько моделей разных типов, и для комбинирования предсказаний используется некоторая простая статистика, такая как вычисление среднего или медианы и т. Д. Этот прогноз будет служить дополнительным входом для обучения, чтобы сделать окончательный прогноз.

Алгоритмы объединения в пакеты

Ниже приведены три алгоритма объединения в пакеты.

Дерево решений в мешках

Случайный Лес

Дополнительные деревья

Усиление ансамблевых алгоритмов

Ниже приведены два наиболее распространенных алгоритма усиления ансамбля —

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% нашей модели ансамбля классификатора голосования.