Menu
CoddyTech

Введение в KNN

Урок 6 из 19 курса Введение в машинное обучение на Coddy.

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

Алгоритм KNN находит сходство признаков, используя метрики расстояния для определения ближайших соседей к точке. Например, он может сортировать вина, сравнивая их с наиболее похожими, например, группируя вина с похожим вкусом. Это похоже на наличие гида, который помогает найти похожие вина на основе их наиболее общих характеристик. 🍷
Идея KNN довольно проста:

  1. Расчет расстояния: Для заданной тестовой точки алгоритм рассчитывает расстояние между этой точкой и каждой другой точкой в обучающем наборе данных. Расстояние можно рассчитать различными способами, например, используя евклидово расстояние или расстояние Манхэттена.
  2. Поиск ближайших соседей: Затем алгоритм выбирает k точек в обучающих данных, которые находятся ближе всего к тестовой точке. k — это определяемая пользователем константа, которая может быть любым целым числом.
  3. Выполнение прогноза: Для классификации алгоритм присваивает тестовой точке наиболее распространенную метку класса среди k ближайших соседей. Для регрессии он присваивает среднее значение ‘k’ ближайших соседей.

KNN — это алгоритм ленивого обучения (lazy learning), что означает, что он на самом деле не строит модель. Вместо этого он запоминает обучающие примеры и использует их для прогнозирования (следующий урок будет посвящен этапу обучения). Это делает KNN вычислительно затратным на этапе тестирования.

Несмотря на свою простоту, KNN может достигать удивительно хороших результатов. Однако он чувствителен к выбору k и типу метрики расстояния, а также плохо работает с многомерными данными из-за «проклятия размерности».

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

В этом испытании мы изучим различные способы расчета расстояния.

Создайте функцию с именем distances_option_calculator, которая принимает три переменные: X, y и distance_type. Функция должна возвращать расстояние между X и y в соответствии с типом distance_type.

Вот список распространенных расчетов расстояния:

Евклидово расстояние (самое распространенное) — это расстояние по прямой между двумя точками. Квадратный корень из суммы квадратов разностей между соответствующими координатами точек:

euclidian_distance_equation.png

Манхэттенское расстояние также известно как расстояние городских кварталов или расстояние такси. Это сумма абсолютных разностей координат точек по всем измерениям. Для двух точек ( P ) и ( Q ) с координатами ( (p_1, p_2, …, p_n) ) и ( (q_1, q_2, …, q_n) ) соответственно:

manhattan_distance.png
image.png

Расстояние Хэмминга: количество позиций, в которых соответствующие символы различны. Оно часто используется для категориальных данных.
Например, возьмем две бинарные строки:

String 1: 1101
String 2: 1001

Сравнивая их попозиционно, мы видим, что во второй позиции биты различаются (1 в String 1 и 0 в String 2). Все остальные позиции одинаковы. Таким образом, расстояние Хэмминга между этими двумя строками равно 1.

Параметр distance_type может принимать следующие значения: "hamming", "manhattan", "euclidian".

Попробуйте сами

def distances_option_calculator(X, y, distance_type):
    # Напишите код здесь
    if distance_type == "euclidian":
        pass
    elif distance_type == "manhattan":
        pass
    elif distance_type == "hamming":
        pass

Все уроки раздела Введение в машинное обучение

Потренируйтесь самостоятельно: Онлайн-компилятор Python