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

В этой статье рассматриваются несколько идей, лежащих в основе методов классификации, таких как модели опорных векторов машин, KNN, древовидные модели (CART, Random Forest) и двоичная классификация с помощью сигмоидной или логистической регрессии. Цель этой статьи - познакомить вас с наиболее важными идеями, лежащими в основе каждой темы, и поддержать ваше общее понимание.

Обучение с учителем, без учителя или с подкреплением?

Перерыв в терминологии: есть много источников, где можно найти хорошие примеры и объяснения, позволяющие различать методы обучения, я лишь резюмирую некоторые из них. Этот пост посвящен контролируемым алгоритмам, следовательно, алгоритмам, для которых нам известен определенный набор возможных выходных параметров, например Класс A, класс B, класс C. Другими словами, этот тип обучения сопоставляет входные значения с ожидаемым выходом. В этом контексте вы часто будете слышать «данные с пометкой».

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

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

Основные соображения

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

Разделение данных, обучение, проверка и, в конечном итоге, точность измерения имеют жизненно важное значение для создания и измерения эффективности вашего алгоритма / модели. Если для вас это звучит загадочно, эти аспекты уже достаточно подробно обсуждаются в следующих статьях - в противном случае просто пропустите их.





Еще один важный аспект, который необходимо понять, - это компромисс между смещением и дисперсией (который иногда называют «дилеммой» - вот что это на самом деле). Вот отличная статья об этой проблеме:



Общая классификация

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

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

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

Поддержка векторных машин

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

Задача жесткой классификации

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

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

Задача мягкой классификации

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

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

Что касается обоих подходов к SVM, вы должны помнить:

  1. Ядра не обязательно должны быть линейными! Существует много-много нелинейных ядер, которые вы можете использовать для подбора данных, которые не могут быть должным образом разделены прямой линией.
  2. Модели SVM предоставляют коэффициенты (например, регрессию) и, следовательно, позволяют анализировать важность факторов.
  3. SVM можно использовать для мультиклассовой классификации. Как упоминалось ранее, этот подход можно свести к нескольким двоичным классификациям, которые затем объединяются.
  4. Классификация Hard SVM также может быть расширена для добавления или уменьшения значения перехвата. В зависимости от цены неправильной классификации мы можем установить для классификатора слегка скорректированное значение (которое параллельно тому, которое мы изначально рассчитали).
  5. Soft SVM позволяет дополнительно добавлять вес ошибки к точкам данных, например точки данных для записей 1–10 менее важны, чем записи 80–90. По этой причине ошибка для точек может быть взвешена по-разному.

K-ближайшие соседи

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

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

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

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

KNN чаще всего использует евклидово расстояние для поиска ближайших соседей каждой точки, однако практически каждое значение p (мощность) может использоваться для расчета (в зависимости от вашего варианта использования). Возможно, вы слышали о манхэттенском расстоянии, где p = 1, тогда как евклидово расстояние определяется как p = 2.

Однако остается один вопрос: сколько значений (соседей) следует учитывать, чтобы определить правильный класс? Рекомендуется протестировать несколько и посмотреть, как они работают с точки зрения общей точности их модели.

Если вы хотите взглянуть на код KNN в Python, R или Julia, просто перейдите по ссылке ниже. Включенный GitHub Gists может быть запущен напрямую в IDE по вашему выбору:



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

Чего нельзя пропустить:

  1. Также существует идея регрессии KNN. В этом случае вы увидите не классы / метки, а непрерывные значения. Вместо присвоения метки k ближайших соседей вы можете взять среднее (среднее значение, µ), средневзвешенные значения и т. Д. Связанных точек данных.
  2. KNN не K-средство, центров кластеров нет, но мы используем расстояния между связанными точками. Если это вас сбивает с толку, не беда, вернитесь к теме обучения с учителем и без учителя.
  3. Если вам нужна модель, которая сообщает вам, какие входные значения более актуальны, чем другие, KNN может не подойти. Однако KNN - это простой и довольно быстрый способ найти ответы на вопрос, в каком классе должна находиться точка данных.

Древовидные подходы

Древовидные модели (модели дерева классификации и регрессии - CART) часто исключительно хорошо работают при решении задач регрессии или классификации. Основная идея древовидных подходов состоит в том, что данные разбиваются на более мелкие ненужные файлы в соответствии с одним или несколькими критериями. На жаргоне деревьев есть ветви, которые соединяются с листьями. Общая цель состоит в том, чтобы создавать ветви и листья, пока мы наблюдаем «достаточное снижение дисперсии» в наших данных. Если это не так, мы прекращаем ветвление.

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

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

Если это стремление к все меньшему и меньшему размеру мусора кажется вам опасным, ваше право - наличие крошечного мусора приведет к проблеме переобучения. По этой причине на каждом листе должно быть хотя бы определенное количество точек данных, как правило, выбирают 5–10%.

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

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

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

Одно дерево, несколько деревьев, один случайный лес

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

Вы всегда можете построить дерево результатов и сравнить результаты с другими моделями, используя вариации параметров модели, чтобы найти быструю, но точную модель:

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

Регрессия для классификации?

Мне всегда было интересно, могу ли я просто использовать регрессию, чтобы получить значение от 0 до 1, и просто округлить (используя указанный порог), чтобы получить значение класса. Что ж, эта идея сначала казалась разумной, но, как я понял, простая линейная регрессия не работает. Причина этого в том, что значения, которые мы получаем, не обязательно лежат между 0 и 1, поэтому как нам поступить с -42 в качестве значения ответа?

Как вы можете видеть на приведенном выше рисунке, произвольно выбранное значение x = {- 1, 2} будет помещено в строку где-то в красной зоне и, следовательно, не позволит нам получить значение ответа. это либо (по крайней мере) между, либо в лучшем случае точно 0 или 1. Здесь очень удобна сигмовидная функция. Эта функция широко известна как бинарная или логистическая регрессия и предоставляет вероятности в диапазоне от 0 до 1.

Огромное преимущество состоит в том, что даже бесконечно малое число отображается «близко к» нулю и не будет где-то за пределами наших границ. На иллюстрации ниже вы можете найти сигмовидную функцию, которая показывает отображение только для значений -8 ≤ x ≤ 8.

Показав огромное преимущество логистической регрессии, вы должны помнить об одном: поскольку эта модель не дает вам двоичного ответа, вам необходимо добавить еще один шаг ко всему процессу моделирования. . Это означает, что необходимо указать порог («пороговое значение») для округления вероятностей до 0 или 1 - подумайте о 0,519, действительно ли это значение, которое вы хотели бы присвоить 1?

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

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

Следует иметь в виду одну ОГРОМНУЮ оговорку: всегда указывайте положительное значение (положительное = 1), иначе вы можете увидеть запутанные результаты - это может быть еще один фактор, влияющий на имя. матрицы;)

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

Если вы думаете о весах, назначаемых нейронам в нейронной сети, значения могут быть далеки от 0 и 1, однако в конечном итоге это именно то, что мы в конечном итоге хотели увидеть: «активен ли нейрон или нет» - отличная задача классификации, не так ли? Именно здесь сигмовидная функция является (или фактически использовалась; указатель на выпрямленную линейную единицу) блестящим методом масштабирования всех значений нейронов в диапазоне от 0 до 1.

Что вам нужно знать о логистической регрессии:

  1. Он предоставляет вам вероятности в диапазоне от 0 до 1, без меток классов.
  2. Вероятности должны быть «отсечены», следовательно, требуется еще один шаг для проведения. Обязательно поэкспериментируйте с порогами отсечения и назначьте правильную стоимость ошибкам классификации, иначе вы можете получить очень неправильную модель.
  3. Работать напрямую с коэффициентами модели достаточно сложно (они отображаются как лог (шансы)!). Вам необходимо перевести лог (шансы) в вероятности. Это может показаться знакомым: p = log (шансы) / [1 + log (шансы)]
  4. Чтобы определить наиболее подходящее значение отсечки, кривая ROC, вероятно, является самым быстрым способом сделать это. Кривая ROC (кривая рабочих характеристик приемника) - это график, показывающий эффективность модели классификации при всех порогах классификации. [Источник] AUC (область под кривая) обеспечивает агрегированный показатель эффективности модели с учетом базового порога. AUC 0,5 в значительной степени является предположением, тогда как 1 означает, что прогнозы верны на 100%. Обратите внимание, что ROC не заменяет матрицу неточностей с присвоенными весами.
  5. Рад, что вы спрашиваете: Да, логистическая регрессия также может использоваться в модели CART! Таким образом, все вышеупомянутые концепции деревьев применимы и к логистической тележке!

Классификация сетей глубокого обучения

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



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

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

{ Увидимся в следующий раз }