|
1 | | -# Метрические методы |
| 1 | +# Метод k-ближайших соседей (KNN) |
2 | 2 |
|
3 | | -## Основная идея |
| 3 | +## Постановка задачи |
4 | 4 |
|
5 | | -Метрические методы основаны на **гипотезе компактности**: объекты одного класса находятся близко, объекты разных классов — далеко. |
| 5 | +Рассмотрим задачу классификации животных по двум признакам: |
| 6 | +- Длина усов |
| 7 | +- Длина хвоста |
6 | 8 |
|
7 | | ---- |
| 9 | +Для каждого объекта в обучающей выборке известна метка: *кот* или *пёс*. Цель — построить модель, которая по новым измерениям определит класс животного. |
8 | 10 |
|
9 | | -## Ближайший центроид (Nearest Centroid) |
| 11 | +При визуализации данных наблюдается, что объекты одного класса группируются в определённых областях пространства признаков. |
10 | 12 |
|
11 | | -**Алгоритм**: |
12 | | -Для каждого класса вычисляется центроид (среднее значение признаков). |
13 | | -Новый объект относится к классу, чей центроид ближе. |
| 13 | +## Гипотеза о компактности |
14 | 14 |
|
15 | | -**Плюсы**: |
16 | | -- Простота реализации. |
17 | | -- Мало параметров. |
18 | | -- Быстрая классификация. |
| 15 | +Основа метода KNN — **гипотеза о компактности**: |
19 | 16 |
|
20 | | -**Минусы**: |
21 | | -- Чувствителен к выбросам. |
22 | | -- Подходит только для “колоколообразных” распределений. |
| 17 | +> Объекты одного класса расположены «близко» друг к другу в пространстве признаков, а объекты разных классов — «далеко». |
23 | 18 |
|
24 | | ---- |
| 19 | +Эта гипотеза позволяет решать задачу классификации через поиск похожих (близких) объектов в обучающей выборке. |
25 | 20 |
|
26 | | -## Метод k ближайших соседей (kNN) |
| 21 | +## Алгоритм KNN |
27 | 22 |
|
28 | | -**Алгоритм**: |
29 | | -1. Храним всю обучающую выборку. |
30 | | -2. Для нового объекта находим \( k \) ближайших соседей. |
31 | | -3. Класс — наиболее частый среди соседей. |
| 23 | +**Определение:** |
| 24 | +K-ближайших соседей (K Nearest Neighbors, KNN) — один из самых простых и интуитивно понятных алгоритмов классификации. |
32 | 25 |
|
33 | | -**Гиперпараметры**: |
34 | | -- \( k \) — число соседей. |
35 | | -- Метрика расстояния. |
36 | | -- Весовая функция. |
| 26 | +**Алгоритм предсказания:** |
| 27 | +1. Для нового объекта вычислить расстояние до всех объектов обучающей выборки |
| 28 | +2. Выбрать $K$ объектов с наименьшим расстоянием |
| 29 | +3. Присвоить объекту класс, который чаще всего встречается среди $K$ соседей (голосование большинства) |
37 | 30 |
|
38 | | -**Особенности**: |
39 | | -- **Ленивое обучение**: модель не обучается заранее, все вычисления происходят при классификации. |
40 | | -- Требует хранения всей выборки. |
41 | | -- Медленный на больших данных. |
| 31 | +**Гиперпараметр:** |
| 32 | +$K$ — количество соседей, участвующих в голосовании. Выбор $K$ влияет на качество модели: |
| 33 | +- Малое $K$: модель чувствительна к шуму и выбросам |
| 34 | +- Большое $K$: граница решений становится более гладкой, но может потерять локальные особенности |
42 | 35 |
|
43 | | ---- |
| 36 | +## Метрики расстояния |
44 | 37 |
|
45 | | -## Весовые обобщения kNN |
| 38 | +Для определения «близости» объектов используются различные метрики: |
46 | 39 |
|
47 | | -Можно учитывать не только количество соседей, но и их расстояние до объекта: |
| 40 | +### Манхэттенское расстояние |
| 41 | +$$d(\mathbf{x}, \mathbf{\hat{x}}) = \sum_{i=1}^{N} |x_i - \hat{x}_i|$$ |
48 | 42 |
|
49 | | -\[ |
50 | | -a(x) = \arg \max \sum_{t=1}^{k} w_t \cdot I[y(x_t) = a] |
51 | | -\] |
| 43 | +### Евклидово расстояние |
| 44 | +$$d(\mathbf{x}, \mathbf{\hat{x}}) = \sqrt{\sum_{i=1}^{N} (x_i - \hat{x}_i)^2}$$ |
52 | 45 |
|
53 | | -где \( w_t \) — вес, зависящий от расстояния. |
| 46 | +### Косинусное расстояние |
| 47 | +$$d(\mathbf{x}, \mathbf{\hat{x}}) = 1 - \frac{\sum_{i=1}^{N} x_i \hat{x}_i}{\sqrt{\sum_{i=1}^{N} x_i^2} \cdot \sqrt{\sum_{i=1}^{N} \hat{x}_i^2}}$$ |
54 | 48 |
|
55 | | -**Примеры весовых схем**: |
56 | | -- Обратное расстояние: \( w_t = \frac{1}{\rho(x, x_t)} \) |
57 | | -- Ядерные веса: \( w_t = K\left(\frac{\rho(x, x_t)}{h}\right) \) |
| 49 | +**Преимущество косинусного расстояния:** измеряет угол между векторами, а не абсолютную разницу значений. Полезно, когда важна ориентация вектора признаков, а не его длина. |
58 | 50 |
|
59 | | ---- |
| 51 | +## Проблемы и решения |
60 | 52 |
|
61 | | -## Регрессия Надарая–Ватсона |
| 53 | +### 1. Зависимость от масштаба признаков |
62 | 54 |
|
63 | | -Обобщение kNN для регрессии: |
| 55 | +**Проблема:** |
| 56 | +Если признаки имеют разные масштабы (например, 29 признаков ∈ [0, 1], а один ∈ [0, 1000]), то расстояние будет доминироваться признаком с большим масштабом. |
64 | 57 |
|
65 | | -\[ |
66 | | -a(x) = \frac{\sum_{i=1}^{m} w_i(x) y_i}{\sum_{i=1}^{m} w_i(x)} |
67 | | -\] |
| 58 | +**Решение — нормализация признаков:** |
| 59 | +- Минимакс-нормализация: приведение всех значений к диапазону [0, 1] |
| 60 | +- Стандартизация: приведение к нулевому математическому ожиданию и единичной дисперсии ($\mu = 0, \sigma = 1$) |
68 | 61 |
|
69 | | -где \( w_i(x) \) — вес, зависящий от расстояния до объекта обучения. |
| 62 | +### 2. Вычислительная сложность |
70 | 63 |
|
71 | | ---- |
| 64 | +**Проблема:** |
| 65 | +При большом объёме обучающей выборки ($N$ объектов) поиск ближайших соседей требует $O(N)$ операций сравнения для каждого нового объекта. |
72 | 66 |
|
73 | | -## Проблемы метрических методов |
| 67 | +**Решение — структуры данных для ускорения поиска:** |
| 68 | +- **kD-tree** (k-dimensional tree): дерево разбиения пространства, на каждом уровне разделяющее данные по одному признаку |
| 69 | +- **Ball tree**: иерархическая структура на основе гиперсфер |
| 70 | +- **HNSW** (Hierarchical Navigable Small World): графовая структура для приближённого поиска ближайших соседей |
| 71 | +- **FRiS-Stolp**: метод отбора эталонных объектов для сокращения размера выборки |
74 | 72 |
|
75 | | -1. **Зависимость от масштаба признаков** |
76 | | - Решение: нормировка (например, StandardScaler). |
| 73 | +### 3. Улучшение голосования |
77 | 74 |
|
78 | | -2. **Проклятие размерности** |
79 | | - В больших размерностях все объекты становятся “одинаково далекими”. |
80 | | - Но на реальных данных есть **низкоразмерная структура**. |
| 75 | +Вместо простого подсчёта количества соседей каждого класса можно использовать **взвешенное голосование**, где вес соседа обратно пропорционален расстоянию до него: |
81 | 76 |
|
82 | | -3. **Медленная классификация** |
83 | | - Решение: эффективные структуры данных (KD-tree, Ball tree, HNSW). |
| 77 | +$$\text{вес}_i = \frac{1}{d(\mathbf{x}, \mathbf{x}_i)} \quad \text{или} \quad \text{вес}_i = e^{-d(\mathbf{x}, \mathbf{x}_i)}$$ |
84 | 78 |
|
85 | | ---- |
| 79 | +## Свойства модели KNN |
86 | 80 |
|
87 | | -## Метрики расстояния |
| 81 | +| Аспект | Описание | |
| 82 | +|--------|----------| |
| 83 | +| **Обучение** | Отсутствует в классическом смысле. Модель «запоминает» всю обучающую выборку | |
| 84 | +| **Предсказание** | Вычислительно затратно: требуется рассчитать расстояния до всех объектов выборки | |
| 85 | +| **Параметры** | Отсутствуют (модель не имеет обучаемых параметров) | |
| 86 | +| **Гиперпараметры** | $K$ (количество соседей), тип метрики расстояния, стратегия взвешивания | |
| 87 | +| **Интерпретируемость** | Высокая: решение принимается на основе конкретных похожих объектов | |
88 | 88 |
|
89 | | -- **Евклидова**: \( \sqrt{\sum (x_i - z_i)^2} \) |
90 | | -- **Манхэттенская**: \( \sum |x_i - z_i| \) |
91 | | -- **Минковского**: \( \left( \sum |x_i - z_i|^p \right)^{1/p} \) |
92 | | -- **Махаланобиса**: учитывает ковариацию признаков. |
93 | | -- **Косинусная мера**: для текстов и векторов. |
94 | | -- **Джаккарда**: для множеств. |
95 | | -- **DTW (Dynamic Time Warping)**: для временных рядов. |
96 | | -- **Левенштейна**: для строк. |
| 89 | +## Метод FRiS-Stolp для отбора эталонов |
97 | 90 |
|
98 | | ---- |
| 91 | +Для сокращения вычислительной сложности можно отобрать подмножество наиболее информативных объектов — **эталонов** (столпов). |
99 | 92 |
|
100 | | -## Пример: kNN на Python (scikit-learn) |
| 93 | +**Критерий качества эталона:** |
| 94 | +Объект является хорошим эталоном своего класса, если: |
| 95 | +- Объекты его класса расположены максимально близко к нему |
| 96 | +- Объекты других классов расположены максимально далеко |
101 | 97 |
|
102 | | -```python |
103 | | -from sklearn.neighbors import KNeighborsClassifier |
| 98 | +**Функция FRiS:** |
| 99 | +$$\text{FRiS}(z, a_i, b_i) = \frac{r_2 - r_1}{r_2 + r_1}$$ |
104 | 100 |
|
105 | | -model = KNeighborsClassifier(n_neighbors=5, metric='euclidean') |
106 | | -model.fit(X_train, y_train) |
107 | | -predictions = model.predict(X_test) |
108 | | -``` |
| 101 | +где $r_1$ — расстояние до ближайшего объекта своего класса, $r_2$ — до ближайшего объекта чужого класса. |
109 | 102 |
|
110 | 103 | --- |
111 | 104 |
|
112 | | -## Итог |
113 | | - |
114 | | -Метрические методы — простые, интерпретируемые и мощные инструменты, особенно когда: |
115 | | -- Нет явных признаковых описаний. |
116 | | -- Данные имеют геометрическую структуру. |
117 | | -- Нужна быстрая прототипизация. |
118 | | - |
119 | | -**Главный недостаток** — вычислительная сложность на больших данных, но это решается выбором эффективных метрик и структур данных. |
| 105 | +> В следующих главах: метрики качества моделей машинного обучения, линейная регрессия. |
0 commit comments