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

Надеюсь, вам понравится этот материал. Контент, о котором я буду писать, взят из модуля 6 уровня машинного обучения Королевского колледжа Лондона.

Ниже приведены темы, которые мы собираемся затронуть

  • Неделя 1: Введение
  • Неделя 2: Индуктивное обучение
  • Неделя 3: Вероятностные модели 1
  • Неделя 4: Вероятностные модели 2
  • Неделя 5: методы ядра
  • Неделя 6: нейронные сети
  • Неделя 7: эволюционные алгоритмы
  • Неделя 8: Обучение с подкреплением 1
  • Неделя 9: Обучение с подкреплением 2
  • Неделя 10: Уроки демонстрации

Учебники

Все материалы основаны на книгах из трех курсов. Я подумал, что мне стоит упомянуть и о них.

  • Митчелл, Машинное обучение, МакГроу Хилл. Эта книга охватывает все темы, упомянутые выше, но в курсе также есть две другие книги, которые, возможно, лучше сосредоточены на определенных темах.
  • Мерфи, Машинное обучение, MIT Press.
  • Рассел и Норвиг, Искусственный интеллект: современный подход, Пирсон.

Важное примечание

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

Неделя 1 - Введение

Определение и примеры

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

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

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

Типы ML

Традиционно существует три основных типа алгоритмов машинного обучения.

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

Мы рассмотрим все подробно позже, а пока просто кратко расскажем о контролируемом и неконтролируемом обучении.

1. Обучение с учителем - обучение на основе помеченных данных

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

Для успешного машинного обучения необходимы 3 основных компонента:

  1. Репрезентативные данные обучения. (поскольку модели машинного обучения обучаются на основе данных). Одно из конкретных требований к данным - они должны быть помечены или аннотированы. Он относится к значимым меткам, связанным с данными, которые содержат правильный ответ для этого конкретного ввода. Пример: набор изображений различных видов, уже классифицированных правильно. Метка может быть именем файла. В течение нескольких недель мы будем использовать переменную yᵢ для представления класса / типа (для нашего предыдущего примера yᵢ может быть Setosa, Versicolor или Virginica). У нас также могут быть данные без аннотаций, и в этом случае мы имеем в виду обучение без учителя. Поговорим об этом чуть позже.
  2. Изощренные методы извлечения функций, которые используются для представления данных. Мы можем думать о характеристиках как о легко наблюдаемых свойствах данных, на основе которых модель будет пытаться делать прогнозы. Мы будем использовать переменную xᵢ для представления атрибутов или функций наших данных. (например, площадь лепестка = длина x ширина или площадь чашелистика = длина x ширина и т. д.). xᵢ обычно представляют собой числовые векторы размерности D, поэтому в нашем примере радужной оболочки x нашей задачи будет выглядит как [(площадь-лепестка1, площадь чашелистика1), (площадь-лепестка2, площадь чашелистика2),…)]. Однако это могут быть более сложные объекты, такие как наборы координат, изображения, временные ряды и т. д.
  3. Изощренный выбор алгоритма машинного обучения:

Учитывая обучающую выборку:

который содержит пары функций xᵢ и правильные ответы yᵢ,, где xᵢ - вектор, а yᵢ - отдельные элементы / классы, контролируемый алгоритм может изучать обучающий набор и научитесь классифицировать цветы ириса на три разных класса yᵢ на основе их характеристик xᵢ (Goodfellow et al., 2016). Другими словами, он изучает функцию f, которая сопоставляет объекты xᵢ с классом yᵢ, который выглядит так: f (xᵢ) = yᵢ (учитывая ввод, к какому классу он принадлежит? ). Он может предсказать класс, используя взвешенную комбинацию входных функций. Нас особенно интересуют xⱼ, поскольку они не принадлежат к D, потому что мы пытаемся обобщить наш алгоритм в максимально возможной степени, чтобы он мог предсказывать данные, которых раньше не видел. Я включил иллюстративное изображение ниже с компонентами, которые мы обсуждали выше.

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

длинный хвост - это образец частотного распределения, в котором вхождения наиболее плотно сгруппированы вблизи оси Y, а кривая распределения сужается вдоль оси X. (Источник: https://whatis.techtarget.com/definition/long-tail ).

Ниже мы видим пример с частотой слов в Moby Dick. Мы видим большое количество нечасто встречающихся слов («длинный хвост»).

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

Классификация

Когда переменная ответа yᵢ является категориальным значением из некоторого конечного набора, например Setosa или Virginica проблема обучения называется классификацией или распознаванием образов, как в примере с радужной оболочкой глаза. Они используют набор меток или классов. Формально y ∈ {1,…, C}, где C - количество классов. Распространенной версией проблемы является двоичная классификация C = 2, и в этом случае мы часто пишем метки как {1, 0} (например, электронная почта является спамом или нет). Если C ›2, у нас есть мультиклассовая классификация (например, пример радужной оболочки глаза, где у нас есть 3 класса). Один из способов представить себе классификацию - это приближение функции, то есть мы предполагаем, что y = f (x). Затем обучение пытается оценить f, создавая оценку f ^ (маленькая шляпа - должен быть поверх f). После изучения мы прогнозируем оценку y, используя y ^ = f ^ (x).

Что мы можем легко заметить, так это то, что 3 класса визуально разделены на нашем представлении. Просто взглянув на область лепестка, мы уже можем сказать, какой результат. Разница между Setosa и Versicolor довольно велика, и мы можем сказать, что есть что, но между Virginica и Versicolor есть некоторые моменты, которые могут быть одним из двух (границы неясны), и это действительно неоднозначно. Такое случается очень часто. Что мы можем сделать в этих случаях, так это то, что мы можем сформулировать нашу проблему таким образом, чтобы она возвращала вероятность. «Какова вероятность того, что входные данные принадлежат классу с учетом набора входных характеристик?». Вероятностные классификаторы обеспечивают распределение по классам. Если у нас есть классы C, мы получаем вероятность для каждого класса. Таким образом, у вас будет больше гибкости.

Мы можем выбрать один класс, выбрав тот с наибольшей вероятностью при вводе:

Эта оценка, скорее всего, является меткой класса, способом распределения, и называется оценкой MAP, «максимальной апостериорной» оценкой. Но в других случаях нам нужна вероятность каждого yᵢ, а затем выбираем класс, но это действительно зависит от проблемы, которую мы хотим решить.

Регресс

Регрессия аналогична классификации, но результат непрерывен.

Здесь xᵢ ∈ R, yᵢ ∈ R, а функция линейная. R = Действительные числа.

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

Здесь 𝜖 - остаточная ошибка. И помните, что здесь D - это наш тренировочный набор.

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

  • x = (x₀, x₁)
  • x₀ = 1
  • x₁ = x

что то же самое, что сказать x = (1, x). Тогда наша функция прогнозирования будет выглядеть так: ŷ (x) = w₀ + w₁ x₁. Мы называем w₀ перехватом или смещением, а w₁ - наклоном. Как мы видели в этом примере, «обучение» - это процесс вычисления выяснить, каким должен быть wⱼ, чтобы получить хорошее отображение. С разными wⱼ мы получаем разные функции f.

2. Обучение без учителя - открытие знаний

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

В этом случае мы ищем закономерности или интересные «структуры» в данных.

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

Один из способов думать об обучении без учителя - это оценка плотности. Возьмем задачу построить модели вида p (xᵢ | D). Два отличия от обучения с учителем:

  1. Мы не пишем p (yᵢ | xᵢ, D), потому что у нас нет набора метки классов для предсказания
  2. xᵢ обычно представляет собой вектор характеристик, поэтому наш прогноз представляет собой многомерное распределение вероятностей (по сравнению с одномерными вероятностными моделями). Это делает его более сложным

Помеченные данные не являются обычным явлением «в дикой природе», поэтому, возможно, обучение без учителя более естественно, чем обучение с учителем.

Кластеризация

Типичная форма обучения без учителя: группирование данных в кластеры.

Пусть K будет количеством кластеров. Нам нужно оценить распределение по количеству кластеров p (K | D), но часто это упрощается, аппроксимируя p (K | D) его модой:

Мы ясно видим, что выбор правильного K действительно важен. Это пример выбора модели, о выборе модели мы поговорим позже.

Основные понятия: параметрическое и непараметрическое машинное обучение

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

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

- Машинное обучение - вероятностный подход, Мерфи.

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

k-ближайший сосед (kNN) (не путать с k-средними)

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

Более сложная версия kNN использует k ближайших точек для оценки вероятности принадлежности к классу:

где Nₖ (x, D) - индексы k ближайших к x точек в D, а I (e) - индикаторная функция такая, что: I (e) = if e = true then 1 else 0. Он просто подсчитывает, сколько членов каждого класса находится в k ближайшем наборе.

Если в этом нет смысла, не волнуйтесь. Я тоже сначала не понял. Вот потрясающее видео, объясняющее, как работает этот алгоритм.

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

Классификаторы kNN просты и могут хорошо работать, если у нас есть хорошая метрика расстояния и что у нас достаточно размеченных обучающих данных. Фактически, можно доказать, что классификаторы kNN могут быть в два раза выше наилучшей возможной производительности, если N → ∞ (Cover and Hart 1967). Но наша главная проблема здесь не в метрике расстояния или данных с метками. Актуальная проблема с классификаторами kNN заключается в том, что они плохо работают с входами большой размерности. Низкая производительность с данными большого размера связана с проклятием размерности. Чтобы найти ближайшего соседа, нам нужно пройти через набор примеров вычисления расстояний, а расстояние может быть дорогостоящим в вычислительном отношении для данных большой размерности. Но чтобы лучше различать примеры, нам нужно больше функций (размеров), а с большим количеством функций нам нужно больше примеров, чтобы определить, как эти функции различаются. Если у нас недостаточно примеров, мы можем переобучить, что является распространенным ошибка моделей машинного обучения, но об этом поговорим позже. Потребность в примерах растет в геометрической прогрессии. Один из способов избавиться от проклятия - использовать параметрические модели, то есть мы делаем предположения о том, как лучше всего различать примеры. Мы предполагаем кое-что о p (y | x) и p (x).

Переоснащение

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

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

Реальный пример с одним из алгоритмов, которые мы обсуждали, можно увидеть ниже. Здесь мы используем алгоритмы kNN.

На первом графике k = 1, а на втором k = 5. Мы можем легко заметить, что k = 1 приводит к переобучению данных, и поэтому обобщение не так уж и велико. Это означает, что прогнозы на основе новых данных не будут точными.

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

Выбор модели

Когда у нас есть множество моделей разной сложности (например, модели линейной регрессии с полиномами разной степени или классификаторы KNN с разными значениями K), как нам выбрать правильную? При обучении с учителем это то же самое, что «Можем ли мы хорошо предсказать yᵢ с учетом xᵢ?”. Хороший подход - рассчитать коэффициент ошибочной классификации:

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

Мы отображаем ошибку теста в зависимости от K сплошным красным цветом (верхняя кривая). Теперь мы видим U-образную кривую: для сложных моделей (маленький K) метод переобучения, а для простых моделей (большой K) метод не подходит. Следовательно, очевидный способ выбрать K - выбрать значение с минимальной ошибкой в ​​тестовом наборе (в этом примере подойдет любое значение от 10 до 100).

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

Часто мы используем около 80% данных для обучающего набора и 20% для набора проверки. Но если количество обучающих примеров невелико, этот метод вызывает проблемы, потому что в модели не будет достаточно данных для обучения, и у нас не будет достаточно данных, чтобы сделать надежную оценку будущей производительности. Однако мы разделяем данные, которые у нас есть, на обучающие и тестовые наборы, мы можем смещать результаты. Приведенный выше пример называется перекрестной проверкой удержания.

Но мы можем добиться большего.

Перекрестная проверка

Простое, но популярное решение - использовать перекрестную проверку (CV). Идея проста: мы разбиваем обучающие данные на K сверток; то для каждой складки k ∈ {1,. . . , K}, мы тренируемся на всех складках, кроме kᵗʰ, и тестируем k в круговой манере.

Конечная производительность - это среднее значение производительности для каждой складки.

Обычно используют k = 5 или k = 10, чтобы получить оценки ошибки, которые могут быть точными; это называется 5-кратным или 10-кратным резюме. В крайнем случае, если мы установим k = N, мы получим метод под названием исключить одну перекрестную проверку или LOOCV, поскольку в кратной i мы тренируемся на всех случаи данных, кроме i, а затем проверьте на i.

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

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

Как мы упоминали ранее, поэтому важен выбор модели. Помогает ответить на вопрос «Какой режим лучше?». Например, как выбрать между k = 1 и k = 5 для k-ближайшего соседа? Это просто, по крайней мере, концептуально. Один из способов сделать это - запустить перекрестную проверку обоих параметров и посмотреть, какой из них имеет более низкий уровень ошибок классификации. Эта операция называется выбором модели или настройкой параметров.

Нет теоремы о бесплатном обеде.

Все модели ошибочны, но некоторые модели полезны. - Джордж Бокс (Бокс и Дрейпер, 1987, стр. 424).

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

Дополнительные показатели эффективности

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

точность = правильно / всего

Давайте посмотрим на пример. Рассмотрим двухклассную задачу с равным количеством примеров в каждом классе. Случайный выбор даст 50% точности. Теперь рассмотрим задачу с 286 примерами, 201 в классе «нет» и 85 в классе «да». Классификатор, который всегда говорит «нет», будет иметь 70% точности, а это означает, что, возможно, классификатор будет хорош только в том случае, если в этом случае он будет правильным более чем на 70%. Но что, если «да» действительно имеют значение? Ложноотрицательные результаты могут быть более важными, чем ложные срабатывания (или наоборот, в зависимости от проблемы). Цифры взяты из стандартного набора данных о раке груди.

Матрица неточностей

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

Источник: https://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/

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

Давайте посмотрим на пример. Вот глупый классификатор рака груди «все нет» в матрице путаницы. Отсутствие истинно положительных и ложно отрицательных результатов должно заставить нас задуматься.

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

Точность

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

точность = TP / (TP + FP)

Напомнить

Напоминание - это количество истинных положительных результатов, деленное на сумму истинных положительных и ложно отрицательных результатов. Сколько из всех истинных «да» примеров мы выбрали правильно? Также называется чувствительностью или эффективностью.

отзыв = TP / (TP + FN)

F-результат

Для фиксированного порога можно вычислить одинарную точность и значение возврата. Они часто объединяются в единую статистику, называемую оценка F или оценка F₁, которая представляет собой гармоническое среднее значение точности и запоминания;

F = 2PR / R + P, где P = точность и R = отзыв

Кривая ROC

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

Источник: https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5 - Саранг Нархеде

До сих пор мы говорили, что классификатор может четко различать «да» и «нет». Как обсуждалось выше, большинство проблем классификации можно представить как вероятностное предсказание, возвращающее p (yᵢ | xᵢ, D), и мы превращаем его в да или нет, используя:

А перемещение порога изменяет истинные срабатывания (TP) и ложные срабатывания (FP).

Как мы анализируем модель с помощью кривой ROC?

  • Постройте пары TP и FP (поскольку мы меняем порог).
  • Пунктирная линия - результат случайного классификатора (в среднем).
  • Для хорошей системы график круто поднимается влево.
  • Площадь под кривой связана с вероятностью того, что классификатор правильно классифицирует случайно выбранный пример.

Оценка кластеров

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

Мы можем использовать индекс Дэвиса-Болдина для n кластеров.

где cᵢ - центр тяжести кластера i, σᵢ - среднее расстояние от точек кластера i до центроида кластера, а d (·, ·) - метрика расстояния. Индекс БД будет небольшим, когда кластеры плотно сгруппированы и удалены друг от друга.

Вы, наверное, уже устали от такого количества информации, но хорошая новость в том, что на этом мы остановимся. Напомним, что на этой неделе мы обсудили основные типы машинного обучения: контролируемое, когда мы учимся на основе помеченных данных, и неконтролируемое, когда данные не аннотированы. Мы также рассмотрели конкретные методы, такие как классификация, линейная регрессия k-средних и kNN. Мы объяснили процесс выбора модели, начиная с того, как мы обучаем / тестируем наши данные и как мы можем оценить, насколько хороша модель, глядя на точность, точность, отзыв или кривые ROC. Мы закончили эту неделю, предоставив также возможность оценить кластеры.

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

До следующей недели,