Model oluşturma süreci etkileşimli olduğunda geri test veya çapraz doğrulama


9

Performansını geri test etmek istediğim bazı öngörülü modellerim var (yani, veri setimi al, önceki bir noktaya "geri sar" ve modelin prospektif olarak nasıl performans göstereceğini görüyorum).

Sorun şu ki, bazı modellerim etkileşimli bir süreçle oluşturuldu. Örneğin, Frank Harrell'in Regresyon Modelleme Stratejilerindeki tavsiyeyi takiben, bir modelde, özellikler ve yanıt arasındaki olası doğrusal olmayan ilişkileri ele almak için kısıtlı kübik splinelar kullandım. Her spline'ın serbestlik derecesini, alan bilgisi ve tekli birlik gücü ölçülerinin bir kombinasyonuna dayanarak ayırdım. Ancak, modelime izin vermek istediğim özgürlük dereceleri, geri test yaparken önemli ölçüde değişen veri kümesinin boyutuna açıkça bağlı. Modelin geri test edildiği her sefer için serbestlik derecelerini ayrı ayrı seçmek istemezsem, diğer seçeneklerim nelerdir?

Başka bir örnek olarak, şu anda yüksek kaldıraçlı noktalar bularak aykırı algılama üzerinde çalışıyorum. Bunu elle yapmaktan mutlu olsaydım, her yüksek kaldıraçlı veri noktasına bakar, verilerin temiz olup olmadığını kontrol eder ve ya filtreleyebilir ya da elle temizleyebilirim. Ama bu bir sürü alan bilgisine dayanıyor, bu yüzden süreci nasıl otomatikleştireceğimizi bilmiyorum.

Hem (a) model oluşturma sürecinin interaktif parçalarını otomatik hale getirme genel sorununa, hem de (b) bu ​​iki durum için özel tavsiyeye ilişkin tavsiye ve çözümleri takdir ediyorum. Teşekkürler!

Yanıtlar:


4

Bilginize, bu SE.DataScience için daha uygun olabilir, ama şimdilik burada cevaplayacağım.

Bana öyle geliyor ki, çözümlerinizi uygulayacak bir senaryo yazmaktan başka seçeneğiniz olmayacak bir durumda olabilirsiniz. Asla eğri çizgilerle çalışmadıysanız, onların bilgisi kesinlikle teoriktir, bu yüzden lütfen bana katlan ve görmediğim bir şey olup olmadığını bana bildir.

Genel olarak, bunu uygulamak için çözmeniz gereken birkaç farklı öğeniz olduğu anlaşılıyor.

1.) Model parametrelerinin dinamik bir şekilde belirlenmesi. Daha önce bir alan adı bilgisi ve tek değişkenli önlemler kullandığınızı söylemiştiniz. Bana öyle geliyor ki sezgisel olarak başa çıkmanız gereken bir şey. Başlangıçta, programınızın uygulayacağı bir dizi kural üzerinde anlaşmanız gerekir. Bu, bu kuralların olası sonuçları hakkında biraz düşünmek zorunda kalacağınız için önemsiz bir görev olabilir veya olmayabilir. Bu, yalnızca kararları değil, aynı zamanda bu kararların ardındaki nedenleri de işleminizin ve kataloglamanın her adımını tekrar ziyaret etmenizi gerektirebilir.

2.) Aslında programınızı uygulamak. Performans testinizi doğru bir şekilde dinamik ve bakımı ve değiştirmesi kolay hale getirmek için, onu nasıl yapılandıracağınızı düşünmeniz gerekecektir. Büyük olasılıkla daha fazla esneklik sağlamak için, ana model öngörücü performans tahmininiz için, tercihen kullanıcı tarafından tanımlanabilir uzunlukta bir çeşit döngü kullanmak isteyeceksiniz. Ayrıca, programınızın gerçekleştirmesini istediğiniz her eylem için ayrı işlevler yazmak isteyeceksiniz, çünkü bu, işlevselliği test etmeyi ve ileride programınızı korumayı ve değiştirmeyi kolaylaştıracaktır. En azından, veri kümesi seçimi (yani yalnızca geriye dönük test sırasında "geçmiş" dönemler), temizlik ve doğrulama (gerçekten düşünmeniz gerekecek,

Aykırı algılama ve işleme ile ilgili sorunuz da bu iki endişenin altına girer ve ana program döngünüzde "temizlemeye" devam edecek ve modeli memnun kalacağınız bir noktaya gelene kadar yeniden takacak daha küçük döngüler yazarak uygulamaya devam edeceğim. (ki bu da kendinizi tanımlamanız gerekecek).

Bu büyük bir görev gibi geliyorsa, çünkü; insanlar bu tür görevleri yerine getirmek için tüm yazılım kütüphanelerini (bazen çok kazançlı olarak) yazmışlardır. Bunun ötesinde, süreçleriniz, veri yapısı ve işinizi şimdiye kadar yaptığınız programlama dili hakkında daha fazla bilgi sahibi olmadan daha spesifik önerilerde bulunmak zor.

Bunlardan herhangi biri sizin için yararlıysa ve herhangi birini genişletmemi istiyorsanız, yorum yapın, bana bildirin, bunu yapmaktan mutluluk duyarım.


Aslında kodu yazmak için yardıma ihtiyacım yok, teşekkürler - backtesting altyapımız zaten yerinde ve oldukça güçlü. Sadece hangi istatistiksel prosedürleri kullanabileceğimle ilgileniyorum . Model oluşturmanın etkileşimli kısmını sezgisel olarak otomatikleştirmeyle ilgili olarak: bu konuda bir şey yazıldı mı? Literatürde bu tür bir süreçten hiç bahsetmedim. "İnsanlar tüm yazılım kütüphanelerini yazdı" dan bahsediyorsunuz - referansınız var mı?
Ben Kuhn

@BenKuhn - Yorumunuza dayanarak, yaşadığınız zorluklardan biraz emin değilim; lütfen biraz daha net olmama yardım et. Sezgisel yöntemlerin otomatik model oluşturmada kullanımı oldukça yaygındır; Şu anda düşünebildiğim en temel uygulama, mütevazi adım adım regresyon. Modelinizin tam ayrıntılarından yoksun olarak, size yardımcı olabilecek kesin literatür parçalarına işaret edemem, ancak bir cursory Google araması, özellikle düzgünleştirme ve cezalandırılmış splinelar için otomatik parametre seçimi için yöntemleri araştıran birkaç makale getiriyor. Birkaç bağlantı için bir sonraki
yorumuma


@BenKuhn - Kullanabileceğiniz istatistiksel prosedürleri söylediğinizde özellikle neyi kastediyorsunuz? Bana göre backtest, yuvarlanan veya genişleyen bir veri seçimi penceresi olan tren testi örneklemesi kullanılarak oldukça basit bir şekilde ele alınabilir. Geri testin noktasına kadar edindiğiniz tüm veriler eğitim setiniz olurken, modelinizi yeniden ayarlama şansınız olmadan bir sonraki zaman diliminde görmeyi beklediğiniz veriler test setiniz olacaktır. Gerçek değerlendirmeyi gerçekleştirmek için tüm olağan öngörücü performans ve uyum iyiliği ölçümleri kullanılabilir.
habu

@BenKuhn - Gerçek iş bilgisi bölümünü uygulamak, onu kodlamanızı ve bu tür tespitler yapmak için gereken verilerin gerektiğinde kullanılabilir olmasını sağlamanızı gerektirir. Ayrıca, "yazılım kütüphanesi" terimini, bazı uygulamalar için model geliştirmeyi, endüstriyel sınıf, tescilli uzman ve karar destek sistemlerine kadar otomatikleştirmeyi amaçlayan mevcut modelleme kütüphanelerine kadar her şeyi kapsayan bir battaniye terimi olarak kullanıyorum.
habu

3

Manuel model ayarlama çabalarınızı nasıl otomatikleştireceğinizi anlamaya çalışmak yerine, bu modeli, daha fazla model önyargısının bir maliyeti olsa bile, çok daha az ayarlama gerektiren daha düşük varyans öğrenenlerine bakarak bu sorunu atlatabilirim. Tahminlerinizde büyük ölçüde düşük örnekleme varyansına inen backtest sonuçlarınıza güvenmek istiyorsunuz ve zaten örnekleme varyansı olan bir öğrencinin üzerine bazı otomatik ayarlama süreci bu hedefe karşı çalışıyor. Kuyruk burada köpeği sallıyor gibi görünebilir, ancak çok dikkatli bir ayarlama (manuel veya otomatik) gerektiren herhangi bir şey, gerçekten dürüst bir backtest ortamı IMO için mükemmel bir aday değildir.


Neden otomatik ayarlama (her backtest zaman noktasında ayrı bir ayarlama ile) "gerçekten dürüst bir backtest ortamı" olmasın?
Ben Kuhn

Spline'ları bırakarak varyansı azaltmak maalesef tahmin gücünde kabul edilemez bir kayba yol açacaktır. Daha düşük varyanslı bir öğrenci kullanmayı önerdiğinizde düşündüğünüz şey bu muydu? Değilse, ne düşünüyordun?
Ben Kuhn

@BenKuhn - Andrew'un, bir backtestin modelin tahmin dışı gücünün gerçekten "dürüst" bir testi olup olmayacağına dair endişelerini paylaşıyorum, eğer ayarlama parametrelerinizi tüm veri kümenizi kullanabilirsiniz; "saati geri sararsanız" ve modelinizi dinamik olarak yeniden oluştursanız bile, bunu yapacağınız metodoloji tüm veri kümesine referansla geliştirilecektir, bu nedenle modelin, mevcut verilerin bir alt kümesi üzerinde yeniden eğitildi.
habu

1
Açıklığa kavuşturmak için, otomatik ayarlama, zamanın öngörülmesinin anlamında dürüst olmasını sağlayacaktır. t zamandan daha büyük verilere dayanma t. @ Habu'nun amacına göre, her zaman geri test performansına dayalı olarak modelinizi yinelemeli olarak iyileştirmekten kaynaklanan indirgenemez bir miktar örnekleme yanlılığı olacaktır ve bunun etrafında bir yol görmüyorum (bunun bir finans uygulaması). Belirttiğim nokta, backtest sonuçlarınızla ilgili güven aralığınızın, öngörücünün örnekleme varyansı ve üstündeki ayarlama işlemi ile ilgili olmasıdır.
andrew

1
Ve finans kadar gürültülü bir alanda, eğer tarih biraz farklı bir şekilde ortaya çıksaydı (ama yine de bazı temel dağıtımlardan çekildiyse) yine de benzer bir modele ulaşacağınızdan emin olmak istersiniz. Sürecinizin iyi olduğunu düşündüğünüzden daha fazla varyans örneklemesi için sağlam olduğundan eminseniz. Ancak tecrübelerime göre otomatik ayarlama prosedürleri örnekleme varyansına karşı çok hassas olabilir.
andrew
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.