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