Ben skolearn 's python içinde lojistik regresyon ile bir sınıflandırma problemi çözüyorum.sklearn lojistik regresyon
Sorunum genel/genel bir sorundur. İki sınıf/sonuç (pozitif/negatif veya 1/0) içeren bir veri kümem var, ancak set oldukça dengesiz. ~% 5 pozitif ve ~% 95 negatif vardır.
Bunun gibi dengesiz bir problemle başa çıkmanın birçok yolu olduğunu biliyorum, ancak sklearn paketini kullanarak düzgün bir şekilde nasıl uygulanacağına dair iyi bir açıklama bulamadı.
Şimdiye kadar yaptığım şey, pozitif sonuçlu ve eşit sayıda rastgele seçilmiş negatif giriş içeren girişler seçerek dengeli bir antrenman seti oluşturmaktır. Daha sonra modeli bu sete göre eğitebilirim, ancak modeli değiştirmeden sonra orijinal dengesiz popülasyonda/sette nasıl çalışacağım konusunda takılıyorum.
Bunu yapmak için belirli adımlar nelerdir? Sklearn belgelerini ve örneklerini döktüm ve iyi bir açıklama bulamadım.
Evet, class_weight = 'auto' harika çalışıyor. Yerleşik/kara kutu otomatik ağırlığını kullanmama avantajı var mı, bunun yerine eğitim setini yeniden dengelemek (aslında yaptığım gibi)? Ne olursa olsun, antrenman setini dengeleme yaklaşımını ele alsaydım, dengesiz bir test setine uygulamak için fit/eğitimli modeli nasıl ayarlayabilirim? – agentscully
Bu kara kutu değil: sadece algoritma tarafından optimize edilen ampirik amaç fonksiyonundaki örnekleri yeniden ağırlıklandırıyor. Aşırı temsil edilen sınıflar düşüktür çünkü eğitim daha hızlıdır :) ancak, özellikle de modeliniz zaten aşırı bir rejimde bulunuyorsa (tren ve test puanları arasında önemli bir boşluk varsa) kötü olan verileri düşürüyorsunuz. Aşırı örnekleme genellikle matematiksel olarak yeniden ağırlıklandırmaya eşdeğerdir, ancak yinelenen işlemler nedeniyle daha yavaştır. – ogrisel