2011-04-20 3 views
4

Я пытаюсь использовать SVM для классификации статей новостей.LibSVM превращает все мои векторы в векторы поддержки, почему?

Я создал таблицу, содержащую функции (уникальные слова, найденные в документах) в виде строк. Я создал отображение векторов веса с этими функциями. т.е. если в статье есть слово, которое является частью таблицы векторов признаков, то местоположение помечено как 1 или 0.

Пример: - образец Обучение генерироваться ...

1 1: 1 2: 1 3: 1 4: 1 5: 1 6: 1 7: 1 8: 1, 9: 1 10: 1 11: 1 12: 1 13: 1 14: 1 15: 1 16: 1 17: 1 18: 1 19: 1 20: 1 21: 1 22: 1 23: 1 24: 1 25: 1 26: 1 27: 1 28: 1 29: 1 30: 1

Поскольку это первый документ, все функции присутствуют.

Я использую 1, 0 как ярлыки классов.

Я использую svm.Net для классификации.

Я дал 300 весовые векторы, классифицированные вручную как данные о тренировке, а сгенерированная модель принимает все векторы в качестве векторов поддержки, которые, безусловно, перерабатывают.

Мои всего: (unique words/row count в каталоге функций) Таблица 7610.

В чем причина?

Из-за этого при установке мой проект теперь находится в довольно плохом состоянии. Он классифицирует каждую статью в качестве положительной статьи.

В У LibSVM двоичная классификация есть ли ограничение на метку класса?

Я использую 0, 1 вместо -1 и +1. Это проблема?

ответ

1

Как указывалось, поиск параметров, вероятно, является хорошей идеей, прежде чем делать что-либо еще.

Я бы также исследовал различные доступные вам ядра. Тот факт, что вы вводите данные двоично, может быть проблематичным для ядра RBF (или может сделать его использование неоптимальным по сравнению с другим ядром). Я не знаю, какое ядро ​​может быть лучше подходит. Попробуйте линейное ядро ​​и посмотрите на дополнительные предложения/идею :)

Для получения дополнительной информации и, возможно, более качественных ответов см. Stats.stackexchange.com.

3

Вам необходимо выполнить поиск параметров любого типа, также если классы не сбалансированы, классификатор может получить искусственно высокую точность, не делая многого. Это guide is good при обучении основным практическим вещам, вероятно, вы должны прочитать его

1

Я бы определенно попытался использовать -1 и +1 для ваших ярлыков, это стандартный способ сделать это.

Кроме того, сколько у вас данных? Поскольку вы работаете в 7610-мерном пространстве, вы можете потенциально иметь такое множество векторов поддержки, где другой вектор «поддерживает» гиперплоскость в каждом измерении.

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

+0

Обнаружено, что это происходит потому, что SVM.net не проверяет правильность данных обучения. В моих данных данных обучения данные не были отсортированы, в результате они порождали странные результаты. После сортировки весового вектора на номера функций, а затем генерации модели вещи намного лучше ... 74% точности. Спасибо. –