Выбор метрики зависит от типа задачи:

– Для регрессии (предсказание числовых значений, например, стоимости квартиры) применяются метрики, измеряющие разницу между предсказанными и реальными значениями.

– Для классификации (определение принадлежности объекта к одной из категорий, например, спам/не спам) используются метрики, оценивающие долю правильных ответов модели.


Метрики для задач регрессии

В задачах регрессии важно, насколько предсказанные значения близки к реальным. Рассмотрим основные метрики.

Средняя абсолютная ошибка (MAE – Mean Absolute Error)

MAE показывает, насколько в среднем предсказанное значение отличается от реального.

Пример: Если MAE = 50000 рублей, это значит, что в среднем цена квартиры, предсказанная моделью, отличается от настоящей на 50 тысяч рублей.

Как вычисляется:

– Находится разница между каждым предсказанным и реальным значением.

– Берётся абсолютное значение разницы (чтобы ошибки не компенсировали друг друга).

– Все ошибки усредняются.

Пример кода:

```python

from sklearn.metrics import mean_absolute_error

y_real = [3.5, 5.2, 6.8, 7.1, 9.3] # Реальные цены

y_pred = [3.6, 5.0, 7.0, 7.3, 9.5] # Предсказанные цены

mae = mean_absolute_error(y_real, y_pred)

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

```

Среднеквадратичная ошибка (MSE – Mean Squared Error)

MSE похожа на MAE, но ошибки возводятся в квадрат перед усреднением.

Зачем это нужно?

Большие ошибки сильнее наказываются, что помогает модели учитывать случаи, когда предсказание сильно отличается от реального значения. Однако из-за возведения в квадрат ошибка измеряется в других единицах (если предсказываем цену в миллионах рублей, MSE будет в миллионах в квадрате).

Пример кода:

```python

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_real, y_pred)

print(f"Среднеквадратичная ошибка (MSE): {mse:.2f}")

```

Корень из среднеквадратичной ошибки (RMSE – Root Mean Squared Error) RMSE устраняет недостаток MSE: он измеряется в тех же единицах, что и предсказываемая величина. Это делается путем извлечения квадратного корня из MSE.

Пример кода:

```python

rmse = mean_squared_error(y_real, y_pred, squared=False)

print(f"Корень из среднеквадратичной ошибки (RMSE): {rmse:.2f} млн рублей")

```

Коэффициент детерминации (R² – R-squared, "коэффициент объяснённой дисперсии") Показывает, какую долю вариации целевой переменной объясняет модель.

– R² = 1 означает идеальную модель (все точки лежат на линии предсказания).

– R² = 0 значит, что модель предсказывает не лучше случайного угадывания.

– R² < 0 говорит о том, что модель вообще не подходит.

Пример кода:

```python

from sklearn.metrics import r2_score

r2 = r2_score(y_real, y_pred)

print(f"Коэффициент детерминации (R²): {r2:.2f}")

```


Метрики для задач классификации

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

Точность (Accuracy) Показывает, какая доля предсказаний оказалась верной.

Формула:



Пример: Если модель правильно определила 90 писем как "не спам" и 10 как "спам" из 100 писем, точность составит 90%.

Пример кода:

```python

from sklearn.metrics import accuracy_score

y_real = [1, 0, 1, 1, 0, 0, 1, 0, 1, 1] # Истинные метки (1 – спам, 0 – не спам)

y_pred = [1, 0, 1, 0, 0, 0, 1, 0, 1, 1] # Предсказанные моделью метки

accuracy = accuracy_score(y_real, y_pred)

print(f"Точность (Accuracy): {accuracy:.2f}")

```

Недостаток Accuracy:

Если классы сильно несбалансированы (например, 95% данных – это "не спам", а 5% – "спам"), модель может просто всегда предсказывать "не спам" и получать 95% точности, но при этом не распознавать спам.