В чем разница между K-Means и KNN моделями?

«В чем разница между K-Means и KNN моделями?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

K-Means и KNN — принципиально разные алгоритмы, решающие разные задачи машинного обучения.

  • K-Means — это алгоритм кластеризации (обучение без учителя). Его цель — разделить данные на k групп (кластеров) на основе сходства, так чтобы объекты внутри кластера были максимально похожи, а кластеры — максимально отличались. Он не использует размеченные данные для обучения.

    from sklearn.cluster import KMeans
    # Предположим, X — это наши данные без меток
    kmeans = KMeans(n_clusters=3, random_state=42)
    cluster_labels = kmeans.fit_predict(X)
  • KNN (k-Nearest Neighbors) — это алгоритм классификации или регрессии (обучение с учителем). Для предсказания метки нового объекта он находит k наиболее похожих (ближайших) объектов в обучающей выборке и определяет результат на основе «мнения большинства» этих соседей. Ему необходима размеченная обучающая выборка.

    from sklearn.neighbors import KNeighborsClassifier
    # X_train, y_train — размеченные данные для обучения
    knn = KNeighborsClassifier(n_neighbors=5)
    knn.fit(X_train, y_train)
    predictions = knn.predict(X_test)
Итоговое сравнение: Аспект K-Means KNN
Тип задачи Кластеризация (unsupervised) Классификация/Регрессия (supervised)
Цель Найти внутреннюю структуру данных Предсказать метку или значение для новых данных
Необходимость в метках Нет Да
Основная логика Минимизация расстояния до центроидов кластеров Голосование ближайших соседей