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

Этот набор данных может быть просто похож на

1. Прогнозирование цены акций - будет ли она расти или падать?

2. Прогнозирование победителя футбольного матча - Кто выиграет - соперник А или соперник Б.

3. 1 и 2 являются примерами двоичной классификации, поскольку они имеют только два возможных результата. У нас также может быть Мультиклассовая классификация. Классификация по нескольким классам включает отнесение объекта к одному из нескольких классов. Пример. Учитывая академические данные учащихся, какие оценки они получат - A, B, C, D или F?

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

  1. Логистическая регрессия
  2. Классификация KNN
  3. Дерево решений

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

О наборе данных

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

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

Метка, связанная с каждой записью, содержит букву «R», если объект представляет собой «Камень», или «M», если это мина.

Изучение набора данных

Обратите внимание, что метка представлена ​​в виде букв. Но мы знаем, что машина понимает только числа, поэтому позвольте нам преобразовать метку в числовую форму. Мы создадим фиктивную переменную, используя метод .get_dummies ().'Is_M ', который будет представлять наши значения меток.

«Is_M» = 1 означает, что сигнал сонара отражен от металла.

‘Is_M’ = 0 представляет сигнал, отраженный от камня.

Создание этикетки

Логистическая регрессия (модель прогнозирующего обучения):

Логистическая регрессия - это метод статистического анализа, который пытается предсказать значение данных на основе предыдущего наблюдения. Результат измеряется дихотомической переменной (в которой есть только два возможных результата). Цель логистической регрессии - найти наиболее подходящую модель для описания взаимосвязи между интересующей дихотомической характеристикой (зависимая переменная = ответная или конечная переменная) и набором независимых (предикторных или объясняющих) переменных.

К счастью, в SciKit Learn есть пакет, который помогает нам выполнять эту задачу. Давайте импортируем и выполним метод подгонки, а затем сравним прогнозную модель с фактическими значениями.

Насколько точным оказался наш прогноз?

82%

K Ближайший сосед (KNN)

Алгоритм k-ближайших соседей - это алгоритм классификации, и он контролируется: он берет набор помеченных точек и использует их, чтобы научиться маркировать другие точки. Чтобы пометить новую точку, он смотрит на помеченные точки, наиболее близкие к этой новой точке (это ее ближайшие соседи), и заставляет этих соседей голосовать, поэтому какая бы метка ни была у большинства соседей, это метка для новой точки (« k ”- количество проверяемых соседей).

Как и в случае с логистической регрессией, в SciKit Learn есть внутренний пакет, который выполняет работу по идентификации ближайшего соседа. «Метрики» - это пакет, который поможет нам напрямую рассчитать точность, что позволит сэкономить наши ручные усилия.

Мы вычислим KNN для значений 1,4 и 5.

K = 1 означает, что тестовое значение будет сравниваться с самым ближайшим соседом.

K = 4 означает, что тестовое значение будет сравниваться с четырьмя ближайшими соседями.

K = 5 означает, что тестовое значение будет сравниваться с пятью ближайшими соседями.

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

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

Деревья решений

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

Теперь Decision Tress рассчитывается двумя способами.

  1. Индекс Джини - коэффициент Джини измеряет неравенство между ценностями в распределенных группах. Принимает значения от 0 до 1. Нулевой коэффициент Джини выражает полное равенство, когда все значения одинаковы. Коэффициент Джини, равный единице, выражает максимальное неравенство между значениями.
  2. Энтропия - это мера беспорядка в данном распределении. Этот коэффициент также принимает значения от 0 до 1.

В этом блоге мы будем использовать только индекс Джини.

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

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

Этот процесс оценки известен как разделение теста / тренировки.

Логистическая регрессия с разделением тестов / поездов

В этом методе мы разделим весь наш набор данных на две части: обучение и тестирование. Мы обучим нашу модель на обучающем наборе данных с помощью метода .fit () и будем делать прогнозы на тестовом наборе с помощью .predict ().

Мы разделим наш набор данных в соотношении 75:25, который будет использоваться для обучения. Мы выполним эту задачу с помощью функции test_train_split из Scikit Learn.

KNN с разделением "тест / поезд"

Проделаем ту же задачу с KNN.

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

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

Теперь мы повторим тот же эксперимент с моделью дерева решений и оценим точность нашей классификации.

Логистическая регрессия с перекрестной проверкой

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

Заключительный вывод

Сравнивая три модели классификации, мы наконец пришли к выводу, что логистическая регрессия с точностью 67% обходит метод KNN и дерево решений, которые имели наивысшую точность для K = 17 с 64,4%.

Мы сравнили три сценария

  1. Модель обучения с полным набором данных
  2. Использование Test / Train Split
  3. Перекрестная проверка

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

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

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

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

Э. Дальнейшая импровизация может потребовать более сложных вычислений и большего вычислительного времени.