Я знаю, что чего-то не хватает в моем понимании логистической регрессии, и буду очень признателен за любую помощь.
Насколько я понимаю, логистическая регрессия предполагает, что вероятность результата «1» с учетом входных данных представляет собой линейную комбинацию входных данных, пропущенных через обратную логистическую функцию. Это проиллюстрировано в следующем коде R:
#create data:
x1 = rnorm(1000) # some continuous variables
x2 = rnorm(1000)
z = 1 + 2*x1 + 3*x2 # linear combination with a bias
pr = 1/(1+exp(-z)) # pass through an inv-logit function
y = pr > 0.5 # take as '1' if probability > 0.5
#now feed it to glm:
df = data.frame(y=y,x1=x1,x2=x2)
glm =glm( y~x1+x2,data=df,family="binomial")
и я получаю следующее сообщение об ошибке:
Предупреждающие сообщения: 1: glm.fit: алгоритм не сходится 2: glm.fit: подогнанные вероятности численно 0 или 1
Я работал с R уже некоторое время; Достаточно знать, что, вероятно, я виноват .. что здесь происходит?
Ответы:
источник
LogisticRegression подходит для подгонки, если в качестве целей указаны вероятности или пропорции, а не только 0/1 результатов.
Здесь у нас есть три потенциальных цели для логистической регрессии.
p
которая является истинной / целевой пропорцией / вероятностью,pnoisy
которая равна p с нормальным шумом, добавленным в шкалу логарифмических коэффициентов, иdichot
которая является бесполезной обработкой в качестве параметра для биномиального PDF и взята из него. Вы должны проверить все 3 - я обнаружил, что некоторые реализации LR с открытым исходным кодом не подходятp
.В зависимости от вашего приложения, вы можете предпочесть pnoisy.
На практике вы также должны подумать о том, как вероятно будет формироваться шум в целевом приложении, и попытаться имитировать это.
источник