SVM - одна из наиболее часто используемых техник машинного обучения, но почти во всех местах, где я читал объяснения SVM, есть много вещей, которые, как предполагается, знают новички. Я думаю, что иногда даже ты знаешь, но общаться с другими вещами довольно сложно. Я пробую свой способ объяснения, думая, что, если я пойму таким образом, большинство других людей тоже поймут.

Давайте разберемся с SVM, но перед этим я хотел бы задать несколько вопросов, которые вы должны задать себе при чтении?

1) Какое уравнение представляет собой прямая?
2) Как выглядят две параллельные линии и как выглядит их уравнение?
3) Как определить расстояние между двумя линиями?
4 ) Как линия представлена ​​в виде вектора.

Что ж, если вы знаете ответы на все эти вопросы, я все же предлагаю вам взглянуть на следующее объяснение, поверьте мне, ребята, это сделает ваше путешествие по SVM более плавным.

Теперь давайте перейдем к нашему первому вопросу, каково уравнение линии? определенно не новость, и большинство из нас ответит, что y = mx + b или другая его форма - это ax + by + c = 0, но помните ли вы, если вы начертите это на бумаге, как это будет выглядеть? Я считаю, что разбираться в SVM очень важно. Давайте посмотрим на это на изображении ниже.

Здесь, если мы сравним y = mx + b с y = 2x + 1, тогда b показывает точку пересечения линии на оси y, которая в примере равна 1, а изменение y в два раза больше, чем x, что составляет y = 2x, поэтому здесь m равно 2.

Перейдем к следующему вопросу - как выглядят две параллельные линии и как выглядит их уравнение? Две параллельные прямые всегда будут иметь одинаковые весовые векторы. Теперь совсем новички могут запутаться в том, что такое векторы веса. Итак, позвольте мне показать это на другой картинке.

Здесь a и b будут обозначаться как вес в нашем векторе веса, но в любом случае укажите, о чем я хотел упомянуть, это две параллельные линии, которые будут иметь различие только в их пересечении, которое в нашем примере это c1 и c2. Теперь давайте быстро поймем, как рассчитать расстояние между двумя линиями, что было нашим третьим вопросом. поэтому расстояние между двумя параллельными линиями равно

И последнее, но не менее важное: как представить линию как вектор? линейный вектор представлен скалярным произведением двух матриц, где первая матрица представляет вес, а вторая представляет размеры. Если мы возьмем наш пример линии ax + by + c = 0, ее можно представить W'X + c = 0, где W представляет вектор весов W = [a, b], а вторая матрица будет представлена ​​как X = [x, y].

Я надеюсь, что до сих пор то, что я объяснил, ясно. Давайте теперь перейдем к нашей теме SVM. Позвольте мне сначала поставить проблему, а затем как SVM помогает нам в достижении результата, который мы обсудим. Предположим, мы хотим отделить точки в форме круга от точек в форме квадрата.

В SVM мы пытаемся найти поверхность решения, которая является пунктирной линией на нашем изображении, путем нахождения максимальной разницы между точками данных, которые лежат ближе всего к поверхности принятия решения. Эти точки принятия решения называются опорными векторами и на нашем рисунке показаны двумя параллельными линиями. Теперь вопрос в том, почему мы увеличиваем расстояние до максимума? Причина в том, что, увеличивая расстояние до максимума, мы можем снизить вероятность неправильной классификации очков. Этому есть математическое доказательство, но мы не будем его здесь обсуждать. Чем больше маржа, тем меньше шансов на то, что баллы будут неправильно классифицированы.

Теперь предположим, что поверхность принятия решения - это ax + by + c = 0, и поскольку опорные векторы параллельны поверхности принятия решения и равноудалены от поверхности принятия решения, уравнение линии опорных векторов может быть представлено как ax + by + c = -1 и ax + на + c = 1. (Здесь вместо 1 это может быть любое постоянное значение, поскольку оно постоянное, это не имеет значения) Если нам нужно записать эти уравнения в терминах векторов, мы можем записать эти уравнения как W'X + c = 0, W'X + c = -1 и W'X + c = 1 соответственно, где W 'представляет собой транспонирование W. Как было сказано ранее, нам нужно найти максимальное расстояние между опорными векторами, и для этого мы сначала найдем расстояние, а затем мы будем использовать математику, чтобы увеличить расстояние. поэтому для определения расстояния мы уже знаем формулу, если уравнения для двух линий: ax + by + c1 = 0 и ax + by + c2 = 0

теперь, если мы рассчитаем расстояние по приведенной выше формуле в нашем случае. Нам дана линия W’X + c = -1, которую мы можем записать как W’X + c + 1 = 0, и W’X + c = 1, которую можно записать как W’X + c-1 = 0. Теперь расстояние между этими двумя будет | c-1-c-1 | / | W | что составляет 2 / | W | (Поскольку W - вектор | W | = sqrt (a² + b²)), и мы знаем, что поверхность принятия решения будет одинаково удалена от опорных векторов, поэтому расстояние между опорным вектором и поверхностью принятия решения будет 1 | W |. Пожалуйста, обратитесь к изображению ниже.

Таким образом, чтобы максимизировать маржу, нам нужно минимизировать || w ||. С условием
, что между опорными векторами нет точек данных:
{W '• xi + c ≥ +1, когда yi = + 1
W' • xi + c ≤ –1 когда yi = –1}

Два приведенных выше уравнения можно объединить в yi (xi • W) ≥ 1

Теперь это выглядит как задача оптимизации с ограничениями, в которой нам нужно минимизировать | W | при условии yi (xi • W) ≥ 1.

Чтобы продолжить обсуждение деталей решения для SVM, во-первых, очень важно понять, как практически в реальном мире выглядит проблема ограниченной оптимизации и как мы их решаем, чтобы то же самое мы могли применить к нашей SVM с ограничениями. проблема оптимизации. Я подробно объясню, как мы решим эту задачу ограниченной оптимизации в следующем блоге.