Преимущества ансамблевых методов, таких как Random Forests, AdaBoost, XGBoost и т. д.
- Менее подвержены ошибкам из-за выбросов
- Масштабирование переменных не требуется, поскольку разбиение дерева основано на упорядочении переменных, а не на абсолютном значении.
- Более устойчивая производительность против пропущенных значений
- Поддерживает распределенные вычисления, а задания можно разделить на несколько процессоров.
- Используется в качестве «серебряной пули» в промышленности
Недостатки:
- Менее интерпретируемый по сравнению с традиционными статистическими моделями, такими как линейная регрессия, логистическая регрессия и т. д.
- Склонен к переоснащению
Анализ оттока с использованием данных банковских клиентов из SuperDataScience в Kaggle. Ссылка здесь:
Deep Learning A-Z — набор данных ANN
Кирилл Еременко «Глубокое обучение A-Z™: практический курс искусственных нейронных сетейwww.kaggle.com»
#Importing the necessary Libraries from numpy import loadtxt import pandas as pd import numpy as np from xgboost import XGBClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from pandas import read_csv from pandas import set_option from xgboost import * from matplotlib import * from matplotlib import pyplot from pandas import read_csv from pandas import set_option from pandas.tools.plotting import scatter_matrix from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.model_selection import KFold from sklearn.metrics import accuracy_score from sklearn.ensemble import AdaBoostClassifier from sklearn.ensemble import GradientBoostingClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import ExtraTreesClassifier
Загрузка и подготовка данных для анализа
PATH = "../input" dataset = pd.read_csv(f'{PATH}/Churn_Modelling.csv') dataset1 = dataset #dropping unnecessary columns columns = ['RowNumber','CustomerId','Surname'] dataset1.drop(columns,axis=1,inplace = True) #creating dummy variables for categorical variables columns_to_convert=['Gender','Geography'] dataset1 = pd.get_dummies(columns = columns_to_convert,data=dataset1) # Test options and evaluation metric num_folds = 10 seed = 7 scoring = 'accuracy' #Split data into training and test sets X = dataset1.iloc[:,0:13] Y = dataset1.iloc[:,13] seed = 7 test_size = 0.3 X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
Моделирование для прогнозирования оттока клиентов банка
# ensembles ensembles = [] ensembles.append(('AB', AdaBoostClassifier())) ensembles.append(('GBM', GradientBoostingClassifier())) ensembles.append(('RF', RandomForestClassifier())) ensembles.append(('ET', ExtraTreesClassifier())) results = [] names = [] for name, model in ensembles: kfold = KFold(n_splits=num_folds, random_state=seed) cv_results = cross_val_score(model, X_train, y_train, cv=kfold, scoring=scoring) results.append(cv_results) names.append(name) msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std()) print(msg)
Вывод
Моделирование оттока с использованием XGBoost
# fit model on training data model = XGBClassifier(learning_rate=0.1,max_depth=5,n_estimators=300,n_jobs=-1) model.fit(X_train, y_train) # make predictions for test data y_pred = model.predict(X_test) predictions = [round(value) for value in y_pred] # evaluate predictions accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0))
XGBoost Точность
Функция Важность
# Feature Importance plot_importance(model) pyplot.show()