Eu gostaria de ter muitos algoritmos que executam a mesma tarefa que a regressão logística. Ou seja, algoritmos / modelos que podem fornecer uma previsão para uma resposta binária (Y) com alguma variável explicativa (X).
Eu ficaria feliz se, depois de nomear o algoritmo, se você também mostrar como implementá-lo em R. Aqui está um código que pode ser atualizado com outros modelos:
set.seed(55)
n <- 100
x <- c(rnorm(n), 1+rnorm(n))
y <- c(rep(0,n), rep(1,n))
r <- glm(y~x, family=binomial)
plot(y~x)
abline(lm(y~x), col='red', lty=2)
xx <- seq(min(x), max(x), length=100)
yy <- predict(r, data.frame(x=xx), type='response')
lines(xx, yy, col='blue', lwd=5, lty=2)
title(main='Logistic regression with the "glm" function')
r
regression
logistic
classification
predictive-models
Tal Galili
fonte
fonte
Respostas:
Os populares atualmente são randomForest e gbm (chamado MART ou Gradient Boosting na literatura de aprendizado de máquina), rpart para árvores simples. Também popular é o bayesglm, que usa o MAP com anteriores para regularização.
fonte
Na verdade, isso depende do que você deseja obter. Se você executar regressão logística apenas para as previsões, poderá usar qualquer método de classificação supervisionado adequado para seus dados. Outra possibilidade: análise discriminante (lda () e qda () do pacote MASS)
Por outro lado, se você precisar de intervalos de confiança em torno de suas previsões ou erros padrão em suas estimativas, a maioria dos algoritmos de classificação não o ajudará. Você pode usar modelos aditivos generalizados (mistos), para os quais vários pacotes estão disponíveis. Costumo usar o pacote mgcv de Simon Wood. Modelos aditivos generalizados permitem mais flexibilidade do que a regressão logística, pois você pode usar splines para modelar seus preditores.
Há muito mais a fazer:
...
Eu recomendaria o livro de Simon Wood sobre modelos aditivos generalizados
fonte
Eu concordo com Joe e acrescentaria:
Qualquer método de classificação poderia, em princípio, ser utilizado, embora dependa dos dados / situação. Por exemplo, você também pode usar um SVM, possivelmente com o popular modelo C-SVM. Aqui está um exemplo do kernlab usando uma função de base radial do kernel:
fonte
Existem cerca de 100 modelos de classificação e regressão que podem ser treinados através do pacote de interpolação . Qualquer um dos modelos de classificação será uma opção para você (em oposição aos modelos de regressão, que exigem uma resposta contínua). Por exemplo, para treinar uma floresta aleatória:
Consulte a vinheta de treinamento do modelo de sinal de intercalação que acompanha a distribuição para obter uma lista completa dos modelos disponíveis. Ele é dividido em modelos de uso duplo e de classificação (ambos os quais você pode usar) e somente em regressão (que você não pode). O sinal de intercalação treinará automaticamente os parâmetros para o modelo escolhido para você.
fonte
Naive Bayes é um bom método simples de treinar dados para encontrar uma resposta binária.
fonte
Existem duas variações da regressão logística que ainda não estão descritas. Primeiramente, a regressão logística estima probabilidades usando uma função logística, que é uma distribuição logística cumulativa (também conhecida como sigmóide). Você também pode estimar probabilidades usando funções derivadas de outras distribuições. A maneira mais comum, além da regressão logística, é a regressão probit, derivada da distribuição normal. Para uma discussão mais detalhada entre as diferenças entre probit e logit, visite o site a seguir.
Diferença entre os modelos logit e probit
A segunda alternativa indica uma semana da função logística que você implementou. Se você tiver um tamanho pequeno de amostra e / ou valores ausentes, a função logística não é aconselhável. Portanto, uma regressão logística exata é um modelo melhor. As chances de log do resultado são modeladas como uma combinação linear das variáveis preditoras.
Além disso, existem outras alternativas a serem mencionadas:
Observação final: Uma regressão logística é igual a uma pequena rede neural sem camadas ocultas e apenas um ponto na camada final. Portanto, você pode usar implementações de pacotes de redes neurais, como
nnet
em R.Editar:
Algumas semanas depois, percebi que também havia o algoritmo Winnow e Perceptron . Ambos são classificadores que trabalham também para classificações em dois grupos, mas ambos são desvalorizados nos últimos 15 anos.
fonte