измерение точности модели и важности функции в SVM - PullRequest
1 голос
/ 17 сентября 2011

Я начинаю использовать LIBSVM для регрессионного анализа. В моем мире около 20 функций и от тысячи до миллионов учебных образцов.

Мне интересно две вещи:

  1. Есть ли показатель, который указывает на точность или достоверность модели, возможно, в файле .model или где-либо еще?

  2. Как определить, является ли особенность значимой? Например, если я пытаюсь предсказать вес тела как функцию роста, ширины плеч, пола и цвета волос, я могу обнаружить, что цвет волос не является существенной характеристикой в ​​прогнозировании веса. Это отражено в файле .model, или есть какой-то способ узнать?

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

libSVM вычисляет p -значения для контрольных точек на основе достоверности классификатора (т. Е. Как далеко находится контрольная точка от границы решения и насколько широки поля).

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

  1. Разделите ваш набор данных на k сгибов (например, k = 10 обычно)
  2. Для каждой из k сгибов:
    1. Разделите ваши данные на обучающие / тестовые наборы (текущий сгиб - тестовый набор, остальные - тренировочный набор)
    2. Тренируйте ваш SVM-классификатор, используя только n -1 вашего n функции
    3. Измерение производительности прогнозирования
  3. Средняя производительность вашего n -1 классификатора функций для всех k тестовые сгибы
  4. Повторите 1-3 для всех оставшихся функций

Вы также можете сделать обратное, где вы тестируете каждую из n функций отдельноно вы, скорее всего, упустите важные взаимодействия второго и высшего порядка между функциями.

IВ целом, однако, SVM способны игнорировать нерелевантные функции.

Вы также можете попытаться визуализировать свои данные с помощью анализа основных компонентов, чтобы понять, как эти данные распределяются.

1 голос
/ 17 сентября 2011

F-оценка - это показатель, обычно используемый для выбора функций в машинном обучении.

Начиная с версии 3.0, библиотека LIBSVM включает в себякаталог с именем tools .В этом каталоге находится скрипт Python fselect.py , который вычисляет F-показатель.Чтобы использовать его, просто выполните из командной строки и передайте файл, содержащий обучающие данные (и, необязательно, файл данных тестирования).

python fselect.py data_training data_testing

Вывод состоит из fscore для каждой функции в вашем наборе данных, что соответствует важности этой функции для результата модели (счет регрессии).

...