Skip to content

Commit 6bf8324

Browse files
committed
Small fixes in knn chapter
1 parent b5d2dfc commit 6bf8324

1 file changed

Lines changed: 67 additions & 81 deletions

File tree

src/metric-algo.md

Lines changed: 67 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,105 @@
1-
# Метрические методы
1+
# Метод k-ближайших соседей (KNN)
22

3-
## Основная идея
3+
## Постановка задачи
44

5-
Метрические методы основаны на **гипотезе компактности**: объекты одного класса находятся близко, объекты разных классов — далеко.
5+
Рассмотрим задачу классификации животных по двум признакам:
6+
- Длина усов
7+
- Длина хвоста
68

7-
---
9+
Для каждого объекта в обучающей выборке известна метка: *кот* или *пёс*. Цель — построить модель, которая по новым измерениям определит класс животного.
810

9-
## Ближайший центроид (Nearest Centroid)
11+
При визуализации данных наблюдается, что объекты одного класса группируются в определённых областях пространства признаков.
1012

11-
**Алгоритм**:
12-
Для каждого класса вычисляется центроид (среднее значение признаков).
13-
Новый объект относится к классу, чей центроид ближе.
13+
## Гипотеза о компактности
1414

15-
**Плюсы**:
16-
- Простота реализации.
17-
- Мало параметров.
18-
- Быстрая классификация.
15+
Основа метода KNN — **гипотеза о компактности**:
1916

20-
**Минусы**:
21-
- Чувствителен к выбросам.
22-
- Подходит только для “колоколообразных” распределений.
17+
> Объекты одного класса расположены «близко» друг к другу в пространстве признаков, а объекты разных классов — «далеко».
2318
24-
---
19+
Эта гипотеза позволяет решать задачу классификации через поиск похожих (близких) объектов в обучающей выборке.
2520

26-
## Метод k ближайших соседей (kNN)
21+
## Алгоритм KNN
2722

28-
**Алгоритм**:
29-
1. Храним всю обучающую выборку.
30-
2. Для нового объекта находим \( k \) ближайших соседей.
31-
3. Класс — наиболее частый среди соседей.
23+
**Определение:**
24+
K-ближайших соседей (K Nearest Neighbors, KNN) — один из самых простых и интуитивно понятных алгоритмов классификации.
3225

33-
**Гиперпараметры**:
34-
- \( k \) — число соседей.
35-
- Метрика расстояния.
36-
- Весовая функция.
26+
**Алгоритм предсказания:**
27+
1. Для нового объекта вычислить расстояние до всех объектов обучающей выборки
28+
2. Выбрать $K$ объектов с наименьшим расстоянием
29+
3. Присвоить объекту класс, который чаще всего встречается среди $K$ соседей (голосование большинства)
3730

38-
**Особенности**:
39-
- **Ленивое обучение**: модель не обучается заранее, все вычисления происходят при классификации.
40-
- Требует хранения всей выборки.
41-
- Медленный на больших данных.
31+
**Гиперпараметр:**
32+
$K$ — количество соседей, участвующих в голосовании. Выбор $K$ влияет на качество модели:
33+
- Малое $K$: модель чувствительна к шуму и выбросам
34+
- Большое $K$: граница решений становится более гладкой, но может потерять локальные особенности
4235

43-
---
36+
## Метрики расстояния
4437

45-
## Весовые обобщения kNN
38+
Для определения «близости» объектов используются различные метрики:
4639

47-
Можно учитывать не только количество соседей, но и их расстояние до объекта:
40+
### Манхэттенское расстояние
41+
$$d(\mathbf{x}, \mathbf{\hat{x}}) = \sum_{i=1}^{N} |x_i - \hat{x}_i|$$
4842

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}$$
5245

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}}$$
5448

55-
**Примеры весовых схем**:
56-
- Обратное расстояние: \( w_t = \frac{1}{\rho(x, x_t)} \)
57-
- Ядерные веса: \( w_t = K\left(\frac{\rho(x, x_t)}{h}\right) \)
49+
**Преимущество косинусного расстояния:** измеряет угол между векторами, а не абсолютную разницу значений. Полезно, когда важна ориентация вектора признаков, а не его длина.
5850

59-
---
51+
## Проблемы и решения
6052

61-
## Регрессия Надарая–Ватсона
53+
### 1. Зависимость от масштаба признаков
6254

63-
Обобщение kNN для регрессии:
55+
**Проблема:**
56+
Если признаки имеют разные масштабы (например, 29 признаков ∈ [0, 1], а один ∈ [0, 1000]), то расстояние будет доминироваться признаком с большим масштабом.
6457

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$)
6861

69-
где \( w_i(x) \) — вес, зависящий от расстояния до объекта обучения.
62+
### 2. Вычислительная сложность
7063

71-
---
64+
**Проблема:**
65+
При большом объёме обучающей выборки ($N$ объектов) поиск ближайших соседей требует $O(N)$ операций сравнения для каждого нового объекта.
7266

73-
## Проблемы метрических методов
67+
**Решение — структуры данных для ускорения поиска:**
68+
- **kD-tree** (k-dimensional tree): дерево разбиения пространства, на каждом уровне разделяющее данные по одному признаку
69+
- **Ball tree**: иерархическая структура на основе гиперсфер
70+
- **HNSW** (Hierarchical Navigable Small World): графовая структура для приближённого поиска ближайших соседей
71+
- **FRiS-Stolp**: метод отбора эталонных объектов для сокращения размера выборки
7472

75-
1. **Зависимость от масштаба признаков**
76-
Решение: нормировка (например, StandardScaler).
73+
### 3. Улучшение голосования
7774

78-
2. **Проклятие размерности**
79-
В больших размерностях все объекты становятся “одинаково далекими”.
80-
Но на реальных данных есть **низкоразмерная структура**.
75+
Вместо простого подсчёта количества соседей каждого класса можно использовать **взвешенное голосование**, где вес соседа обратно пропорционален расстоянию до него:
8176

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)}$$
8478

85-
---
79+
## Свойства модели KNN
8680

87-
## Метрики расстояния
81+
| Аспект | Описание |
82+
|--------|----------|
83+
| **Обучение** | Отсутствует в классическом смысле. Модель «запоминает» всю обучающую выборку |
84+
| **Предсказание** | Вычислительно затратно: требуется рассчитать расстояния до всех объектов выборки |
85+
| **Параметры** | Отсутствуют (модель не имеет обучаемых параметров) |
86+
| **Гиперпараметры** | $K$ (количество соседей), тип метрики расстояния, стратегия взвешивания |
87+
| **Интерпретируемость** | Высокая: решение принимается на основе конкретных похожих объектов |
8888

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 для отбора эталонов
9790

98-
---
91+
Для сокращения вычислительной сложности можно отобрать подмножество наиболее информативных объектов — **эталонов** (столпов).
9992

100-
## Пример: kNN на Python (scikit-learn)
93+
**Критерий качества эталона:**
94+
Объект является хорошим эталоном своего класса, если:
95+
- Объекты его класса расположены максимально близко к нему
96+
- Объекты других классов расположены максимально далеко
10197

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}$$
104100

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$ — до ближайшего объекта чужого класса.
109102

110103
---
111104

112-
## Итог
113-
114-
Метрические методы — простые, интерпретируемые и мощные инструменты, особенно когда:
115-
- Нет явных признаковых описаний.
116-
- Данные имеют геометрическую структуру.
117-
- Нужна быстрая прототипизация.
118-
119-
**Главный недостаток** — вычислительная сложность на больших данных, но это решается выбором эффективных метрик и структур данных.
105+
> В следующих главах: метрики качества моделей машинного обучения, линейная регрессия.

0 commit comments

Comments
 (0)