bannerbanner
Алгоритмы машинного обучения: базовый курс
Алгоритмы машинного обучения: базовый курс

Полная версия

Алгоритмы машинного обучения: базовый курс

Язык: Русский
Год издания: 2025
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
7 из 7

Почему нужна регуляризация?

Рассмотрим пример: у нас есть модель линейной регрессии, которая предсказывает стоимость квартиры на основе площади, количества комнат и удаленности от центра. Если данные содержат шум или признаки сильно скоррелированы, модель может присвоить слишком большие веса несущественным параметрам, что приведет к переобучению.

Регуляризация помогает сгладить влияние отдельных признаков, контролируя их коэффициенты, и делает модель более устойчивой.


Ridge-регуляризация (L2)

Ridge-регуляризация, также называемая L2-регуляризацией, накладывает штраф на сумму квадратов коэффициентов модели. Это не дает им становиться слишком большими и помогает справиться с многоколоинейностью (сильной зависимостью между признаками).

L2-регуляризация полезна, если у вас есть много признаков и вы не хотите отбрасывать ни один из них, но хотите уменьшить их влияние.

Пример: Ridge-регрессия на данных о квартирах

```python

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.linear_model import Ridge

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

from sklearn.metrics import mean_absolute_error

# Создаем искусственные данные

data = {

'Площадь': [30, 45, 50, 60, 75, 90, 110, 150, 200, 250],

'Комнат': [1, 1, 2, 2, 3, 3, 4, 5, 6, 7],

'Удаленность_от_центра': [10, 8, 7, 5, 4, 3, 2, 1, 1, 1],

'Цена': [3.5, 5.0, 6.0, 7.5, 9.0, 11.0, 13.5, 18.0, 24.0, 30.0]

}

df = pd.DataFrame(data)

# Разделяем на признаки (X) и целевую переменную (y)

X = df[['Площадь', 'Комнат', 'Удаленность_от_центра']]

y = df['Цена']

# Нормализация признаков

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

# Разделение на обучающую и тестовую выборки

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# Обучение модели Ridge-регрессии с коэффициентом регуляризации alpha=1.0

ridge_model = Ridge(alpha=1.0)

ridge_model.fit(X_train, y_train)

# Предсказание

y_pred = ridge_model.predict(X_test)

# Оценка качества модели

mae = mean_absolute_error(y_test, y_pred)

print(f"Средняя абсолютная ошибка (MAE): {mae:.2f}")

# Визуализация коэффициентов

ridge_coefs = ridge_model.coef_

plt.bar(['Площадь', 'Комнат', 'Удаленность_от_центра'], ridge_coefs)

plt.xlabel("Признаки")

plt.ylabel("Коэффициенты модели")

plt.title("Влияние факторов в Ridge-регрессии")

plt.show()

```

Вывод: Ridge-регрессия уменьшает значения коэффициентов, но не обнуляет их. Это делает модель устойчивой к переобучению.


Lasso-регуляризация (L1)

Lasso-регуляризация, или L1-регуляризация, добавляет штраф за сумму абсолютных значений коэффициентов. В отличие от Ridge, она не просто уменьшает их, но может полностью занулить некоторые из них, что приводит к отбору наиболее важных признаков.

L1-регуляризация полезна, если среди признаков много незначимых, и модель должна автоматически их исключить.

Пример: Lasso-регрессия на тех же данных

```python

from sklearn.linear_model import Lasso

# Обучение модели Lasso-регрессии

lasso_model = Lasso(alpha=0.1)

lasso_model.fit(X_train, y_train)

# Предсказание

y_pred = lasso_model.predict(X_test)

# Оценка модели

mae = mean_absolute_error(y_test, y_pred)

print(f"Средняя абсолютная ошибка (MAE): {mae:.2f}")

# Визуализация коэффициентов

lasso_coefs = lasso_model.coef_

plt.bar(['Площадь', 'Комнат', 'Удаленность_от_центра'], lasso_coefs)

plt.xlabel("Признаки")

plt.ylabel("Коэффициенты модели")

plt.title("Влияние факторов в Lasso-регрессии")

plt.show()

```

Вывод: если один из коэффициентов оказался нулевым, значит, Lasso-регрессия сочла этот признак незначимым и удалила его. Это делает ее полезной для отбора признаков.

Сравнение Ridge и Lasso

Выводы

1. Обе регуляризации помогают бороться с переобучением. Если модель слишком сильно запоминает обучающую выборку, это может ухудшить ее способность обобщать данные.

2. Ridge (L2) снижает веса признаков, но не обнуляет их, что делает его полезным, когда все признаки имеют значение.

3. Lasso (L1) может занулять некоторые коэффициенты, позволяя автоматически исключать ненужные признаки.

4. Если не уверены, какую регуляризацию выбрать, попробуйте обе и оцените качество модели с помощью кросс-валидации.

Регуляризация – инструмент, который делает линейные модели более устойчивыми и удобными для работы, особенно при большом количестве признаков.


Проблемы переобучения

Когда модель машинного обучения показывает отличные результаты на тренировочных данных, но плохо работает на новых примерах, это называется переобучением. Такая модель не способна выявлять общие закономерности, а лишь запоминает конкретные примеры, что приводит к низкой обобщающей способности.

Переобучение возникает, когда модель слишком сложная для имеющихся данных. Например, если в модели слишком много параметров, она может запомнить все нюансы обучающего набора, включая случайные шумы и выбросы. Это приводит к тому, что при работе с новыми данными модель делает ошибочные предсказания, поскольку не может применить знания в более широком контексте.

Одним из основных признаков переобучения является большая разница между ошибками на тренировочных и тестовых данных. Если ошибка на тренировочной выборке очень мала, но на тестовой – велика, значит, модель слишком точно подстроилась под обучающие данные, но не научилась решать задачу в общем смысле.

Одной из причин переобучения может быть избыточное количество признаков. Если их слишком много, модель начинает искать зависимости даже там, где их нет. Например, в задаче предсказания стоимости квартиры можно добавить случайный параметр, например, число букв в названии ближайшего магазина. Если модель окажется слишком гибкой, она может решить, что этот параметр влияет на цену, и будет использовать его в предсказаниях, хотя на самом деле никакой связи нет.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Конец ознакомительного фрагмента
Купить и скачать всю книгу
На страницу:
7 из 7