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.
machine-learning
classification
data-mining
svm
user785099
la source
la source
Réponses:
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
la source
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.
la source