Meningkatkan Performa Model ML (Lanjutan ...)

Peningkatan Performa dengan Algoritma Tuning

Seperti yang kita ketahui bahwa model ML diparameterisasi sedemikian rupa sehingga perilakunya dapat disesuaikan untuk masalah tertentu. Algoritma tuning berarti mencari kombinasi terbaik dari parameter tersebut agar performansi model ML dapat ditingkatkan. Proses ini kadang-kadang disebut optimasi hyperparameter dan parameter dari algoritme itu sendiri disebut hyperparameter dan koefisien yang ditemukan oleh algoritme ML disebut parameter.

Di sini, kita akan membahas tentang beberapa metode untuk penyetelan parameter algoritma yang disediakan oleh Python Scikit-learn.

Pencarian Parameter Grid

Ini adalah pendekatan penyetelan parameter. Poin kunci dari kerja metode ini adalah ia membangun dan mengevaluasi model secara metodis untuk setiap kemungkinan kombinasi parameter algoritme yang ditentukan dalam kisi. Karenanya, kita dapat mengatakan bahwa algoritma ini memiliki sifat pencarian.

Example

Dalam resep Python berikut, kita akan melakukan pencarian grid dengan menggunakan kelas Sklearn GridSearchCV untuk mengevaluasi berbagai nilai alfa untuk algoritma Regresi Ridge pada dataset diabetes Pima Indians.

Pertama, impor paket yang diperlukan sebagai berikut -

import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV

Sekarang, kita perlu memuat dataset diabetes Pima seperti yang dilakukan pada contoh sebelumnya -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Selanjutnya, evaluasi berbagai nilai alfa sebagai berikut -

alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)

Sekarang, kita perlu menerapkan pencarian grid pada model kita -

model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)

Cetak hasilnya dengan baris skrip berikut -

print(grid.best_score_)
print(grid.best_estimator_.alpha)

Output

0.2796175593129722
1.0

Keluaran di atas memberi kita skor optimal dan seperangkat parameter di grid yang mencapai skor tersebut. Nilai alpha dalam kasus ini adalah 1,0.

Pengaturan Parameter Pencarian Acak

Ini adalah pendekatan penyetelan parameter. Titik kunci kerja metode ini adalah mengambil sampel parameter algoritme dari distribusi acak untuk sejumlah iterasi tetap.

Example

Dalam resep Python berikut, kita akan melakukan pencarian acak dengan menggunakan class RandomizedSearchCV dari sklearn untuk mengevaluasi nilai alpha yang berbeda antara 0 dan 1 untuk algoritma Regresi Ridge pada dataset diabetes Pima Indians.

Pertama, impor paket yang diperlukan sebagai berikut -

import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV

Sekarang, kita perlu memuat dataset diabetes Pima seperti yang dilakukan pada contoh sebelumnya -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Selanjutnya, evaluasi berbagai nilai alpha pada algoritma regresi Ridge sebagai berikut -

param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)

Cetak hasilnya dengan baris skrip berikut -

print(random_search.best_score_)
print(random_search.best_estimator_.alpha)

Output

0.27961712703051084
0.9779895119966027

Output di atas memberi kita skor optimal yang mirip dengan pencarian grid.