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 равен нулю, ваша точность / отзыв либо равна нулю, либо не определена.

Для отладки вы должны вывести (для каждого тестового примера) золотую метку и прогнозируемую метку, чтобы вы знали, в чем проблема.

Спасибо, зелень. Ваш ответ мне тоже помог. Чтобы избежать этой проблемы, убедитесь, что наборы тестовых и обучающих данных выбраны / сгруппированы так, чтобы они имели хорошее сочетание положительных и отрицательных значений.

Другие вопросы по тегам