Zdrowa regresja krokowa?


14

Załóżmy, że chcę zbudować binarny klasyfikator. Mam kilka tysięcy funkcji i tylko kilka 10 próbek. Z wiedzy domenowej mam dobry powód, by sądzić, że etykietę klasy można dokładnie przewidzieć przy użyciu tylko kilku funkcji, ale nie mam pojęcia, które z nich. Chcę również, aby reguła ostatecznej decyzji była łatwa do interpretacji / wyjaśnienia, co dodatkowo wymagałoby niewielkiej liczby funkcji. Niektóre podzbiory moich funkcji są wysoce skorelowane, więc wybranie najbardziej przewidywalnych kilku niezależnie nie zadziała. Chcę również móc znacząco testować hipotezy dotyczące moich funkcji.

Czy w tych warunkach uzasadniona jest procedura stopniowej regresji:

  1. Biorąc pod uwagę funkcje, które już znajdują się w modelu (lub tylko przechwytywanie przy pierwszej iteracji), wybierz funkcję, która po dodaniu do modelu generuje największy współczynnik prawdopodobieństwa dziennika. Użyj testu prawdopodobieństwa chi-kwadrat, aby obliczyć nominalną wartość P dla każdego testu hipotezy wykonanego w tym wyborze. Tutaj zero oznacza, że ​​dodanie dodatkowej zmiennej do modelu nie zapewnia żadnej dodatkowej zdolności przewidywania. Alternatywą jest to, że zwiększa zdolność przewidywania

  2. Traktuj hipotezy przetestowane w kroku 1 każdej iteracji jako rodzinę i oblicz współczynnik fałszywych odkryć dla najmniejszej wartości P (dla wybranej funkcji), używając czegoś takiego jak Benjamini-Hochberg.

  3. Idź 1, chyba że zostaną spełnione pewne kryteria zatrzymania.

  4. Podaj współczynniki fałszywych odkryć dla poszczególnych funkcji, ale nie wartość P dla modelu jako całości (ponieważ będzie to znacznie zawyżone). Każda z tych wielokrotnych, poprawionych podczas testowania wartości P reprezentuje istotność statystyczną tej cechy, biorąc pod uwagę wszystkie cechy wcześniej dodane do modelu.

Czy zrobienie czegoś takiego w tych okolicznościach skutecznie zapobiega typowej krytyce regresji stopniowej? Czy współczynniki fałszywych odkryć obliczane w ten sposób są rozsądne?


3
Czy istnieje powód, aby nie stosować metody regresji karnej (lasso, elasticnet itp.)?
Ben Bolker 29.01.11

Odpowiedzi:


11

Nie zalecałbym skorzystania z tej procedury. Moja rekomendacja to: Porzuć ten projekt. Po prostu poddaj się i odejdź. Nie masz nadziei, że to zadziała.

Ilustracja Dore Inferno Dantego „Porzuć nadzieję” źródło obrazu

Odkładając na bok standardowe problemy z krokowym wyborem (por. Tutaj ), w twoim przypadku bardzo prawdopodobne jest, że będziesz mieć doskonałe prognozy ze względu na separację w tak przestrzennej przestrzeni.

Nie mam szczegółowych informacji na temat twojej sytuacji, ale twierdzisz, że masz „tylko kilka dziesiątek próbek”. Bądźmy charytatywni i powiedzmy, że masz 90 lat. Mówisz dalej, że masz „kilka tysięcy funkcji”. Wyobraźmy sobie, że masz „tylko” 2000. Dla uproszczenia załóżmy, że wszystkie funkcje są binarne. „Uważasz, że etykietę klasy można dokładnie przewidzieć przy użyciu tylko kilku funkcji”, powiedzmy, że będziesz szukać zestawów maksymalnie maksymalnie 9 funkcji. Na koniec wyobraźmy sobie, że związek jest deterministyczny, dzięki czemu prawdziwy związek zawsze będzie doskonale obecny w twoich danych. (Możemy zmienić te liczby i założenia, ale to powinno tylko pogorszyć problem.) Teraz, jak dobrze byłbyś w stanie odzyskać ten związek w tych (hojnych) warunkach? To znaczy, jak często prawidłowy zestaw był jedynym zestawem, który zapewnia doskonałą dokładność? Innymi słowy, ile zestawów dziewięciu funkcji będzie pasować również przez przypadek?

Niektóre (zbyt) proste matematyki i symulacje powinny dostarczyć wskazówek na to pytanie. Po pierwsze, z 9 zmiennymi, z których każda może wynosić 0 lub 1, liczba wzorów, które może zaobserwować obserwacja, wynosi , ale będziesz mieć tylko 90 obserwacji. Jest więc całkowicie możliwe, że dla danego zestawu 9 zmiennych binarnych każda obserwacja ma inny zestaw wartości predykcyjnych - nie ma powtórzeń. Bez powtórzeń z tymi samymi wartościami predykcyjnymi, gdzie niektóre mają y = 0, a niektóre y = 1, będziesz miał całkowitą separację i możliwe będzie idealne przewidywanie każdej obserwacji. 29=512

Poniżej mam symulację (zakodowaną w R), aby zobaczyć, jak często możesz nie mieć wzorów wartości x zarówno dla zer, jak i 1. Działa to tak, że otrzymuję zestaw liczb od 1 do 512, które reprezentują możliwe wzorce, i sprawdzam, czy któryś z wzorców w pierwszych 45 (może to być 0) pasuje do któregokolwiek ze wzorów w drugim 45 (może to być 1s). Zakłada się, że masz idealnie zrównoważone dane odpowiedzi, co zapewnia najlepszą możliwą ochronę przed tym problemem. Zauważ, że posiadanie niektórych replikowanych wektorów x o różnych wartościach y tak naprawdę nie wyciąga cię z lasu, oznacza to po prostu, że nie byłbyś w stanie idealnie przewidzieć każdej pojedynczej obserwacji w zbiorze danych, co jest bardzo rygorystycznym standardem I używam tutaj.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

Symulacja sugeruje, że miałbyś ten problem z około 1,8% zbiorów 9 zmiennych x. Ile jest teraz 9 zestawów? Dokładnie, byłoby to (ponieważ ustaliliśmy, że prawdziwe 9 deterministycznych zmiennych przyczynowych znajduje się w twoim zbiorze). Jednak wiele z tych zestawów będzie się nakładać; w określonej partycji twoich zmiennych będzie nienakładających się zestawów po 9 (z wieloma możliwymi partycjami). Zatem w ramach danej partycji możemy oczekiwać zestawów 9 zmiennych x, które doskonale przewidują każdą obserwację w zbiorze danych. 1991 choose 9=1.3×10241991/9221221×0.0184

Zauważ, że wyniki te dotyczą tylko przypadków, w których masz stosunkowo większy zestaw danych (w ramach „dziesiątek”), względnie mniejszej liczby zmiennych (w ramach „tysięcy”), szuka tylko przypadków, w których każdą pojedynczą obserwację można idealnie przewidzieć ( będzie o wiele więcej zestawów, które są prawie idealne), itp. Twoja rzeczywista sprawa raczej nie zadziała tak dobrze. Ponadto ustaliliśmy, że związek jest całkowicie deterministyczny. Co by się stało, gdyby w związku pojawił się przypadkowy szum? W takim przypadku nadal będziesz mieć ~ 4 (zerowe) zestawy, które doskonale przewidują twoje dane, ale odpowiedni zestaw może nie znajdować się wśród nich .

Tl; dr , podstawową kwestią tutaj jest to, że twój zestaw zmiennych jest o wiele za duży / za duży, a twoja ilość danych jest o wiele za mała, aby cokolwiek było możliwe. Jeśli to prawda, że ​​masz „dziesiątki” próbek, „tysiące” zmiennych i absolutnie nie masz ziemskiego pojęcia, które zmienne mogą mieć rację, nie masz nadziei, że uda ci się uzyskać dowolną procedurę. Zrób coś innego ze swoim czasem.


1
To oryginalne wprowadzenie do odpowiedzi, uwielbiam to.
Łukasz Grad

1
Rezygnacja z projektu jest często rozsądną opcją. Chociaż z pewnością niewielka część przypadków, nieraz doradzałam klientom, że projekty, które mają na myśli, nie będą wykonalne.
gung - Przywróć Monikę

1

Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

XjY=1Y=0

Sugerowałbym więc bezpośrednią ocenę prognozy, a nie wskaźnika prawdopodobieństwa. Jednak przewidywana obserwacja nie powinna być uwzględniana w oszacowaniu modelu (ponieważ jest to dokładnie taka sytuacja, w jakiej staniesz podczas korzystania z modelu). Więc zrób nowy krok 1) (pogrubiona jest moja sugerowana zmiana). 1) Biorąc pod uwagę funkcje, które są już w modelu (lub tylko przechwytywanie przy pierwszej iteracji), wybierz funkcję, która daje najlepsze przewidywania po dodaniu do modelu.

Teraz musisz zdecydować

  1. co chcesz, aby „najlepiej” znaczyło matematycznie
  2. jak podzielić dane na części „pasujące” i „przewidujące”

Zrobię sugestię dla każdego:

  1. Y=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

Krok po kroku może być ryzykowny, ponieważ możesz znaleźć „lokalne maksima” zamiast „globalnych maksimów”, szczególnie dlatego, że masz tak dużą liczbę predyktorów (jest to duża „przestrzeń” do optymalizacji i prawdopodobnie jest multimodalna - co oznacza, że ​​istnieje wiele „najlepszych” modeli)

100F

Myślę, że znajdziesz to na wiele łatwiej uzasadnić swój wybór ostatecznego modelu non-statystyk, a nie stara się wyjaśnić, dlaczego wartość p wskazuje, że model jest dobry.

Y

Dwie uwagi końcowe:

  1. Możesz także użyć tej maszyny, aby zdecydować, czy krok po kroku jest lepszy niż wybór do przodu (tylko dodawanie zmiennych) lub wybór do tyłu (zacznij od pełnego modelu i usuń tylko zmienne).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ

Dzięki za radę. Istnieją jednak trzy problemy: 1. Zależy mi na kwantyfikacji niepewności w moich przewidywaniach i wkładzie każdej zmiennej, a nie tylko binarnej dokładności prognoz. 2. Biorąc pod uwagę naturę mojego zbioru danych, jest on zbyt intensywny obliczeniowo. 3. Z wiedzy domenowej uważam, że lokalny problem optymalny nie jest ważny.
dsimcha

100nF

Właściwie masz rację. Ta procedura byłaby częścią większej bazy kodu i zapomniałem, że część reszty kodu nie musiałaby być ponownie uruchamiana przy każdej iteracji jackknife. Pozostałe dwa punkty mają jednak zastosowanie.
dsimcha

FFFchosenF(j)zmienna o dokładności predykcyjnej ze względu na każdą zmienną)
prawdopodobieństwo jest

F
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.