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

I. Выбор модели

Для этого пошагового руководства я уже выбрал модель KNN. При выборе модели делайте то, что всегда делают лучшие ученые: обращайтесь к данным. У вас его много или мало?

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

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

По сути, смещение и дисперсия вместе составляют величину ошибки в данной модели, которую можно уменьшить:

Reducible Error = Squared Bias + Variance

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

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

II. Настройка модели

Часто при моделировании требуется настройка как параметров, так и гиперпараметров. Их отличает то, находятся ли они до (гиперпараметр) или после (параметр) модели.

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

Существуют разные итерации алгоритма на разных языках программирования, но здесь я буду обсуждать scikit-learn, который находится на Python. Базовый алгоритм использует евклидово расстояние, чтобы найти ближайшие K (где K является нашим гиперпараметром) векторов обучающего набора или «соседей» для каждой строки в тестовом наборе. Голосование большинством решает, какой будет классификация, и если случится ничья, решение переходит к соседу, который оказался первым в обучающих данных.

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

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

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

Знаменитый (читай: печально известный) набор данных Iris, классический в статистическом каноне, является удачной демонстрацией того, как можно использовать этот алгоритмический инструмент. Визуализация диаграммы рассеяния четырех анализируемых характеристик должна прояснить, что KNN сможет легко различать три отдельных вида в 3 из 4 сравнений. Сопоставление одного признака немного более смешанное, по крайней мере, между двумя сравниваемыми видами, но даже в случае сравнения длины чашелистика с шириной чашелистика KNN сможет отличить три вида друг от друга с разной степенью успеха. в зависимости от того, что мы установили как K.

Он также легко доступен, если вы хотите изолировать то, что здесь обсуждается, и даже повысить уровень до объединения нескольких методов вместе. Вы можете выиграть соревнования Kaggle, даже не подозревая об этом!

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

На изображении выше мы видим кривую обучения, которая исходит из отличной страницы Kaggle, на которой KNN рассматривается в контексте распространенности диабета среди индейцев пима. Мы ясно видим, что максимумы тестовой оценки, 11, обозначают оптимальное значение для алгоритма, K = 11. Это возвращает нас к нашему обсуждению смещения и дисперсии. Слишком много «двери номер один» (предвзятость), и вы увидите кривую обучения, указывающую на упрощенную модель: низкие результаты тестов и низкие оценки обучения, которые также очень похожи по значению. Превышение двери номер два (дисперсия), и будет заметная разница между обучением и результатом теста. Хороший баланс каждого из них означает, что модель является точной и точной. Модель можно даже описать с помощью четвертой возможности: ни точной, ни точной. Это будет иметь место в ситуации с большим смещением и высокой дисперсией. Ответьте себе: какая из четырех категорий лучше всего описывает кривую обучения в этой визуализации?

III. Оценка модели

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

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

Что отличает неконтролируемых K-ближайших соседей от контролируемых, так это то, с какой целью они используются: первое предназначено для кластеризации, а второе - для классификации. Если мы говорим о неконтролируемом KNN, вы можете переключаться между подходом грубой силы, деревом шариков, деревом KD или даже оставить это сам алгоритм определения наилучшего способа кластеризации (авто). Я бы рассмотрел эту настраиваемость как аргумент в пользу KNN, поскольку он позволяет гибко обрабатывать как небольшие, так и большие наборы данных. Обычно деление происходит на количестве образцов, близком к 30: ниже этого числа, грубо говоря, лучше использовать стратегию грубой силы. Выше подходы, основанные на древовидной структуре. Однако слишком много выше этого, и связанные с этим временные сложности больше не приемлемы. Другими словами, по мере увеличения N (количества выборок) время вычисления KNN увеличивается экспоненциально, быстро отклоняясь от того, что можно считать полезным.

Один из других заметных минусов здесь связан со структурой данных, с которыми вы хотите работать, и известен как проклятие размерности, хотя этот недуг можно решить с помощью анализа компонентов соседства scikit-learn, или сокращенно NCA. . Это также контролируемый (изученный) алгоритм измерения расстояния, направленный на повышение точности классификаций KNN по сравнению с использованием метрики по умолчанию, Евклидова расстояния. Он является производным от более широкой алгоритмической стратегии для решения проблем размерности, называемой анализом главных компонентов или PCA. Когда NCA используется вместе с классификатором K-соседей, он элегантен, прост и эффективен; никаких сложностей из-за дополнительных параметров, требующих точной настройки. Существует также огромное дополнительное преимущество, заключающееся в возможности решать многоклассовые задачи без увеличения размера модели.

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

Упомянутые работы:

Пошаговая классификация диабета-KNN-подробный, Шрути Айер.

Оценка модели, выбор модели и выбор алгоритма в машинном обучении, Себастьян Рашка.

Краткое введение в выбор модели, Дэвид Шенлебер.

Полное руководство по K-ближайшим соседям с приложениями на Python и R, Кевин Закка.

Алгоритмы K-ближайших соседей Scikit-Learn

Http://www.arc2020.eu/counting-apples-or-oranges-climate-change-stats-vs-food-systems-thinking/

Https://www.python-course.eu/k_nearest_neighbor_classifier.php

Https://ionds.com/wp-content/uploads/2016/10/Overfitting-image-model-case-300x300.png