Автоматическая версия одного из самых мощных инструментов машинного обучения XGBOOST.
Всем привет. Как дела! все хорошо? сегодня мы рассмотрим новый способ автоматизации XGBoost через AutoAGB.
Мы начнем с нашего обычного XGBOOST и продолжим продвижение AutoXGB. хорошо?
Сначала загрузите все данные
# Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset dataset = pd.read_csv('credit_data.csv', sep=",") #drop the missing values dataset = dataset.dropna() X = dataset.iloc[:,1:4].values y = dataset.iloc[:, 4].values #------------------------------------------------------ #Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0) from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)
Обычный XGBoost
#---XGBOOST------------------ # Fitting XGBoost to the Training set from xgboost import XGBClassifier classifier = XGBClassifier() classifier.fit(X_train, y_train) # Predicting the Test set results y_pred_xg = classifier.predict(X_test) # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred_xg) #evaluation Metrics from sklearn import metrics print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred_xg)) print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred_xg)) print('Average Precision:',metrics.average_precision_score(y_test, y_pred_xg))
Теперь давайте выполним RandmizedSearchCV в качестве альтернативы GridSearchCV (gridsearchcv использует грубую силу, поэтому требует много вычислительной мощности и времени)
# Set parameter grid xgb_params = {'max_depth': [3, 5, 6, 8, 9, 10, 11], 'learning_rate': [0.01, 0.1, 0.2, 0.3, 0.5], 'subsample': np.arange(0.4, 1.0, 0.1), 'colsample_bytree': np.arange(0.3, 1.0, 0.1), 'colsample_bylevel': np.arange(0.3, 1.0, 0.1), 'n_estimators': np.arange(100, 600, 100), 'gamma': np.arange(0, 0.7, 0.1)} from sklearn.model_selection import RandomizedSearchCV # Create RandomizedSearchCV instance xgb_grid = RandomizedSearchCV(estimator=XGBClassifier(objective='binary:logistic', tree_method="gpu_hist", # Use GPU random_state=42, eval_metric='aucpr'), # AUC under PR curve param_distributions=xgb_params, cv=5, verbose=2, n_iter=60, scoring='average_precision') # Run XGBoost grid search xgb_grid.fit(X_train, y_train) #to get the optimal setting for xgboost xgb_grid.best_params_ xgb_grid.best_score_
Лучшие параметры: xgb_grid.best_params_
{'subsample': 0.4, 'n_estimators': 500, 'max_depth': 3, 'learning_rate': 0.1, 'gamma': 0.4, 'colsample_bytree': 0.8000000000000003, 'colsample_bylevel': 0.7000000000000002}
и его оценка: 0,9934761095555403
Теперь подогнать модель с лучшими параметрами
#fit the model with the best estimator classifier1 = XGBClassifier(subsample= 0.4,n_estimators= 500, max_depth=3,learning_rate=0.1,gamma=0.4,colsample_bytree= 0.8000000000000003, colsample_bylevel=0.7000000000000002) classifier1.fit(X_train,y_train) # Predicting the Test set results y_pred_xg1 = classifier1.predict(X_test) # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred_xg1) #evaluation Metrics from sklearn import metrics print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred_xg1)) print('Balanced Accuracy Score:', metrics.balanced_accuracy_score(y_test, y_pred_xg1)) print('Average Precision:',metrics.average_precision_score(y_test, y_pred_xg1))
Объединение оценок с RandomizedSearchCV и без него
Теперь давайте выполним AUTOXGBoost
#AutoXGBOOST #Current version there is dependency bug so, install autoxgb without #dependencies pip install --no-deps autoxgboost #pip install autoxgboost
Теперь установите оптимальные параметры
Ссылка на дополнительные определения параметров от разработчика, а также возможность использования CLI для запуска и выполнения скрипта: https://github.com/abhishekkrthakur/autoxgb
Теперь будем обучать модель
Вот и все!
Причины, по которым AutoXGB работает лучше, следующие:
- Использование байесовской оптимизации с Optuna для настройки гиперпараметров, которая быстрее, чем RandomizedSearchCV или GridSearchCV, поскольку использует информацию из предыдущих итераций для поиска лучших гиперпараметров за меньшее количество итераций.
- Таким образом, Optuna обеспечивает лучшую точность при скорости.
- Задокументировано Оптимизированное использование памяти, которое потребляет в 8 раз меньше памяти.
и недостатки
- мы теряем значительный контроль над настройкой параметров
- другой заметной проблемой является отсутствие контроля над показателями оценки.
Далее мы рассмотрим спешку с внедрением OPTUNA в качестве лучшей альтернативы методу настройки гиперпараметров Grid Search.
Если вы найдете эту статью полезной…. просмотрите другие мои методы, такие как классификатор мешков, классификатор голосования, стекирование и другие, я гарантирую, что они вам тоже понравятся. До скорых встреч с еще одной интересной темой.
Некоторые из моих альтернативных интернет-присутствий Facebook, Instagram, Udemy, Blogger, Issuu и другие.
Также доступно на Quora @ https://www.quora.com/profile/Rupak-Bob-Roy