Контролируемое машинное обучение — введение в машины опорных векторов

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

Методы опорных векторов: основы

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

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

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

Источник исходного изображения: Рохит Ганди, Medium

Преимущества метода опорных векторов

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

Прогнозное моделирование с помощью SVM

1. Определение проблемы и обзор инструментов

Я снова воспользуюсь задачей «Титаник» (как и в своей предыдущей статье здесь), чтобы пройти этапы прогнозного моделирования. Напомню: есть два набора данных, которые включают реальную информацию о пассажирах Титаника, такую ​​как имя, возраст, пол, социальный класс, стоимость проезда и т. д. Один набор данных, «Обучение», содержит двоичные данные (да или нет) для 891 пассажира. Еще один — «Тестирование», для которого мы должны предсказать, какие пассажиры выживут. Мы можем использовать обучающий набор для обучения нашей модели SVM с заданными шаблонами данных, а затем использовать наш тестовый набор для оценки его производительности. SVM не возвращает вероятность, а напрямую дает нам двоичное значение «выжил» или «не выжил» (1 или 0).

Я использую Python Pandas, статистический график Seaborn и пакет машинного обучения Scikit-Learn для анализа и моделирования.

2. Исследовательский анализ данных

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

Для начала ниже приведена диаграмма, которая иллюстрирует коэффициент выживаемости для набора обучающих данных:

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

На этом графике ниже мы разбиваем классы социальных на основе доли выживших:

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

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

3. Разработка функций

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

У нас нет высоких корреляций, которые могли бы повлиять на нашу модель прогнозирования. Помимо возраста, нам также может понадобиться изучить значения parents/children (parch) и fare.

Вот что мы можем сделать с отсутствующими значениями данных age:

Или отсутствующие значения fare:

4. Прогнозирование и оценка модели

Как и в прошлый раз, мы используем функцию тестового разделения и запустим прогноз для 20% нашей выборки:

И, запустив наш прогноз с помощью SVM:

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

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

Чтобы узнать больше об анализе данных и машинном обучении, подпишитесь на мою рассылку — Журнал анализа данных.