K Nearest Neighbor (KNN) — это очень простой, понятный и универсальный алгоритм машинного обучения. Он используется во многих различных областях, таких как обнаружение рукописного ввода, распознавание изображений и распознавание видео. KNN наиболее полезен, когда размеченные данные слишком дороги или их невозможно получить, и он может обеспечить высокую точность в самых разных задачах прогнозирования.
KNN — это простой алгоритм, основанный на локальном минимуме целевой функции, который используется для изучения неизвестной функции с желаемой точностью и правильностью. Алгоритм также находит окрестности неизвестного входа, его диапазон или расстояние от него и другие параметры. Он основан на принципе «прироста информации» — алгоритм выясняет, что лучше всего подходит для предсказания неизвестного значения. K-Nearest Neighbor — один из простейших алгоритмов машинного обучения, основанный на методе контролируемого обучения. Алгоритм K-ближайших соседей (KNN) можно использовать как для классификации, так и для задач прогнозирования регрессии.
Важные факты о КНН
- K-Nearest Neighbor — один из простейших алгоритмов машинного обучения, основанный на методе контролируемого обучения.
- Алгоритм K-NN предполагает сходство между новым случаем/данными и доступными случаями и помещает новый случай в категорию, наиболее похожую на доступные категории.
- Алгоритм K-NN сохраняет все доступные данные и классифицирует новую точку данных на основе сходства. Это означает, что когда появляются новые данные, их можно легко отнести к категории набора скважин с помощью алгоритма K-NN.
- Алгоритм K-NN можно использовать как для регрессии, так и для классификации, но в основном он используется для задач классификации.
- K-NN — это непараметрический алгоритм, что означает, что он не делает никаких предположений относительно исходных данных.
- Его также называют алгоритмом ленивого обучения, потому что он не обучается сразу на обучающем наборе, а сохраняет набор данных и во время классификации выполняет действие над набором данных.
- Алгоритм KNN на этапе обучения просто сохраняет набор данных, а когда он получает новые данные, он классифицирует эти данные в категорию, которая очень похожа на новые данные.
КНН работает
Работу K-NN можно объяснить на основе следующего алгоритма:
- Шаг 1. Выберите число K соседей.
- Шаг 2. Назначьте точку данных, для которой нам нужно предсказать ее класс.
- Шаг 3. Вычислите евклидово расстояние для K соседей.
- Шаг 4. Возьмите K ближайших соседей в соответствии с вычисленным евклидовым расстоянием.
- Шаг 5. Среди этих k соседей подсчитайте количество точек данных в каждой категории.
- Шаг 6. Назначьте новые точки данных той категории, для которой максимальное количество соседей.
- Шаг 7. Наша модель готова.
Посмотрите на гифку ниже, легко понять, как работает KNN.
Масштабирование данных
K-ближайших соседей (KNN) с евклидовой мерой расстояния чувствителен к величинам и, следовательно, должен масштабироваться, чтобы все объекты имели одинаковый вес. K-Means использует евклидову меру расстояния, здесь имеет значение масштабирование объекта.
Выбор правильного значения для k
Не существует простого метода вычисления значения K в KNN. Вы должны поиграть с различными значениями, чтобы выбрать оптимальное значение K. Выбор правильного значения K — это процесс, называемый настройкой гиперпараметров.
Значение оптимального K полностью зависит от набора данных, который вы используете. Лучшее значение K для KNN сильно зависит от данных. В разных сценариях оптимум К может различаться. Это более или менее метод удара и следа.
Вам нужно соблюдать баланс при выборе значения K в KNN. K не должен быть слишком маленьким или слишком большим.
Небольшое значение K означает, что шум будет иметь большее влияние на результат.
Чем больше значение К, тем выше точность. Если K слишком велико, вы недооцениваете свою модель. В этом случае ошибка снова вылезет. Таким образом, в то же время вам также необходимо предотвратить подгонку вашей модели. Ваша модель должна сохранять возможности обобщения, в противном случае есть большая вероятность того, что ваша модель может хорошо работать с обучающими данными, но резко потерпеть неудачу с реальными данными. Большее K также увеличит вычислительные затраты алгоритма.
Не существует единственно правильного метода оценки значения K в KNN. Ни один метод не является эмпирическим правилом, но вы должны попробовать рассмотреть следующие предложения:
1. Метод квадратного корня: возьмите квадратный корень из числа выборок в обучающем наборе данных.
2. Метод перекрестной проверки: мы также должны использовать перекрестную проверку, чтобы найти оптимальное значение K в KNN. Начните с K=1, запустите перекрестную проверку (от 5 до 10 раз), измерьте точность и продолжайте повторять, пока результаты не станут согласованными. K=1, 2, 3... При увеличении K ошибка обычно уменьшается, затем стабилизируется, а затем снова возрастает. Выберите оптимум K в начале стабильной зоны. Это также называется методом локтя.
Проклятие размерности
Проклятие размерности означает, что KNN лучше всего работает с небольшим количеством функций. Когда количество функций увеличивается, требуется больше данных. Когда данных больше, это создает проблему переобучения, потому что никто не знает, какая часть шума внесет свой вклад в модель. KNN лучше работает с низкой размерностью (как показало исследование Гу и Шао в 2014 году).
Преимущества KNN
1. Нет периода обучения: KNN называется Lazy Learner (обучение на основе экземпляров). Он ничему не учится в период обучения. Он не выводит какую-либо дискриминационную функцию из обучающих данных. Другими словами, для него не существует периода обучения. Он хранит набор обучающих данных и учится на нем только во время прогнозирования в реальном времени. Это делает алгоритм KNN намного быстрее, чем другие алгоритмы, требующие обучения, например. SVM, линейная регрессия и т. д.
2. Поскольку алгоритм KNN не требует обучения перед выполнением прогнозов, новые данные могут добавляться легко, что не повлияет на точность алгоритма.
3. KNN очень проста в реализации. Для реализации KNN требуются только два параметра, т. е. значение K и функция расстояния (например, евклидова или манхэттенская и т. д.).
Недостатки KNN
1. Не работает с большими наборами данных: в больших наборах данных стоимость вычисления расстояния между новой точкой и каждой существующей точкой огромна, что снижает производительность алгоритма.
2. Плохо работает с большими размерами:алгоритм KNN плохо работает с большими размерными данными, потому что при большом количестве измерений алгоритму становится сложно вычислить расстояние в каждом измерении.
3. Требуется масштабирование функций: нам необходимо выполнить масштабирование функций (стандартизацию и нормализацию) перед применением алгоритма KNN к любому набору данных. Если мы этого не сделаем, KNN может генерировать неверные прогнозы.
4. Чувствителен к зашумленным данным, отсутствующим значениям и выбросам: KNN чувствителен к шуму в наборе данных. Нам нужно вручную ввести пропущенные значения и удалить выбросы.
Заключение
В этой статье объясняются концепции алгоритма KNN. Его классификация и реализация регрессии объясняются в статье «Полное руководство по внедрению классификатора и регрессора KNN».