Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua penalaan hiperparameter pembelajaran mesin dalam Python

Petua penalaan hiperparameter pembelajaran mesin dalam Python

WBOY
WBOYasal
2023-06-10 16:23:441274semak imbas

Dengan populariti meluas aplikasi pembelajaran mesin, semakin ramai saintis data dan pembangun pembelajaran mesin telah mula memberi perhatian kepada pengoptimuman prestasi model, yang mana penalaan hiperparameter merupakan bahagian yang amat diperlukan. Dalam pembelajaran mesin, hiperparameter mewakili parameter model dan bukannya pemberat yang dipelajari daripada data latihan. Tetapan hiperparameter yang tidak betul boleh menyebabkan prestasi model yang lemah semasa latihan dan ujian, jadi penalaan hiperparameter adalah langkah penting.

Python menyediakan banyak perpustakaan pembelajaran mesin yang popular, seperti Scikit-learn, TensorFlow, dsb. Perpustakaan ini menyediakan banyak alat untuk membantu kami dengan penalaan hiperparameter. Dalam artikel ini, kita akan membincangkan beberapa petua penalaan hiperparameter pembelajaran mesin dalam Python.

  1. Carian grid

Carian grid ialah kaedah penalaan hiperparameter yang mudah dan berkesan. Idea terasnya ialah mencuba kombinasi hiperparameter yang berbeza dan melakukan pengesahan silang pada setiap kombinasi untuk mencari gabungan hiperparameter berprestasi terbaik. Dalam Scikit-learn, kita boleh menggunakan kelas GridSearchCV untuk melaksanakan carian grid.

Berikut ialah proses umum carian grid:

1) Tentukan parameter dan kombinasi parameter yang perlu ditala

2) Gunakan kelas GridSearchCV untuk melakukan silang -pengesahan dan Carian grid

3) Keluarkan kombinasi hiperparameter terbaik

Contohnya, apabila menggunakan Mesin Vektor Sokongan (SVM) dalam Scikit-belajar untuk pengelasan, anda boleh menggunakan kod berikut untuk lakukan carian grid :

from sklearn.model_selection import GridSearchCV
from sklearn import svm, datasets

iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

parameters = {'kernel':('linear', 'rbf'), 'C':[0.1, 1, 10]}
svc = svm.SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(X, y)

print("Best parameters:", clf.best_params_)
  1. Carian rawak

Walaupun carian grid mudah dan boleh dipercayai, apabila ruang lengkap hiperparameter besar, jumlah pengiraan akan menjadi sangat besar . Kaedah carian rawak mengurangkan keadaan ini dengan mengambil sampel secara rawak satu set parameter dalam ruang parameter dan menilai prestasinya. Kaedah ini meneroka ruang parameter yang lebih luas, terutamanya apabila parameter mempunyai julat yang luas dan bebas antara satu sama lain. Carian rawak mungkin lebih cekap daripada carian grid di bawah sumber pengkomputeran yang sama.

Berikut ialah proses umum carian rawak:

1) Tentukan parameter dan julat parameter yang perlu ditala

2) Gunakan kelas RandomizedSearchCV untuk melakukan silang -pengesahan dan carian rawak

3) Keluarkan kombinasi hiperparameter terbaik

Sebagai contoh, dalam model Random Forest, anda boleh menggunakan kod berikut untuk melakukan carian rawak:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV
import numpy as np

# Load data
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

# Define parameter grid
param_grid = {'n_estimators': np.arange(10, 200, 10),
              'max_features': ['auto', 'sqrt', 'log2'],
              'max_depth' : np.arange(1, 10),
              'criterion' :['gini', 'entropy']
             }

# Random search using 10-fold cross validation
rf = RandomForestClassifier()
rf_random = RandomizedSearchCV(estimator=rf,
                               param_distributions=param_grid,
                               n_iter=100,
                               cv=10,
                               random_state=42)

# Fit the model
rf_random.fit(X, y)

# Print the best parameters
print("Best parameters:", rf_random.best_params_)
  1. Pengoptimuman Bayesian

Pengoptimuman Bayesian ialah kaedah penalaan hiperparameter yang cekap. Kaedah ini mencari ruang hiperparameter dengan memilih gabungan hiperparameter yang berkemungkinan besar meningkatkan prestasi dalam setiap lelaran, secara beransur-ansur menumpu dalam proses. Pendekatan ini menggunakan keputusan larian awal untuk inferens apabila mencuba parameter yang berbeza, dan kerana kebarangkalian terdahulu D digunakan untuk memodelkan taburan kebarangkalian parameter model, ia boleh mengoptimumkan keadaan di mana hanya sejumlah kecil penerokaan boleh dilakukan. , dan boleh berfungsi dengan baik Ia boleh mengendalikan parameter diskret atau berterusan, jenis fungsi objektif dan hingar yang berbeza, dan melaraskan peraturan carian pratetap secara automatik Ia mempunyai kelebihan yang ketara dalam pengoptimuman hiperruang berbilang dimensi.

Berikut ialah proses umum pengoptimuman Bayesian:

1) Tentukan parameter dan julat parameter yang perlu ditala

2) Tentukan fungsi objektif dan gunakan Bayesian Optimumkan algoritma pengoptimuman

3) Keluarkan kombinasi hiperparameter terbaik

Contohnya, apabila menggunakan Gradient Boosting Machine (GBM) dalam Scikit-learn untuk pengelasan, anda boleh menggunakan kod berikut Bayesian optimization :

from sklearn.datasets import load_iris
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
from bayes_opt import BayesianOptimization

# Load data
iris = load_iris()
X = iris.data[:, :2]
y = iris.target

# Define objective function
def gbmler_learning_rate(learning_rate):
    gb = GradientBoostingClassifier(learning_rate=learning_rate)
    return cross_val_score(gb, X, y, cv=5).mean()

# Define parameter space
param_space = {'learning_rate': (0.01, 1.0)}

# Initialize optimizer
optimizer = BayesianOptimization(
    f=gbmler_learning_rate,
    pbounds=param_space,
    random_state=42
)

# Optimize
optimizer.maximize(
    init_points=5,
    n_iter=25
)

# Print the best parameters
print("Best parameters:", optimizer.max['params'])
  1. Carian parameter boleh tafsir

Biasanya carian hiperparameter adalah untuk meletakkan idea pengelas sebelum carian hiperparameter, untuk semua kemungkinan Tetapan hiperparameter melakukan beberapa pengekodan, seperti mengatur setiap tetapan hiperparameter ke dalam tatasusunan semasa proses carian, dan menggunakan tatasusunan sebagai input. Masalah utama dengan melakukan carian dengan pendekatan ini ialah hiperparameter akan muncul sebagai individu dan akan kehilangan maklumat tentang kesan interaktifnya. Sebaliknya, pendekatan ini adalah sebahagian daripada melibatkan diri dalam pemodelan statistik yang mudah dan boleh ditafsir. Faedah lain menggunakan pengoptimuman Bayesian ialah keupayaan untuk mencari perhubungan antara kamera dan hiperparameter terkekang apabila menggunakan inferens model kebarangkalian.

Ringkasnya, Python menyediakan banyak teknik untuk penalaan hiperparameter pembelajaran mesin, termasuk carian grid, carian rawak, pengoptimuman Bayesian dan carian parameter boleh tafsir. Memilih kaedah yang sesuai dengan set data anda boleh membantu anda mencapai hasil yang lebih baik dalam penalaan hiperparameter.

Atas ialah kandungan terperinci Petua penalaan hiperparameter pembelajaran mesin dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn