Алгоритмы машинного обучения: базовый курс. Тайлер Венс

Алгоритмы машинного обучения: базовый курс - Тайлер Венс


Скачать книгу
= 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


Скачать книгу