Décider de seuil pour glm modèle de régression logistique dans la R
J'ai des données avec les prédicteurs et un binaire cible. Par exemple:
df <- data.frame(a=sort(sample(1:100,30)), b= sort(sample(1:100,30)),
target=c(rep(0,11),rep(1,4),rep(0,4),rep(1,11)))
J'ai formé une logistique regresion modèle à l'aide de glm()
model1 <- glm(formula= target ~ a + b, data=df, family=binomial)
Maintenant, je vais essayer de prédire la sortie (pour l'exemple, les mêmes données devrait suffire)
predict(model1, newdata=df, type="response")
Cela génère un vecteur de probabilité des nombres. Mais je tiens à prédire la classe réelle. Je pourrais utiliser round() sur la probabilite de chiffres, mais cela suppose que quelque chose en dessous de 0,5, de la catégorie '0', et rien au-dessus de la catégorie '1'. Est-ce correct? Même lorsque la population de chaque classe ne peut pas être égal à (ou près de l'égalité)? Ou est-il un moyen d'estimation de ce seuil?
il y a des critères différents, l'un, par exemple, est le point où la somme de sensibilité et de spécificité est maximale, voir par exemple cette question: stackoverflow.com/questions/23131897/...
Merci! Mais il serait certainement incorrect d'utiliser le seuil de la fraction de la population, à droite? C'est, si dans la population, 30% des cas sont '0', et 70% '1, un naïf estimation serait d'utiliser 0,3 comme le seuil. Mais ce ne serait pas logique dans la façon d'aborder cette question?
Vous pouvez trouver un bon tutoriel sur le sujet ici: hopstat.wordpress.com/2014/12/19/...
Merci! Mais il serait certainement incorrect d'utiliser le seuil de la fraction de la population, à droite? C'est, si dans la population, 30% des cas sont '0', et 70% '1, un naïf estimation serait d'utiliser 0,3 comme le seuil. Mais ce ne serait pas logique dans la façon d'aborder cette question?
Vous pouvez trouver un bon tutoriel sur le sujet ici: hopstat.wordpress.com/2014/12/19/...
OriginalL'auteur user2175594 | 2014-04-23
Vous devez vous connecter pour publier un commentaire.
Le meilleur seuil (ou coupure) point pour être utilisé dans des modèles glm est le point qui maximise la spécificité et de la sensibilité. Ce seuil pourrait ne pas donner la plus haute de prédiction du modèle, mais il ne serait pas être biaisé vers positifs ou négatifs. Le
ROCR
colis contient des fonctions qui peuvent vous aider à le faire. de vérifier laperformance()
fonction dans ce package. Il va obtenir de vous ce que vous cherchez. Voici une photo de ce à quoi vous vous attendez à obtenir:Après avoir trouvé le point de coupure, j'ai l'habitude d'écrire une fonction de moi-même pour savoir le nombre de points de données qui a leur valeur de prédiction au-dessus de la coupure, et le faire correspondre avec le groupe auquel ils appartiennent.
J'ai ajouté plus vil/ggplot approches ci-dessous!
OriginalL'auteur Error404
L'étalon-or pour déterminer les bons paramètres du modèle, y compris "quel est le seuil applicable dois-je mettre" à la régression logistique, est de validation croisée.
L'idée générale est de tenir une ou plusieurs pièces de votre ensemble de formation et de choisir le seuil qui maximise le nombre de classifications correctes sur ce lieu défini, mais Wikipédia peut vous donner beaucoup plus de détails.
Oui, c'est correct. Traditionnellement, vous auriez au moins trois partitions de vos données: la formation, la validation et de test (évaluation). Cependant, si vous faites quelque chose comme k-fold cross-validation, puis de formation et de validation sont essentiellement les mêmes re-partitionné en plusieurs façons.
OriginalL'auteur merlin2011
Travaillée autour d'essayer de reproduire premier graphique. Étant donné un
predictions <- prediction(pred,labels)
objet, puis:plus vil approche
ggplot2 approche
OriginalL'auteur user61871
Vous pouvez essayer de le ci-dessous:
OriginalL'auteur Dipayan Sarkar