резюме
Ансамблевое обучение заключается в выполнении учебной задачи путем создания нескольких учащихся, что широко используется в практических приложениях и крупных соревнованиях. В зависимости от того, как формируется учащийся, ансамблевые методы обучения можно условно разделить на две категории:
- Между каждым учащимся нет зависимостей, и их можно запускать параллельно. Например, бэггинг и случайный лес.
- Между каждым учащимся существует зависимость, и его необходимо запускать последовательно, при этом каждая итерация создает учащегося. Например, алгоритм повышения.
Bagging
Бэггинг — это выборка с помощью алгоритма начальной загрузки. Учитывая набор данных с N выборками, шаги следующие:
- Сначала случайным образом возьмите образец в набор выборки, а затем поместите образец обратно в исходный набор данных.
- После N операций случайной выборки можно получить набор выборок, содержащий N выборок.
Некоторые выборки в начальном обучающем наборе появляются в наборе выборок несколько раз, а другие никогда не появляются. Вероятность того, что образец не всегда присутствует в выборке, равна. в соответствии с, поэтому около 63,2 % выборок в начальном обучающем наборе используются для обучения, а оставшиеся около 36,8 % выборок можно использовать в качестве проверочного набора для внепакетных оценок производительности обобщения.
Базовый процесс бэггинга с учащимися M:
- После M циклов выборки самообслуживания можно получить M выборок, содержащих N обучающих выборок.
- Затем базовый ученик обучается на основе каждого набора образцов.
- Наконец, эти базовые учащиеся M объединяются для получения модели ансамбля.
При использовании учащегося Bagging для прогнозирования задача классификации использует метод простого голосования и принимает режим прогнозируемых категорий каждого базового учащегося; задача регрессии использует метод простого среднего и берет среднее значение прогнозируемых значений каждой базы. ученик.
Алгоритм Бэггинга может уменьшить дисперсию, и он очень эффективен в алгоритмах, которые легко искажаются выборками, таких как деревья решений без обрезки и нейронные сети. Алгоритм повышения можно использовать для уменьшения предвзятости, он может превратить некоторых слабых учеников в сильных учеников. Следовательно, он более эффективен для таких учащихся, как svm и knn, которых не так легко вывести из себя образцами.
Код для упаковки в sklearn выглядит следующим образом, гдеn_estimators
представляет ансамблевое обучение с использованием 500 учащихся дерева решений,max_samples
представляет до 100 образцов на одного учащегося,max_features
Представляет, что каждый узел дерева решений использует не более двух функций,oob_score=True
Представитель использует оставшуюся 1/3 выборки для оценки.
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
bagging_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500, max_samples=1000, max_features=2, bootstrap=True, oob_score=True, n_jobs=-1)
bagging_clf.fit(X, y)
случайный лес
Случайный лес Случайный лес — это эволюция бэггинга. Случайный лес вносит некоторые улучшения в бэггинг.
- Разнообразие учащихся в бэггинге происходит из-за возмущения выборки. Возмущение выборки возникает из-за случайной выборки начального обучающего набора.
- Разнообразие учащихся в случайных лесах возникает не только из-за возмущений выборки, но и из-за возмущений атрибутов. Это может значительно улучшить обобщающую способность модели.
Звучит немного абстрактно, но на самом деле в случайном лесу для каждого узла базового дерева решений сначала случайным образом выбирают подмножество, содержащее k атрибутов, из набора атрибутов узла, а затем выбирают из этого подмножества. используется для разделения:
- если, построение базового дерева решений такое же, как и у традиционного дерева решений.
- если, то случайным образом выбирается атрибут для деления.
- обычно рекомендуется.
По мере увеличения количества деревьев случайный лес может эффективно уменьшить переоснащение. Потому что по мере увеличения количества деревьев дисперсия модели значительно уменьшается. Но увеличение количества деревьев не исправляет смещение, поэтому случайный лес все равно будет соответствовать.
Использовать случайный лес в sklearn очень просто, обратите внимание, что случайный лес имеет все параметры DecisionTreeClassifier и BaggingClassifier, такие как:
rf_clf2 = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, max_depth=10, min_samples_split=2, min_samples_leaf=2, max_leaf_nodes=None, oob_score=True, n_jobs=-1)
rf_clf2.fit(X, y)
rf_clf2.oob_score_
Поскольку RandomForestClassifier/RandomForestRegression широко используется в таких соревнованиях, как kaggle/tianchi, некоторые важные параметры перечислены ниже:
- n_estimators: количество подмоделей, по умолчанию 10.
- max_features: максимальное количество функций, участвующих в оценке того, когда узел разделен, есть несколько возможных значений:
- int: количество функций.
- float: процент всех функций.
- auto/sqrt: Квадратный корень из всех номеров функций.
- log2: значение log2 всех номеров функций.
- Нет: равно всем функциям.
- max_depth: игнорируется, если указано max_leaf_nodes
- int: максимальная глубина дерева
- Нет: дерево будет расти до тех пор, пока все листья не будут присвоены классу или количество выборок, представленных узлом, не станет меньше, чем min_samples_split
- min_samples_split: Минимальное количество сэмплов, необходимое для разделения, по умолчанию 2.
- max_leaf_nodes: максимальное количество конечных узлов, None означает неограниченное.
- начальная загрузка: когда для выборки выполняется начальная выборка, значение по умолчанию равно true, а если оно ложно, образцы каждой подмодели согласуются.
- oob_score: Рассчитывать ли нестандартную оценку.
AdaBoost
Повышение является широко используемым методом статистического обучения. В задачах классификации он изучает несколько классификаторов, изменяя веса обучающих выборок, и линейно комбинирует эти классификаторы для улучшения способности классификации. Основная идея метода подъема заключается в следующем: для сложной задачи суждение, полученное путем соответствующего синтеза суждений нескольких экспертов, лучше, чем суждение любого из них в отдельности. Как гласит старая поговорка: «Три сапожника лучше одного Чжугэ Ляна».
Общий поток алгоритма повышения:
- Во-первых, базовый ученик обучается на начальном обучающем наборе.
- Затем вес обучающих выборок корректируется в соответствии с показателями базового обучаемого, чтобы обучающие выборки, которые были сделаны неправильно предыдущим базовым обучаемым, привлекали больше внимания в последующем.
- Затем следующий базовый учащийся обучается на основе скорректированного выборочного распределения.
- Это повторяется до тех пор, пока количество базовых учеников не достигнет значения M, указанного заранее. Наконец, эти базовые учащиеся M взвешиваются и объединяются.
Самый известный алгоритм повышения — это алгоритм AdaBoost. Алгоритм AdaBoost имеет две основные концепции:
- Как изменить веса тренировочных данных в каждом раунде? Алгоритм AdaBoost увеличивает веса выборок, которые были неправильно классифицированы слабым классификатором в предыдущем раунде, при этом уменьшая веса выборок, которые были правильно классифицированы. Следовательно, те данные, которые не были правильно классифицированы, получат больше внимания со стороны слабого классификатора в более позднем раунде из-за увеличения веса.
- Как, наконец, объединить серию слабых классификаторов в сильный классификатор? AdaBoost использует метод голосования взвешенным большинством:
- Увеличение веса слабого классификатора с меньшей частотой ошибок классификации повышает его роль в голосовании.
- Уменьшите вес слабого классификатора с большой частотой ошибок классификации, чтобы он играл меньшую роль в голосовании.
Алгоритм AdaBoost не изменяет заданные обучающие данные, но постоянно изменяет распределение весов обучающих данных, так что обучающие данные играют различную роль в обучении базового классификатора. Таким образом, AdaBoost требует, чтобы базовый учащийся мог изучить конкретное распределение данных, которое обычно присваивает вес каждой обучающей выборке во время обучения. Основная реклама алгоритма Adaboost заключается в следующем, и в следующем разделе будет дано подробное введение.
Алгоритм анализа
Существующий набор обучающих данных:
Инициализируйте распределение веса обучающих данных.
Предположим, что есть m учеников, для,Действуйте следующим образом:
- Используйте распределение с весамиНабор обучающих данных изучен, и базовый классификатор получен в соответствии с входным алгоритмом слабого обучения:.
- рассчитатьЧастота ошибок классификации в обучающем наборе данных:. Это сумма весов всех ошибочно классифицированных точек. Среди них точка классификации ошибок с большим весом имеет большую долю в частоте ошибок.
- если, алгоритм завершается.
- . Этот коэффициент представляетВажность в ансамблевых классификаторах. этоМонотонно убывающая функция , свидетельствующая о том, что чем меньше ошибка базового классификатора, тем выше его значимость. Согласно требованию, чтобы коэффициент был больше нуля.
- Обновите распределение веса обучающего набора данных:. в:., — нормировочный коэффициент, который делаетстановится распределением вероятностей.
Построить линейную комбинацию базовых классификаторов:. Получите классификатор ансамбля:.
adaboost-sklearn
Использование adaboost в sklearn выглядит следующим образом:
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
ada_clf = AdaBoostClassifier(
DecisionTreeClassifier(max_depth=4), n_estimators=500)
ada_clf.fit(X_train, y_train)
ada_clf.score(X_test, y_test)
стратегия интеграции
Предположим, ансамбль содержит M базовых учеников.. Обычно выделяют три стратегии интеграции:
- Средний метод.
- метод голосования.
- метод исследования. (алгоритм стекирования, временно пропущенный в этой статье)
Средний метод
Метод усреднения часто используется в задачах регрессии.
- Простой средний метод:.
- Средневзвешенный метод:
Обычно, если успеваемость отдельных учащихся сильно различается, подходит метод средневзвешенного значения; когда успеваемость отдельных учащихся относительно близка, подходит метод простого среднего.
закон о голосовании
Голосование часто используется в задачах классификации.
- Метод голосования относительного большинства: в качестве прогнозируемого значения выбирается токен с наибольшим количеством голосов:.
- Метод взвешенного голосования: аналогичен методу взвешенного среднего, когда учащийсявесизучается из обучающих данных:.
TODO
Позже я добавлю два алгоритма обучения ансамбля, gbdt и stacking.