виды классификации машинное обучение
Классификация
Материал из MachineLearning.
Классификация — один из разделов машинного обучения, посвященный решению следующей задачи. Имеется множество объектов (ситуаций), разделённых некоторым образом на классы. Задано конечное множество объектов, для которых известно, к каким классам они относятся. Это множество называется обучающей выборкой. Классовая принадлежность остальных объектов не известна. Требуется построить алгоритм, способный классифицировать произвольный объект из исходного множества.
Классифицировать объект — значит, указать номер (или наименование класса), к которому относится данный объект.
Классификация объекта — номер или наименование класса, выдаваемый алгоритмом классификации в результате его применения к данному конкретному объекту.
В математической статистике задачи классификации называются также задачами дискриминантного анализа.
В машинном обучении задача классификации относится к разделу обучения с учителем. Существует также обучение без учителя, когда разделение объектов обучающей выборки на классы не задаётся, и требуется классифицировать объекты только на основе их сходства друг с другом. В этом случае принято говорить о задачах кластеризации или таксономии, и классы называть, соответственно, кластерами или таксонами.
Содержание
Типология задач классификации
Типы входных данных
Классификацию сигналов и изображений называют также распознаванием образов.
Типы классов
Классификация: формальная постановка
Вероятностная постановка задачи
Признаковое пространство
В зависимости от множества признаки делятся на следующие типы:
Часто встречаются прикладные задачи с разнотипными признаками, для их решения подходят далеко не все методы.
Примеры прикладных задач
Задачи медицинской диагностики
В роли объектов выступают пациенты. Признаки характеризуют результаты обследований, симптомы заболевания и применявшиеся методы лечения. Примеры бинарных признаков: пол, наличие головной боли, слабости. Порядковый признак — тяжесть состояния (удовлетворительное, средней тяжести, тяжёлое, крайне тяжёлое). Количественные признаки — возраст, пульс, артериальное давление, содержание гемоглобина в крови, доза препарата. Признаковое описание пациента является, по сути дела, формализованной историей болезни. Накопив достаточное количество прецедентов в электронном виде, можно решать различные задачи:
Ценность такого рода систем в том, что они способны мгновенно анализировать и обобщать огромное количество прецедентов — возможность, недоступная специалисту-врачу.
Предсказание месторождений полезных ископаемых
Признаками являются данные геологической разведки. Наличие или отсутствие тех или иных пород на территории района кодируется бинарными признаками. Физико-химические свойства этих пород могут описываться как количественными, так и качественными признаками. Обучающая выборка составляется из прецедентов двух классов: районов известных месторождений и похожих районов, в которых интересующее ископаемое обнаружено не было. При поиске редких полезных ископаемых количество объектов может оказаться намного меньше, чем количество признаков. В этой ситуации плохо работают классические статистические методы. Задача решается путём поиска закономерностей в имеющемся массиве данных. В процессе решения выделяются короткие наборы признаков, обладающие наибольшей информативностью — способностью наилучшим образом разделять классы. По аналогии с медицинской задачей, можно сказать, что отыскиваются «синдромы» месторождений. Это важный побочный результат исследования, представляющий значительный интерес для геофизиков и геологов.
Оценивание кредитоспособности заёмщиков
Эта задача решается банками при выдаче кредитов. Потребность в автоматизации процедуры выдачи кредитов впервые возникла в период бума кредитных карт 60-70-х годов в США и других развитых странах. Объектами в данном случае являются физические или юридические лица, претендующие на получение кредита. В случае физических лиц признаковое описание состоит из анкеты, которую заполняет сам заёмщик, и, возможно, дополнительной информации, которую банк собирает о нём из собственных источников. Примеры бинарных признаков: пол, наличие телефона. Номинальные признаки — место проживания, профессия, работодатель. Порядковые признаки — образование, занимаемая должность. Количественные признаки — сумма кредита, возраст, стаж работы, доход семьи, размер задолженностей в других банках. Обучающая выборка составляется из заёмщиков с известной кредитной историей. В простейшем случае принятие решений сводится к классификации заёмщиков на два класса: «хороших» и «плохих». Кредиты выдаются только заёмщикам первого класса. В более сложном случае оценивается суммарное число баллов (score) заёмщика, набранных по совокупности информативных признаков. Чем выше оценка, тем более надёжным считается заёмщик. Отсюда и название — кредитный скоринг. На стадии обучения производится синтез и отбор информативных признаков и определяется, сколько баллов назначать за каждый признак, чтобы риск принимаемых решений был минимален. Следующая задача — решить, на каких условиях выдавать кредит: определить процентную ставку, срок погашения, и прочие параметры кредитного договора. Эта задача также может быть решения методами обучения по прецедентам.
Классификаторы машинного обучения
Дата публикации Jun 11, 2018
Что такое классификация?
Например, обнаружение спама в поставщиках услуг электронной почты может быть идентифицировано как проблема классификации. Это двоичная классификация, поскольку существует только 2 класса как спам, а не как спам. Классификатор использует некоторые обучающие данные, чтобы понять, как заданные входные переменные относятся к классу. В этом случае известные спам и не спам электронные письма должны быть использованы в качестве обучающих данных. Когда классификатор обучен точно, его можно использовать для обнаружения неизвестного электронного письма.
Классификация относится к категории контролируемого обучения, где цели также обеспечиваются входными данными. Существует множество приложений для классификации во многих областях, таких как утверждение кредита, медицинская диагностика, целевой маркетинг и т. Д.
В классификации есть два типа учеников: ленивые и активные ученики.
Ленивые ученики просто сохраняют данные обучения и ждут, пока не появятся данные тестирования. Когда это происходит, классификация проводится на основе наиболее связанных данных в сохраненных данных обучения. По сравнению с нетерпеливыми учениками, у ленивых учеников меньше учебного времени, но больше времени на прогнозирование.
Ex. k-ближайший сосед, индивидуальные рассуждения
2. Стремление учеников
Ученики стремятся построить классификационную модель на основе заданных данных обучения, прежде чем получать данные для классификации. Он должен быть в состоянии принять одну гипотезу, которая охватывает все пространство экземпляра. Из-за конструкции модели нетерпеливые ученики тратят много времени на обучение и меньше времени на прогнозирование.
Ex. Дерево решений, Наивный Байес, Искусственные Нейронные Сети
Алгоритмы классификации
В настоящее время доступно множество алгоритмов классификации, но невозможно сделать вывод, какой из них превосходит другой. Это зависит от применения и характера доступного набора данных. Например, если классы являются линейно разделимыми, линейные классификаторы, такие как логистическая регрессия, линейный дискриминант Фишера, могут превзойти сложные модели и наоборот.
Древо решений
Дерево решений строит модели классификации или регрессии в форме древовидной структуры. Он использует набор правил if-then, который является взаимоисключающим и исчерпывающим для классификации. Правила выучены последовательно, используя данные обучения по одному. Каждый раз, когда правило выучено, кортежи, на которые распространяются правила, удаляются. Этот процесс продолжается на тренировочном наборе до достижения условия завершения.
Дерево построено рекурсивным способом «разделяй и властвуй» сверху вниз. Все атрибуты должны быть категоричными. В противном случае они должны быть заранее дискретизированы. Атрибуты в верхней части дерева оказывают большее влияние на классификацию и идентифицируются с использованием концепции получения информации.
Дерево решений может быть легко переопределено, создавая слишком много ветвей, и может отражать аномалии из-за шума или выбросов. Перегруженная модель имеет очень плохую производительность на невидимых данных, хотя она дает впечатляющие результаты на тренировочных данных. Этого можно избежать путем предварительной обрезки, которая останавливает строительство дерева на ранней стадии, или последующей обрезки, которая удаляет ветви из полностью выращенного дерева.
Наивный байесовский
Классификация проводится путем получения максимального апостериорного значения, которое является максимальным P (Ci |Икс) с приведенным выше предположением, применимым к теореме Байеса. Это предположение значительно снижает вычислительные затраты, считая только распределение классов. Несмотря на то, что предположение в большинстве случаев недопустимо, так как атрибуты являются зависимыми, удивительно, что наивный байесовский эффект способен показать впечатляющие результаты
Наивный байесовский алгоритм очень прост в реализации, и в большинстве случаев хорошие результаты получены. Он может быть легко масштабируем для больших наборов данных, поскольку требует линейного времени, а не дорогой итеративной аппроксимации, используемой для многих других типов классификаторов.
Наивный Байес может страдать от проблемы, называемой проблемой нулевой вероятности. Когда условная вероятность равна нулю для определенного атрибута, он не может дать достоверный прогноз. Это должно быть исправлено явно с помощью оценки Лапласа.
Искусственные нейронные сети
Искусственная нейронная сеть представляет собой набор связанных входных / выходных блоков, где каждое соединение имеет вес, связанный с ним, и был начат психологами и нейробиологами для разработки и тестирования вычислительных аналогов нейронов. На этапе обучения сеть обучается путем корректировки весов чтобы можно было предсказать правильную метку класса входных кортежей.
В настоящее время доступно множество сетевых архитектур, таких как прямая связь, сверточная, рекуррентная и т. Д. Соответствующая архитектура зависит от применения модели. В большинстве случаев модели прямой связи дают достаточно точные результаты, и, особенно для приложений обработки изображений, сверточные сети работают лучше.
В модели может быть несколько скрытых слоев в зависимости от сложности функции, которая будет отображаться моделью. Наличие большего количества скрытых слоев позволит моделировать сложные отношения, такие как глубокие нейронные сети.
Однако, когда есть много скрытых слоев, тренировка и настройка весов занимает много времени. Другим недостатком является плохая интерпретируемость модели по сравнению с другими моделями, такими как деревья решений, из-за неизвестного символического значения за изученными весами.
Но искусственные нейронные сети показали впечатляющие результаты в большинстве реальных приложений. Высокая устойчивость к шумным данным и возможность классификации неподготовленных моделей. Обычно искусственные нейронные сети работают лучше с непрерывными входными и выходными данными.
Все вышеперечисленные алгоритмы являются интересными учениками, поскольку они заранее обучают модель, чтобы обобщить данные обучения и использовать ее для прогнозирования позже.
КБлижайший сосед (KNN)
В алгоритме взвешенных по расстоянию ближайших соседей он взвешивает вклад каждого из k соседей в соответствии с их расстоянием, используя следующий запрос, дающий больший вес ближайшим соседям.
Обычно KNN устойчив к шумным данным, так как он усредняет k-ближайших соседей.
Оценка классификатора
После обучения модели наиболее важной частью является оценка классификатора для проверки его применимости.
Метод удержания
Существует несколько методов, и наиболее распространенным является метод удержания. В этом методе данный набор данных делится на 2 раздела в качестве теста и обучения 20% и 80% соответственно. Набор поездов будет использоваться для обучения модели, а данные невидимого теста будут использоваться для проверки ее прогностической силы.
Перекрестная проверка
Перенастройка является распространенной проблемой в машинном обучении, которая может возникнуть в большинстве моделей. К-кратная перекрестная проверка может быть проведена, чтобы убедиться, что модель не перегружена. В этом методе набор данных случайным образом разбивается наКвзаимоисключающийподмножества, каждый примерно одинакового размера, и один сохраняется для тестирования, в то время как другие используются для обучения. Этот процесс повторяется на протяжении всего k сгибов.
Точность и отзыв
Кривая ROC (рабочие характеристики приемника)
Кривая ROC используется для визуального сравнения классификационных моделей, которые показывают компромисс между истинно положительным показателем и ложно положительным показателем. Площадь под кривой ROC является мерой точности модели. Когда модель ближе к диагонали, она менее точна, и модель с идеальной точностью будет иметь площадь 1,0
5 типов алгоритмов машинного обучения, которые нужно знать
Dec 29, 2020 · 5 min read
Машинное обучение — один из самых известных и важных подразделов науки о данных. В 1959 году исследователь компании IBM Артур Самюэл впервые ввёл термин машинное обучение. После этого сфера МО вызвала большой интерес у других учёных, в особенности из-за того, что она применялась в классификациях.
Как правило, первый подраздел, с которого начинается изучение науки о данных, — это машинное обучение. Этот термин описывает набор компьютерных алгоритмов, которые способны обучаться и улучшаться, собирая информацию в процессе работы.
Для создания алгоритма м а шинного обучения нужен набор данных. Изначально в него помещают тренировочные данные, которые предоставляют примеры решения определённых проблем. Как только алгоритм пройдёт этот этап обучения, он сможет применить полученные знания, чтобы решать схожие проблемы, основываясь на разных наборах данных.
Обычно алгоритмы машинного обучения разделяют на 4 категории.
1. Контролируемое обучение. Обучение алгоритмов контролируется разработчиком в процессе работы. Для этого он маркирует данные и устанавливает правила и границы, которым должен следовать алгоритм.
2. Обучение без учителя. Обучение алгоритмов не предполагает участие разработчика. В этом случае желаемые результаты неизвестны и определяются самим алгоритмом.
3. Полу-контролируемое обучение. Обучение алгоритма сочетает принципы как контролируемого, так и обучения без учителя. Например, при подготовке алгоритма маркируется только часть тренировочных данных и предоставляются лишь некоторые правила.
4. Обучение с подкреплением. В этом типе алгоритма применяется техника исследование/освоение. Его работа проста: машина совершает действие, анализирует результаты, а затем опирается на них при выполнении следующего действия.
Каждая из этих категорий предназначена для определённой задачи. Например, контролируемое обучение используется, чтобы масштабировать тренировочные данные, а затем прогнозировать значения на их основе или создавать новые наборы. В то же время с помощью обучения без учителя данные сортируют и фильтруют, чтобы разобраться в них.
В основе каждой из этих категорий лежат разнообразные алгоритмы, составленные для выполнения определённых задач. В этой статье мы разберём 5 алгоритмов, которые должен знать каждый специалист по обработке данных.
№1: Регрессия
Алгоритмы регрессии — это алгоритмы контролируемого обучения, которые используются для поиска возможных отношений между разными переменными, чтобы понять степень влияния независимой переменной на зависимую.
Та же логика применяется и для более сложных и трудных задач. Чтобы облегчить нахождение решений, существует множество типов регрессионных алгоритмов. Самые распространённые среди них:
1. Линейная регрессия. Это самый простой метод регрессии. В нём используется линейный подход для моделирования отношений между зависимой (предсказанная) и независимой (предсказывающая) переменной.
2. Логистическая регрессия. В этом типе применяется бинарная зависимая переменная. Он активно используется в анализе категориальных данных.
3. Гребневая регрессия. Если регрессионная модель оказывается слишком сложной, гребневая регрессия корректирует коэффициент модели.
4. Регрессия Лассо (LASSO). Регрессия LASSO (О ператор наименьшей абсолютной укладки и выбора) используется для отбора и регуляризации переменных.
5. Полиноминальная регрессия. Этот тип алгоритма подходит для нелинейных данных. Прямая линия не может охватить все точки данных, поэтому лучшие прогнозы строятся с помощью кривой.
№ 2: Классификация
Классификация в машинном обучении — это процесс группирования объектов по категориям на основе предварительно классифицированного тренировочного набора данных.
Классификация относится к алгоритмам контролируемого обучения. В них используется категоризация тренировочных данных, чтобы рассчитать, с какой вероятностью новый объект попадёт в одну из заданных категорий. Известный всем пример алгоритмов классификации — это сортировка входящих электронных писем как спам или не спам.
Есть разные типы алгоритмов классификации. Рассмотрим 4 лучших:
1. К-ближайших соседей(KNN). Это алгоритм, в котором используются тренировочные наборы данных для поиска k ближайших точек в определённом наборе.
2. Дерево решений. Его можно представить в виде блок-схемы, где каждые точки данных по очереди разбиваются на два подмножества, а затем каждое из них разбивается ещё на два и так далее.
3. Наивный Байес. С помощью теоремы условной вероятности алгоритм вычисляет шанс, с которым объект попадёт в определённую категорию.
4. Метод опорных векторов. В этом алгоритме данные классифицируются согласно их степени полярности, которая может выходить за пределы X/Y прогнозирования.
№3: Ансамблирование
Ансамбли — это контролируемые алгоритмы обучения, которые комбинируют прогнозы из двух и более алгоритмов машинного обучения для построения более точных результатов. Результаты можно комбинировать с помощью голосования или усреднения. Первое зачастую применяется в классификации, а второе — в регрессии.
Существует 3 основных типа ансамблевых алгоритмов:
1. Бэггинг. Алгоритмы обучаются и работают параллельно на разных тренировочных наборах одного размера. Затем все они тестируются на одном наборе данных, а конечный результат определяется с помощью голосования.
2. Бустинг. В этом типе алгоритмы обучаются последовательно, а конечный результат отбирается с помощью голосования с весами.
3. Стекинг (наложение). Исходя из названия, этот подход состоит из двух уровней, расположенных друг на друге. Базовый представляет собой комбинацию алгоритмов, а верхний — мета-алгоритмы, основанные на базовом уровне.
№4: Кластеризация
Алгоритмы кластеризации относятся к методу обучения без учителя и применяются для группировки точек данных. Точки в одном кластере больше схожи между собой, чем те, что находятся в разных.
Алгоритмы кластеризации делятся на 4 типа:
1. Кластерный центроид. Он объединяет данные в кластеры, основываясь на заранее заданных условиях и характеристиках. k-средних — наиболее популярный алгоритм из этой категории.
2. Кластеризация на основе плотности. В этом типе используется алгоритм, который соединяет области с высокой плотностью в кластеры, создавая распределения произвольной формы.
3. Кластеризация на основе распределений. Алгоритм этого типа предполагает гауссовские распределения данных, которые далее объединяются в различные варианты того же распределения.
4. Иерархические алгоритмы. В этом алгоритме строится иерархическая древо кластеров. Количество кластеров можно менять, объединяя их на определённом уровне древа.
№5: Поиск ассоциативных правил
Ассоциативные алгоритмы относятся к обучению без учителя и определяют вероятность того, что несколько предметов окажутся вместе в определённом наборе данных. В основном они используются при анализе рыночной корзины.
Самый распространённый среди них — алгоритм добычи данных Apriori. Обычно он применяется в транзакционных базах данных. С его помощью можно найти часто встречающиеся наборы элементов, а затем сформировать из них определённые ассоциативные правила.
Например, если человек покупает молоко и хлеб, то, скорее всего, он также возьмёт яйца. Такие прогнозы строятся исходя из предыдущих покупок разных посетителей. После чего создаются ассоциативные правила в соответствии с конкретным показателем доверенности, который определяется алгоритмом на основе того, как часто встречаются эти товары вместе.
Заключительные мысли
Машинное обучение — это один самых популярных и тщательно исследованных подразделов науки о данных. Чтобы достичь еще большей точности и быстрого выполнения, постоянно разрабатываются новые алгоритмы.
Как правило, машинное обучение можно разделить на 4 категории: контролируемое обучение, обучение без учителя, полу-контролируемое обучение и обучение с подкреплением. Каждая из них содержит множество алгоритмов, предназначенных для разных задач.
В этой статье я рассказал про 5 типов контролируемых и неконтролируемых алгоритмов обучения, которые нужно знать каждому новичку в машинном обучении. Они хорошо изучены и широко применяются, поэтому вам не нужно разбираться в том, как их внедрять, а лишь понять, как ими пользоваться. Более того, в самых популярных инструментах Python для машинного обучения, например Scikit Learn, уже установлена большая часть этих алгоритмов.
Итак, мой совет таков: разберитесь в технике, освойте применение и начинайте строить.
Обзор методов классификации в машинном обучении с помощью Scikit-Learn
Авторизуйтесь
Обзор методов классификации в машинном обучении с помощью Scikit-Learn
Для машинного обучения на Python написано очень много библиотек. Сегодня мы рассмотрим одну из самых популярных — Scikit-Learn.
Scikit-Learn упрощает процесс создания классификатора и помогает более чётко выделить концепции машинного обучения, реализуя их с помощью понятной, хорошо документированной и надёжной библиотекой.
Что такое Scikit-Learn?
Scikit-Learn — это Python-библиотека, впервые разработанная David Cournapeau в 2007 году. В этой библиотеке находится большое количество алгоритмов для задач, связанных с классификацией и машинным обучением в целом.
Scikit-Learn базируется на библиотеке SciPy, которую нужно установить перед началом работы.
Основные термины
В системах машинного обучения или же системах нейросетей существуют входы и выходы. То, что подаётся на входы, принято называть признаками (англ. features).
Признаки по существу являются тем же, что и переменные в научном эксперименте — они характеризуют какой-либо наблюдаемый феномен и их можно как-то количественно измерить.
Когда признаки подаются на входы системы машинного обучения, эта система пытается найти совпадения, заметить закономерность между признаками. На выходе генерируется результат этой работы.
Этот результат принято называть меткой (англ. label), поскольку у выходов есть некая пометка, выданная им системой, т. е. предположение (прогноз) о том, в какую категорию попадает выход после классификации.
В контексте машинного обучения классификация относится к обучению с учителем. Такой тип обучения подразумевает, что данные, подаваемые на входы системы, уже помечены, а важная часть признаков уже разделена на отдельные категории или классы. Поэтому сеть уже знает, какая часть входов важна, а какую часть можно самостоятельно проверить. Пример классификации — сортировка различных растений на группы, например «папоротники» и «покрытосеменные». Подобная задача может быть выполнена с помощью Дерева Решений — одного из типов классификатора в Scikit-Learn.
При обучении без учителя в систему подаются непомеченные данные, и она должна попытаться сама разделить эти данные на категории. Так как классификация относится к типу обучения с учителем, способ обучения без учителя в этой статье рассматриваться не будет.
Процесс обучения модели — это подача данных для нейросети, которая в результате должна вывести определённые шаблоны для данных. В процессе обучения модели с учителем на вход подаются признаки и метки, а при прогнозировании на вход классификатора подаются только признаки.
Принимаемые сетью данные делятся на две группы: набор данных для обучения и набор для тестирования. Не стоит проверять сеть на том же наборе данных, на которых она обучалась, т. к. модель уже будет «заточена» под этот набор.
Типы классификаторов
Scikit-Learn даёт доступ ко множеству различных алгоритмов классификации. Вот основные из них:
На сайте Scikit-Learn есть много литературы на тему этих алгоритмов с кратким пояснением работы каждого из них.
Метод k-ближайших соседей (K-Nearest Neighbors)
Этот метод работает с помощью поиска кратчайшей дистанции между тестируемым объектом и ближайшими к нему классифицированным объектами из обучающего набора. Классифицируемый объект будет относится к тому классу, к которому принадлежит ближайший объект набора.
Классификатор дерева решений (Decision Tree Classifier)
Этот классификатор разбивает данные на всё меньшие и меньшие подмножества на основе разных критериев, т. е. у каждого подмножества своя сортирующая категория. С каждым разделением количество объектов определённого критерия уменьшается.
Классификация подойдёт к концу, когда сеть дойдёт до подмножества только с одним объектом. Если объединить несколько подобных деревьев решений, то получится так называемый Случайный Лес (англ. Random Forest).
Наивный байесовский классификатор (Naive Bayes)
Такой классификатор вычисляет вероятность принадлежности объекта к какому-то классу. Эта вероятность вычисляется из шанса, что какое-то событие произойдёт, с опорой на уже на произошедшие события.
Каждый параметр классифицируемого объекта считается независимым от других параметров.
Линейный дискриминантный анализ (Linear Discriminant Analysis)
Этот метод работает путём уменьшения размерности набора данных, проецируя все точки данных на линию. Потом он комбинирует эти точки в классы, базируясь на их расстоянии от центральной точки.
Этот метод, как можно уже догадаться, относится к линейным алгоритмам классификации, т. е. он хорошо подходит для данных с линейной зависимостью.
Метод опорных векторов (Support Vector Machines)
Работа метода опорных векторов заключается в рисовании линии между разными кластерами точек, которые нужно сгруппировать в классы. С одной стороны линии будут точки, принадлежащие одному классу, с другой стороны — к другому классу.
Классификатор будет пытаться увеличить расстояние между рисуемыми линиями и точками на разных сторонах, чтобы увеличить свою «уверенность» определения класса. Когда все точки построены, сторона, на которую они падают — это класс, которому эти точки принадлежат.
Логистическая регрессия (Logistic Regression)
У каждого признака есть своя метка, равная только 0 или только 1. Логистическая регрессия является линейным классификатором и поэтому используется, когда в данных прослеживается какая-то линейная зависимость.
Примеры задач классификации
Задача классификации — эта любая задача, где нужно определить тип объекта из двух и более существующих классов. Такие задачи могут быть разными: определение, кошка на изображении или собака, или определение качества вина на основе его кислотности и содержания алкоголя.
В зависимости от задачи классификации вы будете использовать разные типы классификаторов. Например, если классификация содержит какую-то бинарную логику, то к ней лучше всего подойдёт логистическая регрессия.
По мере накопления опыта вам будет проще выбирать подходящий тип классификатора. Однако хорошей практикой является реализация нескольких подходящих классификаторов и выбор наиболее оптимального и производительного.
Реализация классификатора
Первый шаг в реализации классификатора — его импорт в Python. Вот как это выглядит для логистической регрессии:
Вот импорты остальных классификаторов, рассмотренных выше:
Однако, это не все классификаторы, которые есть в Scikit-Learn. Про остальные можно прочитать на соответствующей странице в документации.
После этого нужно создать экземпляр классификатора. Сделать это можно создав переменную и вызвав функцию, связанную с классификатором.
Теперь классификатор нужно обучить. Перед этим нужно «подогнать» его под тренировочные данные.
Обучающие признаки и метки помещаются в классификатор через функцию fit :
Эти этапы (создание экземпляра, обучение и классификация) являются основными при работе с классификаторами в Scikit-Learn. Но эта библиотека может управлять не только классификаторами, но и самими данными. Чтобы разобраться в том, как данные и классификатор работают вместе над задачей классификации, нужно разобраться в процессах машинного обучения в целом.
Процесс машинного обучения
Процесс содержит в себе следующие этапы: подготовка данных, создание обучающих наборов, создание классификатора, обучение классификатора, составление прогнозов, оценка производительности классификатора и настройка параметров.
Во-первых, нужно подготовить набор данных для классификатора — преобразовать данные в корректную для классификации форму и обработать любые аномалии в этих данных. Отсутствие значений в данных либо любые другие отклонения — все их нужно обработать, иначе они могут негативно влиять на производительность классификатора. Этот этап называется предварительной обработкой данных (англ. data preprocessing).
Следующим шагом будет разделение данных на обучающие и тестовые наборы. Для этого в Scikit-Learn существует отличная функция traintestsplit.
Как уже было сказано выше, классификатор должен быть создан и обучен на тренировочном наборе данных. После этих шагов модель уже может делать прогнозы. Сравнивая показания классификатора с фактически известными данными, можно делать вывод о точности классификатора.
Вероятнее всего, вам нужно будет «корректировать» параметры классификатора, пока вы не достигните желаемой точности (т. к. маловероятно, что классификатор будет соответствовать всем вашим требованиям с первого же запуска).
Ниже будет представлен пример работы машинного обучения от обработки данных и до оценки.
Реализация образца классификации
Поскольку набор данных iris достаточно распространён, в Scikit-Learn он уже присутствует, достаточно лишь заложить эту команду:
Тем не менее, тут ещё нужно подгрузить CSV-файл, который можно скачать здесь.
Благодаря тому, что данные уже были подготовлены, долгой предварительной обработки они не требуют. Единственное, что может понадобиться — убрать ненужные столбцы (например ID ) таким образом:
Теперь нужно определить признаки и метки. С библиотекой Pandas можно легко «нарезать» таблицу и выбрать определённые строки/столбцы с помощью функции iloc() :
Код выше выбирает каждую строку и столбец, обрезав при этом последний столбец.
Выбрать признаки интересующего вас набора данных можно также передав в скобках заголовки столбцов:
После того, как вы выбрали нужные признаки и метки, их можно разделить на тренировочные и тестовые наборы, используя функцию train_test_split() :
Чтобы убедиться в правильности обработки данных, используйте:
Теперь можно создавать экземпляр классификатора, например метод опорных векторов и метод k-ближайших соседей:
Теперь нужно обучить эти два классификатора:
Эти команды обучили модели и теперь классификаторы могут делать прогнозы и сохранять результат в какую-либо переменную.
Теперь пришло время оценить точности классификатора. Существует несколько способов это сделать.
Нужно передать показания прогноза относительно фактически верных меток, значения которых были сохранены ранее.
Вот, к примеру, результат полученных метрик:
Поначалу кажется, что KNN работает точнее. Вот матрица неточностей для SVC:
Количество правильных прогнозов идёт с верхнего левого угла в нижний правый. Вот для сравнения метрики классификации для KNN:
Оценка классификатора
Когда дело доходит до оценки точности классификатора, есть несколько вариантов.
Точность классификации
Точность классификации измерять проще всего, и поэтому этот параметр чаще всего используется. Значение точности — это число правильных прогнозов, делённое на число всех прогнозов или, проще говоря, отношение правильных прогнозов ко всем.
Хоть этот показатель и может быстро дать вам явное представление о производительности классификатора, его лучше использовать, когда каждый класс имеет хотя бы примерно одинаковое количество примеров. Так как такое будет случаться редко, рекомендуется использовать другие показатели классификации.
Логарифмические потери
Значение Логарифмических Потерь (англ. Logarithmic Loss) — или просто логлосс — показывает, насколько классификатор «уверен» в своём прогнозе. Логлосс возвращает вероятность принадлежности объекта к тому или иному классу, суммируя их, чтобы дать общее представление об «уверенности» классификатора.
Этот показатель лежит в промежутке от 0 до 1 — «совсем не уверен» и «полностью уверен» соответственно. Логлосс сильно падает, когда классификатор сильно «уверен» в неправильном ответе.
Площадь ROC-кривой (AUC)
Такой показатель используется только при бинарной классификации. Площадь под ROC-кривой представляет способность классификатора различать подходящие и не подходящие какому-либо классу объекты.
Значение 1.0 : вся область, попадающая под кривую, представляет собой идеальный классификатор. Следовательно, 0.5 означает, что точность классификатора соответствует случайности. Кривая рассчитывается с учётом точности и специфичности модели. Подробнее о расчётах можно прочитать здесь.
Матрица неточностей
Матрица неточностей (англ. Confusion Matrix) — это таблица или диаграмма, показывающая точность прогнозирования классификатора в отношении двух и более классов. Прогнозы классификатора находятся на оси X, а результат (точность) — на оси Y.
Ячейки таблицы заполняются количеством прогнозов классификатора. Правильные прогнозы идут по диагонали от верхнего левого угла в нижний правый. Про это можно почитать в данной статье.
Отчёт о классификации
В библиотеке Scikit-Learn уже встроена возможность создавать отчёты о производительности классификатора. Эти отчёты дают интуитивно понятное представление о работе модели.
Заключение
Чтобы лучше вникнуть в работу с Scikit-Learn, неплохо было бы узнать больше о работе различных методов классификации. После этого стоит лучше узнать о замере производительности классификаторов. Однако понимание многих нюансов в классификации приходит только со временем.