Otomatik model seçimi için algoritmalar


193

Otomatik model seçimi için bir algoritma uygulamak istiyorum. Kademeli bir regresyon yapmayı düşünüyorum ama her şey yapacaktır (ancak doğrusal regresyonlara dayanmalıdır).

Benim sorunum bir metodoloji veya açık kaynaklı bir uygulama bulamamamdır (Java’da uyanıyorum). Aklımdaki metodoloji şöyle bir şey olurdu:

  1. Tüm faktörlerin korelasyon matrisini hesaplar
  2. birbiriyle düşük korelasyona sahip faktörleri seçmek
  3. Düşük t-stat değerine sahip faktörleri kaldırın.
  4. diğer faktörleri ekleyin (hala 2'de bulunan düşük korelasyon faktörüne dayanarak).
  5. Bazı kriterler (örn. AIC) belirli bir eşiğin üstünde veya daha büyük bir değer bulamayıncaya kadar birkaç kez tekrarlayın.

Bunun için bir R uygulaması olduğunu biliyorum (stepAIC), ancak kodu anlamak oldukça zor. Ayrıca, adım adım gerilemeyi açıklayan makaleler bulamadım.


72
Açıkçası, bunun çok yanlış sonuçlara yol açacağı garantisiyle ilgili feci bir fikir olduğunu düşünüyorum .
gung

4
@gung: Bir model seçiminin sonucunu kör bir şekilde takip etmenin kötü bir fikir olduğu konusunda hemfikir olmama rağmen, analizin başlangıç ​​noktası olarak yararlı olabileceğini düşünüyorum. Benim durumumda yüzlerce faktör var ve en uygun 5-10'u seçmek istiyorum. Otomatik model seçimi olmadan bunu nasıl yapabilirim (daha sonra manuel olarak değiştirilecektir).
S4M

12
Tüm model seçim prosedürleri, aşağıdaki cevabımda tartıştığım sorunlara tabidir. Ek olarak, araştırmak istediğiniz olası faktörlerin sayısı arttıkça, bu sorunlar ne kadar aşırı hale gelir ve artış doğrusal değildir. Çapraz doğrulama ile (@JackTanner tarafından tartışılan) birlikte kullanılması gereken daha iyi yaklaşımlar (@ Zach tarafından tartışılan) olsa da, t, r ve AIC'ye dayalı seçim bunların arasında değildir. Ayrıca, yüzlerce faktör ile gerekli veri miktarı milyonlarca kolayca olabilir. Ne yazık ki, önünüzde çok zor bir görev var.
gung

7
Model seçimi yapmanın amacı nedir? Tahmini / tahmin modeli için mi yoksa önemli değişkenleri mi arıyorsunuz? Ayrıca, kullandığınız veri kümesi ne kadar büyük - kaç engelleme ve kaç değişken var?
olasılık

6
Buradaki ilginç görüşler, ancak algoritmik model seçim prosedürlerine yönelik olumsuz görüşlerin biraz tarihli olduğunu düşünüyorum. Örneğin, David Hendry'nin ekonometri alanındaki son çalışmalarını, özellikle PcGive yazılımı ve doygunluk yöntemleri üzerine yaptığı çalışmaları ele alalım. Yaklaşımına genel bir bakış sunan bir konferans burada bulunabilir . @MichaelChernick'in işaret ettiği gibi (ve Hendry de öyle yapar!), Konu bilgisi (çok) önemlidir. Bu yüzden konu uzmanlarında değer var - algoritmaların tek başına hareket etmesini sağlamak yanlıştır.
Graeme Walsh

Yanıtlar:


333

Bu yaklaşımın yanlış olduğunu düşünüyorum, ancak nedenini açıklarsam belki daha yararlı olacaktır. Çok sayıda değişken hakkında bazı bilgiler verilen en iyi modeli bilmek istemek oldukça anlaşılır. Dahası, insanların kendilerini düzenli buldukları bir durumdur. Ek olarak, regresyonla ilgili birçok ders kitabı (ve ders), kademeli seçim yöntemlerini kapsar, bu da meşru olmaları gerektiği anlamına gelir. Ancak ne yazık ki, onlar değildir ve bu durum ve hedefin eşleştirilmesi başarıyla gezinmek için oldukça zordur. Aşağıdaki otomatik adım adım model seçim prosedürleriyle ilgili sorunların bir listesidir (Frank Harrell'e atfedilir ve buradan kopyalanır ):

  1. Kötü bir şekilde yüksek olması için önyargılı R kare değerleri verir.
  2. Çıktıdaki her değişkenin yanında alıntılanan F ve ki-kare testleri talep edilen dağılıma sahip değildir.
  3. Bu yöntem, efektler ve yanlış dar tahmin edilen değerler için güven aralıkları verir; bkz. Altman ve Andersen (1989).
  4. Uygun anlamı olmayan p değerleri verir ve bunlar için doğru düzeltme zor bir problemdir.
  5. Büzülmeye ihtiyaç duyan taraflı regresyon katsayıları verir (kalan değişkenler için katsayılar çok büyük; bakınız Tibshirani [1996]).
  6. Eşitliğin varlığında ciddi problemleri vardır.
  7. Önceden belirlenmiş hipotezleri test etmek için kullanılması öngörülen yöntemlere (örneğin, iç içe modeller için F testleri) dayanmaktadır.
  8. Örneklem büyüklüğünün arttırılması pek yardımcı olmuyor; bkz. Derksen ve Keselman (1992).
  9. Sorun hakkında düşünmememize izin veriyor.
  10. Çok fazla kağıt kullanıyor.

Sorun şu ki, bu prosedürlerde bu kadar kötü olan ne / bu problemler neden ortaya çıkıyor? Temel bir regresyon kursu alan çoğu kişi , ortalamaya regresyon kavramını bilir , bu yüzden bu sorunları açıklamak için kullandığım şey budur. (Her ne kadar bu ilk başta konu dışı görünse de, benimle kal, bununla alakalı olduğuna söz veriyorum.)

Denemelerin ilk gününde bir lise pisti koçunu hayal edin. Otuz çocuk geldi. Bu çocuklar, ne koçun ne de başka birinin doğrudan erişime sahip olmadığı bazı içsel yetenek seviyelerine sahiptir. Sonuç olarak, koç yapabileceği tek şeyi yapar, ki bu da hepsinin 100 m'lik bir çizgi çizmesini sağlar. Zamanlar muhtemelen içsel yeteneklerinin bir ölçüsüdür ve bu şekilde kabul edilir. Bununla birlikte, olasılıklıdırlar; Birisinin ne kadar iyi yaptığının bir kısmı gerçek yeteneklerine dayanmakta ve bir kısmı rasgeledir. Gerçek durumun şu olduğunu hayal edin:

set.seed(59)
intrinsic_ability = runif(30, min=9, max=10)
time = 31 - 2*intrinsic_ability + rnorm(30, mean=0, sd=.5)

İlk yarışın sonuçları, koçun çocuklara yaptığı yorumlarla birlikte aşağıdaki şekilde gösterilmektedir.

ilk yarış

Çocukları yarış sürelerine göre bölümlendirmenin iç kabiliyetleri üzerinde çakışmalar bıraktığını unutmayın - bu gerçek çok önemlidir. Bazılarını övdükten ve başkalarına bağırdıktan sonra (antrenörler yapma eğiliminde olduğu gibi), tekrar koşmalarını sağladı. Koçun tepkileriyle ikinci yarışın sonuçları (yukarıdaki aynı modelden simüle edilmiştir):

ikinci yarış

Gerçek yeteneklerinin aynı olduğuna dikkat edin, ancak zamanlar ilk yarışa göre zıpladı. Antrenörün bakış açısına göre, bağırdıklarını iyileştirme eğilimindeydiler ve övdüklerini daha kötü hale getirme eğilimindeydiler (bu somut örneği wiki sayfasında listelenen Kahneman alıntılarından uyarladım), aslında ortalamanın gerilemesi basit bir matematiksel olsa da Koçun, kısmen rastgele yapılan bir ölçüme dayanarak takım için sporcu seçmesi sonucu.

Şimdi, bunun otomatikleştirilmiş (örneğin, kademeli) model seçim teknikleri ile ne ilgisi var? Aynı veri setine dayalı bir model geliştirme ve onaylama bazen veri tarama denir. Değişkenler arasında altta yatan bir ilişki olmasına rağmen, daha güçlü ilişkilerin daha güçlü puanlar vermesi beklenir (örneğin, daha yüksek t-istatistikleri), bunlar rastgele değişkenlerdir ve gerçekleşen değerler hata içerir. Bu nedenle, daha yüksek (veya daha düşük) fark edilen değerlere dayanan değişkenleri seçtiğinizde, temel değerlerinden, yanlışlığından veya her ikisinden de olabilirler. Bu şekilde ilerlerseniz, ikinci yarıştan sonra koç gibi şaşırırsınız. Bu, yüksek t-istatistiklerine veya düşük karşılıklı ilişkilere dayanarak değişkenleri seçmeniz durumunda geçerlidir. Doğru, AIC'yi kullanmak, p-değerlerini kullanmaktan daha iyidir, çünkü modeli karmaşıklık için cezalandırır, ancak AIC'nin kendisi rastgele bir değişkendir (birkaç kez bir çalışma yaparsanız ve aynı modele uyarsanız, AIC tıpkı aynı şekilde zıplayacaktır. diğer her Şey). Ne yazık ki,

Umarım bu yardımcı olur.


43
Veri tarama işleminin olağanüstü açıklaması.
Frank Harrell

17
2L+kpPr(χ12>k)

7
pk2logN2L

9
(2L1+2p0+2)(2L0+2p0)=2(L1L0)+2. Şimdi ilk terim, p değerinin dayandığı olasılık oranı istatistiğidir. Bu yüzden, olasılık oranı istatistiği bir kesimden daha büyükse, ekstra parametre ekliyoruz. Bu, p-değer yaklaşımının yaptığı ile aynıdır. Burada sadece kavramsal bir fark var
olasılık

2
neden AIC'nin sorunu çözmediğini açıklamak için bakınız: Mundry, R. (2011). Bilgi teorisi temelli istatistiksel çıkarımdaki konular — sıkça bakış açısına göre bir yorum. Davranışsal Ekoloji ve Sosyobiyoloji, 65 (1), 57-68.
21:13

70

R ' deki şapka paketini inceleyin. Kademeli regresyon modellerini (kullanım veya ) çapraz doğrulamanıza yardımcı olacak ve bu tür modellerin zayıf prediktif performansa sahip olma eğilimini anlamanıza yardımcı olabilir. Ayrıca, eş anlamlı değişkenleri tanımlamak ve ortadan kaldırmak için şapkadaki işlevi ve düşük t-istatistiği olan (kullanım ) değişkenleri ortadan kaldırmak için şapkadaki işlevi kullanabilirsiniz .method='lmStepAIC'method='glmStepAIC'findCorrelationrferfeControl=rfeControl(functions=lmFuncs)

Ancak, önceki cevaplarda belirtildiği gibi, bu değişken seçim yöntemleri, özellikle yinelemeli yaparsanız, başınızı belaya sokabilir. Performansınızı TAMAMLANMIŞ bir test setinde değerlendirdiğinizden kesinlikle emin olun. Algoritmadan memnun kalana kadar test setine bile bakma!

Son olarak, çıkıntı regresyonu, kement veya elastik ağ gibi "yerleşik" özellik seçiminde yordayıcı modelin kullanılması daha iyi (ve daha basit) olabilir. Özellikle, method=glmnetşapka argümanı deneyin ve bu modelin çapraz onaylı doğruluğunu method=lmStepAICargümanla karşılaştırın. Tahminimce, eski size örnek olarak daha yüksek doğruluk verecek ve özel değişken seçim algoritmanızı uygulamak ve doğrulamak konusunda endişelenmenize gerek yok.


1
log(λ2+β2)

2
@probabilityislogic Eğer böyle bir dilde, çift pareto cezasının herhangi iyi uygulamaları biliyor musunuz rya python? Denemeyi çok isterim.
Zach

1
Anladığım kadarıyla, AIC ile model seçimi ve çapraz-bir-kez-dışarı-geç onaylama esasen aynı şeydir (asimptotik denklik, bakınız Taş, 1977) , bu nedenle AIC ve bazı çapraz onaylama türlerinin çok benzer sonuçlara yol açması muhtemeldir. Sonuçlar. Bununla birlikte, şapka paketini kullanmadım ve yöntem çağrılarından AIC'nin bazı durumlarda gerçekten kullanıldığı görülüyor.
fileunderwater

38

@Gung tarafından belirtilen problemlerle tamamen aynı fikirdeyim. Bunun gerçekçi bir ifadeyle, model seçiminin gerçek bir çözüme ihtiyaç duyan gerçek bir problem olduğu söyleniyor. İşte pratikte kullanacağım bir şey.

  1. Verilerinizi eğitim, doğrulama ve test kümelerine ayırın.
  2. Eğitim setinizdeki modelleri eğitin.
  3. Doğrulama setindeki model performansını tahmini RMSE gibi bir ölçüm kullanarak ölçün ve en düşük tahmin hatası olan modeli seçin.
  4. Gerektiği gibi yeni modeller oluşturun, 2-3 adımlarını tekrarlayın.
  5. Modelin test setinde ne kadar iyi performans gösterdiğini rapor edin.

Bu yöntemin gerçek dünyada kullanılmasının bir örneği olarak, Netflix Prize yarışmasında kullanıldığına inanıyorum.


15
n>20000

5
@ Frank: Neden N'nin bu kadar yüksek olması gerektiğini düşünüyorsun?
rolando2

14
Zayıf hassasiyet nedeniyle. Tekrar bölünürseniz çok farklı sonuçlar elde edebilirsiniz. Bu yüzden insanlar 100 tekrar 10 kat çapraz onaylama veya önyükleme yapıyor.
Frank Harrell

10
@ FrankHarrell Bu n> 20000 rakamının neye dayandığı? Orijinal posterin " yüzlerce faktöre " sahip olduğu hakkındaki yorumuna dayanıyor mu? Yoksa verilerin herhangi bir yönünden bağımsız mı?
Darren Cook,

33
Veri bölüşmesini test ettiğim ayar n = 17000 idi ve 0.3'lük bir olayı olan ve ikili bir lojistik modelde incelenen ya da takılan yaklaşık 50 parametreye sahip olan n = 17000 idi. Rasgele 1: 1 split kullandım. Test numunesindeki onaylanmış ROC alanı, verileri yeniden bölüp yeniden başladığımda büyük ölçüde değişti. Simülasyon çalışmaları ve daha fazla bilgi veren ilgili makaleler için biostat.mc.vanderbilt.edu/rms adresindeki Metinde Kullanılan Yöntem Çalışmalarına bakın .
Frank Harrell

15

Soruyu cevaplamak için birkaç seçenek vardır: 1) AIC / BIC tarafından tümü alt grup 2) adım adım p-değeri 3) adım adım AIC / BIC tarafından 4) LASSO gibi düzenlileştirme (AIC / BIC veya CV temelli olabilir) 5) genetik algoritma (GA) 6) diğerleri? 7) otomatik olmayan teori ("konu bilgisi") kullanımı yönelimli seçim

Bir sonraki soru hangi yöntemin daha iyi olacağıdır. Bu makale (DOI: 10.1016 / j.amc.2013.05.016) “tüm olası regresyon” un önerdikleri yeni metoda aynı sonuçları verdiğini ve adım adım daha kötü olduğunu gösteriyor. Aralarında basit bir GA var. Bu makale (DOI: 10.1080 / 10618600.1998.10474784) cezalanan regresyonun (Köprü, Kement vb.) “Sıçrayan ve sınırlanan” ile karşılaştırmasını (ayrıntılı bir arama algoritması gibi görünüyor ancak daha hızlı görünüyor) ve aynı zamanda “köprü modeli en iyi model ile aynı fikirde sıçrama ve sınır yöntemi ile altküme seçimi ”. Bu makale (DOI: 10.1186 / 1471-2105-15-88) GA'nın LASSO'dan daha iyi olduğunu göstermektedir. Bu makale (DOI: 10.1198 / jcgs.2009.06164) bir yöntem önerdi - esas olarak tamamen altküme (BIC temelli) bir yaklaşım, ancak hesaplama süresini zekice düşürdü. Bu yöntemin LASSO'dan daha iyi olduğunu gösteriyorlar. İlginç bir şekilde, bu makale (DOI: 10.1111 / j.1461-0248.2009.01361).

Sonuç olarak, sonuçlar karışık, ancak adım adım çok kötü olmasa da hızlı olduğu için GA'nın çok iyi göründüğü izlenimini edindim.

7 için olduğu gibi, otomatik olmayan, teori ("konu bilgisi") kullanımı yönelimli seçim. Zaman alıcıdır ve otomatik yöntemden mutlaka daha iyi değildir. Aslında, zaman serisi literatüründe, otomatik yöntemin (özellikle ticari yazılımlar) insan uzmanlarını "önemli bir marjla" (doi: 10.1016 / S0169-2070 (01) 00119-4, sayfa561, örneğin çeşitli üssel pürüzsüzleştirmeyi seçme) geride bıraktığı iyi bilinmektedir. ve ARIMA modelleri).


6
Belirli bir rutinin lehine (bilerek olmasa bile) veri oluşturma işlemini değiştirerek farklı seçim algoritmalarının simülasyon çalışmalarında farklı performans alabileceğinizi unutmayın. Hangi yaklaşımın daha hızlı veya daha yavaş olacağı konusu belirgindir, ancak potansiyel olarak hala önemlidir.
gung

2
Aslında Tibshirani'nin LASSO hakkındaki orijinal makalesinde yer alan örnekler @ gung'un noktasını iyi göstermektedir. Aynısı, gerçek veriler üzerinde farklı yöntemlerin karşılaştırmalı çalışmaları için de geçerlidir. BTW, son referansınız doğru mu? Verdiğiniz DOI ile Clements & Hendry'nin makalesi, otomatikleştirilmiş yöntemlerin insan uzmanlarından daha iyi performans gösterdiğini veya "önemli bir oranda" kelimelerini kullandığını iddia etmiyor. (Tam başvuruları verdiyse iyi olurdu.)
Scortchi

Buldu: Goodrich (2001), "M3 Müsabakasında Ticari Yazılım", Int. J. Forecast., 17, sayfa 560-565. Clements & Hendry makalesiyle aynı "M3 Yarışmasıyla İlgili Yorumlar" koleksiyonunun altındaydı, bu yüzden DOI Googling beni oraya gönderdi.
Scortchi

Her neyse, Goodrich'in yorumunun konu uzmanlığıyla ilgisi olduğu hiç belli değil .
Scortchi

1
@Scortchi, derginin bu sayısıyla ilgili 581 sayfasından başlayan makalede daha açık olabilir. Ekonomik / endüstri bağlamını bilen ve hatta sağlayan şirketlerden ek bilgi isteyebilecekleri otomatik tahmin yöntemlerinin davet edilen insan uzmanlarla (zaman serisi literatüründeki bazı büyük isimler dahil) karşılaştırıldığı “M2-Rekabeti” ile daha fazla ilgilidir. veri.
heran_xp

6

İşte sol alanın cevabı - doğrusal regresyon kullanmak yerine, bir regresyon ağacı kullanın (rpart paketi). Bu otomatik model seçimi için uygundur, çünkü küçük bir çalışma ile aşırı uydurmayı önlemek için kullanılan parametre olan cp'nin seçimini otomatikleştirebilirsiniz.


3

Doğrusal model, en değerli bağımsız değişkenlerin seçilmesi yolunda genetik algoritma uygulanarak optimize edilebilir. Değişkenler algoritmada genler olarak temsil edilir ve en iyi kromozom (genler kümesi) daha sonra çaprazlama, mutasyon vb. İşleçlerinden sonra seçilir. Doğal seçime dayanır - o zaman en iyi “nesil” yaşayabilir, başka bir deyişle, algoritma belirli bir modele bağlı olan tahmin fonksiyonunu optimize eder.


2
Yani "en iyi" değişkenleri seçecek verileri sadece veri erişimi nedeniyle, veri üretme süreci / popülasyonda, mutlaka iyi değişkenleri. OP'nin istediği adım adım yöntemden pek de farklı değil.
gung

0

En düşük AIC'ye dayanan modellerin ileri, geri, veya kademeli seçimini yapan step () adı verilen R temel istatistik paketinde bir işleve sahibiz. Bu aynı zamanda faktör değişkenleri için de geçerlidir. Buradaki amaç sunucu değil mi?


-51

Otomatik model seçim yaklaşımının geçerliliği hakkında sorumun çok fazla ilgi ve ilginç bir tartışma yarattığını görüyorum. Otomatik seçim sonucu kabul edilmenin riskli olduğunu kabul etmeme rağmen, başlangıç ​​noktası olarak kullanılabilir. Yani, özel problemim için nasıl uyguladım, hangi bir değişkeni açıklamak için en iyi n faktörünü bulmaktır.

  1. Tüm regresyon değişkenlerini bireysel faktörlere karşı mı yapıyoruz?
  2. regresyonu belirli bir kritere göre sıralayın (AIC deyin)
  3. t-stat değeri düşük olan faktörleri kaldırın: değişkenimizi açıklamada faydasızlar
  4. 2.'de verilen sıra ile, faktörleri modele birer birer eklemeye çalışın ve kriterlerimizi geliştirdiklerinde onları tutmaya çalışın. tüm faktörler için yineleyin.

Yine, bu çok zor, metodolojiyi geliştirmenin yolları olabilir, ama bu benim başlangıç ​​noktam. Başkası için faydalı olacağı umuduyla bu cevabı gönderiyorum. Yorumlarınızı bekliyoruz!


47
(1) Bu konudaki herhangi bir "tartışmaya" şahit olmadım: tüm cevaplar ve yorumlar aynı temel mesajı sunuyor. (2) Uygulamanız , aşamalı gerilemenin geçici bir versiyonu gibi görünüyor . Kendiliğinden bir amaç olarak otomatik olarak kabul edilmemesi koşuluyla, bir başlangıç ​​noktası olarak yararlı olabileceğini kabul ediyorum.
whuber

28
cemaat tarafından öne sürülen her argümana karşı hareket eden kendi cevabınızı kabul ettiniz.
Olumsuzlukları

23
İnanıyorum ki ilk defa çok fazla oy kullandım. @SAM neden diğer bazı mükemmel cevapları kabul edip "cevabınızı" silmiyorsunuz?
marbel

Bu SE'nin şimdiye kadarki en aşağıya verilen yanıtı mı?
mkt

2
@Probabilityislogic'in önemli sorusunu "belirli bir değişkeni açıklamak için en iyi n faktörünü bulmak" amacını söyleyerek cevaplamış görünüyorsunuz. Açıklamak (nedensellik anlamak) için model oluşturma, tahmin etmek için model oluşturmadan daha kasıtlı ve genellikle çok daha yoğun bir şekilde yapılmalıdır.
rolando2,
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.