Введение в алгоритм KNN

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

Что такое контролируемое обучение?

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

Как работает алгоритм KNN?

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

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

В геометрии согласно евклидову функцию расстояния можно рассчитать по следующему уравнению:

Если K = 1, то случай просто присваивается классу его ближайшего соседа (мы используем «1» практически в любой ситуации математики, мы можем изменить значение K во время обучения моделей в машинном обучении, и мы будем обсудите это далее в статье) X и Y - значения на осях координат.

Если мы заметим здесь, все меры расстояния, которые мы получаем, будут непрерывными переменными, но нам нужны дискретные значения при выполнении классификации, поэтому мы должны использовать расстояние Хэмминга для достижения этого.

Это уравнение также дает нам стандартизацию числовых значений от 0 до 1, когда в наборе данных есть смесь числовых и категориальных значений.

Икс Y Расстояние
С раком С раком X = Y → D = 0
Без рака Без рака X! = Y → D = 1

Таким образом, алгоритм работает, и теперь давайте углубимся в то, как мы выбираем значение K в KNN.

Выбор значения K в алгоритме KNN

Прежде чем увидеть, какие факторы следует учитывать при выборе значения K, мы должны понять, как влияет значение K на алгоритм.

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

Шаги по реализации алгоритма KNN в Python

До сих пор здесь мы изучали теоретическую часть алгоритма K Nearest Neighbour, теперь давайте посмотрим практически, узнав, как реализовать в python.

Шаг 1: Импорт библиотек

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

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Шаг 2: Импорт набора данных

Здесь мы увидим импортируемый набор данных.

file = "/path/to/the/dataset"
#Push dataset into Pandas dataframe
dataset = pd.read_csv(file)

Шаг 3: Разделить набор данных

Следующий шаг - разделить наш набор данных на тест и разделить поезд.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

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

Шаг 4: Модель обучения

Теперь на этом этапе мы увидим модель обучения.

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=3)
classifier.fit(X_train, y_train)

Примечание. Здесь мы используем классификатор K соседей, импортированный из библиотеки модуля sklearn.neighbours.

Шаг 5: Запуск прогнозов

Выполнение прогнозов по данным теста разделения.

y_pred = classifier.predict(X_test)

Шаг 6: Проверьте валидацию

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

Вывод

Как было сказано ранее, алгоритм K Nearest Neighbors является одним из самых простых и простых алгоритмов, используемых для классификации. Основываясь на том, как это работает, он также подпадает под «алгоритм ленивого обучения». Как правило, K-значение, которое каждый проходит во время обучения модели, является нечетным числом, но это не принуждение. Однако при использовании KNN минусов также мало.

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

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

Рекомендуемые статьи

Это руководство по алгоритму KNN. Здесь мы обсуждаем введение и работу алгоритма K Nearest Neighbors с шагами по реализации алгоритма kNN в python. Вы также можете посмотреть следующие статьи, чтобы узнать больше

  1. Как работает алгоритм SVM?
  2. Алгоритм MD5 (преимущества и недостатки)
  3. Алгоритм кластеризации K-средних
  4. Типы Усиления обучения
  5. Полное руководство по алгоритму C ++