Ich habe ein Trainingsset mit ungefähr 3000 positiven und 3000 negativen Instanzen. Aber mein Testdatensatz ist ziemlich unausgeglichen. Der positive Satz hat nur 50 Instanzen und der negative 1500 Instanzen. Dies führt dazu, dass die Genauigkeit sehr gering ist. Gibt es Ansätze zur Lösung dieses Problems? Ich benutze SVM, um einen Klassifikator zu erstellen.
machine-learning
classification
data-mining
svm
user785099
quelle
quelle
Antworten:
Dies wird als Dataset Shift-Einstellung bezeichnet. Dieses PDF [1] soll Ihnen helfen, einige der zugrunde liegenden Probleme zu verstehen.
Im Moment können Sie jedoch die Wichtigkeitsanpassung der kleinsten Quadrate verwenden, um Wichtigkeitsschätzungen für Ihre Trainingsdaten mithilfe Ihres Testsatzes zu erhalten (Sie benötigen keine Testsatzbezeichnungen, nur die Merkmalsvektoren) [2]. Sobald Sie die Wichtigkeitsschätzungen erhalten haben, können Sie sie als Instanzgewichte in libSVM [3] verwenden.
Das sollte es Ihnen ermöglichen, einen besseren Klassifikator zu erhalten.
[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
quelle
Denken Sie, dass die "reale Welt" eher wie das Trainingsset oder das Testset aussieht? Wenn es eher dem Trainingssatz ähnelt, können Sie zufällig 50 Instanzen aus Ihrem negativen Testsatz auswählen, um eine unvoreingenommenere Schätzung der Genauigkeit zu erhalten. Aber ich stimme Peter Flom zu: Im Allgemeinen sollten Ihre Test- und Zugsets beide ähnlich aussehen.
quelle