Skip to content

Commit ac6f6af

Browse files
committed
Add log regression and trees
1 parent efa432a commit ac6f6af

2 files changed

Lines changed: 280 additions & 0 deletions

File tree

src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- [Введение](./overview.md)
88
- [Метрические алгоритмы](./metric-algo.md)
99
- [Линейная регрессия](./linear-regression.md)
10+
- [Логистическая регрессия](./logistic-regression-and-trees.md)
1011

1112
# Работаем самостоятельно
1213

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
# Логистическая регрессия и Деревья решений
2+
3+
В этой главе мы рассмотрим одни из фундаментальных методов машинного обучения для задач классификации: логистическую регрессию и деревья решений.
4+
Также мы подробно разберем метрики качества, необходимые для оценки работы классификаторов, так как стандартная точность (accuracy) не всегда отражает реальную эффективность модели.
5+
6+
## 3.1. Линейные классификаторы и Логистическая регрессия
7+
8+
### От линейной функции к вероятности
9+
10+
Линейный классификатор строит решающую границу в виде гиперплоскости. Для объекта с признаками $x$ модель вычисляет линейную комбинацию:
11+
12+
$$
13+
f(x) = w_1 x_1 + w_2 x_2 + ... + w_0 = w^T x
14+
$$
15+
16+
В простейшем случае класс предсказывается через знак функции:
17+
$$
18+
\hat{y}_i = \text{sign}(f(x_i)) =
19+
\begin{cases}
20+
1, & f(x_i) \geq 0 \\
21+
-1, & f(x_i) < 0
22+
\end{cases}
23+
$$
24+
25+
Однако для многих задач важно получить не просто класс, а **вероятность** принадлежности к классу.
26+
Возникает проблема: значение $f(x)$ лежит в диапазоне $(-\infty, +\infty)$,
27+
а вероятность $p$ должна быть в диапазоне $[0, 1]$.
28+
29+
Чтобы преобразовать линейный отклик в вероятность, используется следующая цепочка рассуждений:
30+
1. Рассмотрим вероятность положительного класса $p_+ = P(y=1|x)$.
31+
2. Преобразуем вероятность в **шанс** (Odds Ratio):
32+
$$
33+
OR = \frac{p_+}{1 - p_+} \in [0, +\infty)
34+
$$
35+
3. Прологарифмируем шанс, чтобы получить диапазон $(-\infty, +\infty)$:
36+
$$
37+
\log(OR) = \log\left(\frac{p_+}{1 - p_+}\right) = f(x)
38+
$$
39+
40+
Выразим вероятность $p_+$ из этого уравнения:
41+
$$
42+
\frac{p_+}{1 - p_+} = e^{f(x)} \implies p_+ = e^{f(x)} - p_+ e^{f(x)} \implies p_+(1 + e^{f(x)}) = e^{f(x)}
43+
$$
44+
45+
Итоговая формула для вероятности (сигмоида):
46+
$$
47+
p_+ = \frac{e^{f(x)}}{1 + e^{f(x)}} = \frac{1}{1 + e^{-f(x)}} = \sigma(f(x))
48+
$$
49+
50+
Таким образом, логистическая регрессия моделирует вероятность принадлежности к классу через сигмоидальную функцию от линейной комбинации признаков.
51+
52+
### Понятие отступа (Margin)
53+
54+
Для анализа качества классификации вводится понятие **отступа** (margin) на $i$-м объекте:
55+
56+
$$
57+
M_i = y_i f(x_i) = y_i w^T x_i
58+
$$
59+
60+
где $y_i \in \{-1, +1\}$ — истинная метка класса.
61+
62+
**Интерпретация отступа:**
63+
- $M_i > 0$ — объект классифицирован верно ($y_i = \hat{y}_i$)
64+
- $M_i \leq 0$ — объект классифицирован неверно ($y_i \neq \hat{y}_i$)
65+
66+
**Примеры:**
67+
| $y_i$ | $f(x_i)$ | $M_i = y_i f(x_i)$ | Результат |
68+
|-------|----------|-------------------|-----------|
69+
| +1 | +6 | +6 | Верно, уверенно |
70+
| +1 | -6 | -6 | Ошибка |
71+
| -1 | -6 | +6 | Верно, уверенно |
72+
| -1 | +6 | -6 | Ошибка |
73+
74+
Чем больше положительный отступ, тем более «уверенно» модель относит объект к правильному классу.
75+
Это понятие лежит в основе многих функций потерь, включая log loss.
76+
77+
### Задача оптимизации: Log Loss
78+
79+
Для обучения модели необходимо подобрать веса $w$, максимизирующие правдоподобие данных.
80+
Предположим, что объекты независимы и одинаково распределены (i.i.d.).
81+
82+
Вероятность правильного предсказания для объекта $i$ с меткой $y_i \in \{-1, 1\}$:
83+
$$
84+
P(y_i | x_i, w) = \sigma(y_i w^T x_i) = \sigma(M_i)
85+
$$
86+
87+
Функция правдоподобия для всей выборки:
88+
$$
89+
P(Y | X, w) = \prod_{i=1}^{N} \sigma(y_i w^T x_i) \to \max
90+
$$
91+
92+
Для удобства оптимизации перейдем к логарифму правдоподобия:
93+
$$
94+
\sum_{i=1}^{N} \log \sigma(y_i w^T x_i) \to \max
95+
$$
96+
97+
Подставив определение сигмоиды $\sigma(z) = \frac{1}{1 + e^{-z}}$, получим:
98+
$$
99+
\sum_{i=1}^{N} \log \frac{1}{1 + e^{-y_i w^T x_i}} = - \sum_{i=1}^{N} \log (1 + e^{-y_i w^T x_i}) \to \max
100+
$$
101+
102+
Задача максимизации логарифма правдоподобия эквивалентна задаче минимизации функции потерь (Log Loss):
103+
$$
104+
\mathcal{L}(w) = \sum_{i=1}^{N} \log (1 + e^{-y_i w^T x_i}) = \sum_{i=1}^{N} \log (1 + e^{-M_i}) \to \min
105+
$$
106+
107+
**Связь с отступом:** Функция log loss штрафует малые и отрицательные отступы.
108+
При $M_i \to +\infty$ потери стремятся к нулю, при $M_i \to -\infty$ — растут линейно.
109+
110+
**Методы оптимизации:**
111+
- Градиентный спуск
112+
- Регуляризация (L1, L2) для борьбы с переобучением, аналогично линейной регрессии
113+
114+
---
115+
116+
## 3.2. Метрики качества классификации
117+
118+
Выбор правильной метрики критически важен, особенно при несбалансированных классах.
119+
120+
### Accuracy и её ограничения
121+
122+
**Accuracy (Доля правильных ответов):**
123+
$$
124+
\text{Accuracy} = \frac{\text{Число верных предсказаний}}{\text{Общее число объектов}}
125+
$$
126+
127+
**Проблема:** Accuracy может вводить в заблуждение на несбалансированных данных.
128+
- Пример: Диагностика редкой болезни.
129+
- 100 000 здоровых, 10 больных.
130+
- Если классификатор всегда предсказывает «здоров», Accuracy = $100000 / 100010 \approx 99.99\%$.
131+
- При этом модель бесполезна, так как не находит ни одного больного.
132+
133+
### Матрица ошибок (Confusion Matrix)
134+
135+
Для детального анализа используется матрица ошибок:
136+
137+
| | Предсказано: 1 (Больной) | Предсказано: 0 (Здоровый) |
138+
| :--- | :---: | :---: |
139+
| **Реально: 1 (Больной)** | **TP** (True Positive) | **FN** (False Negative) |
140+
| **Реально: 0 (Здоровый)** | **FP** (False Positive) | **TN** (True Negative) |
141+
142+
- **TP:** Сколько больных назвали больными.
143+
- **TN:** Сколько здоровых назвали здоровыми.
144+
- **FP:** Сколько здоровых назвали больными (Ошибка I рода).
145+
- **FN:** Сколько больных назвали здоровыми (Ошибка II рода).
146+
147+
$$
148+
\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
149+
$$
150+
151+
### Precision и Recall
152+
153+
Для задач с дисбалансом классов чаще используют Precision и Recall.
154+
155+
1. **Precision (Точность):** Какая доля объектов, названных положительными, действительно является положительными.
156+
$$
157+
\text{Precision} = \frac{TP}{TP + FP}
158+
$$
159+
2. **Recall (Полнота):** Какая доля реальных положительных объектов была найдена моделью.
160+
$$
161+
\text{Recall} = \frac{TP}{TP + FN}
162+
$$
163+
164+
**Пример 1:** Если модель нашла только 1 больного из 10, но не ошиблась на здоровых:
165+
- Precision = $1 / (0 + 1) = 1$ (все найденные — действительно больные).
166+
- Recall = $1 / (1 + 9) = 0.1$ (найден только 10% больных).
167+
168+
**Пример 2:** Поменяем целевой класс — будем искать здоровых (100 000 здоровых, 10 больных):
169+
- Precision = $100000 / (100000 + 9) \approx 0.99991$
170+
- Recall = $100000 / (100000 + 0) = 1$
171+
172+
Это демонстрирует, что выбор положительного класса влияет на интерпретацию метрик.
173+
174+
### F-мера (F-score)
175+
176+
Для баланса между Precision и Recall используется гармоническое среднее — $F_\beta$-мера:
177+
178+
$$
179+
F_\beta = (\beta^2 + 1) \frac{\text{Precision} \times \text{Recall}}{\beta^2 \text{Precision} + \text{Recall}}
180+
$$
181+
182+
Наиболее популярна **F1-мера** ($\beta = 1$):
183+
$$
184+
F_1 = 2 \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
185+
$$
186+
187+
### ROC-кривая и AUC
188+
189+
Многие классификаторы (включая логистическую регрессию) выдают вероятность $p_+ \in [0, 1]$. Порог классификации можно варьировать.
190+
191+
- **TPR (True Positive Rate):** То же самое, что Recall.
192+
$$
193+
\text{TPR} = \frac{TP}{TP + FN}
194+
$$
195+
- **FPR (False Positive Rate):** Доля здоровых, ошибочно названных больными.
196+
$$
197+
\text{FPR} = \frac{FP}{FP + TN}
198+
$$
199+
200+
**ROC-кривая (Receiver Operating Characteristic):** Зависимость TPR от FPR при изменении порога классификации.
201+
202+
**AUC (Area Under Curve):** Площадь под ROC-кривой.
203+
- AUC = 1: Идеальный классификатор.
204+
- AUC = 0.5: Случайное угадывание.
205+
- Чем больше AUC, тем лучше классификатор ранжирует объекты (отделяет положительный класс от отрицательного).
206+
207+
---
208+
209+
## 3.3. Деревья решений (Decision Trees)
210+
211+
Дерево решений — это непараметрический метод, который строит последовательность правил для классификации объектов.
212+
213+
### Принцип построения
214+
215+
Представим, что у нас есть один признак. Мы сортируем объекты по нему и выбираем порог $t$, разделяющий выборку на две части: $L$ (left) и $R$ (right).
216+
217+
Формально, для признака $x_i$ и порога $t_j$:
218+
$$
219+
Q \xrightarrow{x_i < t_j} \begin{cases} L \\ R \end{cases}
220+
$$
221+
222+
Цель разделения — уменьшить разнородность (гетерогенность) в дочерних узлах. Качество разделения оценивается функцией:
223+
$$
224+
G(x_i, t_j) = \frac{|L|}{|Q|} H(L) + \frac{|R|}{|Q|} H(R)
225+
$$
226+
где $H(R)$ — функция неопределенности (impurity) в узле.
227+
228+
### Критерии неопределенности
229+
230+
Пусть $p_0$ и $p_1$ — доли объектов классов 0 и 1 в узле.
231+
232+
1. **Misclassification (Доля ошибок):**
233+
$$
234+
H(R) = 1 - \max(p_0, p_1)
235+
$$
236+
2. **Entropy (Энтропия):**
237+
$$
238+
H(R) = -p_0 \log_2 p_0 - p_1 \log_2 p_1 = - \sum_k p_k \log_2 p_k
239+
$$
240+
3. **Gini (Индекс Джини):**
241+
$$
242+
H(R) = 1 - p_0^2 - p_1^2 = 1 - \sum_k p_k^2
243+
$$
244+
245+
### Когда останавливаться? (Регуляризация)
246+
247+
Если не ограничивать рост дерева, оно переобучится (запомнит каждый объект). Критерии остановки:
248+
- Ограничить максимальную глубину дерева.
249+
- Ограничить минимальное количество объектов в узле для дальнейшего деления.
250+
- Ограничить минимальное количество объектов в листе.
251+
- **Pruning (Обрезка):** Построить большое дерево, а затем «постричь» ветви, которые не дают прироста качества на валидации.
252+
253+
### Плюсы и минусы деревьев решений
254+
255+
**Плюсы:**
256+
- **Интерпретируемость:** Правила легко понять и визуализировать.
257+
- **Масштаб:** Устойчивы к разным масштабам признаков (не требуют нормировки).
258+
- **Пропуски:** Некоторые реализации могут работать с пропусками в данных.
259+
- **Параметры:** Мало гиперпараметров для настройки.
260+
261+
**Минусы:**
262+
- **Шум:** Чувствительны к шуму в данных (склонность к переобучению).
263+
- **Границы:** Разделяющая граница кусочно-линейная (перпендикулярна осям признаков).
264+
- **Нестабильность:** Малое изменение данных может сильно изменить структуру дерева.
265+
- **Экстраполяция:** Не умеют экстраполировать (предсказывать за пределами диапазона обучающей выборки), только интерполируют.
266+
267+
---
268+
269+
## 3.4. Заключение
270+
271+
В этой лекции мы рассмотрели логистическую регрессию как способ получения вероятностных оценок в линейных моделях и разобрали ключевые метрики для оценки качества классификации, такие как Precision, Recall и ROC-AUC.
272+
Важным понятием оказался **отступ (margin)**, который связывает линейный отклик модели с качеством классификации и лежит в основе функции потерь log loss.
273+
274+
Также мы познакомились с деревьями решений — мощным инструментом, который лежит в основе более сложных алгоритмов.
275+
276+
**Что дальше?**
277+
В следующих главах мы рассмотрим:
278+
- Ансамбли деревьев (Random Forest, Gradient Boosting).
279+
- Методы улучшения стабильности и качества деревьев.

0 commit comments

Comments
 (0)