Почему SVC, NuSVC и LinearSVC дают очень разные результаты? - PullRequest
0 голосов
/ 15 февраля 2019

Я работаю над задачей классификации - геолокации пользователей Twitter на основе их твитов.

Я провел много экспериментов, используя SVC, NuSVC и LinearSVC от sklearn, а также модель «мешок слов».Точность составляет 35%, 60% и 80%.Разница между SVC и LinearSVC более чем вдвое, что шокирует.

Я не совсем уверен, почему это происходит именно так.Это может быть из-за переоснащения или недостаточной подгонки?Почему между классификаторами так много различий?

1 Ответ

0 голосов
/ 15 февраля 2019

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

LinearSVC

Похож на SVC с параметром kernel = 'linear', но реализован в терминах liblinear, а не libsvm, поэтому он обладает большей гибкостью в выборе штрафов и потерьфункции и должны лучше масштабироваться для большого количества образцов.

Источник: sklearn.svm.LinearSVC.html # sklearn.svm.LinearSVC

SVC

Реализация основана на libsvm.Сложность времени подбора более чем квадратичная с количеством выборок, что затрудняет масштабирование для набора данных с более чем несколькими 10000 выборками.

Источник: sklearn.svm.SVC.html # sklearn.svm.SVC

Сначала вы должны протестировать модель LinearSVC, поскольку она имеет всего несколько гиперпараметров и должна дать вам первый результат.После этого вы можете попробовать обучить кучу SVC моделей и выбрать лучших.Для этого я рекомендую сделать gridsearch over C, kernel, degree, gamma, coef0 и tol.

...