Привет, встретимся снова! На этот раз я дам руководство по проведению классификационного анализа с использованием алгоритма SVM с Python. Давайте начнем!

Фон

Доход интернет-магазина ABC резко снизился за 1 год. Владелец хочет проанализировать намерения онлайн-покупателей, купят ли они их товары или нет, посетив веб-страницу своего интернет-магазина.

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

Системный дизайн

В этом проекте будет использоваться один из алгоритмов машинного обучения, используемых для решения задач классификации, а именно SVM (Support Vector Machines). Вот шаги для выполнения анализа классификации покупательских намерений онлайн-покупателей с использованием метода SVM.

  1. Подготовка данных
  2. Описательный анализ
  3. Разделение функций и меток
  4. Разделение набора данных на обучающий набор и тестовый набор
  5. Выполнение SVM с использованием ядра
  6. Выполнение SVM путем перекрестной проверки K-Folds
  7. Выполнение SVM по параметрам
  8. Матрица путаницы
  9. Заключение

Описание набора данных

Для этого проекта я буду использовать набор данных Намерение совершить покупку онлайн-покупателя, взятый со страницы UCI.

Набор данных состоит из векторов признаков, принадлежащих 12 330 сеансам. Набор данных был сформирован таким образом, чтобы каждый сеанс принадлежал другому пользователю в течение 1 года, чтобы избежать какой-либо тенденции к конкретной кампании, особому дню, профилю пользователя или периоду. Набор данных состоит из 10 числовых и 8 категориальных атрибутов. Атрибут Revenue можно использовать в качестве ярлыка класса.

Более полное объяснение каждого атрибута можно увидеть на странице здесь.

Введение в машины опорных векторов

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

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

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

  1. Эффективен в больших объемных пространствах.
  2. По-прежнему эффективен в случаях, когда количество измерений больше, чем количество выборок.
  3. Использует подмножество точек обучения в функции принятия решений (называемых опорными векторами), поэтому также эффективно использует память.
  4. Универсальность: для функции принятия решений могут быть указаны различные функции ядра. Предоставляются общие ядра, но также можно указать пользовательские ядра.

Хитрости ядра

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

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

Библиотеки SVM Scikit-Learn

Scikit-Learn предоставляет полезные библиотеки для беспрепятственной реализации алгоритма машины опорных векторов в наборе данных.

Во-первых, существует классификатор LinearSVC(), который использует только линейное ядро. В классификаторе LinearSVC() мы не передаем значение ядра, поскольку оно используется только для целей линейной классификации.

Scikit-Learn предоставляет два других классификатора — SVC() и NuSVC(), которые используются для целей классификации. Эти классификаторы в основном схожи с некоторыми отличиями в параметрах. NuSVC() похож на SVC(), но использует параметр для управления количеством опорных векторов. Мы передаем значения ядра, гаммы и C вместе с другими параметрами. По умолчанию параметр ядра использует rbf в качестве значения, но мы можем передавать такие значения, как поли, линейная, сигмовидная или вызываемая функция.

Этапы анализа SVM с помощью Python

1. Подготовка данных

Подготовьте свой блокнот Python, затем импортируйте необходимые библиотеки. Здесь я использую Блокнот Google Colab, который представляет собой современную удобную среду кодирования, которую вы можете использовать бесплатно.

Затем следует импорт набора данных из файла CSV во фрейм данных.

Мы видим, что в наборе данных нет пропущенных значений и кажется, что есть переменные с булевыми и объектными типами данных. Поэтому мы преобразуем строковое значение в целое число с помощью Label Encoder в библиотеке scikit-learn.

Мы удалим ненужный атрибут, такой как столбец месяца, который имеет объект типа данных.

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

Мы видим, что в наборе данных нет пропущенных значений.

2. Описательный анализ

Теперь мы изучим данные с помощью описательного анализа, чтобы получить представление об используемом наборе данных.

Мы видим, что в нашем наборе данных 12 330 экземпляров и 18 атрибутов.

Как мы знаем ранее, атрибут «Доход» можно использовать в качестве метки класса. Итак, мы проверим распределение по метке класса.

Из 12 330 сеансов в наборе данных 84,5% (10 422) были образцами отрицательного класса, которые не заканчивались покупками, а остальные (1908) были образцами положительного класса, заканчивающимися покупками.

Затем мы можем использовать describe для получения статистической сводки по каждому атрибуту.

3. Разделение функций и ярлыков

Индексатор iloc для Python Pandas выбирает строки и столбцы из фреймов данных. Затем мы используем iloc для извлечения всех столбцов атрибутов, которые будут переменной X, без включения столбца «Доход», который является меткой класса (переменная Y).

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

4. Разделение набора данных на набор для обучения и набор для тестирования

Разделение набора данных на обучающий набор и тестовый набор для лучшего обобщения.

5. Выполнение SVM с помощью ядра

В этом анализе мы будем использовать 3 типа ядер: линейные, rbf и полиномиальные ядра.

Из приведенных выше результатов мы получили оценку точности для: линейного ядра = 89,21%, ядра rbf = 89,86% и полиномиального ядра = 89,09%. Мы видим, что использование ядра rbf дает наивысшую оценку точности. Полиномиальное ядро ​​работает плохо. Причиной этого может быть переоснащение набора обучающих данных.

6. Выполнение SVM путем перекрестной проверки K-Folds

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

Когда выполняется K-кратная перекрестная проверка, мы можем видеть разные оценки на каждой итерации. Это происходит потому, что когда мы используем метод train_test_split, набор данных случайным образом разбивается на наборы данных для тестирования и обучения. Таким образом, это зависит от того, как был разделен набор данных и какие образцы являются обучающим набором, а какие — тестовым набором.

С K-кратной перекрестной проверкой мы видим, что набор данных был разделен на 10 равных частей (K = 10), таким образом охватывая все данные как для обучения, так и для тестирования. По этой причине мы получили 10 различных показателей точности.

Из приведенных выше результатов, выполнив перекрестную проверку K-кратности с различными ядрами, мы получили показатель точности для: линейного ядра = 88,49%, ядра rbf = 88,99% и полиномиального ядра = 88,17%. Мы видим, что использование ядра rbf с K = 10 дает наивысшую оценку точности.

7. Выполнение SVM по параметрам

Использование параметра C в линейном ядре

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

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

Из приведенного выше графика видно, что точность была близка к 88,5% для C=0,69. Таким образом, C = 0,69 является лучшим параметром.

Использование параметра gamma в ядре rbf

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

На приведенном выше графике показатель неуклонно увеличивается с 0,01 до 0,1 и достигает своего пика при 0,10 с показателем точности, близким к 89%. Таким образом, гамма = 0,1 является лучшим параметром.

Использование параметра степени в полиномиальном ядре

На приведенном выше графике оценка достигает своего пика в 3-й степени с показателем точности, близким к 88,2%, а затем резко снижается. Таким образом, степень = 3 является лучшим параметром.

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

Давайте воспользуемся техникой поиска по сетке, чтобы найти лучший параметр!

Мы получили максимальную точность, используя ядро ​​rbf с gamma = 0,1 и K = 10. Точность оценки составляет 89,94%. Основываясь на приведенном выше анализе SVM, мы можем сделать вывод, что точность нашей модели классификации очень хорошая. Наша модель отлично справляется с прогнозированием меток классов.

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

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

8. Матрица путаницы

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

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

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

Истинно отрицательные результаты (TN). Истинно отрицательные результаты возникают, когда мы прогнозируем, что наблюдение не принадлежит к определенному классу, и наблюдение на самом деле не принадлежит к этому классу.

Ложные срабатывания (FP). Ложные срабатывания возникают, когда мы предсказываем, что наблюдение относится к определенному классу, но на самом деле наблюдение не принадлежит к этому классу. Этот тип ошибки называется ошибка типа I.

Ложноотрицательные результаты (FN). Ложноотрицательные результаты возникают, когда мы предсказываем, что наблюдение не принадлежит к определенному классу, но на самом деле оно принадлежит этому классу. Это очень серьезная ошибка, и она называется ошибкой типа II.

Отчет о классификации — это еще один способ оценить эффективность модели классификации. Он отображает точность, отзыв, f1 и оценки поддержки для модели.

Точность можно определить как процент правильно предсказанных положительных результатов от всех предсказанных положительных результатов.

Отзыв можно определить как процент правильно предсказанных положительных результатов от всех фактических положительных результатов.

f1-score – это средневзвешенное гармоническое значение точности и полноты. Наилучшее возможное значение f1-score равно 1,0, а наихудшее — 0,0.

Поддержка — это фактическое количество вхождений класса в нашем наборе данных.

Подводя итог вышеприведенным результатам, на основе результатов прогнозирования мы можем сделать вывод, что покупатели, которые не намерены покупать продукт, правильно прогнозируются не покупать продукт на веб-странице интернет-магазина ABC целых 2049 покупателей. Таким образом, значение отзыва класса равно 97% при точности оценки 89,94%.

Заключение

Результаты точности, полученные с помощью метода классификации машины опорных векторов (SVM), который дает наилучшую точность, - это метод SVM с использованием ядра rbf, который обеспечивает высокий уровень точности 89,94% с параметром гаммы 0,1. Кроме того, используя метод SVM, ядро ​​rbf дает довольно высокий уровень отзыва в 97%. Это указывает на то, что этот метод дает хорошие результаты при проведении классификационного анализа покупательских намерений онлайн-покупателя в интернет-магазине ABC.

Рекомендации

  1. Владелец магазина должен улучшить UI и UX веб-страницы интернет-магазина, чтобы сделать ее более привлекательной и удобной для всех покупателей.
  2. Сделайте классификацию модели с разными значениями параметров и попробуйте другие методы классификации, кроме SVM, чтобы найти модель с большей точностью.

Рекомендации