В моей предыдущей статье мы обсуждали различные типы регрессии в машинном обучении. Итак, сегодня я собираюсь сосредоточиться на различных ансамблевых методах в науке о данных.
Одна вещь, которую я испытал в ходе своей карьеры, заключается в том, что при изучении любого навыка становится легче, когда мы пытаемся связать концепции с событиями, с которыми мы сталкиваемся в повседневной жизни. Вспоминать вещи легко, когда у нас есть аналогия из реальной жизни. Поэтому, имея это в виду, мы рассмотрим различные техники ансамбля, сравнивая их с повседневными сценариями.
Оглавление
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 одиночной и ансамблевой моделей.
- Показатель точности: алгоритм повышения "XGBoost" лидирует по показателю точности.
- Мы также можем заметить, что ансамблевые классификаторы «случайный лес» и «множественные классификаторы логистической регрессии» имеют лучшую точность по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.
2. Оценка точности: алгоритм повышения "XGboost" лидирует по показателю точности.
- Мы можем заметить, что ансамблевые классификаторы «случайный лес» и «множественные классификаторы логистической регрессии» имеют лучшую точность по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.
3. Оценка AUC. Алгоритм суммирования " Случайный лес" лидирует по показателю AUC, хотя разница с показателем AUC очень мала. XGboost.
- Мы можем заметить, что ансамблевые классификаторы «случайный лес» и «классификаторы множественной логистической регрессии» имеют лучшие показатели AUC по сравнению с отдельными классификаторами «Дерево решений» и «Логистическая регрессия» соответственно.
Следовательно, мы можем сделать вывод, что метод повышения работал лучше всего в нашем наборе данных, и мы можем, наконец, развернуть модель XGBoost, поскольку она наиболее точно предсказывает успех рекламной кампании, что является основной повесткой дня нашей постановки задачи.
Однако это зависит от типа данных, с которыми мы имеем дело.
Кроме того, мы можем сделать вывод, что методы упаковки и повышения всегда работают лучше с большой точностью по сравнению с отдельными моделями.
Пожалуйста, добавляйте любые дополнительные мысли, комментарии, так как это поможет мне лучше понять ситуацию.
Спасибо за прочтение !!