Mam zestaw danych ze zmienną ciągłą i binarną zmienną docelową (0 i 1).
Muszę zdyskretyzować zmienne ciągłe (w przypadku regresji logistycznej) w odniesieniu do zmiennej docelowej oraz z ograniczeniem, że częstotliwość obserwacji w każdym przedziale powinna być zrównoważona. Próbowałem algorytmów uczenia maszynowego, takich jak Chi Merge, drzewa decyzyjne. Scalanie chi dało mi interwały z bardzo niezrównoważonymi liczbami w każdym interwale (interwał z 3 obserwacjami i kolejny z 1000). Drzewa decyzyjne były trudne do interpretacji.
Doszedłem do wniosku, że optymalna dyskretyzacja powinna zmaksymalizować statystykę między zmienną dyskretyzowaną a zmienną docelową i powinna mieć interwały zawierające w przybliżeniu taką samą liczbę obserwacji.
Czy istnieje algorytm do rozwiązania tego?
Tak mogłoby to wyglądać w R (def jest zmienną docelową x zmienną do dyskretyzacji). Obliczyłem Tschuprowa, aby ocenić „korelację” między zmienioną i zmienną docelową, ponieważ statystyki zwykle rosną wraz z liczbą przedziałów. Nie jestem pewien, czy to właściwa droga.
Czy istnieje inny sposób oceny, czy moja dyskretyzacja jest optymalna, inny niż Tschuprowa (zwiększa się, gdy maleje liczba klas)?
chitest <- function(x){
interv <- cut(x, c(0, 1.6,1.9, 2.3, 2.9, max(x)), include.lowest = TRUE)
X2 <- chisq.test(df.train$def,as.numeric(interv))$statistic
#Tschuprow
Tschup <- sqrt((X2)/(nrow(df.train)*sqrt((6-1)*(2-1))))
print(list(Chi2=X2,freq=table(interv),def=sum.def,Tschuprow=Tschup))
}