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 information 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 data.
Frequent 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 alternative 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 finding out value, digunakan untuk mengontrol besarnya langkah pada setiap iterasi saat menuju minimal loss carry out. Finding out value 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 alternative 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 Job Parameters
Parameter ‘aim’ digunakan dalam proses optimisasi XGBoost dan value-nya tergantung exercise yang dikerjakan (klasifikasi, rangking, atau regresi).
Parameter ‘eval_metric’ digunakan untuk mengevaluasi data validasi.
Parameter ‘seed’ digunakan untuk memberikan hasil yang konsisten tiap iterasi dalam prediksi.
Major Setup
Import libraries
# import pandas for data wrangling
import pandas as pd# import numpy for Scientific computations
import numpy as np
# import machine finding out 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
Be taught dataset
data = 'wholesale_customer_data.csv'df = pd.read_csv(data)
Declare operate vector adn aim 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:
Minimize up data into separate teaching and check out 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.
Parts 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 aim 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 aim carry out
def aim(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 = aim,
home = home,
algo = tpe.advocate,
max_evals = 100,
trials = trials)
#4 Print outcomes
print("The simplest hyperparameters are : ","n")
print(best_hyperparams)'''
OUTPUT
The simplest 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 (finding out exercise). 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.
Be taught Additional by way of myskill.id/course/xgboost-hyperparameter-tuning