Hai sobat Exsight!
Jika kalian bertanya dapatkah proses convert categorical features menjadi bentuk numerik dipangkas ketika menggunakan boosting, maka jawabannya adalah sangat bisa!
Kabar gembira datang dari perusahaan teknologi Rusia yaitu Yandex yang me-release CatBoost pada tahun 2017. Memang ada beberapa teknik boosting lain yang dapat mengatasi categorical features secara otomatis, tapi CatBoost memiliki kelebihan lain. Yuk, simak penjelasannya!
Apa itu CatBoost?
CatBoost (Category Boosting) adalah algoritma machine learning yang masuk dalam keluarga gradient boosting. Gradient boosting sebagai basisnya sendiri adalah teknik machine learning untuk regresi dan klasifikasi yang powerful dan sudah terbukti pada banyak aplikasi. Algoritma gradient boosting diawali dengan inisialisasi model, pembentukan pohon-pohon regresi, hingga pembentukan model akhir berupa jumlahan nilai inisial konstan dengan seluruh deret pohon yang terus diperbaharui.
Namun riset dari Prokhorenkova dkk (2018) menyebutkan bahwa implementasi gradient boosting rupanya mengalami beberapa isu statistik target leakage pada model prediksinya sehingga menyebabkan prediction shift. Seperti namanya, target leakage diibaratkan seperti membocorkan jawaban pada sebuah ujian yang sedang berlangsung. Algoritma pada tahap preprocessing untuk categorical features pun juga mengalami isu serupa. Atas kedua isu tersebut, CatBoost hadir mengangkat ordering principle yang diklaim dapat mengatasi target leakage dengan konsep permutasi.
Nah, supaya kamu nggak makin pusing mendengar istilah-istilah baru di atas, langsung aja yuk kita implementasikan di Python. Oiya, jangan lupa pastikan bahasa Python sudah terinstall di laptop atau pc mu. Atau jika belum, kamu bisa mengikuti tutorial cara instalasi Python dan Jupyter Notebook di link ini yaaa.
Implementasi Penggunaan CatBoost pada Python
Library
pip install catboost
from catboost import CatBoostClassifier
import numpy as np
Mendefinisikan Categorical Features
cat_features = np.where(X.dtypes != np.float)[0]
Klasifikasi Data dengan CatBoost
model = CatBoostClassifier(
l2_leaf_reg = 2),
learning_rate = 0.1,
max_depth = 2,
eval_metric='AUC',
random_seed=42,
verbose=False,
loss_function='Logloss',
)
model.fit(X, y, cat_features=cat_features)
Penjabaran di atas adalah contoh sederhana penggunaan CatBoost dengan Python ya Sobat, tentu saja kalian dapat mengeksplor lebih luas lagi untuk memperoleh hasil yang maksimal. Selamat mencoba Sobat Exsight!
Jangan lupa baca artikel Exsight yang lain di sini ya!
Jika ada pertanyaan terkait code python di atas kamu bisa langsung bertanya di kolom komentar jugaa.
See youu!!
Referensi
Liudmila Prokhorenkova, Gleb Gusev, Aleksandr Vorobev, Anna Veronika Dorogush, and Andrey Gulin. 2018. CatBoost: unbiased boosting with categorical features. In <i>Proceedings of the 32nd International Conference on Neural Information Processing Systems</i> (<i>NIPS’18</i>). Curran Associates Inc., Red Hook, NY, USA, 6639–6649.