Ajout de pondérations à la régression logistique pour les données déséquilibrées

21

Je veux modéliser une régression logistique avec des données déséquilibrées (9: 1). Je voulais essayer l'option de poids dans la glmfonction dans R, mais je ne suis pas sûr à 100% de ce qu'elle fait.

Disons que ma variable de sortie est c(0,0,0,0,0,0,0,0,0,1). maintenant je veux donner au "1" 10 fois plus de poids. donc je donne l'argument des poids weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Lorsque je le ferai, cela sera pris en compte dans le calcul de la probabilité maximale. Ai-je raison? une classification erronée de "1" est seulement 10 fois pire qu'une classification erronée de "0".

ching
la source

Réponses:

11

Ching, vous n'avez pas besoin de rendre votre ensemble de données équilibré en termes de 1 et de 0. Tout ce dont vous avez besoin est un nombre suffisant de 1 pour la probabilité maximale de convergence. En regardant la distribution des 1 (100 000) dans votre jeu de données, vous ne devriez avoir aucun problème. Vous pouvez faire une expérience simple ici

  1. Échantillonnez 10% des 1 et 10% des 0 et utilisez un poids de 10 pour les deux
  2. Échantillonnez 100% des 1 et 10% des 0 et utilisez un poids de 10 pour les 0

Dans les deux cas, vous obtiendrez des estimations identiques. Encore une fois, l'idée de pondération est liée à l'échantillonnage. Si vous utilisez l'ensemble de données, vous ne devez pas le pondérer. Si j'étais vous, je n'utiliserais que 10% si 1 et 10% de 0.

Dans R, vous utiliseriez glm. Voici un exemple de code:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

Dans votre jeu de données, il devrait y avoir une variable wtpour les poids.

Si vous utilisez 10% des 0 et des 1, votre wtvariable aura une valeur de 10.

Si vous utilisez 10% des 0 et 100% des 1: la wtvariable aura une valeur de 10 pour les observations avec y = 0 et de 1 pour les observations avec y = 1

subra
la source
12

La pondération est une procédure qui pondère les données pour compenser les différences d'échantillon et de population (King 2001). Par exemple, dans les événements rares (tels que la fraude au risque de crédit, les décès dans la littérature médicale), nous avons tendance à échantillonner tous les 1 (événements rares) et une fraction de 0 (non événements). Dans de tels cas, nous devons pondérer les observations en conséquence.

Exemple: Disons que, dans une population de 500 000 transactions, il y a 50 transactions frauduleuses. Dans ce cas, vous

  1. Échantillon des 50 transactions de fraude (100% de la fraude)
  2. 10% des bonnes transactions (10% de 500 000 correspondent à 50 000 bonnes transactions)

Dans ce cas, vous attribuez un poids de 1 pour les transactions frauduleuses et un poids de 10 pour les bonnes transactions. C'est ce qu'on appelle la méthode du maximum de vraisemblance pondéré. Le point important à retenir est que la pondération est liée aux proportions d'échantillonnage

Référence: données de régression logistique dans les événements rares (King 2001)

subra
la source
salut subra !!! merci beaucoup pour l'approche King !! n'en ai pas entendu parler! dans mon cas, j'ai 1 million de transactions! (900 000 sont "0" et 100 000 sont "1"). alors dois-je échantillonner 10% de mon "0"? alors j'ai presque un ensemble de données équilibré. alors je dois pondérer le "0" dix fois plus que le "1" non? et la fonction dans R glm () dans le package MASS fait exactement cela? si je pondère mes observations, je calculerai la probabilité maximale pondérée? Merci! apprécie vraiment votre réponse et votre aide
ching
je pense vraiment beaucoup à ce problème. Et si je dis: maintenant utiliser toutes mes données pour construire un modèle logit (avec les données 9: 1 non équilibrées). et puis ensuite je pèse mon "1" dix fois, même si en réalité je n'ai pas plus de données et ce n'est PAS 10% de mes données. c'est juste comme, j'agis comme j'ai ... alors maintenant quand R calcule le modèle, il pense que j'utilise seulement 10% de mon "1" et le considère dans le calcul de la vraisemblance. Cela a-t-il un sens?
ching