Bir makine öğrenme algoritmasını eğitirken, bazı parametreler belirlememiz gerekir. Probleme göre değişen bu parametrelere hiperparametre denir. Bu parametreler algoritmanın öğrenme işlemi sırasındaki davranışlarını yönlendirirler. Örneğin bir karar ağacı algoritmasının max_dept parametresini 5 olarak ayarlarsanız, karar ağacının derinliği en fazla 5 olacaktır. Bu sayede ağacın genelleyiciliği hakkında ayarlama yapabilirsiniz. Daha derin ağaçlar aşırı öğrenmeye daha yatkınken, daha sığ ağaçlar daha çok genelleyicidirler. Ya da bir optimizasyon algoritmasının learning_rate parametresini 0.01 ayarlarsanız, algoritmanız aradığı sonucu ararken 0.01 büyüklüğünde adımlar atar.

    Hiperparametreleri belirlemek tam bir ustalık işidir. Algoritmanın ve parametrelerin teorisine hakim olmayı, değiştirilen parametrelerin yaptığı etkileri çokça tecrübe etmeyi gerektirir. Ancak ne kadar tecrübeli olursanız olun belirli sezgileriniz doğrultusunda yada çokça kullanılan parametreleri kullanarak denemeler yapmanız gerekebilir.

Bu yazıda makine öğrenmesi algoritmalarının parametrelerini ayarlayabilmek için kullanılan scikitlearn kütüphanesindeki GridSearchCv nesnesini anlatacağım. Bu nesneyi kullanabilmek için bir tahminleyiciye ve deneyeceğiniz parametrelerin bulunduğu bir sözlüğe ihtiyacınız var.

Örneğin bir regresyon problemi için tahminleyici olarak meşhur XGBoost algoritmasını seçtiğinizi varsayalım. Bu durumda gösterildiği gibi bir XGBoost nesnesi oluştururuz.

estimator

Şimdi  bu algoritmanın  hangi parametreleri için hangi değerleri deneyeceğimizi belirlen bir sözlük oluşturmamız gerekiyor. Ben burada görselde de görüleceği üzere; max_dept, gamma, subsample, learning_rate, n_estimators parametreleri için belirlediğim değerlerden en iyilerini bulmaya çalıştım.

params.PNG

Bu arada GridSearchCv, parametreleri daha güvenilir değerlendirmek adına Cross Validation(Çapraz Doğrulama) kullanır. 10 kat çapraz doğrulama kullanılarak en iyi parametreleri arayan GridSearhCv nesnesi aşağıdaki gibi oluşturularak çalıştırılabilir.

gridsearchcv

Bu parametreleri, 10 kat çapraz doğrulamayı da kullanarak değerlendirmek biraz maliyetli olduğundan işlemin tamamlanması uzun sürebilir.

İşlemler tamamlandıktan sonra;

prediction

ile tahminlerinizi yapabilirsiniz.

Okuduğunuz için teşekkürler 🙂

 

Kaynaklar

[1] https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html