Если вы новичок в машинном обучении или хотите расширить свои знания, алгоритм K-Nearest Neighbours (KNN) — отличное начало. KNN — это простой, но мощный алгоритм контролируемого обучения, используемый как для задач классификации, так и для регрессии. В этом сообщении блога мы погрузимся в мир KNN, объясним его внутреннюю работу, используя повседневный язык, и предоставим примеры кода, которые помогут вам начать работу. Итак, приступим!
Понимание алгоритма KNN:
KNN основан на том принципе, что похожие точки данных, как правило, принадлежат к одному и тому же классу или имеют схожие значения. Алгоритм работает путем расчета расстояния между новой точкой данных и существующими точками данных в обучающем наборе. Буква «K» в KNN обозначает количество ближайших соседей, которые будут учитываться при определении класса или значения новой точки данных.
Шаг 1. Подготовка данных.
Чтобы использовать KNN, вам понадобится помеченный набор данных с функциями и соответствующими целевыми значениями. Допустим, у нас есть набор данных цветов с такими характеристиками, как длина лепестка, ширина лепестка, длина чашелистика и ширина чашелистика, а также соответствующие им названия видов.
Шаг 2. Выбор значения K:
Первое решение, которое вам нужно принять при использовании KNN, — это выбрать подходящее значение для K. Это значение определяет, сколько соседей будет учитываться для классификации или регрессии. Маленькое значение K может привести к переоснащению, тогда как большое значение K может привести к чрезмерному упрощению. Экспериментировать с различными значениями K часто необходимо, чтобы найти оптимальный вариант для вашей конкретной проблемы.
Шаг 3. Расчет расстояния.
KNN использует метрики расстояния, такие как евклидово расстояние или манхэттенское расстояние, для измерения сходства между точками данных. Давайте рассмотрим евклидово расстояние, которое рассчитывает расстояние по прямой между двумя точками в многомерном пространстве. Формула евклидова расстояния между двумя точками (x1, y1) и (x2, y2):
расстояние = sqrt((x2 – x1)^2 + (y2 – y1)^2)
Шаг 4. Поиск ближайших соседей.
После того, как расстояние рассчитано для каждой точки данных, алгоритм определяет K ближайших соседей на основе выбранной метрики расстояния. Эти соседи будут влиять на классификацию или регрессию новой точки данных.
Шаг 5: Классификация или регрессия:
Для задач классификации KNN назначает класс, который чаще всего появляется среди K ближайших соседей, в качестве прогнозируемого класса для новой точки данных. Для задач регрессии KNN берет среднее или средневзвешенное значение целевых значений K ближайших соседей, чтобы спрогнозировать значение для новой точки данных.
Пример кода на Python:
Давайте проиллюстрируем алгоритм KNN, используя фрагмент кода Python:
from sklearn.neighbors import KNeighborsClassifier
# Create a KNN classifier object
knn = KNeighborsClassifier(n_neighbors=5) # Use K=5
# Fit the model to the training data
knn.fit(X_train, y_train)
# Predict the class labels for new data
y_pred = knn.predict(X_test)
В этом примере мы используем библиотеку scikit-learn для создания классификатора KNN. Мы устанавливаем значение K равным 5 и подгоняем модель к обучающим данным. Затем мы используем обученную модель для прогнозирования меток классов для новых точек данных.
KNN — это универсальный алгоритм, который можно использовать для различных задач машинного обучения. Его легко понять и реализовать, что делает его отличным выбором для новичков. Рассчитывая расстояния между точками данных и учитывая K ближайших соседей, KNN может предоставить точные прогнозы. Не забудьте поэкспериментировать с различными значениями K и показателями расстояния, чтобы добиться оптимальных результатов в конкретной проблемной области.