Önceki yanıtlara eklemek için baştan başlayacağız:
Modellerinizi egzersiz verilerine göre değiştirmenin birkaç yolu vardır, bazıları açıktır, bazıları daha azdır. Birincisi ve en önemlisi, eğitim parametrelerinin (ağırlıkların) verilere (lojistik regresyondaki eğri uydurma parametreleri, sinir ağındaki ağ ağırlıkları vb.) Daha sonra verilerdeki gürültüyü modellersiniz - fazla abartıyorsanız, sadece altta yatan üretme işlevini değil, aynı zamanda örnek büyüklüğü ve örneğin popülasyonun mükemmel bir temsili olmadığı gerçeğini de yakalarsınız. Bu aşırı uyum, modelin belirli niteliklerini (genel olarak karmaşıklığı) cezalandırarak bir dereceye kadar hafifletilebilir. Bu, tren örneğindeki performans artık önemli ölçüde iyileşmediğinde, bazı nöronları sinir ağından (bırakma denir) kaldırarak eğitimi durdurarak yapılabilir,https://ieeexplore.ieee.org/document/614177/ ) vb.). Bununla birlikte, bu düzenleme stratejilerinin kendileri parametrelendirilir (ne zaman durursunuz?, Kaç nöron kaldırılacak? Vb.). Ayrıca, makine öğrenimi modellerinin çoğunda, eğitim başlamadan önce ayarlanması gereken bir dizi hiper parametre bulunur. Ve bu hiper parametreler, parametre ayarlama aşamasında ayarlanır.
Bu bizi ikinci ve daha ince tipte aşırı sığdırmaya getiriyor: hiper parametre aşırı sığdırma. Çapraz doğrulama, modelinizi numunenin k-1 katlarında sıfırdan tekrar tekrar eğiterek ve son katında test ederek "en iyi" hiper parametreleri bulmak için kullanılabilir.
Peki tam olarak nasıl yapılır? Arama stratejisine bağlı olarak (tenshi tarafından verilir), modelin hiper parametrelerini ayarlar ve modelinizi her seferinde farklı test katları kullanarak eğitirsiniz. Modelin tüm test katlamaları üzerindeki ortalama performansını "hatırlar" ve tüm prosedürü başka bir hiper parametre seti için tekrarlarsınız. Ardından, çapraz doğrulama sırasında en iyi performansa karşılık gelen hiper parametre kümesini seçersiniz. Gördüğünüz gibi, bu prosedürün hesaplama maliyeti, dikkate alınması gereken hiper-parametre kümelerinin sayısına bağlıdır. Bu yüzden bu seti seçmek için bazı stratejiler geliştirildi (burada tenshi'nin söylediklerini genelleştireceğim):
- Izgara araması: her hiper parametre için sonlu sayıda olası değer numaralandırırsınız . Daha sonra, numaralandırılmış hiper parametrelerin tüm kombinasyonları için prosedür kapsamlı bir şekilde yapılır. Açıkçası, sürekli hiper parametrelere sahipseniz, hepsini deneyemezsiniz.
- Rasgele ızgara araması: normal ızgara aramasına benzer, ancak bu sefer tüm kombinasyonları kapsamlı bir şekilde denemezsiniz, bunun yerine olası tüm değerler için sabit bir sayıda örnek alabilirsiniz. Burada sadece bir hiper parametre için olası değerleri numaralandırmanın mümkün olmadığını, aynı zamanda örnekleme için bir dağıtım da sağlayabileceğinizi unutmayın.
- BayesianSearch - hiper parametre değerlerinin kombinasyonu, skorun beklenen iyileşmesini en üst düzeye çıkarmak için seçilir. Daha fazla bilgi için: http://papers.nips.cc/paper/4522-pratik- bayesian-optimization-of-machine-learning-algorithms.pdf . Ve sadece bununla ilgilenen bir kütüphane: https://github.com/hyperopt/hyperopt . Sklearn ile tenshi'nin önerdiği kadar kolay bir şekilde birleştirilemediğinden, yalnızca sklearn ile çalışmıyorsanız kullanın.
- Hiper parametre uzayında yönlendirmeli arama için diğer yollar. Deneyimlerime göre nadiren kullanılırlar, bu yüzden onları burada kapsamaz.
Bununla birlikte, hiper parametreler de verilerin üzerine sığabileceğinden (ve edeceğinden), bu hikayenin sonu değildir. Çoğu durumda onunla yaşayabilirsiniz, ancak modelinizin genelleme gücünü en üst düzeye çıkarmak istiyorsanız, hiper parametreleri de denemek ve düzenlemek isteyebilirsiniz. İlk olarak, iç içe ızgara arama özelliğini kullanarak örnek dışı verilerdeki performansı biraz daha iyi değerlendirebilirsiniz (ayrıntılar: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , tartışma: İç içe çapraz doğrulama model seçimi için) veya yalnızca hiper parametre ayarlama için kullanılmayan bir doğrulama kümesi kullanın. Hiper-parametre uzayında düzenlenme gelince, bu aşağı yukarı açık bir sorudur. Bazı fikirler, en iyi hiper parametre değerleri kümesini değil, ortaya daha yakın bir şeyi seçmeyi içerir; akıl yürütme şu şekildedir: en iyi hiper-parametre değerleri büyük olasılıkla verileri geçersiz kılar, çünkü tren verisinden diğerlerinden daha iyi performans gösterir, kötü parametreler sadece kötüdür, ancak ortadakiler muhtemelen en iyilerinden daha iyi genelleme elde edebilir. . Andrew Ng bu konuda bir makale yazdı. Başka bir seçenek, arama alanınızı sınırlamaktır (buraya güçlü bir önyargı getirerek düzenliyorsunuz - arama alanı dışındaki değerler asla açıkça seçilmeyecek).
Yan açıklama: Doğruluğu bir performans ölçütü olarak kullanmak çoğu durumda çok kötü bir fikirdir, f1 ve f_beta puanlarına bakın - bu metrikler çoğu durumda ikili sınıflandırma problemlerinde gerçekten optimize etmeye çalıştığınız şeyi daha iyi yansıtacaktır.
Özetlemek gerekirse: tek başına çapraz doğrulama, modelin örnek dışı veriler üzerindeki performansını değerlendirmek için kullanılır, ancak hiper-parametreler alanındaki arama stratejilerinden biriyle birlikte hiper-parametreleri ayarlamak için de kullanılabilir. İyi hiper parametrelerin bulunması, aşırı takmanın önlenmesine veya en azından azaltılmasına izin verir, ancak hiper parametrelerin de verileri geçersiz kılabileceğini unutmayın.