Sei que estou perdendo algo no meu entendimento da regressão logística e realmente aprecio qualquer ajuda.
Pelo que entendi, a regressão logística pressupõe que a probabilidade de um resultado '1' dado os insumos seja uma combinação linear dos insumos passados por uma função de logística inversa. Isso é exemplificado no seguinte código 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")
e recebo a seguinte mensagem de erro:
Mensagens de aviso: 1: glm.fit: o algoritmo não convergeu 2: glm.fit: probabilidades ajustadas numericamente 0 ou 1 ocorreu
Eu trabalho com R há algum tempo; o suficiente para saber que provavelmente eu sou o culpado .. o que está acontecendo aqui?
Respostas:
Não. A variável de resposta é uma variável aleatória de Bernoulli, assumindo o valor com probabilidade . 1 p r ( i )yi 1 pr(i)
fonte
LogisticRegression é adequado para ajuste se probabilidades ou proporções forem fornecidas como metas, não apenas resultados de 1/1.
Aqui temos três alvos em potencial para a regressão logística.
p
qual é a proporção / probabilidade verdadeira / alvo,pnoisy
que é p com ruído normal adicionado na escala de probabilidades de log edichot
que é tratado como um parâmetro no PDF binomial e amostrado a partir disso. Você deve testar todos os 3 - eu achei que algumas implementações de código aberto de LR não se encaixamp
.Dependendo da sua aplicação, você pode preferir fazer xixi.
Na prática, você também deve considerar como é provável que o ruído seja moldado no aplicativo de destino e tentar imitar isso.
fonte