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

Как происходит оценка ошибки?

1.0 Junior🔥 191 комментариев
#Машинное обучение#Метрики и оценка моделей

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

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

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

Оценка ошибки в машинном обучении

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

Классификация подходов к оценке

1. Метрики для регрессии

Для задач предсказания непрерывных значений используются:

Mean Absolute Error (MAE)

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
# Среднее абсолютное отклонение: (1/n) * sum(|y_true - y_pred|)

Mean Squared Error (MSE)

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)
# Среднеквадратическая ошибка: (1/n) * sum((y_true - y_pred)^2)
# Штрафует большие ошибки сильнее

Root Mean Squared Error (RMSE)

import numpy as np
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
# Корень из MSE, в тех же единицах, что и y

R-squared (R²)

from sklearn.metrics import r2_score
r2 = r2_score(y_true, y_pred)
# Доля дисперсии, объяснённая моделью: от 0 до 1

2. Метрики для классификации

Accuracy

from sklearn.metrics import accuracy_score
acc = accuracy_score(y_true, y_pred)
# (TP + TN) / (TP + TN + FP + FN)
# Не подходит для несбалансированных данных

Precision и Recall

from sklearn.metrics import precision_score, recall_score
precision = precision_score(y_true, y_pred)  # TP / (TP + FP)
recall = recall_score(y_true, y_pred)       # TP / (TP + FN)

F1-score

from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred)
# Среднее гармоническое Precision и Recall

Confusion Matrix

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_true, y_pred)
# Таблица: TP, TN, FP, FN для анализа ошибок

Валидация моделей

Cross-Validation

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print(f"Mean: {scores.mean()}, Std: {scores.std()}")
# Разбивает данные на 5 фолдов и оценивает на каждом

Train/Test Split

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 80% на обучение, 20% на тестирование

ROC-кривая и AUC

from sklearn.metrics import roc_curve, auc
fpr, tpr, _ = roc_curve(y_true, y_scores)
roc_auc = auc(fpr, tpr)
# Показывает trade-off между True Positive Rate и False Positive Rate

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

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred))
# Выводит Precision, Recall, F1 для каждого класса

Ключевые принципы

  • Выбор метрики зависит от задачи: для несбалансированных данных используй F1-score, для регрессии — RMSE
  • Никогда не оценивай на тренировочных данных — это переобучение
  • Используй кросс-валидацию для надежной оценки на малых датасетах
  • Анализируй ошибки, а не только метрики — смотри на confusion matrix и ROC-кривую

Правильная оценка ошибки — основа для построения надежных ML-систем в production.

Как происходит оценка ошибки? | PrepBro