SVM-Light отображает искаженные результаты точности / отзыва
Я запускаю классификатор SVM-Light, но строка отзыва / точности, которую он выводит, кажется поврежденной:
Reading model...OK. (20 support vectors read)
Classifying test examples..100..200..done
Runtime (without IO) in cpu-seconds: 0.00
Accuracy on test set: 95.50% (191 correct, 9 incorrect, 200 total)
Precision/recall on test set: 0.00%/0.00%
Что я должен настроить, чтобы получить правильную точность и вспомнить?
2 ответа
Например, если ваш классификатор всегда предсказывает "-1" - отрицательный класс; однако ваш тестовый набор данных содержит 191 "-1" и 9 "+1" в виде золотых меток, вы получите 191 из них правильно классифицированных и 9 из них неправильных.
True positives : 0 (TP)
True negatives : 191 (TN)
False negatives: 9 (FN)
False positives: 0 (FP)
Thus:
TP 0
Precision = ----------- = --------- = undefined
TP + FP 0 + 0
TP 0
Recall = ----------- = --------- = 0
TP + FN 0 + 9
Из приведенной выше формулы вы знаете, что пока ваш TP равен нулю, ваша точность / отзыв либо равна нулю, либо не определена.
Для отладки вы должны вывести (для каждого тестового примера) золотую метку и прогнозируемую метку, чтобы вы знали, в чем проблема.
Спасибо, зелень. Ваш ответ мне тоже помог. Чтобы избежать этой проблемы, убедитесь, что наборы тестовых и обучающих данных выбраны / сгруппированы так, чтобы они имели хорошее сочетание положительных и отрицательных значений.