Dodawanie wag do regresji logistycznej w przypadku niezrównoważonych danych

21

Chcę modelować regresję logistyczną z niezrównoważonymi danymi (9: 1). Chciałem wypróbować opcję wag w glmfunkcji w R, ale nie jestem w 100% pewien, co ona robi.

Powiedzmy, że moja zmienna wyjściowa to c(0,0,0,0,0,0,0,0,0,1). teraz chcę nadać „1” 10-krotnie większą wagę. więc podaję argument wagi weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Gdy to zrobię, zostanie to wzięte pod uwagę przy obliczaniu maksymalnego prawdopodobieństwa. Czy mam rację? błędna klasyfikacja „1” jest tylko 10 razy gorsza niż błędne sklasyfikowanie „0”.

ching
źródło

Odpowiedzi:

11

Ching, nie musisz wyrównywać swojego zestawu danych w zakresie 1 i 0. Wszystko, czego potrzebujesz, to wystarczająca liczba 1 dla maksymalnego prawdopodobieństwa zbiegnięcia się. Patrząc na rozkład jedności (100 000) w zbiorze danych, nie powinieneś mieć żadnych problemów. Możesz tutaj zrobić prosty eksperyment

  1. Próbkuj 10% zera i 10% zera i użyj wagi 10 dla obu
  2. Próbkuj 100% zera i 10% zera i użyj wagi 10 dla zera

W obu przypadkach otrzymasz identyczne oszacowania. Ponownie idea ważenia jest związana z próbkowaniem. Jeśli korzystasz z całego zestawu danych, nie powinieneś go ważyć. Gdybym był tobą, użyłbym 10%, jeśli 1 i 10% zera.

W R. użyłbyś glm. Oto przykładowy kod:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

W twoim zestawie danych powinna znajdować się zmienna wtdla wag.

Jeśli użyjesz 10% zarówno zer, jak i jedynek, twoja wtzmienna będzie miała wartość 10.

Jeśli użyjesz 10% zera i 100% z 1: wtzmienna będzie miała wartość 10 dla obserwacji zy = 0 i 1 dla obserwacji zy = 1

subra
źródło
12

Ważenie to procedura ważenia danych w celu zrekompensowania różnic w próbie i populacji (King 2001). Na przykład w rzadkich zdarzeniach (takich jak oszustwo w ryzyku kredytowym, zgony w literaturze medycznej) mamy tendencję do próbkowania wszystkich jedynek (rzadkie zdarzenia) i ułamka zer (nie zdarzenia). W takich przypadkach musimy odpowiednio wyważyć uwagi.

Przykład: powiedzmy, że w populacji 500 000 transakcji jest 50 transakcji oszustw. W takim przypadku zrobiłbyś to

  1. Próbkuj wszystkich 50 transakcji oszustw (100% oszustw)
  2. 10% dobrych transakcji (10% z 500 000 to 50 000 dobrych transakcji)

W takim przypadku przypisujesz wagę 1 dla transakcji oszustwa i wagę 10 dla dobrych transakcji. Nazywa się to metodą ważonego maksymalnego prawdopodobieństwa. Ważne jest to, że ważenie jest powiązane z proporcjami próbkowania

Patrz: Regresja logistyczna w danych o rzadkich zdarzeniach (King 2001)

subra
źródło
cześć subra !!! bardzo dziękuję za podejście króla !! nie słyszałem o tym! w moim przypadku mam 1 milion transakcji! (900 000 to „0”, a 100 000 to „1”). więc powinienem próbkować 10% mojego „0”? to mam prawie zbalansowany zestaw danych. to muszę zważyć „0” dziesięć razy więcej niż „1”, prawda? a funkcja w R glm () w pakiecie MASS dokładnie to robi? jeśli ważę swoje obserwacje, obliczę ważone maksymalne prawdopodobieństwo? Dziękuję Ci! naprawdę doceniam twoją odpowiedź i pomoc
ching
naprawdę dużo myślę o tym problemie. co jeśli powiem: teraz wykorzystaj wszystkie moje dane, aby zbudować model logit (z danymi niezrównoważonymi 9: 1). a potem dziesięć razy ważę „1”, nawet jeśli w rzeczywistości nie mam więcej danych i NIE jest to 10% moich danych. to tak, jakbym działał tak, jakbym miał ..... więc teraz, gdy R oblicza model, myśli, że używam tylko 10% mojego „1” i bierze to pod uwagę przy obliczaniu prawdopodobieństwa. czy to ma jakiś sens?
ching