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

Содержание

  1. Геометрическая интуиция опорных векторов.
  2. Математическая формулировка машин опорных векторов.
  3. Минимизация потерь Интерпретация SVM.
  4. Двойная форма машин опорных векторов.
  5. Уловка ядра в машинах опорных векторов.
  6. Сложности обучения и выполнения SVM.
  7. Машины опорных векторов — регрессия (SVR)
  8. Лучшие и худшие случаи алгоритма опорных векторов.
  9. Поддержите векторные машины с обзорами продуктов питания Amazon.

Ключевая идея SVM

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

Следовательно, оптимальная граница решения должна максимизировать расстояние между границей решения и всеми экземплярами. т. е. максимизировать поля. Вот почему важен алгоритм SVM!

Найдите гиперплоскость, которая как можно шире отделяет положительные точки от отрицательных.

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

Здесь у нас есть три гиперплоскости (A, B и C). Теперь определите правильную гиперплоскость, чтобы классифицировать звезду и круг.

Нам нужно помнить эмпирическое правило, чтобы определить правильную гиперплоскость. «Выберите гиперплоскость, которая лучше разделяет два класса». В данном сценарии гиперсамолет «Б» отлично справился с этой задачей.

Здесь у нас есть три гиперплоскости (A, B и C), и все они хорошо разделяют классы. Теперь, как мы можем определить правильную гиперплоскость?

Здесь максимизация расстояний между ближайшей точкой данных (любого класса) и гиперплоскостью поможет нам выбрать правильную гиперплоскость. Это расстояние называется Поля.

Выше вы можете видеть, что запас для гиперплоскости C высок по сравнению с A и B. Следовательно, мы называем правую гиперплоскость как C. Другой причиной выбора гиперплоскости с более высоким запасом является надежность.

Если мы выберем гиперплоскость с низким запасом, то высока вероятность неправильной классификации.

Векторы поддержки

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

Альтернативная интуиция о SVM

В этом разделе мы будем использовать концепцию «Выпуклой оболочки», чтобы найти гиперплоскость, максимизирующую маржу.

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

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

Шаги по поиску гиперплоскости, максимизирующей запас, с использованием концепции выпуклой оболочки,

  • Нарисуйте выпуклую оболочку для положительных точек данных.
  • Нарисуйте выпуклую оболочку для отрицательных точек данных.
  • Затем найдите кратчайшую линию или гиперплоскость, соединяющую корпуса.
  • Наконец, нарисуйте линию или гиперплоскость, которая делит линию или гиперплоскость пополам. Полученная линия или гиперплоскость называется «гиперплоскостью, максимизирующей поля».

Математическая формулировка машин опорных векторов

Будем считать, что положительная и отрицательная гиперплоскости находятся на единичном расстоянии от разделяющей гиперплоскости.

Уравнение разделения гиперплоскости дано,

Уравнение для положительной гиперплоскости дается выражением

Уравнение для отрицательной гиперплоскости дается выражением

Маржа дается,

Тогда для SVM мы можем написать задачу оптимизации ограничений как

Это уравнение также называется Hard Margin SVM.

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

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

Из уравнения Hard Margin SVM мы не можем решить эту проблему, поэтому мы можем использовать другую реализацию.

Уравнение разделения гиперплоскости дано,

Уравнение для положительной гиперплоскости дается выражением

Уравнение для отрицательной гиперплоскости дается выражением

Маржа дается,

Тогда для SVM мы можем написать задачу оптимизации ограничений как

Это уравнение также называется SVM с мягкой маржой.

В приведенном выше уравнении первая часть уравнения перед знаком «положительно» называется «регуляризацией», а вторая часть называется «Потерями шарнира». сильный>.

C — гиперпараметр. Если C увеличивается, то наша модель переоснащается или имеет высокую дисперсию, а если C уменьшается, то наша модель не соответствует или имеет большое смещение.

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

Минимизация потерь Интерпретация SVM

В алгоритме SVM мы стремимся максимизировать разницу между точками данных и гиперплоскостью. Функция потерь, которая помогает максимизировать маржу, называется потерями на петлях.

Ось Y обозначается как «потери шарнира», а ось X записывается как

Нам нужно минимизировать указанную выше функцию потерь, чтобы найти классификатор максимальной маржи. , задача оптимизации функции потерь определяется выражением

Уравнение оптимизации, полученное в этом разделе, и уравнение оптимизации, полученное в предыдущем разделе, совпадают. Только C и лямбда обратно пропорциональны друг другу λ=1/C (C всегда используется для коэффициента регуляризации)

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

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

Двойная форма машин опорных векторов

Когда мы видим уравнение уравнения мягкой маржи, оно выглядит так, как показано ниже, и нас можно назвать первичной формой SVM.

Приведенное выше уравнение эквивалентно записывается как

Оба эквивалентны друг другу, поскольку приведенное выше уравнение α равно 0 для не опорных векторов, а α равно › 0 для опорных векторов.

Хитрость ядра в SVM

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

Это звучит хорошо. Однако, когда измерений становится все больше и больше, вычисления в этом пространстве становятся все более и более дорогими. Вот тут-то и появляется трюк с ядром. Он позволяет нам работать в исходном пространстве признаков, не вычисляя координаты данных в многомерном пространстве.

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

Ядро — это способ вычисления скалярного произведения двух векторов x и y в некотором (возможно, очень многомерном) пространстве признаков, поэтому функции ядра иногда называют «обобщенным скалярным произведением».

Для нелинейных данных вместо того, чтобы представлять исходные признаки каждой точки данных, давайте сначала рассмотрим преобразование в новое пространство признаков, где точка данных имеет N признаков, по одному для каждого опорного вектора.

Теперь подумайте, что если бы у нас были данные, как показано на изображении ниже? Ясно, что нет линии, которая могла бы разделить два класса в этой плоскости x-y. Так что же нам делать?

мы применяем преобразование и добавляем еще одно измерение, которое мы называем осью Z. Предположим, что значение точек на плоскости z w = x² + y². В этом случае мы можем манипулировать им как расстоянием точки от z-начала координат. Теперь, если мы построим по оси Z, будет видно четкое разделение, и можно будет провести линию.

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

Что делает кернелизация, так это то, что она берет данные размерности «d» и внутренне и неявно преобразует функцию, используя трюк с ядром, в размерность «d1», обычно где d1 > d. В «d1» данные становятся линейно разделимыми.

Если мы хотим узнать больше об уловке ядра, вы можете обратиться здесь.

Обратите внимание, что после применения преобразования функции ядра исходные характеристики точки данных теперь не имеют значения. Затем он представляется только с точки зрения его скалярных произведений с опорными векторами (которые в основном представляют собой специальные точки данных, выбранные алгоритмом оптимизации SVM).

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

Итак, если у нас есть функция «K», определенная следующим образом:

тогда нам просто нужно знать K, а не саму функцию сопоставления. Эта функция называется Функция ядра и упрощает поиск функции сопоставления. Таким образом, функция ядра определяет внутренние продукты в преобразованном пространстве.

Мы должны выбрать правильное ядро ​​на основе нашего приложения. Существуют различные типы ядер:

Теорема Мерсера

Помимо этих предопределенных ядер, какие условия определяют, какие функции можно считать ядрами? Это дается теоремой Мерсера.

Первое условие довольно тривиально, т.е. функция ядра должна быть симметричной. Поскольку функция ядра представляет собой точечный продукт (внутренний продукт) функции отображения, мы можем написать следующее:

Теорема Мерсера подводит нас к необходимому и достаточному условию того, чтобы функция была функцией ядра.

Сложности обучения и выполнения SVM

Сложность времени обучения SVM составляет примерно O (n²). Если n очень велико, то O(n²) также очень велико, поэтому SVM не используются в приложениях с малой задержкой.

Сложность выполнения приблизительно равна O(k.d), где

k = количество опорных векторов

d = Размерность данных

Машины опорных векторов — регрессия (SVR)

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

Предположим, нам даны обучающие данные {(x1, y1),…,(x, y)} ⊂ X × R, где X обозначает пространство входных шаблонов (например, X = Rd). Это могут быть, например, обменные курсы какой-либо валюты, измеренные в последующие дни, вместе с соответствующими эконометрическими показателями.

В регрессии ε-SV наша цель — найти функцию f(x), которая имеет отклонение не более ε от фактически полученных целей yi для всех обучающих данных, и в то же время является максимально плоской. Другими словами, нас не волнуют ошибки, пока они меньше ε, но мы не примем никаких отклонений, превышающих это значение. Это может быть важно, если вы хотите быть уверены, что не потеряете больше ε денег, например, при работе с обменными курсами.

По педагогическим соображениям мы начнем с описания случая линейных функций f, приняв форму

f (x) = w, x + b, где w ∈ X, b ∈ R

Однако основная идея всегда одна и та же: свести к минимуму ошибку, индивидуализировав гиперплоскость, которая максимизирует запас, помня о том, что часть ошибки допустима.

Однако иногда это может быть не так, или мы также можем захотеть допустить некоторые ошибки. Аналогично функции потерь «мягкой маржи».

Константа C > 0 определяет компромисс между неравномерностью «f» и величиной, до которой допускаются отклонения, превышающие ε.

Это соответствует так называемой ε-нечувствительной функции потерь |ξ |ε, описываемой выражением

Чтобы узнать больше о SVR, посетите здесь.

Если мы не знаем, какое ядро ​​использовать, мы всегда можем использовать ядро ​​RBF для решения проблемы.

Параметры настройки

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

Регуляризация. Параметр регуляризации в параметре Python Scikit-learn C, используемый для поддержания регуляризации. Здесь C — параметр штрафа, который представляет ошибочную классификацию или ошибку. Термин неправильной классификации или ошибки сообщает оптимизации SVM о том, насколько допустима ошибка. Вот как вы можете контролировать компромисс между границей решения и сроком ошибочной классификации. Меньшее значение C создает гиперплоскость с малым полем, а большее значение C создает гиперплоскость с большим полем.

Гамма: более низкое значение гаммы будет слабо соответствовать набору обучающих данных, тогда как более высокое значение гаммы будет точно соответствовать набору обучающих данных, что приводит к переобучению. Другими словами, вы можете сказать, что низкое значение гаммы учитывает только близлежащие точки при расчете линии разделения, а значение гаммы a учитывает все точки данных при расчете линии разделения.

Влияние σ на значения ядра RBF

Когда задан σ = 1, небольшой диапазон точек будет считаться похожим.

Когда σ = 10 задано сравнительно больше, никакие точки не могут быть похожи друг на друга. Когда σ очень-очень мало, только несколько точек поблизости будут считаться похожими.

Давайте посмотрим на приведенный ниже график: Сигма, как обычно определяется в распределении Гаусса, является стандартным отклонением. Он определяет ширину распределения Гаусса.

Когда мы используем ядро ​​RBF в двойной форме SVM Soft-Max, мы получаем разные границы решений с разными значениями сигмы и C. И сигма, и C являются гиперпараметрами.

Мультиклассовая классификация. Обычно для мультиклассовой классификации мы можем использовать один или один метод Rest.

Поверхность решения: поверхность решения — это линейная (или) гиперплоскость.

Матрица подобия: легко получить ядро ​​из функции сходства с K(Xi, Xj).

Выбросы: влияние меньше благодаря использованию опорных векторов.

Большая размерность: это очень удобно для большой размерности d, но мы хотим выбрать правильное ядро.

Лучшие и худшие случаи алгоритма опорных векторов

  1. Классификаторы SVM обеспечивают хорошую точность и выполняют более быстрое прогнозирование по сравнению с алгоритмом Naïve Bayes.
  2. Они также используют меньше памяти, поскольку используют подмножество точек обучения на этапе принятия решения.
  3. SVM хорошо работает с четким полем разделения и с большим размерным пространством.
  4. SVM не подходит для больших наборов данных из-за большого времени обучения, а также требует больше времени для обучения по сравнению с наивным байесовским алгоритмом.
  5. Он плохо работает с перекрывающимися классами, а также чувствителен к типу используемого ядра.

Поддержите векторные машины с обзорами продуктов питания Amazon

Давайте применим алгоритм логистической регрессии к реальному набору данных Amazon Fine Food Review Analysis от Kaggle.

Сначала мы хотим узнать, что такое анализ Amazon Fine Food Review?

Этот набор данных состоит из обзоров изысканных продуктов от Amazon. Данные охватывают период более 10 лет, включая все около 500 000 обзоров до октября 2012 года. Обзоры включают информацию о продуктах и ​​пользователях, рейтинги и текстовые обзоры. У нас также есть обзоры из всех других категорий Amazon.

Обзоры Amazon часто являются наиболее общедоступными обзорами потребительских товаров. Как частый пользователь Amazon, мне было интересно изучить структуру большой базы данных отзывов Amazon и визуализировать эту информацию, чтобы быть более разумным потребителем и рецензентом.

Источник: https://www.kaggle.com/snap/amazon-fine-food-reviews

Набор данных Amazon Fine Food Reviews состоит из обзоров изысканных продуктов от Amazon.

Количество отзывов: 568 454
Количество пользователей: 256 059
Количество товаров: 74 258
Период времени: октябрь 1999 г. — октябрь 2012 г.
Количество атрибутов/столбцов в данных: 10

Информация об атрибутах:

  1. Id
  2. ProductId — уникальный идентификатор товара.
  3. UserId — уникальный идентификатор пользователя
  4. Имя профиля
  5. HelpfulnessNumerator — количество пользователей, которым отзыв был полезен.
  6. HelpfulnessDenominator — количество пользователей, которые указали, считают ли отзыв полезным или нет.
  7. Score — оценка от 1 до 5
  8. Time — временная метка обзора.
  9. Резюме — Краткое изложение обзора
  10. Текст — Текст обзора

Цель

Учитывая отзыв, определите, является ли он положительным (рейтинг 4 или 5) или отрицательным (рейтинг 1 или 2).

Предварительная обработка данных

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

Чтобы узнать полный обзор набора данных обзора продуктов питания Amazon и характеристик, посетите мою предыдущую ссылку в блоге здесь.

Сплит Train-Test

Процедура разделения обучения и тестирования используется для оценки производительности алгоритмов машинного обучения, когда они используются для прогнозирования данных, не используемых для обучения модели.

Если у вас есть один набор данных, вам нужно сначала разделить его с помощью функции Sklearn train_test_split.

Обозначение текста с помощью Bag of Words

Настройка гиперпараметров

мы хотим выбрать лучшую альфу для лучшей производительности модели, чтобы выбрать лучшую альфу с помощью перекрестной проверки Grid Search.

мы уже определили функцию Grid_search, когда мы ее вызываем, она даст результат.

После того, как мы найдем лучшую альфу с помощью CV поиска в сетке, мы хотим проверить производительность с помощью тестовых данных, в этом случае мы используем AUC в качестве показателя производительности.

мы уже определили функцию для проверки тестовых данных, когда мы ее вызовем, она даст результат.

Показатели эффективности

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

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

мы уже определили функцию для показателей производительности, когда мы ее вызываем, она даст результат.

Важность функции на BOW

10 важных функций

Точно так же мы построили модель машин опорных векторов с функциями TFIDF, AvgWord2Vec, TFIDF_AvgWord2Vec, а также с ядром. Чтобы понять полный код, перейдите по моей ссылке GitHub.

Выводы

Для записи сотрясений в таблицу мы использовали библиотеку Python PrettyTable.

The pretty table — это простая библиотека Python, предназначенная для быстрого и простого представления табличных данных в визуально привлекательных таблицах.

Наблюдения

  1. По сравнению с представлением функций Bag of words, функции TFIDF с регуляризацией L2 получают наивысшую оценку AUC 93,29% на тестовых данных.

2. Значения C и Gamma отличаются от модели к модели.

Чтобы узнать полный обзор набора данных обзора продуктов питания Amazon и характеристик, посетите мою предыдущую ссылку в блоге здесь.

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

Чтобы понять полный код, перейдите по моей ссылке GitHub.

использованная литература

  • Прикладной ИИ
  • Википедия
  • Курсера
  • Лагерь данных

Спасибо за чтение и ваше терпение. Надеюсь, вам понравился пост, дайте мне знать, если в моем посте есть ошибки. Давайте обсудим в комментариях, если вы нашли что-то не так в посте или у вас есть что добавить…

Счастливого обучения!!