Pull to refresh

Comments 16

А где тут «машинное обучение»? Вроде никто никого не обучает.

Эти точки называются опорными векторами.

Почему тогда «метод опорных векторов», а не «метод опорных точек»?
«Машинное обучение» тут в том, что алгоритм обучаясь на обучающей выборке, строит такую гиперплоскость, которая бы в дальнейшем помогала классифицировать, если это задача классификации, ранее неизвестный объект по заданным признакам.

На второй вопрос детальный ответ здесь

Краткий обзор SVM с каждым днем выглядит все более и более похоже на экскурсию в музей.

Считать что нейронные сети лучше, чем SVM — это всё равно, что считать что переменный ток лучше постоянного. Была статейка на эту тему тут, но что-то никак не могу найти…
Согласен. Я никак не хотел устраивать холивар. Для каждого алгоритма есть определенная задача, которую он решает лучше всего. Есть задачи, для решения которых, лучше всего использовать SVM, ввиду ряда факторов, вроде вычислительной простоты SVM относительно нейронок, например. Проще говоря, нет абсолютно «идеального» алгоритма, как и идеального ЯП: каждый рассчитан на решение определенного ряда задач.
>вроде вычислительной простоты SVM
Да там ей и не пахнет. С ядрам там же то ли квадрат, то ли куб будет, на скромных нынче выборках от 10-20k+ все быстро заглохнет. И еще, NN вы могли бы прям в статьей на голом numpy написать, а SVM?
Во-первых, заметьте: в моем сообщении не было ни слова про нейронные сети, это вы сказали.
Во-вторых, прошу, покажите мне реальный датасет и задачу, где SVM был бы SotA-алгоритмом в данный момент.
Половина NLP сидит на SVM, и не собирается на сетки переползать для этих тех задач.
Пруфы, пожалуйста.
SotA-пейперы по NLP идут или по пути deep learning подхода (скапитаню: это сети), или по пути генерации лингвистических фич, поверх которых и логрег даёт хорошие результаты.
Предполагаю, что вы говорите про второй кейс. Так вот, мой вопрос актуален. Покажите мне реальную задачу, где бустинг или сетка поверх ваших NLP-шных фич будут давать скор хуже, чем SVM.
>Половина NLP сидит на SVM
Вы с таким же успехом могли бы сидеть и на логистической регрессии, фичи и данные важнее алгоритма в таких относительно простых линейных моделях. Вот у нас в конторе половина старого NLP как раз на LR, были бы данные, а алгоритм найдется

> и не собирается на сетки переползать для этих тех задач.
А зря, упускаете много новых клёвых штук, типа word embeddings и transfer learning, которые сейчас сильно рвут классический NLP на бенчмарках — ruder.io/nlp-imagenet. Профит причем скорее не от алгоритма отдельно, а потому что научились хорошо использовать неразмеченные данные для улучшения моделей
одним из примеров, может быть маленький датасет, до 100 объектов, с огромным количеством признаков. Есть много задач, например, в Health Sciences где из-за вопросов этики и сложности сбора данных просто невозможно собрать много данных. Сомневаюсь что нейронки покажут приемлемый результат на выборках меньше 100 объектов, а SVM, при правильной настройке, выдаст вполне неплохие результаты. Он на это и был нацелен, чтобы хорошо генерализоваться на маленьких датасетах с огромным количеством признаков.
Конкретный датасет или пейпер, пожалуйста.
Если заниматься диванной аналитикой, я могу с тем же успехом сказать, что на описанном вами датасете зайдет линрег (что, кстати, эквивалентно однослойной сетке) или простой ансамбль деревьев.

можно чуть подробнее описать, для чего нужно манипулировать параметром гамма?
(понятно, что рандомным подбором можно повысить качество модели, но в чем теоретический смысл?)

Вы правы, я исправил статью, добавив более детальное описание. Ответ на ваш вопрос приведен ниже.

Если задать уровень гаммы слишком высоким, тогда в процессе принятия решения о расположении линии будут учавствовать только самые близкие к линии элементы. Это поможет игнорировать выбросы в данных. Алгоритм SVM устроен таким образом, что точки расположенные наиболее близко относительно друг друга имеют больший вес при принятии решения. Однако при правильной настройке «C» и «gamma» можно добиться оптимального результата, который построит более линейную гиперплоскость игнорирующую выбросы, и следовательно, более генерализуемую.


Теоретический смысл в настройке степени «реагируемости» модели к выбросам. Но, этим он не ограничивается.
Самое обидное, что уже которую по счёту популярную статью читаю про SVM, и каждый раз «Строим такую гиперплоскость (гиперплоскость — это то-то), чтоб классы точек лежали от неё по разные стороны, а ежели такой гиперплоскости нет — то происходит магия, и классификатор всё равно нормально работает». Вот про эту магию бы чего-нибудь.
Sign up to leave a comment.

Articles