Улучшайте свои модели с помощью голосования, бэггинга, бустинга и стекирования
Фото:Justin RoyonUnsplash
собиратьучитьсяэто метод, используемый в машинном обучении, который объединяет несколько моделей в модель роя, другими словами, модель ансамбля. Цель ансамблевой модели состоит в том, чтобы работать лучше, чем каждая модель в отдельности, а если нет, то по крайней мере так же, как лучшая отдельная модель в группе.
В этой статье вы узнаете о популярных методах сбора.голосование, мешок метод, **способствовать росту.**и **куча** и их реализации на Python. Мы будем использовать некоторые библиотеки, такие как[scikit-learn](https://scikit-learn.org/stable/index.html)
для голосования, упаковки и подъема, а также[mlxtend](http://rasbt.github.io/mlxtend/)
для штабелирования.
Следя за статьей, я рекомендую вам проверить мой GitHubБлокнот Юпитера, для полного анализа и кода. ?
Введение
Интуиция, стоящая за ансамблевым обучением, часто описывается как метод, называемый «Мудрость толпыявление, которое означает, что совокупные решения, принимаемые группой людей, как правило, лучше, чем индивидуальные. Существует несколько способов создания ансамблевой модели (илиагрегат), которые можно разделить на гетерогенные и гомогенные агрегаты.
существуетНеоднородные коллекции,Мы будем обучать несколько на одном и том же наборе данныхразныеВ разнородных ансамблях мы объединяем несколько точно настроенных моделей, обученных на одном и том же наборе данных, для создания модели ансамбля. Этот подход обычно включает методы _голосования_, _усреднения_ или _накопления_. С другой стороны, вОднородный заполнительсередина,Мы используем **такой же**модель, мы называем ее «слабой моделью» и преобразуем эту слабую модель в сильную модель с помощью таких методов, как бэггинг и бустинг.
Начнем с основного метода обучения ансамблю для гетерогенных ансамблей. Голосование и усреднение.
1. Метод голосования (жесткий метод голосования)
Ансамбль жесткого голосования используется для задач классификации, он будет основан набольшинство голосовПринцип заключается в объединении прогнозов нескольких точно настроенных моделей, обученных на одних и тех же данных. Например, если мы объединим 3 классификатора, которые предсказывают «Класс A», «Класс A», «Класс B», то модель ансамбля будет предсказывать результат как «Класс A» на основе большинства голосов или, другими словами, в соответствии с Закономерности распределения отдельных модельных прогнозов. Как видите, у нас обычно нечетное количество отдельных моделей (например, 3, 5, 7 моделей), чтобы гарантировать, что у нас не будет одинакового голоса.
Жесткое голосование. Делайте прогнозы для новых экземпляров с несколькими моделями и собирайте окончательные результаты путем голосования большинством голосов.голосование- Изображение предоставлено автором
# Instantiate individual models
Оценка точности.
KNeighborsClassifier 0.93
LogisticRegression 0.92
DecisionTreeClassifier 0.93
Классификатор голосования 0.94 ✅
Мы видим, что классификатор голосования имеет самую высокую точность!Поскольку ансамбль будет объединять прогнозы отдельных моделей, каждая модель должна была быть настроена и уже хорошо себя зарекомендовала. В приведенном выше коде я инициализировал его только для демонстрационных целей.
2. Усреднение (мягкое голосование
Мягкое голосование используется для задач классификации и регрессии, которые проходятсреднийдля объединения прогнозов нескольких точно настроенных моделей, обученных на одних и тех же данных. Для классификации используется прогнозируемая _вероятность_, а для регрессии используется прогнозируемое _значение_. Нам не нужно нечетное количество отдельных моделей, как при жестком голосовании, но нам нужно как минимум две модели, чтобы построить ансамбль.
мягкое голосование. Делайте прогнозы для новых экземпляров с одинаково взвешенной моделью (w), ансамбль усредняетсявыберитеКонечный результат - изображение предоставлено автором
Одним из преимуществ мягкого голосования является то, что вы можете решить, хотите ли вы взвешивать каждую модель одинаково (в среднем) или по важности классификатора, который является входным параметром. Если вы предпочитаете использовать средневзвешенное значение, то выходным прогнозом ансамблевой модели будет максимальная сумма взвешенных вероятностей/значений.
# Instantiate individual modelsreg1 = DecisionTreeRegressor()reg2 = LinearRegression()
означает абсолютную ошибку.
DecisionTreeRegressor 3.0
LinearRegression 3.2
ГолосованиеRegressor 2.5 ✅
Важно понимать, что,Сбор голосов(жесткое и мягкое голосование), которое сильно зависит от производительности одной модели. Если мы объединим хорошую модель с двумя моделями со средними показателями, модель ансамбля покажет результаты, близкие к средней модели. В этом случае нам либо нужно улучшить модель средней производительности, либо мы не должны объединяться и вместо этого использовать более производительную модель. ?
Узнав о голосовании и усреднении, мы можем перейти к последнему методу гетерогенного ансамбля. куча.
3. Стек
Стекирование означает «обобщение стекирования», которое объединяет несколько отдельных моделей (или базовых моделей) с конечной моделью (или метамоделью), котораяТренируйтесь с прогнозами базовой моделиот. Его можно использовать для задач классификации и регрессии, при необходимости используя числовые или вероятностные задачи классификации.
Отличие от набора для голосования в том, что в стекинге метамодель также является обучаемой моделью, по сути, она обучается на предсказаниях базовой модели. Поскольку эти прогнозы являются входными признаками метамодели, их также называют метапризнаками. Мы можем включить исходный набор данных в мета-функции или просто использовать прогнозы.
наложение. Прогнозы базовой модели используются при обучении метамодели дляпредсказыватьОкончательный результат - изображение предоставлено автором
Укладка может быть достигнута более чем двумя слоями:многослойная укладка, мы определяем базовую модель, которая объединяется с другим уровнем моделей, а затем финальную метамодель. Даже если это даст лучшие результаты, мы должны учитывать временные затраты из-за сложности.
предотвращатьпереоснащение,мы можем использоватькуча с перекрестной проверкойСтек Вместо стандартного стека в библиотеке mlxtend есть реализации обеих версий. Ниже буду реализовывать.
1. Стандартный стек для задач классификации
from mlxtend.classifier import StackingClassifier
KNeighborsClassifier 0.84
GaussianNB 0.83
DecisionTreeClassifier 0.89
LogisticRegression 0.85
StackingClassifier 0.90 ✅.
2. Стек регрессионных задач с перекрестной проверкой
from mlxtend.regressor import StackingCVRegressor
означает абсолютную ошибку.
DecisionTreeRegressor 3.3
SVR 5.2
LinearRegression 3.2
StackingCVRegressor 2.9
4. Упаковка
Агрегация начальной загрузки или просто «пакетирование» объединяет несколько оценок, использующих один и тот же алгоритм, обученных с использованием разных подмножеств обучающих данных. Использование мешковсамозагрузкаметод создания случайно выбранных обучающих данных для каждого оценщика.
Bootstrapping это способ создания замещающих семплов из исходных данных. это используется заменять так что каждая точка данных имеет равную вероятность быть выбранной. Из-за метода подстановки некоторые точки данных могут быть выбраны несколько раз, а некоторые точки данных могут никогда не быть выбраны. мы можем_рассчитать по следующей формуле_не по размерудля пВероятность того, что точка данных не выбрана в выборке начальной загрузки . (предпочтительно n является большим числом).
Это означает, что каждый оценщик мешков обучается примерно на 63% обучающего набора данных, а оставшиеся 37% мы называемИз сумки (OOB)образец**. **
Таким образом, пакетирование извлекает _n_ обучающих наборов данных с заменой из исходных обучающих данных _n_ оценщиков. Каждая оценка выполняется на обучающем наборе данных, который она отбирает.параллельноТренируйтесь делать прогнозы. Затем эти прогнозы объединяются с использованием таких методов, как жесткое или мягкое голосование.
расфасовка. Начальные обучающие выборки, прогнозы и голоса, используемые оценщикомтехнология в сочетании- Изображение предоставлено автором
В scikit-learn мы можем определить параметрыn_estimators
, равный _n_ — количеству оценок/моделей, которые мы хотим создать, если мы хотим оценить производительность каждой оценки на ее готовых выборках,oob_score
, для которого можно установить значение «true». Делая это, мы можем легко изучить производительность оценщика на невидимых данных без использования перекрестной проверки или отдельного набора тестов.oob_score_
функция вычисляет всеnСреднее значение oob_scores, по умолчанию классификация использует метрикуточность Дробная часть, вернуться к использованиюR^2.
from sklearn.ensemble import BaggingClassifier
Оценка: 0,918
# Compare with test setpred = clf_bagging.predict(X_test)print(accuracy_score(y_test, pred))
точность_оценка: 0,916
Наборы данных для обучения, выбранные случайным образом, делают обучение менее склонным к предвзятости по отношению к исходным данным, поэтому методы мешковуменьшилсяодного оценщикадисперсия.
Очень популярная техника мешковслучайный лес, где в качестве дерева решений выбирается оценщик. Случайный лес использует начальную загрузку для создания обучающих наборов данных с заменами, а также выбирает набор функций (без замен), чтобы максимизировать случайность каждого обучающего набора данных. Как правило, количество выбранных функций равно квадратному корню из общего количества функций.
5. Способ подъема
Использование лифтадополнительное обучение, который представляет собой итеративный процесс, направленный на минимизацию ошибки предыдущей оценки. этонепрерывный метод, каждый оценщик зависит от предыдущего оценщика, чтобы улучшить свои прогнозы. Наиболее популярными методами повышения являются адаптивное повышение (AdaBoost) и градиентное повышение.
AdaBoostИспользуйте весь обучающий набор данных для каждой оценки _n_ с некоторыми важными изменениями. Первая оценка (слабая модель) обучается на исходном наборе данных с одинаково взвешенными точками данных. После первого прогноза и вычисления ошибки неправильно предсказанным точкам данных присваиваетсяболее высокий вес. Делая это, следующий оценщик сосредоточится на этих труднопредсказуемых экземплярах. Этот процесс будет продолжаться до тех пор, пока все _n_ оценщиков (скажем, 1000) не будут последовательно обучены. Наконец, прогнозы для коллектива будут получены взвешенным большинством голосов или средневзвешенным методом.
АдаБуст. Последовательное обучение модели с обновлением веса в данных обучения — изображение от автора
from sklearn.ensemble import AdaBoostRegressor
Среднеквадратичное отклонение: 4,18
Повышение градиента, очень похожий на AdaBoost, улучшает предыдущую оценку последовательным итеративным способом, но вместо обновления весов обучающих данных новая оценка сравнивается с предыдущей оценкой.остаточная ошибкасоответствовать. XGBoost, LightGBM и CatBoost — популярные алгоритмы повышения градиента, XGBoost, в частности, является победителем многих соревнований и популярен, потому что он очень быстрый и масштабируемый.
Суммировать
В этом посте мы изучили основные методы обучения ансамблю для повышения производительности модели. Мы рассмотрим теоретические основы каждой техники, а также связанные с ней библиотеки Python, чтобы продемонстрировать эти механизмы.
Ансамблевое обучение — важная часть машинного обучения, и оно важно для каждого специалиста по данным и специалиста по машинному обучению. Вы можете обнаружить, что есть чему поучиться, но я уверен, что вы никогда не пожалеете об этом! !?
Если вам нужно освежить в памяти начальную загрузку или вы хотите узнать больше о методах выборки, вы можете прочитать мой пост ниже.статья.
Надеюсь, вам понравилось читать о методах ансамблевого обучения, и эта статья оказалась полезной для вашего анализа!
Если вам понравилась эта статья, вы можете Прочтите мои другие статьи здесь и Подписывайтесь на меня на Medium.Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или предложения. ✨