Алгоритмы машинного обучения: базовый курс. Тайлер Венс
= 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% точности, но при этом не распознавать спам.
Матрица ошибок (Confusion Matrix)
Показывает, сколько раз модель правильно и неправильно предсказала каждый класс.
```python
from sklearn.metrics import confusion_matrix
conf_matrix = confusion_matrix(y_real, y_pred)
print("Матрица ошибок:\n", conf_matrix)
```
Где:
– `TN` (True Negative) – правильно определённые объекты класса "не спам"
– `TP` (True Positive) – правильно определённые объекты класса "спам"
– `FN` (False Negative) – спам, который модель не распознала
– `FP` (False Positive) – "не спам", ошибочно классифицированный как спам
Precision, Recall, F1-score
Когда классы несбалансированы, точность уже не так важна. Лучше использовать Precision (точность) и Recall (полноту):
– Precision – из всех предсказанных "спам", сколько реально является спамом.
– Recall – из всех реальных "спам", сколько модель нашла.
F1-score – среднее значение Precision и Recall.
Пример кода:
```python
from sklearn.metrics import precision_score, recall_score, f1_score
precision = precision_score(y_real, y_pred)
recall = recall_score(y_real, y_pred)
f1 = f1_score(y_real, y_pred)
print(f"Точность (Precision): {precision:.2f}")
print(f"Полнота (Recall): {recall:.2f}")
print(f"F1-метрика: {f1:.2f}")
```
Выводы:
Выбор метрики зависит от задачи.
– В регрессии лучше всего использовать RMSE или R², если важно понять, насколько модель точна.
– В классификации точность (Accuracy) хороша только при сбалансированных классах. При дисбалансе лучше смотреть на Precision, Recall и F1-score.
Метрики помогают не только оценить качество модели, но и понять, как её можно улучшить, например, добавив новые признаки или изменив параметры алгоритма.
Глава 5. Несувервизорное обучение
– Кластеризация: алгоритмы K-means