Демистификация ансамблевых методов: обзор бэггинга, бустинга и стекирования

Цель методики ансамбля состоит в том, чтобы объединить слабых учащихся и сформировать сильную модель.

Техники ансамбля:

  1. Бэггинг → Случайный лес
  2. Boosting → Adaboost, Gradient Boosting и Extreme Gradient Boosting
  3. Укладка

1. Упаковка:-

Однородные слабые ученики: все модели одного и того же алгоритма. Например, при бэггинге все модели строятся по одному алгоритму либо линейной регрессии, либо полилинейной регрессии, либо любому другому алгоритму.

Бэггинг создает параллели моделей: все модели учатся независимо, но одновременно. Процесс обучения бэггингу идет параллельно, а не последовательно.

2. Повышение:-

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

Процесс обучения в бустинге последовательный, а не параллельный.

Модель M2 будет полностью зависеть от модели M1, в отличие от бэггинга, где бэггинг считает, что все модели обучаются независимо друг от друга.

3. Укладка:

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

Понимание ансамблей

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

Техники работы с ансамблями

Данные обучения → Распределение функций → (Модель = M1, M2, M3) → Функция объединения → Модели ансамблей

  1. Техника упаковки

Техника мешков использует агрегацию начальной загрузки.

Bootstrap означает выборку с заменой

Например, набор данных с точкой данных от 1 до 100

M1 = 1, 2, 50, 100

M2 = 1, 3, 10, 20

M3 = 1, 5, 3, 50

Модель 1 обучается на случайной выборке обучающего набора данных, где каждая точка данных выбирается с заменой. Модель 2 обучается на другой случайной выборке обучающего набора данных, опять же с заменой. Этот процесс повторяется для нескольких моделей, при этом каждая модель обучается на другой случайной выборке из обучающего набора данных. Наконец, прогнозы всех моделей объединяются, обычно путем усреднения, для получения окончательного прогноза.

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

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

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

  • Случайный лес на основе дерева решений
  • Корневой узел → Первый или начальный узел дерева решений
  • конечный узел → узел после этого разделения не может произойти
  • Узел решения → Узел после этого разделения может произойти
  • На основе энтропии и примеси Джини решается, какая функция будет корневым узлом.

Случайный лес: он объединяет несколько деревьев решений, поэтому известен как случайный лес.

В случае случайной выборки это набор данных для обучения и тестирования. выборка данных берется как из столбцов, так и из строк.

В случайных лесах строятся несколько деревьев решений и рассматривается их совокупный результат.

Псевдокод случайного леса

  1. Произвольно выбрать «k» объектов из «m» объектов, где k‹‹m
  2. k = выбранный столбец для выборки
  3. m = все столбцы набора данных
  4. Среди столбца k вычислите узел «d», используя точку наилучшего разделения.
  5. Разделите узел на дочерние узлы, используя наилучшее разделение

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

6. Повторяйте шаги от 1 до 5, пока не будет достигнуто количество узлов «l».

7. Постройте лес, повторив шаги с 1 по 4 «n» раз, чтобы создать «n» количество деревьев.

Преимущество случайного леса

  1. Один и тот же алгоритм случайного леса можно использовать для регрессии, а также для классификации обеих задач.
  2. Классификаторы случайного леса могут обрабатывать пропущенные значения
  3. Проблема переобучения никогда не возникнет, если мы будем использовать алгоритм случайного леса в любой задаче классификации.
  4. Алгоритм случайного леса можно использовать для разработки функций, что означает определение наиболее важных функций из доступных функций из набора обучающих данных.

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

2. Повышение

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

  1. Adaboost (адаптивное повышение)

Шаг 1. Присвойте веса всем записям.

wo = 1/n = 1/0,5 = 0,2 — Придание равной важности всем точкам данных

Шаг 2: Рассчитайте коэффициент ошибочной классификации

Коэффициент ошибочной классификации MR = ошибочно классифицированные данные / общее количество точек данных

MR = (WD/TD) = ( 2/5 ) = 0.4

Шаг 3: Расчет производительности пня

Пень решения: дерево решений, имеющее одну глубину, называется пнем решения.

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

пень, также называемый сценой

стадия = пер(1-МР/МР)

=ln ( 1–0.4/0.4 ) = 0.6/0.4 = 0.4

ln — натуральный бревно

шаг 4: Обновите веса

шп = горе х е ^ пень

= (0.2 x e ^ 0.4 )

= 0.29

Сумма общего веса должна быть 1 для wo = 1 для wn = 1,18

для wn = новый вес

wn должен быть нормализован

Новый вес =wn/общий вес

2) Повышение градиента

ȳ = среднее значение целевого столбца = (160+167+170+185+200)/5=176

r1 = ( y-ȳ) = (160–176) = -16

r1 = остаток

r2 = Эта модель работает с остатком модели r1.

ŷ= ȳ + l1 x r2

= 176 + 0.1 x (-13)

= 174.7

l1 = скорость обучения является гиперпараметром, по умолчанию lr = 0,1, диапазон lr = от 0 до 1

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

3. Укладка:

Стекирование работает с гетерогенными моделями, все данные будут проходить через M1, M2 и M3 независимо от прогноза, полученного из всех этих моделей. мы будем рассматривать все эти предсказания как особенности

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

в стекинг-бустинге можно использовать алгоритм

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

Этап построения модели с использованием методов ансамбля (для общего понимания)

  1. Импорт библиотек
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.ensemble import VotingClassifier,BaggingClassifier,StackingClassifier
from sklearn.ensemble import AdaBoostClassifier,GradientBoostingClassifier
from xgboost import XGBClassifier
from sklearn.metrics import classification_report,confusion_matrix

2. Импорт набора данных

df=pd.read_csv('file_path')

3. ЭДА

# Find out data type, null values and duplicate values

#For data type
df.info()

#For null values
df.isnull().sum()

#duplicate 
df.duplicated().sum()
 
#And other according to requirement

4. Визуализация

#Use visual for insights
sns.distplot(df['Column_name'])
sns.countplot(df['Column_name'])
sns.heatmap(df)
#and other according to requirement

5. Разделение набора данных

#Split data into x and y variables
x=df[:,:]
y=df[:,:]
#put target column in y variable and other columns in x variable

6. Разделение набора данных на поезд и тест

xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.25,random_state=42)

7. Построение модели

# Make a function and provide Ensemble techniques as input, Use hyperparameter
#tuning according to requirement
def predict(model):
    model.fit(xtrain,ytrain)
    ypred=model.predict(xtest)
    
    traiac=model.score(xtrain,ytrain)
    testac=model.score(xtest,ytest)
    
    print(f"Training accuracy {trainac}\n test accuracy {testac}")
    
    print(classification_report(ytest,ypred))
    print(confusion_matrix(ytest,ypred))

8. Классификатор голосования

predict(VotingClassifier(estimators=models))

9. Классификатор мешков

#Logistic Regression
predict(BaggingClassifier(LogisticRegression()))

#Knighbor classifier
predict(BaggingClassifier(KNeighborsClassifier()))

#Decision Tree
predict(BaggingClassifier(DecisionTreeClassifier()))

10. Случайный лес

predict(RandomForestClassifier())
# Use hyperparameter tuning to get desired result

11. Ада-буст

predict(AdaBoostClassifier())

12. Классификатор повышения градиента

predict(GradientBoostingClassifier())

13. Классификатор XGB

predict (XGBClassifier(max_depth=2))

14. Укладка

st=StackingClassifier(estimators=models,final_estimator=DecisionTreeClassifier(criterion='entropy'))
st.fit(xtrain,ytrain)
yhat=st.predict(xtest)

print(st.score(xtrain,ytrain))
print(st.score(xtest,ytest))