Алгоритм K ближайших соседей — это один из алгоритмов, используемых в машинном обучении для задач классификации и регрессии. Алгоритм KNN использует существующие данные и классифицирует новые точки данных на основе сходства и особенностей существующих точек данных.
Одно из применений алгоритма KNN — «поиск». Часто при покупке товаров в интернет-магазинах вы могли бы заметить, что когда вы будете получать похожие варианты на той же странице, где отображается ваш товар. Вот этот" .
Вы будете называть это поиском KNN.
KNN относится к области контролируемого обучения и находит интенсивное применение в распознавании образов, анализе данных и обнаружении вторжений.
KNN – это непараметрический алгоритм ленивого обучения. Его цель — использовать базу данных, в которой точки данных разделены на несколько классов, чтобы предсказать классификацию новой точки выборки.
- Первым шагом модели построения алгоритма KNN является обработка данных и их предварительная обработка перед созданием обучающих и тестовых данных.
- Выбор k очень важен. Небольшое значение k означает, что шум будет иметь большее влияние на результат. Большое значение делает его дорогостоящим в вычислительном отношении и противоречит основной философии, лежащей в основе KNN (то есть точки, которые находятся рядом, могут иметь аналогичные плотности или классы).
Простым подходом к выбору k является установка k = n^(1/2).
«Это во многом будет зависеть от ваших индивидуальных случаев, иногда лучше просмотреть все возможные значения k и решить для себя».»
Когда мы наносим записи данных в математическое пространство, на основе классификации у нас будут данные, как показано на рисунке. Здесь круг и треугольник — это два разных класса записей.
Теперь, используя KNN, когда мы получаем новую точку данных в математическом пространстве, он сначала вычисляет расстояние между уже существующими точками данных и новой точкой данных, введенной в математическом пространстве, чтобы найти k похожих экземпляров данных.
Для лучшего понимания…..
Предположим, после наблюдения и обработки данных мы получили значение k, равное 6, затем, используя алгоритм KNN, новая точка данных найдет 6 ближайших или кратчайших точек данных. .
Чтобы рассчитать расстояние между двумя точками данных в математическом пространстве, у нас есть разные формулы для расчета расстояния:
Как только мы получим k ближайших соседей, новая точка данных будет использовать метки класса ближайших соседей, чтобы определить метку класса неизвестной записи/данных.
Это делается путем голосования большинством между k ближайших соседей.
Здесь, в анимации .gif, у нас есть значение k, равное 3, и после нахождения ближайшего соседа новой точки данных новая запись будет стремиться перейти к классу треугольника на основе большинства голосов, поскольку запись данных треугольника появляется больше в ближайшем k радиус.
KNN называется ленивым алгоритмом, потому что он не изучает дискриминационную функцию из обучающих данных, а вместо этого «запоминает» набор обучающих данных.
Например, алгоритм логистической регрессии изучает веса (параметры) своей модели во время обучения. Напротив, в K-NN нет времени на обучение. Хотя это может показаться очень удобным, это свойство не обходится без затрат: шаг «предсказания» в K-NN относительно дорог! Каждый раз, когда мы хотим сделать прогноз, K-NN ищет ближайших соседей во всей обучающей выборке!
Let’s Code:
«KNN относится к семейству алгоритмов контролируемого обучения. Неформально это означает, что нам дан помеченный набор данных, состоящий из обучающих наблюдений (x, y), и мы хотели бы зафиксировать взаимосвязь между x и y. Говоря более формально, наша цель состоит в том, чтобы изучить функцию h:X→Y, чтобы по невидимому наблюдению x функция h(x) могла уверенно предсказать соответствующий результат y».
- Сначала нам нужно получить все необходимые библиотеки, необходимые для чтения данных, предварительной обработки данных и визуализации данных.
- Теперь данные готовы для построения моделей машинного обучения, давайте теперь разделим данные на обучающие и тестовые данные.
- Постройте модель с различными значениями k, чтобы проверить наилучшее оптимальное значение.
- Проверьте ошибку неправильной классификации по сравнению с k для перекрестной проверки.
Найдите код Python здесь
Спасибо!
Продолжайте поддерживать