Le déséquilibre n'est pas nécessairement un problème, mais comment y arriver peut l'être. Il n'est pas judicieux de baser votre stratégie d'échantillonnage sur la variable cible. Étant donné que cette variable incorpore le caractère aléatoire dans votre modèle de régression, si vous effectuez un échantillonnage sur cette base, vous aurez de gros problèmes à faire tout type d'inférence. Je doute qu'il soit possible de "résoudre" ces problèmes.
Vous pouvez légitimement sur- ou sous-échantillonner en fonction des variables prédictives . Dans ce cas, à condition de vérifier soigneusement que les hypothèses du modèle semblent valides (par exemple l'homoscédasticité qui nous vient à l'esprit comme importante dans cette situation, si vous avez une régression "ordinaire" avec les hypothèses habituelles), je ne pense pas que vous ayez besoin de annuler le suréchantillonnage lors de la prévision. Votre cas serait désormais similaire à celui d'un analyste qui a conçu explicitement une expérience pour avoir une plage équilibrée de variables prédictives.
Édition - ajout - expansion sur les raisons pour lesquelles il est mauvais d'échantillonner sur la base de Y
y= Xb + eeeXb) le e n'aura plus de moyenne nulle ni ne sera distribué de façon identique. Par exemple, des valeurs faibles de y qui pourraient inclure des valeurs très faibles de e pourraient être moins susceptibles d'être sélectionnées. Cela ruine toute inférence basée sur les moyens habituels d'ajustement de tels modèles. Des corrections peuvent être faites similaires à celles faites en économétrie pour ajuster des modèles tronqués, mais elles sont pénibles et nécessitent des hypothèses supplémentaires, et ne devraient être utilisées que lorsqu'il n'y a pas d'alternative.
Considérez l'illustration extrême ci-dessous. Si vous tronquez vos données à une valeur arbitraire pour la variable de réponse, vous introduisez des biais très importants. Si vous le tronquez pour une variable explicative, il n'y a pas nécessairement de problème. Vous voyez que la ligne verte, basée sur un sous-ensemble choisi en raison de leurs valeurs de prédicteur, est très proche de la vraie ligne ajustée; cela ne peut pas être dit de la ligne bleue, basée uniquement sur les points bleus.
Cela s'étend au cas moins grave de sous-échantillonnage ou de suréchantillonnage (car la troncature peut être considérée comme un sous-échantillonnage poussé à son extrême logique).
# generate data
x <- rnorm(100)
y <- 3 + 2*x + rnorm(100)
# demonstrate
plot(x,y, bty="l")
abline(v=0, col="grey70")
abline(h=4, col="grey70")
abline(3,2, col=1)
abline(lm(y~x), col=2)
abline(lm(y[x>0] ~ x[x>0]), col=3)
abline(lm(y[y>4] ~ x[y>4]), col=4)
points(x[y>4], y[y>4], pch=19, col=4)
points(x[x>0], y[x>0], pch=1, cex=1.5, col=3)
legend(-2.5,8, legend=c("True line", "Fitted - all data", "Fitted - subset based on x",
"Fitted - subset based on y"), lty=1, col=1:4, bty="n")
Il s'agit de savoir si vous faites une analyse causale ou une prédiction. Lisez http://m.statisticalhorizons.com/?ref=http%3A%2F%2Ft.co%2F54MWZrVAyX&url=http%3A%2F%2Fstatisticalhorizons.com%2Fprediction-vs-causation-in-regression-analysis&width=640
Le rééchantillonnage sur la variable cible pour la formation à des fins de prédiction fonctionne aussi longtemps que l'on teste sur un échantillon non rééchantillonné. Le tableau de performance final doit être basé uniquement sur le maintien. Pour une plus grande précision dans la détermination de la prévisibilité du modèle, des techniques de validation croisée doivent être utilisées.
Vous "annulez" par l'analyse finale du modèle de régression et sur l'ensemble de données déséquilibré.
la source
Ce n'est pas une tentative de fournir une solution pratique à votre problème, mais je viens de faire un peu de recherche sur la gestion des ensembles de données déséquilibrés dans les problèmes de régression et je voulais partager mes résultats:
la source
tout d'abord, la ration 1:10 n'est pas mal du tout. il existe un moyen simple d'annuler l'échantillonnage -
1) pour un problème de classification, si vous avez sous-échantillonné une classe négative par 10. la probabilité résultante est 10 fois plus élevée. vous pouvez simplement diviser la probabilité résultante par 10. (connu sous le nom de réétalonnage du modèle)
2) Facebook a également des sous-échantillons (pour la prédiction des clics dans la régression logistique) et fait un échantillonnage négatif vers le bas. le recalibrage se fait par la formule simple p / (p + (1-p) / w); où p est la prédiction dans le sous-échantillonnage, nw est le taux d'échantillonnage négatif vers le bas.
la source
Je pense que ce qui pourrait vous aider compte tenu de votre problème est la technique de suréchantillonnage des minorités synthétiques pour la régression (SMOTER). Il y a des recherches sur ce sujet. Cependant, il reste moins exploré que son homologue de classification, comme vous l'avez probablement rencontré.
Je pourrais suggérer le document cité ci-dessous (et la conférence à laquelle il a été présenté http://proceedings.mlr.press/v74/ ) en fonction de votre intérêt à le comprendre dans une perspective de recherche. J'ai vraiment apprécié l'introduction du bruit gaussien dans la génération des observations synthétiques.
Si vous êtes plus intéressé par une solution pratique, le premier auteur a une implémentation R disponible sur sa page Github. https://github.com/paobranco/SMOGN-LIDTA17
Si Python est plus de votre persuasion, j'ai récemment distribué une implémentation entièrement Pythonique de l'algorithme SMOGN qui est maintenant disponible et en cours de test unitaire. https://github.com/nickkunz/smogn
J'espère que cela a aidé!
Branco, P., Torgo, L., Ribeiro, R. (2017). "SMOGN: Une approche de prétraitement pour une régression déséquilibrée". Proceedings of Machine Learning Research, 74: 36-50. http://proceedings.mlr.press/v74/branco17a/branco17a.pdf .
la source