Методы выбора функций в MATLAB? - PullRequest
1 голос
/ 15 июня 2010

Я пытаюсь выполнить некоторую классификацию текста с помощью SVM в MATLAB и действительно хотел бы знать, есть ли у MATLAB какие-либо методы для выбора функций (Chi Sq., MI, ....), по той причине, что я хочу попробовать методы и сохраняя лучший метод, у меня нет времени, чтобы реализовать все из них. Вот почему я ищу такие методы в MATLAB. Кто-нибудь знает?

Ответы [ 4 ]

3 голосов
/ 15 июня 2010

svmtrain

MATLAB имеет другие утилиты для классификации, такие как кластерный анализ , случайные леса и т. Д.

Если у вас нет необходимого набора инструментов для svmtrain, я рекомендую LIBSVM .Это бесплатно, и я много использовал с хорошими результатами.

2 голосов
/ 16 июня 2010

Аналогичный подход: уменьшение размерности . В MATLAB вы можете легко выполнить PCA или Факторный анализ .

В качестве альтернативы вы можете использовать подход обёртки к выбору функции . Вы будете искать в пространстве функций, каждый раз беря подмножество функций и оценивая это подмножество, используя любой алгоритм классификации, который вы решите (LDA, Дерево решений, SVM, ...) Вы можете сделать это как исчерпывающее или использовать какую-то эвристику для направления поиска (жадный, GA, SA, ..)

Если у вас есть доступ к Биоинформатика Toolbox , он имеет функцию randfeatures, которая выполняет аналогичные функции. Есть даже пара классных демонстраций реальных случаев использования.

2 голосов
/ 15 июня 2010

Панель инструментов статистики имеет sequentialfs .См. Также документацию по выбору функции .

0 голосов
/ 16 апреля 2014

Может быть, это поможет:

Существует два способа выбора признаков в классификации:

  1. Использование fselect.py из директории инструментов libsvm (http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#feature_selection_tool)
  2. Использование sequentialfs из панели инструментов статистики.

Я бы порекомендовал использовать fselect.py, поскольку он предоставляет больше опций - например, автоматический поиск по сетке для оптимальных параметров (с использованием grid.py). Он также предоставляет F-показатель, основанный на способности распознавания функций (см. http://www.csie.ntu.edu.tw/~cjlin/papers/features.pdf для получения подробной информации о F-значении).

Поскольку fselect.py написан на python, вы можете использовать интерфейс python или, как я предпочитаю, использовать matlab для выполнения системного вызова python:

system('python fselect.py <training file name>')

Важно, чтобы у вас был установлен python, скомпилирован libsvm (и вы находитесь в каталоге инструментов libsvm, в котором есть grid.py и другие файлы).

Необходимо иметь обучающий файл в формате libsvm (разреженный формат). Вы можете сделать это с помощью разреженной функции в Matlab, а затем libsvmwrite.

xtrain_sparse = sparse(xtrain)
libsvmwrite('filename.txt',ytrain,xtrain_sparse)

Надеюсь, это поможет.

Для последовательных файлов с libsvm вы можете увидеть это сообщение:

Выбор функций с помощью последовательных функций с помощью libsvm

...