vault backup: 2026-05-07 15:52:15

This commit is contained in:
Dmitry
2026-05-07 15:52:15 +03:00
parent 4433e1b253
commit 8ab1121ffc
4 changed files with 202 additions and 111 deletions
@@ -1,16 +1,19 @@
---
status: seed
status: processing
type: concept
tags:
- ml
- machine-learning
- linear-models
- regression
- classification
created: 2026-02-26
updated: 2026-02-27
title: Линейные Модели
updated: 2026-05-07
title: Линейные модели
---
# Линейные Модели
# Линейные модели
## Общее Представление О Линейных Моделях
## Общее представление о линейных моделях
**Линейные модели** являются одним из наиболее фундаментальных и широко используемых типов моделей машинного обучения. Они основаны на идее, что взаимосвязь между фичами и таргетом является **линейной**.
@@ -46,7 +49,7 @@ $$Q = \{(x_i, y_i)\}_{i=1}^n =\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\}$$
* $m$ - количество признаков
* $n$ - размер выборки
Необходимо построить модель, восстанавливающую зависить $y$ от $x$:
Необходимо построить модель, восстанавливающую зависимость $y$ от $x$:
$$y=f(x)$$
### Общая Идея
@@ -55,7 +58,7 @@ $$y=f(x)$$
$$f(x) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_m x_m$$
То есть прогнозы модели $\hat{y}$ будут строится на основе этой функции:
То есть прогнозы модели $\hat{y}$ будут строиться на основе этой функции:
$$\hat{y} = f(x)= \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + ... + \beta_m x_{m} = \beta_0 + \sum_{j=1}^m \beta_j \cdot x_{j}$$
@@ -872,9 +875,9 @@ $$\nabla L(\beta) = \frac{2}{n} \cdot X^T(X \cdot \beta - y)$$
#### Градиентный Спуск: Пример Рассчетов И Реализации *
#### Градиентный Спуск: Пример Расчётов И Реализации *
> В целях экономии ручных рассчетов реализации ниже опущен коэффициент $\frac{2}{n}$, так как он не влияет на сходимость, алгоритм в любом случае сходится к точке минимума просто за бОльшее количество итераций. Добавлять его или нет - ваш выбор. В реализации градиентного спуска в sklearn данный коэффициент учитывается при рассчете.
> В целях экономии ручных расчётов в реализации ниже опущен коэффициент $\frac{2}{n}$, так как он не влияет на направление сходимости: алгоритм всё равно движется к точке минимума, просто с другим масштабом шага. В реализации градиентного спуска в sklearn данный коэффициент учитывается при расчёте.
Для иллюстрации работы алгоритма приведем пример вычислений нескольких итераций градиентного спуска для случая поиска коэффициентов линейной регрессии
@@ -2064,7 +2067,9 @@ $$\sigma(z) = \frac{e^z}{1+e^z} = \frac{1}{1 + e^{-z}}$$
* Значения сигмоиды $\sigma(z)$ лежат в диапазоне от $0$ до $1$.
* Функция $\sigma(z) \rightarrow 0$ при $z \rightarrow -∞$ и $\sigma(z) \rightarrow 1$ при $z \rightarrow +∞$
* $\sigma(z) < 0.5$ при $z < 0$, $\sigma(z) > 0.5$ при $z>0$ и $\sigma(z) = 0.5$ при $z=0$.
* Сигмоида имеет очень простую и легко вычисляемую производную: $$\frac{d\sigma(z)}{dz} = \sigma(z)(1-\sigma(z))$$То есть, если значение сигмоиды в определенной точке уже вычислено, то мы можем использовать это же значение для рассчета значения производной (градиента) в этой же точке. Это сильно упрощает рассчеты.
* Сигмоида имеет очень простую и легко вычисляемую производную:
$$\frac{d\sigma(z)}{dz} = \sigma(z)(1-\sigma(z))$$
То есть, если значение сигмоиды в определенной точке уже вычислено, то мы можем использовать это же значение для расчёта значения производной (градиента) в этой же точке. Это сильно упрощает расчёты.
**А теперь гвоздь программы:**
@@ -2233,7 +2238,7 @@ $$z = \beta ⋅ x = \beta_0 + \beta_1 \cdot x_{1} + \beta_2 \cdot x_{2} + \beta_
> **Правдоподобие** — это оценка того, насколько вероятно получить истинное значение целевой переменной $y$ при данных $x$ и параметрах $\beta$.
Цель метода — найти такие параметры , в которых наблюдается максимум функции правдоподобия. Но для упрощения математических рассчетов для поиска используется не само правдоподобие, а его логарифм.
Цель метода — найти такие параметры, при которых наблюдается максимум функции правдоподобия. Но для упрощения математических расчётов для поиска используется не само правдоподобие, а его логарифм.
Приведем конечный вид формулы логарифмического правдоподобия для случая бинарной классификации. Вывод формулы и описание метода можно найти [здесь](https://kuleshov-group.github.io/aml-book/contents/lecture4-classification.html#maximum-likelihood).
@@ -2366,7 +2371,7 @@ $$\beta^{(k+1)} = \beta^{(k)} - \eta \nabla L(\beta^{(k)})$$
$$\nabla L(\beta) = - \frac{1}{n} X^T(\sigma(X \cdot \beta) - y)$$
Для того, чтобы повысить шанс пройти мимо локальных минимумов функции потерь, используется не сам градиентный спуск, а его модификации: например,стохастический градиентный спуск (SGD).
Для того, чтобы повысить шанс пройти мимо локальных минимумов функции потерь, используется не сам градиентный спуск, а его модификации: например, стохастический градиентный спуск (SGD).
Помним, что применение градиентного спуска требует предварительного масштабирования данных (стандартизации/нормализации). В реализации логистической регрессии в sklearn предусмотрено ещё несколько методов оптимизации, для которых масштабирование не обязательно. О них мы упомянем в практической части модуля.
@@ -2935,12 +2940,6 @@ print(metrics.classification_report(y, y_pred))
Для мультиклассовой классификации к отчёту просто добавляется новая строка, соответствующая третьему классу.
Из отчёта видно, что наша модель идеально решила задачу классификации (все метрики равны 1), то есть классы оказались линейно разделимыми.
Для мультиклассовой классификации к отчёту просто добавляется новая строка, соответствующая третьему классу.
Из отчёта видно, что наша модель идеально решила задачу классификации (все метрики равны 1), то есть классы оказались линейно разделимыми.
@@ -2965,6 +2964,8 @@ print(metrics.classification_report(y, y_pred))
* [Учебник по машинному обучению от Яндекса](https://education.yandex.ru/handbook/ml/article/linear-models) (0 кода, но много математики и красивых картинок)
## Связанные заметки
- [[Нейронные сети]] — персептрон и логистическая регрессия используют ту же идею линейной комбинации признаков и весов
- [[Обратное распространение ошибки]] — градиентный спуск и цепное правило обобщают идею оптимизации параметров на многослойные сети
- [[Принципы дискриминантного анализа]] — статистическая формализация той же задачи классификации; обучающая выборка + матрица "объект-свойство" = постановка задачи ML
- [[Функция потерь]] — C → min в ДА и MSE → min в МНК — один и тот же принцип минимизации ошибки классификации
- [[Постановка задачи снижения размерности признакового пространства]] — PCA как предобработка перед линейными моделями