Skip to content

Commit 1077121

Browse files
committed
Add chapter on Dimensionality Reduction and Clustering
1 parent 6162a15 commit 1077121

3 files changed

Lines changed: 121 additions & 1 deletion

File tree

src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- [Линейная регрессия](./linear-regression.md)
1010
- [Логистическая регрессия и деревья](./logistic-regression-and-trees.md)
1111
- [Случайный лес и градиентный бустинг](./random-forest-and-gradient-boosting.md)
12+
- [Понижение размерности и кластеризация](./dimensionality-reduction-and-clustering.md)
1213

1314
# Работаем самостоятельно
1415

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# Понижение размерности. Кластеризация
2+
3+
В данной главе рассматриваются методы работы с данными, направленные на уменьшение количества признаков при сохранении структуры данных (понижение размерности), а также методы автоматического grouping объектов без учителя (кластеризация). Мы изучим метод главных компонент (PCA), t-SNE, алгоритмы k-средних, иерархическую кластеризацию и DBSCAN.
4+
5+
## 1. Понижение размерности
6+
7+
### Основная идея
8+
Главная задача понижения размерности — сохранить расстояния между точками при переходе к пространству меньшей размерности. Точки, которые были близкими (или далёкими) в пространстве высокой размерности, должны оставаться близкими (или далёкими) в пространстве меньшей размерности.
9+
10+
### Метод главных компонент (PCA)
11+
Простое отрезание оси пространства почти всегда не оптимально: в худшем случае проекция превратится в точку.
12+
13+
**Основная концепция:**
14+
1. Предполагается, что данные описываются неким эллипсом.
15+
2. Меняется базис пространства.
16+
3. Отрезается «новая ось» с минимальной дисперсией.
17+
4. Чтобы посчитать «потерянную информацию», делят дисперсию отрезанной оси на сумму дисперсий по всем осям.
18+
19+
**Вычисления:**
20+
Ковариация признаков вычисляется по формуле:
21+
$$cov(X_i, X_j) = M[(X_i - M[X_i])(X_j - M[X_j])] = M[X_i X_j] - M[X_i]M[X_j]$$
22+
23+
Выборку можно переместить так, чтобы математическое ожидание $M[X_i] = 0$. В матричном виде ковариация:
24+
$$cov(X) = X^T X$$
25+
26+
Свойства:
27+
* Ковариация симметрична.
28+
* Ковариация признака с самим собой равна его дисперсии.
29+
* Направление оси с максимальной дисперсией совпадает с направлением собственного вектора с максимальным собственным значением.
30+
* Собственное значение в этом случае равно дисперсии.
31+
32+
**Ограничения PCA:**
33+
* Необходимо стандартизировать выборку.
34+
* Не работает со сложными структурами, не похожими на эллипс.
35+
36+
### t-SNE (t-Distributed Stochastic Neighbor Embedding)
37+
38+
**Физический смысл:**
39+
1. Данные из пространства размерности $N$ помещаются в пространство меньшей размерности $M$ (отображение).
40+
2. Объекты «прибиваются гвоздями» к своим местам.
41+
3. Объекты в пространстве $M$ соединяются пружинками. Сила пружины зависит от того, насколько расстояние в пространстве $M$ отличается от расстояния в пространстве $N$.
42+
4. Система «отпускается» (гвозди убираются).
43+
44+
**Динамика:**
45+
* Если точки в пространстве $M$ дальше, чем в пространстве $N$, то они притягиваются.
46+
* Если точки в пространстве $M$ ближе, чем в пространстве $N$, то они отталкиваются.
47+
48+
**Математическое описание:**
49+
Пусть $\|x_i - x_j\|$ — расстояние в исходном пространстве, $\|y_i - y_j\|$ — расстояние в пространстве отображения.
50+
51+
Условное сходство (Гауссово распределение):
52+
$$p_{j|i} = \frac{e^{-\|x_i - x_j\|^2 / 2\sigma_i^2}}{\sum_{k \neq i} e^{-\|x_i - x_k\|^2 / 2\sigma_i^2}}$$
53+
где $\sigma_i^2$ — дисперсия распределения Гаусса вокруг точки $x_i$. Разные распределения берутся для точек в плотных и разреженных участках.
54+
55+
Симметричное сходство:
56+
$$p_{ji} = \frac{p_{j|i} + p_{i|j}}{2N}$$
57+
58+
В пространстве меньшей размерности используется не Гауссово, а распределение Стьюдента с одной степенью свободы (t-distribution):
59+
$$q_{ij} = \frac{t(\|y_i - y_j\|)}{\sum_{k \neq i} t(\|y_i - y_k\|)}, \text{ где } t(x) = \frac{1}{1 + x^2}$$
60+
61+
**Оптимизация:**
62+
Необходимо приблизить матрицу сходства отображения к матрице исходного пространства. Минимизируется расстояние Кульбака-Лейблера:
63+
$$KL(P||Q) = \sum_{i,j} p_{ij} \log \frac{p_{ij}}{q_{ij}} \to \min$$
64+
65+
Минимизация производится методом градиентного спуска. Градиент является совокупностью всех сил, действующих на объект:
66+
$$\frac{\partial KL(P||Q)}{\partial y_i} = 4 \sum_j (p_{ij} - q_{ij}) t(\|x_i - x_j\|) u_{ij}$$
67+
где $u_{ij}$ — единичный вектор.
68+
69+
**Почему t-distribution?**
70+
При понижении размерности максимальные расстояния «меняются». Если использовать распределение Гаусса, то точки отображаются очень скученно (crowding problem).
71+
72+
**Особенности t-SNE:**
73+
* Работает со сложными структурами.
74+
* При появлении новых данных нет возможности просто спроецировать их. Нужно либо полностью переобучаться, либо использовать «хитрости» (например, k-nn).
75+
* Долго считать. Можно брать не все точки, а только ближайших соседей.
76+
* Если брать мало соседей, t-SNE больше учитывает локальные паттерны.
77+
* Если брать много соседей, t-SNE больше учитывает глобальные паттерны.
78+
79+
### Autoencoders
80+
...
81+
82+
## 2. Кластеризация
83+
84+
### k-средних (k-means)
85+
Алгоритм заключается в следующем:
86+
1. Задать количество кластеров.
87+
2. Бросить случайным образом точки (центроиды) в пространстве.
88+
3. Для каждой точки посчитать, к какому центроиду она ближе.
89+
4. Передвинуть каждый центроид в «центры масс» подвыборки, принадлежащих этому центроиду.
90+
5. Повторять пункты 3-4 фиксированное число раз, или пока перемещение центроидов не будет достаточно маленьким (алгоритм сойдётся).
91+
92+
**Особенности и ограничения:**
93+
* Нужно задавать количество кластеров. Для подбора можно смотреть на сумму расстояний от точек до центров кластеров. Если сумма перестаёт резко падать, можно останавливаться.
94+
* Чувствителен к начальным случайным значениям.
95+
* Есть ограничения на форму кластеров.
96+
* Требует много вычислений.
97+
98+
### Агломеративная (иерархическая) кластеризация
99+
Алгоритм «снизу-вверх»:
100+
1. Сначала каждая точка — центр своего кластера.
101+
2. Считаем попарные расстояния между центрами кластеров.
102+
3. Склеиваем пару ближайших кластеров в новый кластер и пересчитываем его центр.
103+
4. Повторяем пункты 2-3, пока не склеим все в один кластер.
104+
105+
### DBSCAN
106+
Алгоритм, основанный на плотности:
107+
1. Берём случайную точку.
108+
2. Если у неё меньше $N$ соседей, то помечаем её как потенциальный выброс (noise point), и берём другую точку.
109+
3. Если соседей больше $N$:
110+
* Заводим новый кластер и помещаем точку (core point) в него.
111+
* Если сосед — потенциальный выброс или у него мало соседей, то это край кластера (border point). Заносим его в кластер и идём к другому соседу.
112+
* Если у соседа достаточно его собственных соседей, то добавляем его в кластер (core point), а его соседей заносим в очередь обхода.
113+
4. Повторяем пункты 1-3.
114+
5. Выбросы выделяем в отдельный кластер.
115+
116+
## 3. Заключение
117+
В данной главе были рассмотрены ключевые методы уменьшения размерности данных и методы кластеризации без учителя.
118+
119+
В следующих лекциях планируется рассмотрение нейронных сетей.

src/random-forest-and-gradient-boosting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Глава 4. Деревья. Случайный лес. Градиентный бустинг
1+
# Деревья. Случайный лес. Градиентный бустинг
22

33
## Введение
44
В данной главе рассматриваются методы анализа больших массивов данных, основанные на деревьях решений и их ансамблях. Мы изучим регрессионные деревья, проблему смещения и разброса (bias-variance), а также методы объединения моделей: бэггинг (Bagging), случайный лес (Random Forest) и бустинг (Boosting), включая градиентный бустинг.

0 commit comments

Comments
 (0)