Jak przeprowadzić regresję logistyczną z dużą liczbą funkcji?

10

Mam zestaw danych z 330 próbkami i 27 funkcjami dla każdej próbki, z problemem klasy binarnej dla regresji logistycznej.

Zgodnie z „regułą, jeśli dziesięć” potrzebuję co najmniej 10 zdarzeń, aby każda funkcja mogła zostać uwzględniona. Chociaż mam niezrównoważony zestaw danych, z 20% klasy dodatniej i 80% klasy ujemnej.

To daje mi tylko 70 zdarzeń, co pozwala na włączenie tylko około 7/8 funkcji do modelu logistycznego.

Chciałbym ocenić wszystkie funkcje jako predyktory, nie chcę ręcznie wybierać żadnych funkcji.

Co byś zasugerował? Czy powinienem wykonać wszystkie możliwe 7 kombinacji funkcji? Czy powinienem oceniać każdą cechę osobno za pomocą modelu asocjacji, a następnie wybrać tylko te najlepsze dla ostatecznego modelu?

Jestem również ciekawy obsługi funkcji jakościowych i ciągłych, czy mogę je łączyć? Jeśli mam kategoryczne [0–1] i ciągłe [0–100], czy powinienem się normalizować?

Obecnie pracuję z Python.

Bardzo dziękuję za Twoją pomoc!

LucasRamos
źródło
„Jestem również ciekawy obsługi funkcji jakościowych i ciągłych”. Sądzę, że to osobne pytanie. W rzeczywistości, to już zwrócono tutaj .
E_net4 chce więcej downvoters
2
istnieje różnica między brakiem wystarczającej liczby próbek a posiadaniem nieistotnych cech. Nie
skupiałbym się zbytnio na wyborze
1
Rób to, co i tak robisz: użyj weryfikacji krzyżowej, aby zoptymalizować regularyzację. Sugeruję siatkę elastyczną (L1 + L2).
Emre

Odpowiedzi:

6

Aby zredukować model do 7 zmiennych, możesz zastosować kilka metod:

  1. PCA (bez nadzoru): tworzy to „nowe” liniowe kombinacje twoich danych, w których każdy komponent proceduralny wyjaśnia jak najwięcej różnic w danych. Tak więc pierwsze 7 elementów (spośród 27) powinno być w stanie wyjaśnić dobry procent zmienności twoich danych. Następnie możesz podłączyć te siedem składników do równania regresji logistycznej. Wadą jest to, że ponieważ komponenty są kombinacjami oryginalnych zmiennych, tracisz pewną interpretowalność w swoim modelu regresji. Powinien jednak zapewniać bardzo dobrą dokładność. Ta sama technika stosowana w innych metodach redukcji wymiarów, takich jak
  2. Inną powszechną metodą regresji jest krok do przodu, w której zaczynasz od jednej zmiennej i dodajesz kolejną w każdym kroku, który jest albo zachowywany, albo upuszczany na podstawie niektórych kryteriów (zwykle wynik BIC lub AIC). Regresja krokowa wstecz jest taka sama, ale zaczynasz od wszystkich zmiennych i usuwasz jedną za każdym razem na podstawie niektórych kryteriów. Na podstawie krótkiego wyszukiwania nie wydaje się, aby python miał regresję krokową, ale wykonują podobny algorytm eliminacji funkcji opisany w tym poście z Data Science .
  3. Regresja Lasso używa L.1 norma penalizacji, która zmniejsza współczynniki cech skutecznie eliminując niektóre z nich. Możesz to uwzględnić L.1wprowadzić normę do modelu regresji logistycznej. Wygląda na to, że LogisticRegression sklearn pozwala ci przypisać odpowiednią karę, aby to osiągnąć. Uwaga: Lasso nie ustawi jawnie współczynników zmiennych na zero, ale je zmniejszy, umożliwiając wybranie 7 największych współczynników.

Jak skomentował @ E_net4, twoje ciągłe pytanie zostało poruszone w innym poście.

bnorm
źródło
5

Zbyt poważnie traktujesz „Regułę 10”. To bardzo surowa zasada. Nie jest przeznaczony do używania tak, jak go używasz.

Wygląda na to, że myślisz: „Mam tylko 70 pozytywnych wystąpień, więc zgodnie z regułą 10 mogę korzystać tylko z 7 funkcji; jak wybrać 7 z nich?”

Nie to oznacza Reguła 10. Nie jest to żadna reguła określająca, ile funkcji możesz używać. Reguła 10 ma charakter opisowy, a nie nakazowy, i stanowi przybliżoną wytyczną: jeśli liczba wystąpień jest znacznie mniejsza niż 10-krotność liczby funkcji, istnieje szczególne ryzyko nadmiernego dopasowania i możesz uzyskać słabe wyniki.

Co powinieneś zrobić? Powinieneś zrobić to, co i tak: użyć regularyzacji i weryfikacji krzyżowej, aby wybrać hiper-parametry regularyzacji. Ważne jest również, aby mieć zestaw testowy, którego nie dotkniesz, dopóki nie sfinalizujesz wszystkiego o klasyfikatorze, aby uniknąć nadmiernego dopasowania i niedokładnych oszacowań dokładności.

A jeśli możesz uzyskać więcej danych, to naprawdę by pomogło.

Wreszcie, ponieważ masz niezrównoważone klasy, możesz rozważyć przeczytanie o nierównościach klas i metodach radzenia sobie z tym.

DW
źródło