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

В приведенном выше уравнении мы видим, что предсказанная метка y является модой ближайших соседей. Например, аналогия применяется к K-NN, у нас есть набор чисел, например {5,5,5,3,3,2}, тогда мода набора равна 5, поэтому новая точка данных будет равна до 5.

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

Выше приведен простой алгоритм для K-NN, вот как он интерпретируется. Берем пустой массив S, вычисляем все расстояния от точки тестовых данных до всех точек данных. Сохраните расстояния в массиве S. Отсортируйте значения от наименьшего расстояния до наибольшего расстояния. Мы выбираем значение k на основе минимального расстояния от точки тестовых данных до k-й ближайшей точки данных. Позже мы получаем метку k-й ближайшей точки к точке тестовых данных.

Вопрос в том, как выбрать k, чтобы он был ближе всего к контрольной точке данных. Значения K контролируют степень сглаживания для маркировки данных для задачи классификации. Когда мы выбираем K = 1, он рассматривает каждую точку данных поблизости и помечает, что приводит к переоснащению. Это означает, что точка данных рассматривает все близлежащие метки и выбирает метки случайным образом. Это может быть неверным прогнозом для этой точки данных. По сути, это приводит к высокой дисперсии и низкому байсу.

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

Значение K должно быть выбрано таким, чтобы оно давало хорошую точность для невидимых данных. На рисунке ниже показано обозначение цветов для разных значений k. Мы можем наблюдать, что K = 1 приводит к переоснащению, т. Е. Степень сглаживания является резкой для всех точек данных. Когда K = 3, это дает оптимальную степень сглаживания, когда точки данных классифицируются с лучшей маркировкой. При K = 31 степень сглаживания очень высока, что приводит к неправильной классификации точек данных.

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

Итак, чтобы решить эту проблему, мы разделили небольшой набор обучающих данных на проверочный набор данных. Таким образом, разделение будет, например, 60%, 20%, 20% соответственно. В этом наборе данных мы выполняем модель K-NN для обучающих данных и выбираем значение K, которое дает наилучшую точность в наборе данных проверки. Значение K выбирается, затем применяется ко всем обучающим данным, затем это значение K применяется к тестовым данным для маркировки данных.

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

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

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

Алгоритм K-NN — самый простой и удобный алгоритм в машинном обучении. Этот алгоритм также обладает очень хорошей предсказательной силой, лучше всего работает, когда он имеет соответствующие функции в наборе данных. Однако он считает, что все функции имеют одинаковую важность, и не может выбрать важные из данных. Это затрудняет прогнозирование меток для различных типов функций. Еще одна проблема — это память, необходимая для вычисления расстояний для каждой точки данных до всех других точек данных.

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