Матрица ошибок (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 и DBSCAN
– Снижение размерности: PCA
– Пример: сегментация данных
В мире машинного обучения многие задачи требуют работы с данными, для которых нет заранее подготовленных ответов. Представьте, что у вас есть огромный массив информации, но вы не знаете, как её структурировать, какие закономерности в ней скрыты и какие группы объектов можно выделить. Именно для таких случаев используется несупервизорное (без учителя) обучение.
В отличие от супервайзного обучения, где модель обучается на размеченных данных (где есть входные параметры и правильные ответы), несупервайзное обучение работает без заранее определённых меток. Оно помогает выявлять скрытые структуры в данных, группировать похожие объекты и уменьшать размерность данных, чтобы упростить их анализ.
В этой главе мы разберём два ключевых направления несупервайзного обучения:
– Кластеризацию, которая позволяет объединять похожие объекты в группы без предварительного знания о них. Мы рассмотрим два популярных алгоритма: K-means, который находит кластеры по заданному числу групп, и DBSCAN, который может выявлять группы любой формы, включая выбросы.
– Снижение размерности, которое помогает упростить анализ данных, убирая лишние признаки. Мы разберём метод PCA (анализ главных компонент), который позволяет визуализировать многомерные данные и находить в них основные закономерности.
В завершение мы рассмотрим практический пример, связанный с сегментацией данных, где продемонстрируем, как несупервайзное обучение может помочь выявить структуру в неразмеченной информации.
Кластеризация – это один из важнейших методов в рамках несупервизорного обучения, который позволяет разделить набор данных на группы, или кластеры, таким образом, что объекты внутри одного кластера схожи между собой, а объекты из разных кластеров – различаются. Этот метод используется, когда мы не знаем заранее, как классифицировать объекты, но хотим понять, есть ли в данных какие-то скрытые структуры или закономерности.