Terdapat 3 poin yang menjadi poin pembahasan kami kali ini, yaitu:
- What are Hyperparameters?
- XGBoost Hyperparameters
- Demo
Hiperparameter dalam mannequin pembelajaran mesin adalah parameter-parameter yang perlu ditentukan secara handbook sebelum pelatihan mannequin yang memengaruhi perilaku dan kinerja mannequin. Pemilihan nilai hiperparameter yang tepat sangat penting. Tuning hiperparameter bertujuan mencari kombinasi nilai yang memberikan mannequin terbaik. Proses ini sangat krusial untuk memastikan mannequin efektif dan sesuai dengan information.
Normal Parameters
Parameter ‘booster’ digunakan untuk menentukan jenis mannequin boosting yang akan digunakan. Boosting adalah teknik pembelajaran ensemble yang menggabungkan prediksi dari beberapa pembelajar lemah (umumnya resolution tree) untuk membuat mannequin prediksi yang lebih kuat. XGBoost mendukung booster:
- gbtree (default): mannequin berbasis pohon.
- gblinear: mannequin linear.
- dart: mannequin over-spesialization
Parameter ‘verbosity’ digunakan untuk menampilkan pesan. Default-nya adalah 1.
Parameter ‘nthread’ adalah jumlah thread yang digunakan, default: most thread.
Booster Parameters
Parameter ‘eta’, dikenal sebagai studying fee, digunakan untuk mengontrol besarnya langkah pada setiap iterasi saat menuju minimal loss perform. Studying fee memengaruhi kontribusi setiap pohon dalam ensemble.
Parameter ‘gamma’ berfungsi sebagai faktor regularisasi yang menentukan pengurangan kerugian minimal yang diperlukan agar suatu simpul dapat bercabang selama proses pembangunan pohon.
Parameter ‘max_depth’ dalam XGBoost digunakan untuk menentukan kedalaman maksimum dari setiap resolution tree dalam mannequin ensemble. Semakin besar nilai ‘max_depth’, semakin kompleks modelnya jarena setiap pohon dapat memiliki lebih banyak simpul (nodes).
Baca lebih lanjut parameter Booster disini.
Studying Process Parameters
Parameter ‘goal’ digunakan dalam proses optimisasi XGBoost dan value-nya tergantung process yang dikerjakan (klasifikasi, rangking, atau regresi).
Parameter ‘eval_metric’ digunakan untuk mengevaluasi information validasi.
Parameter ‘seed’ digunakan untuk memberikan hasil yang konsisten tiap iterasi dalam prediksi.
Primary Setup
Import libraries
# import pandas for information wrangling
import pandas as pd# import numpy for Scientific computations
import numpy as np
# import machine studying libraries
import xgboost as xgb
from sklearn.metrics import accuracy_score
# import packages for hyperparameters tuning
from hyperopt import STATUS_OK, Trials, fmin, hp, tpe
Learn dataset
information = 'wholesale_customer_data.csv'df = pd.read_csv(information)
Declare function vector adn goal variable
X = df.drop('Channel', axis=1)y = df['Channel']
X.head()
Output:
y.head()
Output:
# convert labels into binary valuesy[y == 2] = 0
y[y == 1] = 1
# once more preview the y labely.head()
Output:
Break up information into separate coaching and take a look at set
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)
Bayesian Optimization with HYPEROPT
What’s HYPEROPT
HYPERPOPT adalah modul library berbasis Python yang dapat mencari nilai hyperparameter yang paling sesuai sehingga dapat meminimalkan loss perform. Dengan kata lain, HYPERPROPT digunakan untuk hyperparameter tuning. Baca lebih lanjut mengenai modul HYPERPROPT disini.
Elements of optimization course of
- Inisialisasi area house, yakni nilai enter yang ingin kita cari.
- Mendefinisikan fungsi objektif, yakni fungsi yang mengembalikan nilai aktual yang ingin diminimumkan.
- Mengoptimalkan algoritma, yakni membangun surrogate goal perform dan memilihnya sebagai nilai yang akan dievaluasi.
- Hasilnya berupa skor atau nilai yang digunakan oleh algortima untuk membangun mannequin.
Bayesian optimization implementation
#1 Initialize area house for vary of values
house={'max_depth': hp.quniform("max_depth", 3, 18, 1),
'gamma': hp.uniform ('gamma', 1,9),
'reg_alpha' : hp.quniform('reg_alpha', 40,180,1),
'reg_lambda' : hp.uniform('reg_lambda', 0,1),
'colsample_bytree' : hp.uniform('colsample_bytree', 0.5,1),
'min_child_weight' : hp.quniform('min_child_weight', 0, 10, 1),
'n_estimators': 180,
'seed': 0
}
#2 Outline goal perform
def goal(house):
clf=xgb.XGBClassifier(
n_estimators =house['n_estimators'], max_depth = int(house['max_depth']), gamma = house['gamma'],
reg_alpha = int(house['reg_alpha']),min_child_weight=int(house['min_child_weight']),
colsample_bytree=int(house['colsample_bytree']))analysis = [( X_train, y_train), ( X_test, y_test)]
clf.match(X_train, y_train,
eval_set=analysis, eval_metric="auc",
early_stopping_rounds=10,verbose=False)
pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, pred>0.5)
print ("SCORE:", accuracy)
return {'loss': -accuracy, 'standing': STATUS_OK }
#3 Optimization algorithm
trials = Trials()best_hyperparams = fmin(fn = goal,
house = house,
algo = tpe.recommend,
max_evals = 100,
trials = trials)
#4 Print outcomes
print("The most effective hyperparameters are : ","n")
print(best_hyperparams)'''
OUTPUT
The most effective hyperparameters are :
{'colsample_bytree': 0.8839190531654304, 'gamma': 8.623979810893644, 'max_depth': 7.0, 'min_child_weight': 9.0, 'reg_alpha': 57.0, 'reg_lambda': 0.9999453807702844}
'''
Outcome and Conclusion
Dalam demo ini, kita telah membahas hyperparameter XGBoost yang dibagi menjadi 3 kategori — parameter umum, parameter booster, dan parameter tugas pembelajaran (studying process). Selain itu, kita juga membahas Optimasi Bayesian dengan HYPEROPT dan 4 bagian proses optimasinya. Hyperparameter terbaik untuk XGBoost telah kita cari juga. Teknik yang sama dapat diterapkan untuk menemukan hyperparameter optimum untuk mannequin ML lainnya.
Study Extra by way of myskill.id/course/xgboost-hyperparameter-tuning