← Назад к вопросам
Как происходит оценка ошибки?
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.