← Назад к вопросам

Приведи пример модели с большой дисперсией

1.0 Junior🔥 171 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Примеры моделей с большой дисперсией

Модели с высокой дисперсией (high variance) — это модели, которые чувствительны к небольшим изменениям в тренировочных данных. Они часто переобучаются (overfitting) и хорошо работают на тренировочном наборе, но плохо на тестовом.

Что такое дисперсия

Дисперсия (Variance) в контексте bias-variance tradeoff показывает, как сильно предсказания модели варьируются при обучении на разных выборках данных. Высокая дисперсия означает, что модель слишком гибкая и адаптируется к конкретным особенностям (шуму) в тренировочных данных.

Практические примеры

1. Дерево решений без ограничений (Decision Tree)

Дерево решений, выращенное до максимальной глубины без pruning, является классическим примером модели с высокой дисперсией:

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# Модель с высокой дисперсией - нет ограничений
high_variance_tree = DecisionTreeClassifier(
    max_depth=None,  # Неограниченная глубина
    min_samples_split=1,  # Каждый узел может быть разбит
    min_samples_leaf=1
)

X, y = make_classification(n_samples=100, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

high_variance_tree.fit(X_train, y_train)
print(f"Train accuracy: {high_variance_tree.score(X_train, y_train)}")  # ~1.0
print(f"Test accuracy: {high_variance_tree.score(X_test, y_test)}")    # ~0.7

Проблема: дерево идеально запоминает тренировочные данные, но не обобщается на новые данные.

2. k-NN с k=1 (Nearest Neighbor)

Модель, которая просто копирует метку ближайшего соседа, имеет максимальную дисперсию:

from sklearn.neighbors import KNeighborsClassifier

# Высокая дисперсия - памятное обучение
knn_high_variance = KNeighborsClassifier(n_neighbors=1)
knn_high_variance.fit(X_train, y_train)

print(f"Train accuracy: {knn_high_variance.score(X_train, y_train)}")  # 1.0
print(f"Test accuracy: {knn_high_variance.score(X_test, y_test)}")    # ~0.6

Любой отступ в данных или шум напрямую влияет на предсказания.

3. Нейронная сеть высокой сложности

Нейросеть с очень большим количеством параметров относительно размера данных:

import torch
import torch.nn as nn

class HighVarianceNetwork(nn.Module):
    def __init__(self, input_size=20):
        super().__init__()
        self.fc1 = nn.Linear(input_size, 256)  # Много параметров
        self.fc2 = nn.Linear(256, 128)
        self.fc3 = nn.Linear(128, 64)
        self.fc4 = nn.Linear(64, 32)
        self.fc5 = nn.Linear(32, 1)
        # Без dropout и других регуляризаций
    
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = torch.relu(self.fc3(x))
        x = torch.relu(self.fc4(x))
        x = torch.sigmoid(self.fc5(x))
        return x

# На 100 семплах такая сеть переобучится

4. Random Forest без ограничений

Основной лес решений, где каждое дерево выращено без ограничений:

from sklearn.ensemble import RandomForestClassifier

# Высокая дисперсия
high_variance_forest = RandomForestClassifier(
    n_estimators=1000,
    max_depth=None,  # Неограниченная глубина деревьев
    min_samples_split=1,
    min_samples_leaf=1,
    max_features='sqrt'
)

Как определить высокую дисперсию

Практический индикатор:

  • Большой разрыв между train и test accuracy
  • Train accuracy близка к 1.0, а test значительно ниже
  • Модель хорошо работает на одном наборе, но плохо на другом

Как бороться с высокой дисперсией

  1. Регуляризация: добавить штраф за сложность модели
  2. Ограничить сложность: max_depth, min_samples_leaf для деревьев
  3. Dropout: для нейросетей
  4. Увеличить объем данных: больше примеров - меньше дисперсия
  5. Ensemble методы: усреднение предсказаний нескольких моделей
  6. Cross-validation: правильная оценка обобщающей способности

Высокая дисперсия — частая проблема при работе с маленькими датасетами или чрезмерно сложными моделями.

Приведи пример модели с большой дисперсией | PrepBro