Belli ki tüm endüstri için konuşamam, ama endüstride çalışıyorum ve Kaggle'da rekabet ettim, böylece POV'umu paylaşacağım.
İlk olarak, Kaggle’ın, insanların endüstride yaptıkları ile tam olarak uyuşmadığından şüpheleniyorsunuz. Bu bir oyundur ve çok çılgınca kısıtlamaları olan oyuncılığa tabidir. Örneğin, şu anda çalışan Santander yarışmasında:
- Özellik adları yapay olarak anlamlarını gizlemek için harmanlandı.
- “Eğitim” seti yapay olarak, sütunlardan daha az sayıda sıra içerecek şekilde sınırlandı, böylece özellik seçimi, sağlamlık ve düzenlileştirme tekniği başarı için vazgeçilmez olacaktı.
- Sözde "test" seti eğitim seti daha belirgin farklı bir dağılıma sahiptir ve iki açıkça değil aynı popülasyondan rasgele örnekler.
Biri bana işyerinde böyle bir veri seti verseydi, derhal özellik mühendisliği konusunda onlarla çalışmayı teklif ederdim, böylece daha kullanışlı özellikler elde edebilirdik. Etki alanı terimlerinin olası terimler, eşikler, kategorik değişken kodlama stratejileri vb. Konularına karar vermek için alan bilgisini kullanmamızı öneririm. Sorunu bu şekilde değerlendirmek, bir veritabanı mühendisi tarafından üretilen bir eksoz dosyasından anlam çıkarmaya çalışmaktan çok daha verimli olacaktır. ML eğitimi.
Ayrıca, belirli bir sayısal sütunun bir ZIP kodundan ziyade tamamen sayısal olmadığını öğrenirseniz, verilerinizi artırmak için ABD Nüfus Sayımı gibi üçüncü taraf veri kaynaklarından veri alabilir ve alabilirsiniz. Veya randevunuz varsa, o gün için S&P 500 kapanış fiyatını da dahil edersiniz. Bu tür dış büyütme stratejileri, belirli veri seti ve önemli alan bilgisi hakkında ayrıntılı bilgi gerektirir, ancak genellikle saf algoritmik gelişmelerden çok daha büyük kazanımlara sahiptir.
Bu nedenle, endüstri ile Kaggle arasındaki ilk büyük fark, endüstride, özelliklerin (girdi verileri anlamında) pazarlığa açık olmasıdır.
İkinci bir farklılık sınıfı ise performanstır. Genellikle, modeller iki yoldan biriyle üretime dağıtılır: 1) model tahminleri çok geniş bir veritabanı tablosunda her satır için önceden hesaplanır, veya 2) bir uygulama veya web sitesi modele tek bir veri satırını geçer ve gerçek zamanlı olarak döndürülen bir tahmin gerekir. Her iki kullanım durumu da iyi performans gerektirir. Bu nedenlerden dolayı, K-En Yakın Komşular veya Ekstra Rastgele Ormanlar gibi büyük miktarda bellek tahmin etmek veya kullanmak için yavaş olabilecek modelleri görmezsiniz. Buna karşın, lojistik bir regresyon veya sinir ağı, birkaç matris çarpımına sahip bir yığın grubu kaydedebilir ve matris çarpımı, doğru kütüphanelerle yüksek düzeyde optimize edilebilir .Parametrik olmayan başka bir modelde istiflenmişsem +0.001 AUC alabilirsem de, tahmin verim ve gecikme süresinin çok fazla düşeceği için yapamam.
Bunun bir güvenilirlik boyutu da var - dört farklı teknoloji harikası 3. parti kütüphanenin istiflenmesi , LightGBM , xgboost , catboost ve Tensorflow'un ( elbette GPU'larda ) sizi MSE'de düşürdüğünü gösteriyor. Kaggle yarışmalarını kazanır, ancak bir şeyler ters giderse yüklemek, dağıtmak ve hata ayıklamak için dört farklı kütüphanedir. Tüm bunları dizüstü bilgisayarınızda çalıştırabilirseniz harika olur, ancak AWS'de çalışan bir Docker konteynerinin içinde çalışmasını sağlamak tamamen farklı bir hikaye. Çoğu şirket, yalnızca bu tür dağıtım sorunları ile ilgilenmek için küçük bir devops ekibine önderlik etmek istememektedir.
Bu, kendi içinde istifleme mutlaka büyük bir anlaşma değil dedi. Aslında, hepsi eşit derecede iyi performans gösteren ancak çok farklı karar sınırlarına sahip birkaç farklı modelin istiflenmesi, AUC'de küçük bir çarpma ve sağlamlıkta büyük bir çarpma elde etmenin harika bir yoludur. Sadece dağıtım sorunlarınız olmaya başlayabilmeniz için heterojen topluluğunuza çok fazla mutfak lavabo atmaya gitmeyin.