Добро пожаловать в следующую статью. В этой части мы обсудим дополнительные детали машины опорных векторов.

Что вы думаете о двух картинках выше? Который правильный? Левый или правый? Что ж, не волнуйтесь. Ответ вы узнаете после прочтения этой статьи. Давайте начнем :)

0. Введение

Предположим, вам дано два класса меток на графике, как показано ниже (рис. 2). Можете ли вы определить разделительную линию для классов ниже?

Возможно, вы придумали что-то похожее на следующее изображение (рис. 3). Он четко разделяет два класса. Это то, что делает SVM. Находит линию/гиперплоскость (в многомерном пространстве, разделяющем классы). Вскоре мы обсудим, почему я написал многомерное пространство.

1. Давайте немного усложним. . .

Все идет нормально. Теперь рассмотрим, что если бы у нас были данные, как показано ниже (рис. 4)? Ни одна линия не может разделить два класса в этой плоскости x-y. Так что нам делать? Мы можем применить трансформацию и добавить еще одно измерение, назвав его осью Z. Предположим, что значение точки на плоскости z w = x² + y². В этом случае мы можем манипулировать им как расстоянием точки от z-начала координат. Затем, если построить график по оси Z, можно будет увидеть четкое разделение и провести линейную линию.

Когда мы преобразуем эту линию обратно в исходную плоскость, линия образует круговую границу, как показано на следующем изображении (рис. 6). Это преобразование называется ядром.

2. Давайте немного усложним. . .

Что делать, если график данных перекрывается? Или, что если некоторые из красных точек находятся внутри синей?

Какую линию (из 1 или 2) нам провести?

Что ж, они оба правы. Первый допускает некоторые выбросы, а второй пытается достичь нулевого допуска с идеальным разделением. В реальном приложении поиск идеального класса для миллиардов обучающих наборов данных занимает много времени. Как вы увидите в кодировании, параметр регуляризации и гамма должны быть определены. Мы можем комбинировать эти параметры для получения значительной нелинейной линии классификации с более высокой точностью за разумное время.

3. Параметры настройки: ядро, регуляризация, гамма и маржа.

ядро

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

Регуляризация

Параметр regularization (параметр C в библиотеке Python sklearn) сообщает оптимизации SVM о том, насколько вы хотите избежать неправильной классификации в каждом обучающем образце.

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

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

Гамма

Параметр gamma определяет, насколько далеко простирается влияние одного обучающего примера (низкие значения означают далеко, а высокие значения — близко). Другими словами, при низкой гамме при расчете линии разделения учитываются точки, находящиеся далеко от вероятных разделительных линий. В то время как высокая гамма означает, что при расчете учитываются точки, близкие к правдоподобной линии.

Допуск

Последней, но очень важной характеристикой классификатора SVM является маржа.

Отступ – это расстояние между линией разделения и классом точек шкафов.

Хорошая маржа – это та, где расстояние между разделительной линией и классом точек больше для обеих сторон. Хорошая маржа позволяет точкам находиться в соответствующих классах, не переходя в другие классы. Теперь вы знаете ответ на поставленный выше вопрос. Спасибо :)