У меня есть набор данных с непрерывной переменной и двоичной целевой переменной (0 и 1).
Мне нужно дискретизировать непрерывные переменные (для логистической регрессии) по отношению к целевой переменной и с ограничением, что частота наблюдений в каждом интервале должна быть сбалансирована. Я пробовал алгоритмы машинного обучения, такие как Chi Merge, деревья решений. Чи слияние дало мне интервалы с очень несбалансированными числами в каждом интервале (интервал с 3 наблюдениями и еще один с 1000). Деревья решений было трудно интерпретировать.
Я пришел к выводу, что оптимальная дискретизация должна максимизировать статистику между дискретизированной переменной и целевой переменной и должна иметь интервалы, содержащие примерно одинаковое количество наблюдений.
Есть ли алгоритм для решения этой проблемы?
Вот как это может выглядеть в R (def - целевая переменная, а x - переменная, подлежащая дискретизации). Я вычислил Чупрова, чтобы оценить «корреляцию» между преобразованной и целевой переменной, потому что статистика χ 2 имеет тенденцию к увеличению с числом интервалов. Я не уверен, что это правильный путь.
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))
}