Я пытаюсь классифицировать сообщения по различным категориям, используя SVM. Я составил список желаемых слов / символов из учебного набора.
Для каждого вектора, который представляет сообщение, я устанавливаю соответствующую строку, 1
если слово присутствует:
"корпус" это: [Мария, маленькая, ягненок, звезда, мерцание]
первое сообщение: "у марии был маленький ягненок" -> [1 1 1 0 0]
Второе сообщение: "Мерцай, маленькая звезда" -> [0 1 0 1 1]
Я думаю, что это довольно распространенная установка с SVM, но мой вопрос, с тысячами слов в наборе, что, если на самом деле появляются только 1-2 слова на сообщение? Повлияет ли линейная зависимость моего набора обучающих векторов на способность алгоритма сходиться?
classification
svm
sparse
jonsca
источник
источник
flexmix
- хотя у меня есть "Learn R" в моем календаре в течение нескольких лет!Ответы:
Разреженность и линейная зависимость - две разные вещи. Линейная зависимость подразумевает, что некоторые из векторов признаков представляют собой простые множители других векторов признаков (или то же самое, что применяется к примерам). В описанной вами настройке я думаю, что линейная зависимость маловероятна (это означает, что два термина имеют одинаковую частоту (или их кратность) для всех документов). Просто наличие разреженных функций не представляет никаких проблем для SVM. Один из способов убедиться в этом заключается в том, что вы можете сделать случайное вращение координатных осей, что оставит проблему неизменной и даст такое же решение, но сделает данные совершенно не разреженными (это отчасти то, как работают случайные проекции). ).
Кроме того , кажется , что вы говорите о SVM в Primal . Обратите внимание, что если вы используете ядро SVM, то, что у вас есть разреженный набор данных, не означает, что матрица ядра будет разреженной. Это может быть, однако, низкий рейтинг. В этом случае вы можете использовать этот факт для более эффективного обучения (см., Например, Эффективное обучение SVM с использованием низкоранговых представлений ядра ).
источник