Terdapat 3 poin yang menjadi poin pembahasan kami kali ini, yaitu:
- What are Hyperparameters?
- XGBoost Hyperparameters
- Demo
Hiperparameter dalam model pembelajaran mesin adalah parameter-parameter yang perlu ditentukan secara handbook sebelum pelatihan model yang memengaruhi perilaku dan kinerja model. Pemilihan nilai hiperparameter yang tepat sangat penting. Tuning hiperparameter bertujuan mencari kombinasi nilai yang memberikan model terbaik. Proses ini sangat krusial untuk memastikan model efektif dan sesuai dengan info.
Regular Parameters
Parameter ‘booster’ digunakan untuk menentukan jenis model boosting yang akan digunakan. Boosting adalah teknik pembelajaran ensemble yang menggabungkan prediksi dari beberapa pembelajar lemah (umumnya decision tree) untuk membuat model prediksi yang lebih kuat. XGBoost mendukung booster:
- gbtree (default): model berbasis pohon.
- gblinear: model linear.
- dart: model 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 learning price, digunakan untuk mengontrol besarnya langkah pada setiap iterasi saat menuju minimal loss carry out. Finding out price 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 decision tree dalam model ensemble. Semakin besar nilai ‘max_depth’, semakin kompleks modelnya jarena setiap pohon dapat memiliki lebih banyak simpul (nodes).
Baca lebih lanjut parameter Booster disini.
Finding out Course of Parameters
Parameter ‘objective’ digunakan dalam proses optimisasi XGBoost dan value-nya tergantung course of yang dikerjakan (klasifikasi, rangking, atau regresi).
Parameter ‘eval_metric’ digunakan untuk mengevaluasi info validasi.
Parameter ‘seed’ digunakan untuk memberikan hasil yang konsisten tiap iterasi dalam prediksi.
Main Setup
Import libraries
# import pandas for info wrangling
import pandas as pd# import numpy for Scientific computations
import numpy as np
# import machine learning 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
Study dataset
info = 'wholesale_customer_data.csv'df = pd.read_csv(info)
Declare operate vector adn objective 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
# as soon as extra preview the y labely.head()
Output:
Break up info into separate teaching and try 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 carry out. Dengan kata lain, HYPERPROPT digunakan untuk hyperparameter tuning. Baca lebih lanjut mengenai modul HYPERPROPT disini.
Components of optimization course of
- Inisialisasi space home, yakni nilai enter yang ingin kita cari.
- Mendefinisikan fungsi objektif, yakni fungsi yang mengembalikan nilai aktual yang ingin diminimumkan.
- Mengoptimalkan algoritma, yakni membangun surrogate objective carry out dan memilihnya sebagai nilai yang akan dievaluasi.
- Hasilnya berupa skor atau nilai yang digunakan oleh algortima untuk membangun model.
Bayesian optimization implementation
#1 Initialize space home for range of values
home={'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 Define objective carry out
def objective(home):
clf=xgb.XGBClassifier(
n_estimators =home['n_estimators'], max_depth = int(home['max_depth']), gamma = home['gamma'],
reg_alpha = int(home['reg_alpha']),min_child_weight=int(home['min_child_weight']),
colsample_bytree=int(home['colsample_bytree']))evaluation = [( X_train, y_train), ( X_test, y_test)]
clf.match(X_train, y_train,
eval_set=evaluation, 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 = objective,
home = home,
algo = tpe.advocate,
max_evals = 100,
trials = trials)
#4 Print outcomes
print("The best hyperparameters are : ","n")
print(best_hyperparams)'''
OUTPUT
The best 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}
'''
Consequence and Conclusion
Dalam demo ini, kita telah membahas hyperparameter XGBoost yang dibagi menjadi 3 kategori — parameter umum, parameter booster, dan parameter tugas pembelajaran (learning course of). 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 model ML lainnya.
Research Further by the use of myskill.id/course/xgboost-hyperparameter-tuning