Skip to content
Obus edited this page Dec 3, 2011 · 4 revisions

SVM

  • классификатор, чей алгоритма описан тут (http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2)

1. Подготовка данных

Рассматриваем две задачи классификации: положительные твиты против остальных и отрицательные против остальных.

Из заранее размеченной выборка (размером 999, совершенно случайно) выбрасываются все признаки с нулевым вкладом. После чего, она делится случайным образом на тренировочную и тестовую (70% и 30% от исходной выборки соответственно).

Далее, происходит обучение SVM на тренировочной выборке и проверка на тестовой. Рассматриваются классы: “1” (положительные, либо отрицательные твиты) и “0” (все остальные).

Критерием качества выступает уже знакомые нам precision, recall и F-measure.

2. Модификации и особенности реализации

SVM в своем алгоритме руководствуется единственной характеристикой: долей неправильно классифицированных объектов. Учитывая специфику наших данных (соотношение нейтральных и положительных/отрицательных твитов ~ 9:1), даже в случае “тупого” классификатора, который всегда относит твит к “0”, ошибка будет вполне приемлема ~ 0.1. Именно такой результат и получается, если использовать “чистый” SVM, без дополнительных параметров.

Рассмотрим одни из возможных дополнительных параметров

  1. Вес класса - “важность” класса, учитываемый в ходе подсчета ошибки классификатора, это самый интересный для нас параметр - он может уравновесить дисбаланс между количеством представителей класса “0” и “1”.
  2. Параметр кросс-валидации k— выборка на которой строится класссификатор разбивается на k частей, после чего классификатор строится на совокупности каждых их k-1 и проверяется на оставшейся (а на основе построенных классификаторов строится один). Оновная его цель - обеспечить устойчивость классификатора, а следовательно и его результатов.

Вес классов можно выбрать исходя из соотношения их размеров, а можно воспользоваться F-measure. Используем второй вариант: для нахождения оптимальных значений весов будем использовалась оптимизацию значения F-measure на тренировочной выборке по параметрам — весам.

3. Результаты

Классы Параметры Выборка Precision Recall F-measure
positive&others “1”.weight = 19; “0”.weigh = 1; cross-valid = 4; тренировочная 0.383 0.733 0.502
positive&others “1”.weight = 19; “0”.weigh = 1; cross-valid = 4; тестовая 0.186 0.25 0.213
negative&others “1”.weight = 19; “0”.weigh = 1; cross-valid = 4; тренировочная 0.3 0.811 0.438
negative&others “1”.weight = 19; “0”.weigh = 1; cross-valid = 4; тестовая 0.126 0.312 0.18

Стоит отметить, что при оптимизации результат может получаться разным, если существует несколько локальных минимумов. Наш случай не исключение, возможны и иные результаты

Классы Параметры Выборка Precision Recall F-measure
positive&others “1”.weight = 3.2; “0”.weigh = 1; cross-valid = 4; тренировочная 0.775 0.517 0.62
positive&others “1”.weight = 3.2; “0”.weigh = 1; cross-valid = 4; тестовая 0.231 0.094 0.133
negative&others “1”.weight = 4.2; “0”.weigh = 1; cross-valid = 4; тренировочная 0.526 0.554 0.539
negative&others “1”.weight = 4.2; “0”.weigh = 1; cross-valid = 4; тестовая 0.095 0.062 0.075