Я недавно начал учиться работать с sklearn
и только что столкнулся с этим странным результатом.
Я использовал digits
доступный набор данных, sklearn
чтобы попробовать разные модели и методы оценки.
Когда я тестировал модель машины опорных векторов на данных, я обнаружил, что есть два разных класса sklearn
для классификации SVM: SVC
и LinearSVC
, где первый использует подход « один против одного», а другой - подход « один против остальных» .
Я не знал, как это повлияет на результаты, поэтому попробовал оба варианта. Я проводил оценку в стиле Монте-Карло, где я выполнял обе модели по 500 раз, каждый раз разбивая выборку случайным образом на 60% обучения и 40% теста и вычисляя ошибку прогноза на тестовом наборе.
Обычная оценка SVC выдает следующую гистограмму ошибок: в то время как оценка линейного SVC выдает следующую гистограмму:
Что может объяснить такую резкую разницу? Почему линейная модель большую часть времени обладает такой высокой точностью?
И, соответственно, что может быть причиной резкой поляризации результатов? Либо с точностью, близкой к 1, либо с точностью, близкой к 0, между ними ничего нет.
Для сравнения, классификация дерева решений выявила гораздо более нормально распределенный коэффициент ошибок с точностью около 0,85.
Similar to SVC with parameter kernel=’linear’, but implemented in terms of liblinear rather than libsvm, so it has more flexibility in the choice of penalties and loss functions and should scale better (to large numbers of samples).