Veri kümesi örneğinde hiperparametre ayarı kötü bir fikir midir?


19

Ben 140000 örnek bir veri kümesi ve bunun için bir ikili sınıflandırma (SVM, Lojistik Regresyon, Rastgele Orman vb.)

Çoğu durumda, Izgara veya Rastgele arama kullanarak tüm veri kümesinde hiperparametre ayarı çok masraflıdır.

Aşağıdaki tekniği kullanmaya başladım

  • Veri kümemdeki alt örnek
  • Hiperparametreleri ayarlamak için elde edilen fraksiyonu kullanın
  • Veri kümesinin tamamını kullanarak bir modeli eğitmek için elde edilen parametreleri kullanın

İkinci adım, bir kullanımı ile ilgili parametrelerin her dizi değerlendirmek sklearn's GridSearchCVcv = 10. Üçüncü adımda oluşturduğum son modeli değerlendirmek için sklearn's cross_val_predict. Bu anlamda modellerimi yüzde 10 veri bırakarak değerlendiriyorum, geri kalanı üzerinde çalışıyorum ve% 10, tekrar tekrar 10 kez tahmin doğruluğunu ölçüyorum ve ardından puanların ortalamasını alıyorum.

Beni endişelendiren şey, tüm veri setim üzerinde eğitimden aldığım tahmin doğruluğunun, parametrelerin en iyi parametre seti için ayarlanması sırasında aldığım değerlendirmeye gerçekten yakın olmasıdır (test edilen her parametre seti, ortalama 10'dan elde edilen bir puan çıkarır. çapraz geçerlilik sonuçları).

Çoğu zaman, cross_val_predicttüm eğitim örnekleri (tüm veri seti) kullanılarak ölçülen doğruluk , en iyi parametrelerin değerlendirilmesinin biraz üzerindedir.

Bunu burada göstermek için bir dizi parametrenin değerlendirilmesi (yukarıda tarif ettiğimden daha küçük bir veri kümesinde, ancak etki aynıdır)

Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...

Ve cross_val_predicten iyi parametreleri kullanarak tüm veri setimin eğitiminden aldığım ortalama puanlar

precision    recall  f1-score   support

      0       0.86      0.85      0.86     15417
      1       0.86      0.87      0.87     16561

avg / total       0.86      0.86      0.86     31978

acc score: 0.863750078179
roc au score: 0.863370490059
[[13147  2270]
 [ 2087 14474]]

Gördüğünüz gibi, tüm veri kümesinde eğitim sonuçları iyileştirir. Ben de kötü ayarlanmış modeli (örn için varsayılan değerleri veya rastgele değerler kullanılarak olduğunu doğrulamış olması Cve gammaçok daha kötü tahmin doğruluğu yol).

Genel olarak, bir alt kümedeki hiperparametreleri ayarlamanın ideal olmadığını, ancak çok uzun süre beklemek zorunda kalmadan potansiyel olarak nispeten iyi sonuçlara yol açabileceğini düşünüyorum. Örneğin, bu yaklaşımı kullanmadan önce optunityhiperparametreyi tüm veri kümesinde ayarlamak için kullanılan paketi kullandım . Bu prosedürün tamamlanması 3-5 gün sürecek ve ya gerçekten iyi bir hassasiyet ya da gerçekten iyi bir geri çağırma olan ancak her ikisinde birden olmayan sonuçlar üretecektir, bu nedenle her sınıf için ya hassasiyet ya da geri çağırma gerçekten çok yüksekti (diğerinden daha yüksekti) sınıflandırıcılar başarmıştı) f1 ölçümü gerçekten düşüktü. Aksine, daha sonraki yaklaşımın kullanılması birkaç saatlik bir eğitime ve daha iyi bir f1 ölçümüne yol açar.

Endişelerim:

Sınıflandırma doğruluğumu sınırlayabilir miyim? Veri kümemin sunabileceği tüm tahmin gücünü yalnızca bir alt kümeye ayarlayarak kullanmaktan kaçınır mıyım? Böyle bir performans zararı yaşanıyorsa, bir şekilde bir faktörle sınırlı mı?


Lütfen yakın tahmin doğruluğuna yol açan iki yöntemi açıklığa kavuşturun. Verileri, eğitim seti için değil, yalnızca hiper parametreleri optimize etmek için kullanılan eğitim setine ve doğrulama setine bölüyor musunuz?
Iliyan Bobev

Güncellenmiş soruma bakın. Umarım şimdi daha açıktır.
LetsPlayYahtzee

Yanıtlar:


15

Jim'in (+1) cevabına ek olarak: Bazı sınıflandırıcılar için hiper parametre değerleri, örneğin doğrusal bir SVM için eğitim örneği sayısına bağlıdır, temel optimizasyon problemi

mbenn12w2+CΣben=1ξben

tabi

yben(xbenwb)1-ξben,birndξben0ben

ξbenC

SVM'nin bazı uygulamaları şu şekilde yeniden parametrelendirilir:

mbenn12w2+CΣben=1ξben

telafi etmek için, ama bazıları değil. Bu nedenle göz önünde bulundurulması gereken ek bir nokta, optimal hiper parametrelerin egzersiz örneklerinin sayısına bağlı olup olmadığına ilişkindir.

Jim'e, model seçim ölçütüne uymanın daha fazla sorun olacağı konusunda katılıyorum, ancak alt örnekte bile yeterli veriye sahipseniz, bu önemli bir sorun olmayabilir.


11

Veri kümesi örneğinde hiperparametre ayarı kötü bir fikir midir?

C: Evet, çünkü seçtiğiniz tren testi bölünmesinden kaynaklanan belirli test setinde aşırı yüklenme (hiperparametreler) riski taşıyorsunuz.

Sınıflandırma doğruluğumu sınırlayabilir miyim?

λ*

Veri kümemin sunabileceği tüm tahmin gücünü yalnızca bir alt kümeye ayarlayarak kullanmaktan kaçınır mıyım?

C: önceki cevaba bakınız.

Böyle bir performans zararı yaşanıyorsa, bir şekilde bir faktörle sınırlı mı?

A: idem.

Parametreleri de değerlendirmek için kullandığım için 10 kat çaprazlama kullanarak doğruluğumu ölçüyorum

C: Bunun başlıkta sorulandan farklı olduğunu unutmayın. 10-kat CV, 10'un üzerinde test treni bölünmesini yineleyerek "tarafsız" (daha az taraflı) genelleştirilebilirlik tahminine ulaşır (bu durumda doğrulukla ölçülür). 10 katlı CV ilk cevapta bahsettiğim sorunu tam olarak ele alıyor.

tüm veri setimdeki eğitimden elde ettiğim tahmin doğruluğu

C: Bu, iyimser olarak önyargılı olabilen bir "örnek içi" önlemdir . Ancak, çok sayıda vakanız ve nispeten az özelliğiniz olduğunu unutmayın, böylece bu iyimserlik yanlılığı bir sorun olmayabilir. Makine öğrenmesi külçe: "en iyi düzenleyici daha fazla veri."

[devamı], parametreleri en iyi parametre seti için ayarlarken elde ettiğim değerlendirmeye her zaman çok yakın.

C: önceki cevaba bakınız. Hiperparametre çizimlerine bakın: ayarlama hatası ve ne kadar azalır? Söylediklerinizden, ayarlama pek bir şey yapmıyor.

Bunu aşağıdaki gibi test edebilirsiniz. % 70 -% 30 tren testi bölünmesi yapın. Şunun tahmin performansını karşılaştırın:

  1. tren seti üzerinde eğitilmiş isimsiz bir model,
  2. tren seti üzerinde eğitilmiş 10 kat CV ayarlı model.

Her iki modelin de test setini tahmin etmesine izin verin. Performans çok yakınsa, ayar yapmak pek bir şey yapmaz. Performans, ayarlanan model lehine farklıysa, ayar yaklaşımına devam edin.


1

Yapay sinir ağlarına (YSA) cevap vereceğim.

YSA'ların hiperparametreleri, ya öğrenme sürecini (örneğin, öğrenme oranı ya da mini-parti büyüklüğü) ya da mimarisini (örneğin, gizli birimlerin ya da katmanların sayısı) tanımlayabilir.

Mimari hiperparametrelerin eğitim setinizin bir alt kümesine ayarlanması muhtemelen iyi bir fikir değildir (eğitim setinizde gerçekten çeşitlilik yoksa, yani eğitim setinin boyutunu artırmak YSA performansını arttırmaz), çünkü mimari hipermetreler YSA'nın kapasitesini değiştirir.

Eğitim sürecinizin bir alt kümesinde öğrenme sürecini tanımlayan hiperparametreleri ayarlamaktan daha az endişe duyarım, ancak sanırım biri ampirik olarak doğrulamalıdır.



0

Tüm veri kümesi için en uygun hiperparametre değerleri hakkında kabaca ama yararlı bir tahmin elde etmek için çok duyarlıklı değerlendirmeleri destekleyen hiperparametre optimizasyon algoritmalarını, yani verilerinizin alt kümelerindeki değerlendirmeleri kullanabilirsiniz. Bu tür yaklaşımlar tipik olarak hiperparametre optimizasyonunu çalıştırmak için gereken toplam hesaplama maliyetinin azaltılmasına izin verir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.