svm - запутался в результате и баллах намного больше, чем +1 или -1

Я новичок в SVM. В моем проекте я использую SVM для классификации текстов. Набор данных представляет собой обзоры ноутбуков, и я делю их на два класса: «хороший обзор» и «плохой обзор». Я провел обучение, тестирование и классификацию, но есть несколько вещей, которые меня смутили, и я хочу спросить.

  1. Ниже приведены два примера данных в формате SVM, масштабированных до [-1,1]:

    1st -> 1:-0.648936 2:-0.641171 3:-0.62963 4:-0.576841 5:-1 6:-1 7:-0.894737 8:-1 9:-0.225806 10:-0.641026 11:-0.481481 12:-1 13:-1 14:-0.5 15:-0.235294 16:-0.882353
    
    2nd -> 1:-0.457447 2:-0.668316 3:-0.111111 4:-0.386705 5:-1 6:-1 7:-0.578947 8:-1 9:0.0967742 10:-0.25641 11:-0.24183 12:0.333333 13:0.333333 14:-0.5 15:-0.230769 16:-0.884615
    

    Первый дает результат 5,4750172361043, а второй — 0,99999999999985. Интересно, почему? Я думаю, если я посмотрю на данные выше, второй экземпляр имеет лучшую ценность, чем первый. И если я смотрю на исходный текстовый обзор данных, я думаю, что у второго экземпляра категория обзора «лучше», чем у первого. Так почему же результат не такой, как я ожидал?

  2. Нормально ли, что приведенные выше результаты SVM дают огромное значение, даже больше, чем -1 и 1? Общий результат из всех наборов данных имеет минимальную оценку SVM -4,5085001691845 и максимальную 7,1355405169311. Я не уверен, но думаю, что результат обычно находится в диапазоне от -1 до 1. Что-то не так?

  3. Что я должен сделать, чтобы получить результаты, которые вы все могли бы считать нормальными? Я имею в виду, что хороший экземпляр категории отзывов имеет значение от 0 до 1 или немного больше (например, 1,135645), а плохие отзывы имеют значение от 0 до -1 (или, например, -1,0573545).

просто дополнительная информация к моему вопросу:

  • Я использую библиотеку решателя SVM с веб-сайта phpir.com (Ян Барбер).
  • Параметр C и гамма, которые я использую, по-прежнему используются по умолчанию, и я не проводил перекрестную проверку.
  • Я привожу здесь несколько примеров хороших и плохих отзывов: http://pastebin.com/cqDK7WA6

пожалуйста, помогите мне, я действительно новичок в этом, может быть, я не понял основную концепцию SVM, поэтому мне нужно ваше объяснение, и извините за мой плохой английский.


person rizky    schedule 16.06.2013    source источник
comment
Обычно SVM пытается найти решающую функцию для отделения данных одного класса от данных другого. Прогноз возвращает расстояние этой решающей функции. Таким образом, чем больше, тем выше вероятность того, что данные принадлежат классу; и знак выше или ниже функции решения, которая является уровнем 0. Для лучшего понимания см. это   -  person sop    schedule 27.11.2014


Ответы (2)


Тот факт, что значения решения меняются от -5 до 7, сам по себе не является проблемой. Единственное, что оптимизирует решатель SVM, — это знак значения решения. SVM считает, что точка данных, которая дает 5,47, принадлежит к тому же классу, что и та, которая дает 0,99.

Некоторые предложения:

  • Настоящая проблема, которую я вижу в том, что вы делаете, заключается в том, что вы не ищете хорошего значения C и гаммы. Не делая этого, вы можете получить сколь угодно плохие результаты. Было бы важно знать, насколько хорошо ваш классификатор в целом работает с ранее невиданными данными, и сравнивать с хорошим C и гаммой и без них.
  • Кажется, вы используете ядро ​​RBF, и это кажется разумным. Однако многие приложения для обработки естественного языка и анализа настроений показали лучшие результаты с линейными ядрами.

Вот еще один вопрос, в котором есть контрольный список вещей, которые необходимо проверить при использовании SVM: -c">Машина вспомогательных векторов работает в Matlab, не работает в C++

person carlosdc    schedule 16.06.2013
comment
Спасибо за ответ карлос. Единственное, что оптимизирует решатель SVM, — это знак значения решения. Да, я это знаю, но здесь я пытаюсь добиться того, что я создал поисковую систему, и оценка SVM является одним из факторов ранжирования, поэтому обзор с более высокой оценкой будет иметь более высокая позиция в результатах поиска. Вот почему я задал первый вопрос, хотя оба результата положительные (и в одном классе), я ожидал, что второй экземпляр будет иметь лучший результат. Можете ли вы помочь мне в отношении цели, которую я хочу достичь? - person rizky; 19.06.2013

На самом деле в этом направлении проводились некоторые исследования. Выходное значение каждого классификатора SVM может быть отображено от [-∞; ∞] до [0; 1], в основном с помощью масштабирования Платта или изотонической регрессии. Подробности можно найти в этой статье: Прогнозирование хороших вероятностей с контролируемым обучением, в Proc. Междунар. конф. по машинному обучению (ICML), 2005 г., стр. 625–632.

person Frank Zhang    schedule 21.09.2014
comment
Фиксированная ссылка на статью: cs.cornell.edu/ ~alexn/papers/калибровка.icml05.crc.rev3.pdf - person Jeff Evans; 07.07.2018