Lojistik regresyon modeli için öngörücüler doğru şekilde nasıl azaltılır


9

Bu yüzden şu anki durumum ikili yanıt verilerine dayalı bir lojistik model yapmam gerektiğinden, modelleme üzerine bazı kitaplar (veya bunların bir kısmı) okuyordum (F. Harrell'in "Regresyon Modelleme Stratejileri"). Veri setimde sürekli, kategorik ve ikili veriler (tahmin ediciler) var. Temel olarak şu anda yaklaşık 100 tahmin edicim var, ki bu iyi bir model için çok fazla. Ayrıca, bu tahmin edicilerin birçoğu birbiriyle ilişkilidir, çünkü biraz farklı olmasına rağmen genellikle aynı metriğe dayanırlar.

Her neyse, tek değişkenli regresyon ve adım adım teknikler kullanarak okuduğum şey, tahmin edicilerin miktarını azaltmak için yapabileceğiniz en kötü şeylerden bazıları. LASSO tekniğinin oldukça iyi olduğunu düşünüyorum (eğer doğru bir şekilde anladıysam), ama açıkçası bunu 100 öngörücüde kullanamazsınız ve bunun iyi olacağını düşünemezsiniz.

Peki buradaki seçeneklerim neler? Gerçekten oturmam, tüm amirlerimle ve iş yerinde akıllı insanlarla konuşmam ve en iyi 5 öngörücünün ne olabileceğini / olması gerektiğini (yanlış olabiliriz) ya da hangi yaklaşım (lar) ı düşünmem gerekiyor mu? yerine düşün?

Ve evet, bu konunun çok fazla tartışıldığını da biliyorum (çevrimiçi ve kitaplarda), ancak bu modelleme alanında yeni olduğunuzda bazen biraz ezici görünüyor.

DÜZENLE:

Her şeyden önce, örneklem büyüklüğüm +1000 hasta (benim alanımda çok fazla) ve bunlardan 70-170 arasında olumlu yanıt var (yani 170 evet yanıtı ile yaklaşık 900 vaka yok) . Temel olarak, radyasyon tedavisinden sonra toksisiteyi tahmin etmektir. Bazı olası ikili yanıt verilerim var (yani toksisite, ya sizde (1) ya da yok (0)), ve sonra çeşitli metriklerim var. Bazı metrikler hastaya özgüdür, örneğin yaş, kullanılan ilaçlar, organ ve hedef hacim, diyabet vb. Ve daha sonra hedef için simüle edilmiş tedavi alanına dayanan bazı tedaviye özgü metriklerim var. Bundan, çoğu toksisitenin alınan radyasyon (iedose) miktarı ile yüksek derecede korelasyonu olduğu için, genellikle alanımda son derece alakalı olan birkaç öngörücüyü alabilirim. Örneğin, bir akciğer tümörünü tedavi edersem, kalbe bir miktar dozla vurma riski vardır. Daha sonra kalp hacminin ne kadar x miktarının x-doz doz aldığını hesaplayabilirim, örneğin " t Sadece başlamak için birini seçin (her ne kadar geçmiş deneyler elbette denedim ve ben de yapmak istediklerim), çünkü aslında tam olarak hangi derecede kalp toksisitesi arasında büyük bir ilişki olduğunu bilmem gerekiyor ve hacim dozu (yine, örnek olarak, aynı stratejinin uygulandığı diğer benzer metrikler vardır). Evet, veri setim böyle görünüyor. Bazı farklı metrikler ve biraz benzer bazı metrikler. t Sadece başlamak için birini seçin (her ne kadar geçmiş deneyler elbette denedim ve ben de yapmak istediklerim), çünkü aslında tam olarak hangi derecede kalp toksisitesi arasında büyük bir ilişki olduğunu bilmem gerekiyor ve hacim dozu (yine, örnek olarak, aynı stratejinin uygulandığı diğer benzer metrikler vardır). Evet, veri setim böyle görünüyor. Bazı farklı metrikler ve biraz benzer bazı metrikler. s veri setimin görünüşüne çok benziyor. Bazı farklı metrikler ve biraz benzer bazı metrikler. s veri setimin görünüşüne çok benziyor. Bazı farklı metrikler ve biraz benzer bazı metrikler.

O zaman yapmak istediğim, öngörücü bir model yapmak, böylece hangi hastaların bir tür toksisite alma riski olacağını tahmin edebilirim. Yanıt verileri ikili olduğu için, ana fikrim elbette bir lojistik regresyon modeli kullanmaktı. En azından benim alanımda başkalarının yaptığı bu. Bununla birlikte, daha önce yapılmış olan bu makalelerin çoğundan geçerken, bazıları yanlış görünüyor (en azından F. Harrel's gibi bu tür modelleme kitaplarını okurken). Birçoğu tahmin edicileri seçmek için tek değişkenli regresyon analizini kullanır ve bunları çok değişkenli analizde (yanılmıyorsam tavsiye edilen bir şey) kullanır ve ayrıca birçoğu tahmin edicilerin miktarını azaltmak için adım adım teknikler kullanır. Tabii ki hepsi kötü değil. Birçoğu LASSO, PCA, çapraz doğrulama, önyükleme vb. Kullanır, ancak baktığım,

Özellik seçimi ile ilgili olarak, muhtemelen şu anda buradayım. Modelimde kullanılacak doğru öngörücüleri nasıl seçerim / bulurum? Bu tek değişkenli / adım adım yaklaşımları denedim, ama her düşündüğümde: "Neden yanlışsa, neden yapasın ki?". Ama belki de en azından sonunda, doğru bir şekilde yapılan "iyi bir model" in yanlış şekilde yapılan "kötü bir modele" karşı nasıl yükseldiğini göstermek için iyi bir yoldur. Bu yüzden muhtemelen biraz yanlış bir şekilde yapabilirdim, yardıma ihtiyacım olan şey doğru şekilde yapmak için bir yön elde etmektir.

Düzenleme için özür dilerim ve çok uzun.

DÜZENLEME 2: Verilerimin nasıl göründüğüne hızlı bir örnek:

'data.frame':   1151 obs. of  100 variables:
 $ Toxicity              : Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...
 $ Age                   : num  71.9 64 52.1 65.1 63.2 ...
 $ Diabetes              : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Risk.Category         : Ord.factor w/ 3 levels "LOW"<"INTERMEDIATE"<..: 1 1 1 1 2 1 1 1 1 3 ...
 $ Organ.Volume.CC       : num  136.1 56.7 66 136.6 72.8 ...
 $ Target.Volume.CC      : num  102.7 44.2 58.8 39.1 56.3 ...
 $ D1perc                : num  7961 7718 7865 7986 7890 ...
 $ D1.5CC                : num  7948 7460 7795 7983 7800 ...
 $ D1CC                  : num  7996 7614 7833 7997 7862 ...
 $ D2perc                : num  7854 7570 7810 7944 7806 ...
 $ D2.5CC                : num  7873 7174 7729 7952 7604 ...
 $ D2CC                  : num  7915 7313 7757 7969 7715 ...
 $ D3perc                : num  7737 7379 7758 7884 7671 ...
 $ D3.5CC                : num  7787 6765 7613 7913 7325 ...
 $ D3CC                  : num  7827 6953 7675 7934 7480 ...
 $ D4perc                : num  7595 7218 7715 7798 7500 ...
 $ D5perc                : num  7428 7030 7638 7676 7257 ...
 $ DMEAN                 : num  1473 1372 1580 1383 1192 ...
 $ V2000CGY              : num  24.8 23.7 25.9 22.3 19.3 ...
 $ V2000CGY_CC           : num  33.7 13.4 17.1 30.4 14 ...
 $ V2500CGY              : num  22.5 21.5 24 20.6 17.5 ...
 $ V2500CGY_CC           : num  30.7 12.2 15.9 28.2 12.7 ...
 $ V3000CGY              : num  20.6 19.6 22.4 19.1 15.9 ...
 $ V3000CGY_CC           : num  28.1 11.1 14.8 26.2 11.6 ...
 $ V3500CGY              : num  18.9 17.8 20.8 17.8 14.6 ...
 $ V3500CGY_CC           : num  25.7 10.1 13.7 24.3 10.6 ...
 $ V3900CGY              : num  17.5 16.5 19.6 16.7 13.6 ...
 $ V3900CGY_CC           : num  23.76 9.36 12.96 22.85 9.91 ...
 $ V4500CGY              : num  15.5 14.4 17.8 15.2 12.2 ...
 $ V4500CGY_CC           : num  21.12 8.18 11.76 20.82 8.88 ...
 $ V5000CGY              : num  13.9 12.8 16.4 14 11 ...
 $ V5000CGY_CC           : num  18.91 7.25 10.79 19.09 8.03 ...
 $ V5500CGY              : num  12.23 11.14 14.84 12.69 9.85 ...
 $ V5500CGY_CC           : num  16.65 6.31 9.79 17.33 7.17 ...
 $ V6000CGY              : num  10.56 9.4 13.19 11.34 8.68 ...
 $ V6000CGY_CC           : num  14.37 5.33 8.7 15.49 6.32 ...
 $ V6500CGY              : num  8.79 7.32 11.35 9.89 7.44 ...
 $ V6500CGY_CC           : num  11.96 4.15 7.49 13.51 5.42 ...
 $ V7000CGY              : num  6.76 5.07 9.25 8.27 5.86 ...
 $ V7000CGY_CC           : num  9.21 2.87 6.1 11.3 4.26 ...
 $ V7500CGY              : num  4.61 2.37 6.22 6.13 4 ...
 $ V7500CGY_CC           : num  6.27 1.34 4.11 8.38 2.91 ...
 $ V8000CGY              : num  0.7114 0.1521 0.0348 0.6731 0.1527 ...
 $ V8000CGY_CC           : num  0.9682 0.0863 0.023 0.9194 0.1112 ...
 $ V8200CGY              : num  0.087 0 0 0 0 ...
 $ V8200CGY_CC           : num  0.118 0 0 0 0 ...
 $ V8500CGY              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ V8500CGY_CC           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ n_0.02                : num  7443 7240 7371 7467 7350 ...
 $ n_0.03                : num  7196 6976 7168 7253 7112 ...
 $ n_0.04                : num  6977 6747 6983 7055 6895 ...
 $ n_0.05                : num  6777 6542 6811 6871 6693 ...
 $ n_0.06                : num  6592 6354 6649 6696 6503 ...
 $ n_0.07                : num  6419 6180 6496 6531 6325 ...
 $ n_0.08                : num  6255 6016 6350 6374 6155 ...
 $ n_0.09                : num  6100 5863 6211 6224 5994 ...
 $ n_0.1                 : num  5953 5717 6078 6080 5840 ...
 $ n_0.11                : num  5813 5579 5950 5942 5692 ...
 $ n_0.12                : num  5679 5447 5828 5809 5551 ...
 $ n_0.13                : num  5551 5321 5709 5681 5416 ...
 $ n_0.14                : num  5428 5201 5595 5558 5285 ...
 $ n_0.15                : num  5310 5086 5485 5439 5160 ...
 $ n_0.16                : num  5197 4975 5378 5324 5039 ...
 $ n_0.17                : num  5088 4868 5275 5213 4923 ...
 $ n_0.18                : num  4982 4765 5176 5106 4811 ...
 $ n_0.19                : num  4881 4666 5079 5002 4702 ...
 $ n_0.2                 : num  4783 4571 4985 4901 4597 ...
 $ n_0.21                : num  4688 4478 4894 4803 4496 ...
 $ n_0.22                : num  4596 4389 4806 4708 4398 ...
 $ n_0.23                : num  4507 4302 4720 4616 4303 ...
 $ n_0.24                : num  4421 4219 4636 4527 4210 ...
 $ n_0.25                : num  4337 4138 4555 4440 4121 ...
 $ n_0.26                : num  4256 4059 4476 4355 4035 ...
 $ n_0.27                : num  4178 3983 4398 4273 3951 ...
 $ n_0.28                : num  4102 3909 4323 4193 3869 ...
 $ n_0.29                : num  4027 3837 4250 4115 3790 ...
 $ n_0.3                 : num  3955 3767 4179 4039 3713 ...
 $ n_0.31                : num  3885 3699 4109 3966 3639 ...
 $ n_0.32                : num  3817 3633 4041 3894 3566 ...
 $ n_0.33                : num  3751 3569 3975 3824 3496 ...
 $ n_0.34                : num  3686 3506 3911 3755 3427 ...
 $ n_0.35                : num  3623 3445 3847 3689 3361 ...
 $ n_0.36                : num  3562 3386 3786 3624 3296 ...
 $ n_0.37                : num  3502 3328 3725 3560 3233 ...
 $ n_0.38                : num  3444 3272 3666 3498 3171 ...
 $ n_0.39                : num  3387 3217 3609 3438 3111 ...
 $ n_0.4                 : num  3332 3163 3553 3379 3053 ...
 $ n_0.41                : num  3278 3111 3498 3321 2996 ...
 $ n_0.42                : num  3225 3060 3444 3265 2941 ...
 $ n_0.43                : num  3173 3010 3391 3210 2887 ...
 $ n_0.44                : num  3123 2961 3339 3156 2834 ...
 $ n_0.45                : num  3074 2914 3289 3103 2783 ...
 $ n_0.46                : num  3026 2867 3239 3052 2733 ...
 $ n_0.47                : num  2979 2822 3191 3002 2684 ...
 $ n_0.48                : num  2933 2778 3144 2953 2637 ...
 $ n_0.49                : num  2889 2734 3097 2905 2590 ...

Ve ben çalıştırmak eğer table(data$Toxicity)çıktı:

> table(data$Toxicity)
   0    1 
1088   63 

Yine, bu bir tür toksisite içindir. Benim 3 tane daha var.


1
Ne yapmayı hedefliyorsun? Tahmin veya çıkarım ya da başka bir şey?
Stephan Kolassa

Buna özellik seçimi denir . Regresyon kullanmanız gerekiyorsa, kategorik özellikler bir sıcaktır, ancak ağaç yöntemleri için bunları olduğu gibi kullanabilirsiniz. Hatta en öngörülü n-yönlü etkileşimi veya ilişkilendirme terimlerinizi bulabilir ve bunları kullanabilirsiniz.
smci

"Gerçekten oturmak, insanlarla konuşmak ve en iyi n tahmincilerini gerçekten düşünmek / gerekçelendirmek zorunda mıyım?" Cehennem hayır, sezgi bir başlangıç ​​noktasıdır, ancak bu yüzden özellik seçme yöntemleri vardır; birçok denemenin sonucu sezgiyi yener.
smci

1
@smci belirsiz olduğu için üzgünüm. Bu yüzden benim alanımda (radyasyon onkolojisi), temel olarak radyasyon / dozun bir hedef etrafında nasıl dağıtıldığının 3D bir temsili olan tedavi planları yapıyoruz. Ne yazık ki, bu en az az miktarda sağlıklı dokuya çarpmadan yapılamaz. Yani bu 3B haritadan, tabiri caizse, örneğin, bir hacmin x-miktarı radyasyon / doz aldığı miktar hakkında bilgi alabilirim. Ama tahmin edebileceğiniz gibi, "bu yapı hacminin% 1'inin ne kadar radyasyon aldığını" ve ardından% 2,% 3 gibi adımlarla "sorabilirim". Prensip olarak, değerler biraz benzer olacaktır.
Denver Dang

1
@smci, tahmin OP'nin hedefi ise, korelasyon endişe duymamalıdır. Değişkenler arasındaki yüksek korelasyon, sadece modele dahil edilen değişkenleri yorumlamaya çalışırken büyük bir endişe kaynağı olacaktır.
İstatistiklerÖğrenci

Yanıtlar:


4

Push özelliği seçimiyle ilgili aldığınız yanıtların bazıları temel dışıdır.

Kement veya daha iyi elastik net özelliği seçimini yapacağız ancak yukarıda sivri dışarı oldukça "seçilmiş" özellikler setinin oynaklık hayal kırıklığına uğrayacaktır olarak. Durumumdaki tek gerçek umudun, kitabımda vurguladığım gibi veri azaltma, yani denetimsiz öğrenme olduğuna inanıyorum. Veri azaltma daha fazla yorumlanabilirlik ve özellikle daha fazla istikrar getirir. Çok seyrek temel bileşenleri veya değişken kümelenmeyi ve ardından kümelerdeki düzenli temel bileşenleri öneriyorum.

Veri kümenizdeki bilgi içeriği, özellik seçme algoritmalarının güvenilir olması için çok düşük.


Her şeyden önce, yorum yapmak için zaman ayırdığınız için teşekkür ederiz. İkincisi, yanılmıyorsam, denetimsiz öğrenme, yanıt değişken (ler) inin belirli yanıtını (yani 1 veya 0) kullanmamanız (veya almamanız) ve bilgisayarı "tahmin etmenin" "dağılımı nasıl bölünmeli. Fakat lojistik regresyon (ve doğrusal) bildiğim kadarıyla denetleniyor mu? Yani bu metodolojiden vazgeçmenizi tavsiye edersiniz? Bir yanda bu fikri sevdim, ancak diğer yanda, lojistik ve probit regresyonu, alanımdaki neredeyse her modelleme kağıdının (benimkine benzer veriler) şimdiye kadar yaptığı şey.
Denver Dang

Öyleyse burada bir uzuvya çıkmayacak mıydım, yoksa sadece herkesin bunu sonsuza dek "yanlış" yaptığını varsaymak zorunda mıyım?
Denver Dang

3
Herkes değil, çoğu insan kesinlikle yanlış yapıyor. Bu, Regresyon Modelleme Stratejileri yazmak için başlıca motivasyon kaynağıydı . Veri azaltmanın amacı, lojistik regresyonun yapması gereken denetimli öğrenme miktarını azaltmaktır. Örneğin, 100 aday özelliğini etkili bir şekilde 5 küme puanına indirgeyebilir, ardından yalnızca 5 parametre + kesişme noktası tahmin edebilirsiniz.
Frank Harrell

2
Bu durumda değişen katsayılı modeller hakkında ne düşünüyorsunuz (cevabıma eklediğim gibi)?
Ben Bolker

@FrankHarrell oldukça ilginç geliyor. Ama sorduğunuz için özür dilerim, denetimli öğrenim neden ima ettiğiniz gibi kötü veya en azından biraz kötü?
Denver Dang

8

+1 "bazen biraz bunaltıcı görünüyor". Gerçekten (Harrell'in açıkça belirttiği gibi; Bölüm 4'ün sonundaki bölüme bakın)

  • doğrulayıcı analiz ( PCA veya konu alanı dikkate alınarak cevaplara bakmadan öngörücü karmaşıklığınızı makul bir düzeye indirmek veya ...)
  • tahmine dayalı analiz ( uygun cezalandırma yöntemlerini kullanmak). Oldukça büyük bir örneğiniz varsa, Kement 100 öngörücü ile çok iyi çalışabilir. Özellik seçimi kararsız olacak, ancak tek düşündüğünüz tahmin ise sorun değil. Teknik olarak "özellikleri seç" (çünkü asla herhangi bir parametre tam sıfıra indirmez) değil sırt benzeri yaklaşımlar için kişisel bir tercih var, ama ne olursa olsun ...

    En üst düzey yüksek boyutlu çıkarım yöntemlerini (örn. Dezeure et al 2015 ; I gelmiş değil bu yaklaşımlar denedik ama onlar mantıklı görünmektedir ...)

  • keşif analizi: eğlenin, şeffaf ve dürüst olun, herhangi bir p-değeri teklif etmeyin.

Şimdi açıkladığınız belirli kullanım durumu için (tahmincilerinizin bir kısmı esasen kalbin farklı bölümleri tarafından alınan dozun kümülatif dağılımını temsil eder), değişen katsayı modellerine (aramak biraz zor) bakmak isteyebilirsiniz CDF'nin etkisi için temel olarak düzgün bir eğriye uyan (bunlar R'nin mgcvpaketinde uygulanabilir).


Örnek boyutum +1000, ve hangi yanıt değişkeni (4'üm var) bağlı olarak +1000'in 75-170 arasında pozitif (veya nasıl göründüğüne bağlı olarak negatif) yanıtlarım var. Bunun daha kolay bir şey yapıp yapmadığını bilmiyorum, yani örnek kümesi oldukça büyük olduğundan (en azından benim alanımda) bazı adımları kapatabilirim.
Denver Dang

Çapraz doğrulama, çıkarsama yeteneğini yok eder mi? Olabilir. Ben tahminler için güven aralıkları elde etmek için çapraz doğrulama önce bootstrap olabilir düşünüyorum. Bu, 1000 gözlemle mümkün olabilir.
JTH

seçim sonrası çıkarım gerçekten zor; tüm veri setini hiperparametreleri ayarlamak için kullanırsanız (ceza gücü gibi), aynı durumdasınız demektir.
Çalışabileceğine

0

Birçok farklı yaklaşım var. Ne tavsiye ederim aşağıdaki sırayla, bazı basit olanları denemek:


1
Bu yöntemlerin üçünün de kararsız olacağına inanıyorum.
Frank Harrell

kararsızlığı nasıl tanımladığınıza bağlıdır. Pratikte, genellikle k-katlama veya bir kez bırakma gibi bir tür çapraz doğrulama kullanırsınız ve genel özellikleri + varyansı (1SE yöntemi olarak da bilinir) temel alırsınız.
resnet

Önyükleme ve çapraz doğrulama, yalnızca model üreten işlem için bazı öngörme dizinini doğrular . Bu, söz konusu işlem kullanılarak seçilen bir model için bu indeksin iyi bir tahmin edilmesini sağlar, ancak bir kez geliştirilen bir modelin, yani genel modelin yapısı için herhangi bir rahatlık sağlamaz . Uçuculuğu görmek için numuneler arasından seçilen yapıya (yani seçilen özellikler) bakın.
Frank Harrell
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.