Ensemble de données de test très déséquilibré et données d'entraînement équilibrées dans la classification

9

J'ai un ensemble de formation avec environ 3000 instances positives et 3000 instances négatives. Mais mon ensemble de données de test est à peu près déséquilibré. L'ensemble positif n'a que 50 instances et le négatif a 1500 instances, ce qui entraîne une précision très faible. Existe-t-il des approches pour résoudre ce problème? J'utilise SVM pour construire un classificateur.

user785099
la source
3
Cela ne devrait pas se produire ... Les données de formation et les données de test doivent être des sélections aléatoires du même ensemble de données.
Peter Flom

Réponses:

5

C'est ce qu'on appelle le paramètre de décalage de jeu de données. Ce pdf [1] devrait vous aider à comprendre plusieurs des problèmes sous-jacents impliqués.

Pour le moment cependant, vous pouvez utiliser l'ajustement d'importance des moindres carrés pour obtenir des estimations d'importance pour vos données d'entraînement à l'aide de votre ensemble de tests (vous n'avez pas besoin des étiquettes de l'ensemble de tests, juste des vecteurs de caractéristiques) [2]. Une fois que vous avez obtenu les estimations d'importance, vous pouvez les utiliser comme pondérations d'instance dans libSVM [3].

Cela devrait vous permettre d'obtenir un meilleur classificateur.

[1] http://www.acad.bg/ebook/ml/The.MIT.Press.Dataset.Shift.in.Machine.Learning.Feb.2009.eBook-DDU.pdf
[2] http: // www .ms.ku-tokyo.ac.jp / software.html # uLSIF
[3] http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instances

TenaliRaman
la source
Que se passerait-il si l'ensemble d'entraînement est équilibré mais pas l'ensemble d'essai? Doivent-ils tous les deux avoir la même distribution?
wannik
1
@wannik Si votre formation et votre ensemble de tests sont des échantillons aléatoires des données réelles, alors ils doivent avoir des distributions identiques. Presque tous les classificateurs que nous utilisons s'attendent à ce que les données soient de cette forme. Cependant, la situation que vous décrivez est un scénario assez courant. Il est difficile de prédire le comportement du classificateur dans cette situation. Généralement, 1] Utilisez un classificateur simple, si cela fonctionne, alors très bien, 2] Sinon, connaissez-vous la proportion de classes dans les tests a priori? Si oui, utilisez la transduction SVM 3] Sinon, utilisez la même approche que celle décrite dans la réponse originale (poids d'importance).
TenaliRaman
1
Lien mis à jour vers le logiciel d'estimation de l'importance de Sugiyama et al. ms.ku-tokyo.ac.jp/software.html#uLSIF
AruniRC
1

Pensez-vous que le `` monde réel '' ressemble plus à l'ensemble d'entraînement ou à l'ensemble d'essai? S'il ressemble davantage à l'ensemble d'apprentissage, vous pouvez échantillonner au hasard 50 instances de votre ensemble de tests négatifs pour obtenir une estimation plus impartiale de la précision. Mais je suis d'accord avec Peter Flom: en général, vos ensembles de test et de train devraient tous deux se ressembler.

Stefan Wager
la source