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

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

Оглавление

1. Введение

2. Виды ансамблевых методов.

3. Сходства между методами упаковки и бустинга.

4. Различия между обоими методами.

5. Типы голосования

6. Детальное понимание концепций.

  • Упаковка
  • Повышение

7. Заключение

1. Введение

Что такое ансамбль?

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

Что такое метод ансамбля в машинном обучении?

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

Например,

Случайный лес - это совокупность нескольких деревьев решений.

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

А теперь давайте сравним это с примером из реальной жизни.

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

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

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

Министр 1: исходя из своих "за" и "против", считает, что закон следует принять.

Министр 2: исходя из своих плюсов и минусов, считает, что закон бесполезен и может вызвать множество проблем. Следовательно, пропускать нельзя.

Министр 3: Законопроект может быть принят.

Министр 4: Также говорит, что закон может быть принят.

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

Зачем нужны ансамблевые техники?

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

2. Типы ансамблевых методов

Существует много доступных ансамблевых методов, но мы обсудим два наиболее широко используемых ниже:

1. Упаковка

2. Повышение

Давайте сначала поймем сходства и различия между обеими терминологиями.

3. Сходства между методами упаковки и повышения

· Оба метода могут использоваться для задач классификации (дискретный вывод) и регрессии (непрерывный вывод).

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

4. Различия между двумя методами

5. Типы голосования

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

Жесткое голосование - если мы получаем результат каждого слабого учащегося в классах (например, 0/1) и, наконец, выбираем выходной класс, который был возвращен в большинстве, то этот метод называется жестким голосованием. .

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

Мягкое голосование. Существует множество алгоритмов, которые также предоставляют нам вероятности прогнозирования, и если мы получаем результат в виде вероятностей, мы берем среднее значение вероятностей каждого из классов и того, какой класс имеет наивысшее среднее значение. будет окончательным предсказанием. Этот способ прогнозирования называется мягким голосованием и лучше, чем жесткое голосование, поскольку мы получаем больше информации с точки зрения вероятности.

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

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

6. Подробное понимание концепций

Упаковка:

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

Поскольку основная идея этой статьи - понять концепции в терминах непрофессионала, давайте рассмотрим простой пример для понимания упаковки.

Мы все правильно посещаем собеседования, и процесс собеседования - это самый простой сценарий, с которым я мог столкнуться, аналогичный «Баггингу».

Предположим, вы пошли на собеседование, и как только вы входите в комнату, вы видите пятерых сурово выглядящих людей, которые сидят там и задают вам все свои вопросы. Что вы делаете? Нервничайте и выбегайте из комнаты !! Без прав? Вы пошли туда, потому что вам нужна работа, и вы знаете, что достаточно смелы, достаточно умны, чтобы противостоять всему, что встречается на вашем пути, и вы все равно приветствуете их и садитесь перед ними. Итак, давайте посмотрим правде в глаза.

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

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

Итак, интервью начинается. И наша целевая переменная здесь будет, будет ли кандидат выбран или нет.

Интервьюер 1 - Интервьюер 1 начинает проверку ваших способностей, беря выборку вопросов, основанных на способностях, из «набора вопросов» и устанавливает некоторые вероятности того, следует ли вас выбирать или нет.

Интервьюер 2 - Интервьюер 2 также начинает проверку ваших основных технических навыков, снова беря образец предварительных технических вопросов из "набора вопросов" и устанавливает некоторые вероятности того, следует ли вам выбрано или нет.

Интервьюер 3. Аналогичным образом, интервьюер 3 начинает проверять ваши передовые технические навыки, беря еще один образец немного сложных технических вопросов из "набора вопросов" и снова устанавливает некоторые вероятности того, что вы следует выбирать или нет.

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

Интервьюер 4 и интервьюер 5: Интервьюер 4 и интервьюер 5 повторяют тот же процесс, что и выше, проверяя коммуникативные и управленческие навыки кандидата, выбирая образцы связанных вопросов из «набора вопросов» и, соответственно, устанавливая некоторые вероятности того, будут ли выбирать или нет.

Результат. Наконец, кандидат завершил собеседование, и он выходит из комнаты, оставляя интервьюеров анализировать их соответствующие оценки его навыков на основе подвыборок вопросов из «набора вопросов», которые он был забит. В конечном итоге они объединяют все свои индивидуальные мнения и принимают окончательное решение, выбирать кандидата или нет.

Это точно так же, как и методы ансамбля.

Давайте попробуем несколько методов ансамбля с использованием Python и сравним их точность, соответствующую нескольким отдельным моделям.

Примечание. Блокнот jupyter с полным кодом доступен на github.

Я использую набор данных об успехе рекламы от Kaggle для этой цели и хочу спрогнозировать успех рекламы.

1. Одиночные модели

а. Дерево решений

# Decision tree classifier with grid seacrh CV and model evaluation using accuracy score, precision score and AUC/ROC curve.

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV

parameters = {'max_features': [0.5,0.6,0.7,0.8,0.9,1.0], 'max_depth': [2,3,4,5,6,7],'min_samples_leaf':[1,10,100],'random_state':[14]} 

clf = GridSearchCV(DecisionTreeClassifier(), parameters, cv=5, scoring='roc_auc')
clf.fit(X_train, y_train)

Оценочные показатели Дерева решений, примененные к образцу данных:

Показатель AUC составляет 85,84%.

Деревья решений всегда склонны к переобучению, если мы не выберем правильные параметры, такие как минимальная выборка листа, минимальная выборка узлов, максимальная глубина дерева. Чем выше глубина, тем точнее модель будет захватывать данные. точки обучающего набора, приводящие к отличным прогнозам в самом обучающем наборе данных, но не срабатывают на новых данных. Следовательно, ансамблевые методы - это один из методов, который помогает уменьшить дисперсию, тем самым решая проблему переобучения, с которой сталкивается единое дерево решений.

б. Классификатор единой логистической регрессии

#Single Logistic Regression

from sklearn.linear_model import LogisticRegression
log = LogisticRegression(random_state=0, solver='lbfgs') 
log.fit(X_train, y_train)

y_pred = log.predict(X_test)

Оценочная метрика классификатора единой логистической регрессии, примененная к примерам данных:

Оценка AUC составляет 83,84%.

2. Набор одинаковых классификаторов

Несколько примеров: случайный лес, дополнительные древовидные классификаторы / регрессоры, ансамбль линейных регрессоров, ансамбль классификаторов логистической регрессии, ансамбль SVM и т. Д.

a. Случайный лес - совокупность нескольких деревьев решений

from sklearn.ensemble import RandomForestClassifier
parameters = {'n_estimators':[700],'n_jobs':[-1], 'max_features': [0.5,0.7,0.9], 'max_depth': [3,5,7],'min_samples_leaf':[1,10],'random_state':[14]} 

clf1 = GridSearchCV(RandomForestClassifier(), parameters, cv=5, scoring='roc_auc')
clf1.fit(X_train, y_train)

Оценочные показатели случайного леса, примененные к образцу данных:

Показатель AUC составляет 86,53%.

б. Набор классификаторов логистической регрессии.

Когда мы используем ансамбль из одних и тех же классификаторов, BaggingClassifier Sklearn используется для получения оценки OOB (Out of bag), которая является очень важной оценкой для оценки производительности классификаторов, поскольку она дает нам оценку. представление о точности, которая должна быть достигнута на испытательном наборе. Как мы все знаем, во время обучения подвыборки передаются каждому независимому классификатору, но при использовании техники мешков может также случиться, что одна и та же выборка передается два-три раза любому другому индивидуальному классификатору. Таким образом, в этом сценарии образцы, которые являются новыми для определенного классификатора, то есть образцы, которые еще не были просмотрены, вызываются из пакетов образцов. Он служит той же цели, что и набор тестов, поскольку экземпляры OOB не видны ранее . Мы можем получить оценку OOB с помощью функции «classifier.oob_score_» после построения ансамбля с помощью классификатора Bagging.

# Multiple logistic regression classifiers using bagging Classifier.
# Number of logistic regression classifiers we are using here are 400.
logbagClf = BaggingClassifier(LogisticRegression(random_state=0, solver='lbfgs'), n_estimators = 400, oob_score = True, random_state = 90)
logbagClf.fit(X_train, y_train)

Оценочная метрика классификатора упаковки (несколько классификаторов логистической регрессии):

Оценка AUC составляет 84,44%.

3. Ансамбль из нескольких разных типов моделей

Для этого метода мы можем использовать Sklearn's VotingClassifier .

Для целей тестирования я использую ансамбль из RandomForestClassifier, машины опорных векторов и логистической регрессии.

from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB

rfClf = RandomForestClassifier(n_estimators=500, random_state=0) # 500 trees. 
svmClf = SVC(probability=True, random_state=0) # probability calculation
logClf = LogisticRegression(random_state=0)
#nbclf = GaussianNB(random_state=0)

# constructing the ensemble classifier by mentioning the individual classifiers.
clf2 = VotingClassifier(estimators = [('rf',rfClf), ('svm',svmClf), ('log', logClf)], voting='soft') 

# train the ensemble classifier
clf2.fit(X_train, y_train)

Оценочные показатели классификатора голосования (совокупность нескольких моделей):

Показатель AUC составляет 84,92%

Повышение:

Основная идея бустинга - превратить слабых учеников в сильных в последовательных итерациях.

Давайте снова возьмем пример интервью, чтобы понять концепцию повышения.

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

Интервью 1 - компания 1 - он мог ответить только на несколько вопросов, но он имел представление о том, какие вопросы ему можно задать снова. Он возвращается домой и учится. Скорость его обучения увеличилась.

Интервью 2 - компания 2. Здесь он справился лучше, чем первая компания, поскольку он усвоил все концепции, которые он пропустил на первом собеседовании, но еще не выбрал. Он возвращается домой и больше учится, исправляя тем самым все ошибки, которые он сделал в предыдущих двух интервью.

Интервью 3 и интервью 4 также, он столкнулся с той же проблемой, и к тому времени, когда он посетил 5-е собеседование, он стал экспертом и почти смог ответить на все вопросы.

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

Я буду реализовывать алгоритм повышения XGBoost в своем наборе данных.

import xgboost as xgb

xgb_clf = xgb.XGBClassifier(max_depth=3,n_estimators=300,learning_rate=0.05)
    
xgb_clf.fit(X_train,y_train)

Оценочные показатели XGBoost, примененные к образцу данных:

Показатель AUC составляет 86,46%.

7. Заключение

Давайте сравним точность и показатель AUC одиночной и ансамблевой моделей.

  1. Показатель точности: алгоритм повышения "XGBoost" лидирует по показателю точности.
  • Мы также можем заметить, что ансамблевые классификаторы «случайный лес» и «множественные классификаторы логистической регрессии» имеют лучшую точность по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.

2. Оценка точности: алгоритм повышения "XGboost" лидирует по показателю точности.

  • Мы можем заметить, что ансамблевые классификаторы «случайный лес» и «множественные классификаторы логистической регрессии» имеют лучшую точность по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.

3. Оценка AUC. Алгоритм суммирования " Случайный лес" лидирует по показателю AUC, хотя разница с показателем AUC очень мала. XGboost.

  • Мы можем заметить, что ансамблевые классификаторы «случайный лес» и «классификаторы множественной логистической регрессии» имеют лучшие показатели AUC по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.

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

Однако это зависит от типа данных, с которыми мы имеем дело.

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

Пожалуйста, добавляйте любые дополнительные мысли, комментарии, так как это поможет мне лучше понять ситуацию.

Спасибо за прочтение !!