Метрические методы
Основная идея
Метрические методы основаны на гипотезе компактности: объекты одного класса находятся близко, объекты разных классов — далеко.
Ближайший центроид (Nearest Centroid)
Алгоритм:
Для каждого класса вычисляется центроид (среднее значение признаков).
Новый объект относится к классу, чей центроид ближе.
Плюсы:
- Простота реализации.
- Мало параметров.
- Быстрая классификация.
Минусы:
- Чувствителен к выбросам.
- Подходит только для “колоколообразных” распределений.
Метод k ближайших соседей (kNN)
Алгоритм:
- Храним всю обучающую выборку.
- Для нового объекта находим ( k ) ближайших соседей.
- Класс — наиболее частый среди соседей.
Гиперпараметры:
- ( k ) — число соседей.
- Метрика расстояния.
- Весовая функция.
Особенности:
- Ленивое обучение: модель не обучается заранее, все вычисления происходят при классификации.
- Требует хранения всей выборки.
- Медленный на больших данных.
Весовые обобщения kNN
Можно учитывать не только количество соседей, но и их расстояние до объекта:
[ a(x) = \arg \max \sum_{t=1}^{k} w_t \cdot I[y(x_t) = a] ]
где ( w_t ) — вес, зависящий от расстояния.
Примеры весовых схем:
- Обратное расстояние: ( w_t = \frac{1}{\rho(x, x_t)} )
- Ядерные веса: ( w_t = K\left(\frac{\rho(x, x_t)}{h}\right) )
Регрессия Надарая–Ватсона
Обобщение kNN для регрессии:
[ a(x) = \frac{\sum_{i=1}^{m} w_i(x) y_i}{\sum_{i=1}^{m} w_i(x)} ]
где ( w_i(x) ) — вес, зависящий от расстояния до объекта обучения.
Проблемы метрических методов
-
Зависимость от масштаба признаков
Решение: нормировка (например, StandardScaler). -
Проклятие размерности
В больших размерностях все объекты становятся “одинаково далекими”.
Но на реальных данных есть низкоразмерная структура. -
Медленная классификация
Решение: эффективные структуры данных (KD-tree, Ball tree, HNSW).
Метрики расстояния
- Евклидова: ( \sqrt{\sum (x_i - z_i)^2} )
- Манхэттенская: ( \sum |x_i - z_i| )
- Минковского: ( \left( \sum |x_i - z_i|^p \right)^{1/p} )
- Махаланобиса: учитывает ковариацию признаков.
- Косинусная мера: для текстов и векторов.
- Джаккарда: для множеств.
- DTW (Dynamic Time Warping): для временных рядов.
- Левенштейна: для строк.
Пример: kNN на Python (scikit-learn)
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
model.fit(X_train, y_train)
predictions = model.predict(X_test)
Итог
Метрические методы — простые, интерпретируемые и мощные инструменты, особенно когда:
- Нет явных признаковых описаний.
- Данные имеют геометрическую структуру.
- Нужна быстрая прототипизация.
Главный недостаток — вычислительная сложность на больших данных, но это решается выбором эффективных метрик и структур данных.