Содержание Show
В настоящее время машинное обучение становится неотъемлемой частью различных областей, предоставляя нам мощные инструменты для решения сложных задач. Однако успешная реализация моделей требует не только глубокого понимания алгоритмов, но и осознанного анализа их производительности. В этом контексте, метрики в машинном обучении играют ключевую роль, предоставляя критерии оценки эффективности моделей и их результатов.
В данной статье мы рассмотрим ключевые метрики в машинном обучении, ориентируясь на их принадлежность к определенным типам задач.
Для задач классификации
Accuracy (доля верных ответов)
Accuracy представляет собой простую, но важную метрику, измеряющую, как часто модель дает правильный ответ по отношению ко всем входным данным. Формально она определяется как отношение числа правильных предсказаний к общему числу предсказаний:
[math]\text{Accuracy}(y, y^{pred}) = \frac{1}{N} \sum_{i=1}^N \mathbb{I}[y_i = f(x_i)][/math] | [math]\text{Accuracy} = \frac{\text{Число верных предсказаний}}{\text{Общее число предсказаний}}[/math] |
Где:
[math]N[/math] — общее количество примеров в выборке.
[math]y_i[/math] — истинное значение для (i)-го примера.
[math]f(x_i)[/math] — предсказанное значение для (i)-го примера.
[math]\mathbb{I}[\cdot][/math] — индикаторная функция, которая равна 1, если условие внутри скобок истинно, и 0 в противном случае.
Для той же метрики Accuracy, ее сопряженная метрика — доля ошибочных классификаций, или Error Rate, определяется следующим образом:
[math]\text{Error Rate}(y, \hat{y}) = \frac{1}{N} \sum_{i=1}^N \mathbb{I}[y_i \neq f(x_i)][/math] | [math]\text{Error rate} = 1 — \text{Accuracy}[/math] |
Преимущества метрики Accuracy:
- Простота интерпретации: Accuracy является интуитивно понятной метрикой, которую легко интерпретировать. Она предоставляет ясное представление о том, насколько модель правильно классифицирует данные, что упрощает оценку ее общей производительности.
- Универсальность: Метрика Accuracy может быть применена в различных областях машинного обучения, включая задачи классификации, регрессии и кластеризации. Это делает ее удобной для сравнения производительности различных моделей в разных контекстах.
Ограничения метрики Accuracy:
- Неравномерные классы: В случае, если классы в данных несбалансированы, Accuracy может быть искажена, поскольку она не учитывает дисбаланс между классами. Где класс, который имеет метку «1», определяется как положительный класс, в то время как класс с меткой «0» называется отрицательным классом.
Например, в задаче диагностики редких заболеваний классификатор, предсказывающий всем пациентам отсутствие болезни будет иметь достаточно высокую accuracy просто потому, что больных людей в выборке намного меньше. - Игнорирование ошибок: Accuracy не различает типы ошибок, совершаемых моделью. В некоторых задачах, где определенные ошибки имеют более серьезные последствия, такое игнорирование может быть нежелательным. Для примера снова можно привести задачу медицинской диагностики: если ошибочный положительный диагноз для здорового больного обернётся лишь ещё одним обследованием, то ошибочно отрицательный вердикт может повлечь роковые последствия.
from sklearn.metrics import accuracy_score
true_labels = [1, 0, 1, 1, 0, 1, 0, 1]
predicted_labels = [1, 0, 1, 0, 1, 1, 0, 1]
accuracy = accuracy_score(true_labels, predicted_labels)
print(f"Accuracy: {accuracy}")
Confusion Matrix (Матрица ошибок)
Исторически задача бинарной классификации – это задача об обнаружении чего-то редкого в большом потоке объектов, например, поиск человека, больного туберкулёзом, по флюорографии. Или задача признания пятна на экране приёмника радиолакационной станции бомбардировщиком, представляющем угрозу охраняемому объекту (в противовес стае гусей).
Поэтому класс, который представляет для нас интерес, называется «положительным», а оставшийся – «отрицательным»1.
Confusion Matrix представляет собой таблицу, где строки представляют фактические классы, а столбцы — предсказанные классы. Он делится на четыре основных категории:
- True Negative (TN): Модель предсказала отрицательную метку и угадала.
- False Positive (FP): Модель предсказала положительную метку, но ошиблась в своём предсказании.
- False Negative (FN): Модель предсказала отрицательную метку, но ошиблась.
- True Positive (TP): Модель предсказала положительную метку и угадала.
Характеристики «Positive» и «Negative» относятся к предсказанию, а «True» и «False» — к его правильности.
На основе этих четырех категорий можно вычислить различные метрики, такие как доля верных ответов (Accuracy), точность предсказания положительного класса (Precision), полнота (Recall) и F1-мера (гармоническое среднее между точностью (Precision) и полнотой (Recall)).
1.Доля верных ответов (Accuracy):$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$2. Точность предсказания положительного класса (Precision):$$\text{Precision} = \frac{TP}{TP + FP}$$ 3. Полнота (Recall):$$\text{Recall} = \frac{TP}{TP + FN}$$4. F1-мера:$$\text{F1-Score} = \frac{2 \times Precision \times Recall}{Precision + Recall}$$
Применение в реальных задачах:
Confusion Matrix находит свое применение в различных областях, включая медицину, финансы, и информационные технологии. Например, в медицинских исследованиях он может быть использован для оценки эффективности алгоритмов диагностики, а в финансовых анализах — для предсказания рисков и доходности.
from sklearn.metrics import confusion_matrix
y_true = [1, 0, 1, 1, 0, 1, 0, 1]
y_pred = [1, 0, 1, 0, 1, 1, 0, 1]
# Получаем матрицу ошибок
cm = confusion_matrix(y_true, y_pred)
# Извлекаем значения TP, TN, FP, FN из матрицы ошибок
TP = cm[1, 1] # True Positive
TN = cm[0, 0] # True Negative
FP = cm[0, 1] # False Positive
FN = cm[1, 0] # False Negative
# Выводим результаты
print(f'Confusion Matrix:\n{cm}')
print(f'TN (True Negative): {TN}')
print(f'FP (False Positive): {FP}')
print(f'FN (False Negative): {FN}')
print(f'TP (True Positive): {TP}')
Confusion Matrix:
[[2 1]
[1 4]]
TN (True Negative): 2
FP (False Positive): 1
FN (False Negative): 1
TP (True Positive): 4
Precision (Точность)
Точность — это отношение числа правильно предсказанных положительных примеров к общему числу предсказанных положительных примеров. Формула для расчета точности выглядит следующим образом:$$\text{Precision} = \frac{TP}{TP + FP}$$
Рассмотрим задачу бинарной классификации с примером точности на практике. Представим, что у нас есть модель, обученная определять, является ли электронное письмо спамом или не спамом. После проведения тестирования модели получены следующие результаты:
- 150 электронных писем были правильно определены как спам (True Positives).
- 20 электронных писем были неверно определены как спам (False Positives).
Теперь мы можем использовать эти данные для расчета точности:$$\text{Precision} = \frac{150}{150 + 20} = \frac{150}{170} \approx 0.882$$Таким образом, точность нашей модели в этом конкретном случае составляет примерно 88.2%.
from sklearn.metrics import precision_score
true_positives = 150
false_positives = 20
precision = precision_score(y_true=[1] * true_positives + [0] * false_positives, y_pred=[1] * (true_positives + false_positives))
print(f'Precision: {precision:.3f}')
Precision: 0.882
Recall (Полнота)
Метрика Recall, также известная как полнота, представляет собой важный инструмент для измерения способности модели обнаруживать все положительные примеры в данных. Эта метрика имеет особое значение в ситуациях, где пропускание положительного случая может иметь серьезные последствия, например, в медицинской диагностике или системах безопасности.
Recall измеряет долю всех действительных положительных экземпляров, которые модель способна правильно идентифицировать. Это выражается следующей формулой:$$\text{Recall} = \frac{TP}{TP + FN}$$Проиллюстрируем это на примере медицинского теста на выявление заболевания. Представим, что у нас есть модель машинного обучения, которая разработана для автоматического анализа медицинских изображений, чтобы определять наличие опухолей у пациентов. После обучения модель будет принимать решение о том, есть ли у пациента рак на основе анализа его медицинских изображений.
- True Positive (TP): Это случаи, когда модель правильно определила наличие рака у пациента. Другими словами, это ситуации, когда пациент действительно болен, и модель правильно дала положительный прогноз.
- False Negative (FN): Это случаи, когда модель ошибочно определила, что у пациента нет рака, в то время как на самом деле он болен. Или же в случае медицинских изображений, это ситуации, когда модель не обнаружила опухоль, которая на самом деле есть.
Давайте предположим, что у нас есть [math]100[/math] пациентов с данным заболеванием. Модель обнаружила рак у [math]80[/math] из них (TP), но упустила [math]20[/math] случаев (FN).
Теперь мы можем использовать эти числа для расчета Recall (Полноты):$$\text{Recall} = \frac{TP}{TP + FN} = \frac{80}{80 + 20} = \frac{80}{100} = 0.8$$Итак, Recall в этом случае составляет [math]0.8[/math] или [math]80%[/math]. Это означает, что наша модель способна правильно обнаружить [math]80%[/math] всех случаев заболевания. То есть у нас всего лишь [math]20%[/math] случаев (FN), которые модель упустила.
Баланс между Precision и Recall:
Recall тесно связан с метрикой — Precision (Точность). В реальных сценариях часто требуется достижение баланса между этими двумя метриками. Высокий Recall может привести к увеличению ложных срабатываний, что может быть неприемлемо в некоторых контекстах. Таким образом, важно учитывать обе метрики при оценке моделей.
Хорошее понимание происходящего даёт следующая картинка:
F1-мера (Точность-Полнота)
F1-мера — это метрика, которая объединяет в себе два важных показателя: точность (precision) и полноту (recall). F1-мера вычисляется по следующей формуле:$$\text{F1} = \frac{2 \cdot (precision \cdot recall)}{(precision + recall)}$$F1-мера полезна в случаях, когда у нас есть дисбаланс классов, то есть один из классов встречается гораздо чаще другого. В таких сценариях простое сравнение точности может быть вводящим в заблуждение, поскольку модель может успешно предсказывать доминирующий класс, но плохо справляться с менее представленным классом. F1-мера учитывает обе стороны медали, обеспечивая баланс между точностью и полнотой.
Стоит иметь в виду, что F1-мера предполагает одинаковую важность Precision и Recall, если одна из этих метрик для вас приоритетнее, то можно воспользоваться [math]F_{\beta}[/math] мерой:$$F_{\beta} = (\beta^2 + 1) \frac{Recall \cdot Precision }{Recall + \beta^2Precision}$$Предположим, у нас есть модель машинного обучения, которая классифицирует транзакции на кредитных картах как «фродовые» или «нормальные». Допустим, из [math]10 000[/math] транзакций только [math]100[/math] являются фродовыми, а остальные [math]9 900[/math] — нормальными.
Теперь допустим, что наша модель классифицировала [math]120[/math] транзакций как фродовые. Из них [math]80[/math] транзакций действительно являются фродовыми (True Positives, TP), но остальные [math]40[/math] являются ложноположительными (False Positives, FP). При этом у нашей модели есть [math]20[/math] фродовых транзакций, которые она не распознала (False Negatives, FN).
Теперь мы можем использовать эти числа для вычисления точности (Precision) и полноты (Recall):$$\text{Precision} = \frac{TP}{TP + FP} = \frac{80}{80 + 40} = \frac{80}{120} = 0.67$$$$\text{Recall} = \frac{TP}{TP + FN} = \frac{80}{80 + 20} = \frac{80}{100} = 0.8$$Теперь, используя эти значения, мы можем вычислить F1-меру:$$\text{F1} = \frac{2 \cdot (precision \cdot recall)}{(precision + recall)} = \frac{2 \cdot (0.67 \cdot 0.8)}{(0.67 + 0.8)} \approx 0.727$$Таким образом, F1-мера нашей модели составляет примерно [math]\text{0.727.}[/math] Это показывает нам баланс между точностью и полнотой классификации фродовых транзакций. Более высокое значение F1-меры указывает на более надежную модель, способную хорошо выявлять фродовые транзакции при минимальном количестве ложноположительных и ложноотрицательных результатов.
ROC-AUC (Площадь под ROC-кривой)
ROC-кривая (Receiver Operating Characteristic curve) позволяет оценить качество классификации модели, изображая соотношение между долей истинно положительных классификаций (TPR, True Positive Rate) и долей ложноположительных классификаций (FPR, False Positive Rate) при различных пороговых значениях. TPR известна также как чувствительность, а FPR может быть выражена как 1 — специфичность.
TPR (true positive rate) – это полнота, доля положительных объектов, правильно предсказанных положительными:$$TPR = \frac{TP}{P} = \frac{TP}{TP + FN}$$FPR (false positive rate) – это доля отрицательных объектов, неправильно предсказанных положительными:$$FPR = \frac{FP}{N} = \frac{FP}{FP + TN}$$Обе эти величины растут при уменьшении порога. Кривая в осях TPR/FPR, которая получается при варьировании порога, исторически называется ROC-кривой (receiver operating characteristics curve, сокращённо ROC curve).
AUC (Area Under the Curve) — это площадь под ROC-кривой, которая количественно оценивает общую способность модели правильно классифицировать положительные и отрицательные случаи. Значение AUC находится в диапазоне от 0 до 1, где 1 указывает на идеальную способность модели различать классы, а 0.5 — на отсутствие классификационной способности, эквивалентной случайному угадыванию.
Следующий график поможет вам понять поведение ROC-кривой2
Преимущества использования ROC-AUC
- Универсальность: ROC-AUC можно использовать для оценки моделей с различными пороговыми значениями и для сравнения моделей с разными настройками.
- Устойчивость к изменениям в распределении классов: ROC-AUC остается неизменным при изменении соотношения между классами, что делает его удобным для несбалансированных наборов данных.
- Интуитивно понятная интерпретация: Площадь под кривой предоставляет легко интерпретируемую метрику качества модели.
Пример расчета ROC-AUC
Вы работаете Data Scientist’ом и разрабатываете модель классификации для определения, является ли транзакция мошеннической. По результатам модели у вас есть набор данных с предсказанными вероятностями мошенничества для 10 различных транзакций и фактическими классами этих транзакций (0 — не мошенническая, 1 — мошенническая). Ваша задача — вычислить ROC-AUC для вашей модели на основе этих данных.
№ объекта | вероятность | истинный класс |
---|---|---|
1 | 1 | 1 |
2 | 0.9 | 1 |
3 | 0.8 | 0 |
4 | 0.7 | 1 |
5 | 0.6 | 0 |
6 | 0.5 | 1 |
7 | 0.4 | 0 |
8 | 0.3 | 0 |
9 | 0.2 | 0 |
10 | 0.1 | 0 |
Решение:
Чтобы рассчитать ROC-AUC, необходимо следовать следующим шагам:
- Каждая точка на ROC-кривой соответствует определённому порогу вероятности, при котором классификационное решение меняется от одного класса к другому.
- Порог варьируется от 0 до 1, при этом для каждого порога рассчитывается TPR и FPR.
- Начинаем с порога 1 (ни один объект не классифицируется как положительный), перемещаемся к 0 (все объекты классифицируются как положительные).
- Для каждого порога ставим точку на графике, соответствующую паре (FPR, TPR).
- Соединяем точки линией.
Для построения ROC-кривой, начните с формирования единичного квадрата на плоскости координат. Этот квадрат делится на [math]m[/math] горизонтальных отрезков и [math]n[/math] вертикальных отрезков, соответствующих количеству истинно положительных и истинно отрицательных результатов в тестовом наборе . Таким образом, квадрат структурируется в сетку из [math]m×n[/math] ячеек.
Далее производится анализ упорядоченных по вероятности результатов, причём процедура начинается с нижней левой точки сетки, которая соответствует координатам [math](0, 0)[/math]. При обнаружении истинного положительного результата [math](1)[/math] в данных следует переместиться вверх по сетке, в то время как для истинного отрицательного результата [math](0)[/math] следует сделать шаг вправо. Этот процесс продолжается до тех пор, пока не будут рассмотрены все результаты, что приведёт к достижению верхней правой точки сетки с координатами [math](1, 1)[/math], при этом будет выполнено ровно [math]m[/math] шагов вверх и [math]n[/math] шагов вправо.
Этот путь иллюстрирует способность алгоритма различать классы: чем выше и левее кривая, тем лучше.
Следующий график поможет вам понять как строится ROC-кривая
Log Loss (Логарифмическая потеря)
Логарифмическая потеря представляет собой функцию, измеряющую разницу между фактическими и предсказанными вероятностями классов. В случае бинарной классификации формула Log Loss выглядит следующим образом: $$\text{Log Loss} = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(p_i) + (1 — y_i) \log(1 — p_i) \right)$$где:
- [math]N[/math] — количество наблюдений
- [math]y_i[/math] — фактическая метка класса (0 или 1)
- [math]p_i[/math] — предсказанная вероятность принадлежности к классу 1
Цель модели минимизировать Log Loss, приближая предсказанные вероятности к фактическим.
Давайте представим, что у нас есть модель бинарной классификации, которая предсказывает вероятность того, что пациент болен заболеванием, обозначенным меткой класса 1. У нас есть пять наблюдений:
- Наблюдение 1:
Фактическая метка класса (y) = 1,
Предсказанная вероятность (p) = 0.8 - Наблюдение 2: y = 0, p = 0.3
- Наблюдение 3: y = 1, p = 0.6
- Наблюдение 4: y = 1, p = 0.9
- Наблюдение 5: y = 0, p = 0.2
Мы будем использовать формулу Log Loss для расчета этой метрики. Подставим значения в формулу:$$ \text{Log Loss} = -\frac{1}{5} \left( 1 \cdot \log(0.8) + (1 — 0) \cdot \log(1 — 0.3) + 1 \cdot \log(0.6) + 1 \cdot \log(0.9) + (1 — 0) \cdot \log(1 — 0.2) \right)$$$$ \text{Log Loss} \approx -\frac{1}{5} \left( -0.2231 — 0.3567 — 0.5108 — 0.1054 — 0.2231 \right)$$$$ \text{Log Loss} \approx \frac{1}{5} \cdot 1.4191 $$$$ \text{Log Loss} \approx 0.2838 $$
Таким образом, Log Loss для этой модели и этих пяти наблюдений составляет приблизительно [math]0.2838[/math].
Интерпретация Log Loss:
Log Loss дает представление о том, насколько уверенно модель делает свои прогнозы. Низкое значение Log Loss указывает на точные и уверенные предсказания, тогда как высокое значение свидетельствует о неопределенности и возможных ошибках.
Преимущества использования Log Loss:
- Чувствительность к вероятностям: Log Loss учитывает не только точность предсказанных классов, но и степень уверенности модели в этих предсказаниях.
- Необходимость в вероятностях: Log Loss требует предсказания вероятностей классов, что делает его более информативным по сравнению с другими метриками, такими как accuracy.
Для задач регрессии
MSE, RMSE ((Root ) Mean Squared Error:
(Корень) Средняя квадратичная ошибка)
MSE, или Mean Squared Error, представляет собой метрику, измеряющую среднее значение квадратов разностей между фактическими и предсказанными значениями. Эта метрика широко используется в регрессионных задачах машинного обучения, где основной целью является предсказание непрерывных числовых значений.
Формула MSE выглядит следующим образом:$$\text{MSE}(y^{true}, y^{pred}) = \frac{1}{N} \sum_{i=1}^{N} (y_i — \hat{y}_i)^2$$где:
- [math]N[/math] — количество наблюдений в выборке
- [math]y_i[/math] — фактическое значение
- [math]\hat{y}_i[/math] — предсказанное значение
Интерпретация MSE:
Чем меньше значение MSE, тем лучше. Это свидетельствует о том, что модель лучше приближает фактические данные. Высокое значение MSE указывает на большие различия между фактическими и предсказанными значениями, что может свидетельствовать о неэффективности модели.
Преимущества MSE:
- Чувствительность к ошибкам: MSE учитывает не только наличие ошибок, но и их величину, что делает метрику более чувствительной к большим ошибкам.
- Дифференцируемость: MSE является дифференцируемой функцией, что делает ее удобной для оптимизации с использованием методов градиентного спуска.
Ограничения MSE:
- Чувствительность к выбросам: MSE чувствителен к выбросам в данных, что может привести к искажению результатов, особенно при работе с выборками, содержащими аномалии.
- Неустойчивость к масштабу: MSE не учитывает масштаб данных, что может быть проблемой в случае, когда переменные имеют различные диапазоны значений.
Иногда для того, чтобы показатель эффективности MSE имел размерность исходных данных, из него извлекают квадратный корень и получают показатель эффективности RMSE. $$\text{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^{} (y_i — \hat{y}_i)^2}$$
R² (Коэффициент детерминации)
Коэффициент детерминации [math]R^2[/math] представляет собой меру, используемую в статистике и машинном обучении для оценки качества моделей, особенно в регрессионном анализе. Этот коэффициент обозначает долю дисперсии зависимой переменной, которая объясняется предсказанными значениями модели. В формуле [math]R^2[/math], [math]y_i[/math] — наблюдаемое значение зависимой переменной, [math]f(x_i)[/math] — предсказанное значение, а [math]\bar{y}[/math] — среднее значение зависимой переменной. $$\text{R² } = 1 — \frac{\sum_{i=1}^{N} (y_i — f(x_i))^2}{\sum_{i=1}^{N} (y_i — \bar{y})^2}$$Где:
- [math]N[/math] — количество наблюдений
- [math]y_i[/math] — наблюдаемое значение зависимой переменной
- [math]f(x_i)[/math] — предсказанное значение зависимой переменной по модели
- [math]\bar{y}[/math] — среднее значение зависимой переменной
Интерпретация коэффициента детерминации [math]R^2[/math] предоставляет информацию о том, как хорошо модель соответствует данным. В общих чертах, [math]R^2[/math] равный [math]1[/math] означает, что модель идеально предсказывает данные, а [math]R^2[/math] равный [math]0[/math] означает, что модель не объясняет изменчивость данных лучше, чем простое среднее.
Рассмотрим пример расчета [math]R^2[/math] на основе небольшого набора данных. Допустим, у нас есть следующие данные:
Наблюдение [math]i[/math] | Наблюдаемое значение [math]y_i[/math] | Предсказанное значение [math]f(x_i)[/math] |
---|---|---|
1 | 5 | 6 |
2 | 8 | 8 |
3 | 10 | 12 |
4 | 12 | 10 |
Шаги расчета [math]R^2[/math]:
- Рассчитываем среднее значение [math] \bar{y} [/math]:$$\bar{y} = \frac{5 + 8 + 10 + 12}{4} = \frac{35}{4} = 8.75$$
- Рассчитываем отклонения:
- Для наблюдаемых значений [math](y_i — \bar{y})[/math]
- Для предсказанных значений [math](y_i — f(x_i))[/math]
Наблюдение [math]i[/math] | [math]y_i — \bar{y}[/math] | [math]y_i — f(x_i)[/math] |
---|---|---|
1 | -3.75 | -1 |
2 | -0.75 | 0 |
3 | 1.25 | -2 |
4 | 3.25 | 2 |
- Рассчитываем квадраты отклонений:
- Квадраты для [math] (y_i — \bar{y})^2 [/math]
- Квадраты для [math] (y_i — f(x_i))^2 ) [/math]
Наблюдение [math]i[/math] | [math](y_i — \bar{y})^2[/math] | [math](y_i — f(x_i))^2[/math] |
---|---|---|
1 | 14.0625 | 1 |
2 | 0.5625 | 0 |
3 | 1.5625 | 4 |
4 | 10.5625 | 4 |
- Суммируем квадраты отклонений:
- [math]\sum (y_i — \bar{y})^2 = 14.0625 + 0.5625 + 1.5625 + 10.5625 = 26.75[/math]
- [math]\sum (y_i — f(x_i))^2 = 1 + 0 + 4 + 4 = 9[/math]
- Используем формулу ([math]R^2[/math] ):$$R^2 = 1 — \frac{\sum (y_i — f(x_i))^2}{\sum (y_i — \bar{y})^2} = 1 — \frac{9}{26.75} \approx 0.663$$
Таким образом, [math]R^2 \approx 0.663[/math]. Интерпретация этого значения может быть следующей: примерно [math]66.3%[/math] изменчивости зависимой переменной [math]y[/math] объяснено моделью. Это может указывать на то, что модель хорошо соответствует данным, но также оставляет пространство для улучшений.
MAE (Mean Absolute Error:
Средняя абсолютная ошибка)
MAE представляет собой среднюю абсолютную ошибку между фактическими и прогнозируемыми значениями. Эта метрика измеряет среднее абсолютное отклонение каждого прогноза от соответствующего фактического значения. Формула для расчета MAE выглядит следующим образом:$$\text{MAE}(y^{true}, y^{pred}) = \frac{1}{N}\sum_{i=1}^{N} \left|y_i — f(x_i)\right|$$Интерпретация MAE:
Средняя абсолютная ошибка (MAE) предоставляет информацию о среднем абсолютном отклонении между фактическими и прогнозируемыми значениями в наборе данных. Если MAE равна 0, это указывает на идеальное соответствие прогнозов реальным значениям. Чем выше значение MAE, тем больше ошибок в прогнозах модели. Например, если MAE для модели прогнозирования цен на недвижимость равна 1000, это означает, что модель в среднем ошибается на $1000 при прогнозировании цен.
Различие с MSE:
MAE и MSE — это две разные метрики, используемые для измерения ошибок прогнозирования. Основное различие между ними заключается в том, как они учитывают ошибки.
- Единицы измерения:
- MAE измеряется в тех же единицах, что и исходные данные, что делает ее легко интерпретируемой.
- MSE измеряется в квадрате единиц измерения исходных данных. Например, если мы прогнозируем цены в долларах, MSE измеряется в квадратах долларов.
- Устойчивость к выбросам:
- MAE устойчива к выбросам, так как использует абсолютные значения ошибок. Большие ошибки не усиливаются.
- MSE более чувствителен к выбросам, так как включает квадраты ошибок. Большие ошибки имеют более значительный вклад в общую метрику.
- Чувствительность к масштабу:
- MAE не зависит от масштаба данных, что означает, что она одинаково хорошо работает как для маленьких, так и для больших значений.
- MSE зависит от масштаба данных из-за квадратичной природы, что может привести к проблемам интерпретации и оптимизации.
MAPE (Mean Absolute Percentage Error:
Средняя абсолютная процентная ошибка)
MAPE выражает среднее абсолютное отклонение прогнозируемых значений от фактических значений в процентах, что делает эту метрику очень наглядной для интерпретации результатов.
Когда применяется MAPE:
- MAPE используется тогда, когда нужно измерить среднюю процентную ошибку между прогнозируемыми и реальными значениями. Это делает метрику особенно полезной для бизнес-анализа, где процентные ошибки интуитивно понятны и могут быть напрямую связаны с финансовыми показателями.
- Она подходит для ситуаций, где все истинные значения [math]y_i[/math] далеки от нуля, поскольку деление на маленькие или нулевые значения может привести к очень большим или неопределенным результатам.
Формула MAPE определяется как:$$ \text{MAPE}(y^{\text{true}}, y^{\text{pred}}) = \frac{1}{N} \sum_{i=1}^{N} \frac{ \left|y_i-f(x_i)\right|}{\left|y_i\right|} \times 100\% $$где:
- [math]N[/math] – количество наблюдений,
- [math]y_i[/math] – фактическое значение целевой переменной,
- [math]f(x_i)[/math] – прогнозируемое значение, полученное моделью,
- [math] \left|y_i-f(x_i)\right|[/math] – абсолютная ошибка прогноза для (i)-го наблюдения,
- [math]\left|y_i\right|[/math] – абсолютное значение фактического значения целевой переменной для нормализации ошибки.
Пример расчета MAPE
Допустим, у нас есть данные о реальных и прогнозируемых продажах товара за 5 дней:
День | Реальные продажи [math](y_i)[/math] | Прогнозируемые продажи [math](f(x_i))[/math] |
---|---|---|
1 | 100 | 95 |
2 | 200 | 190 |
3 | 150 | 160 |
4 | 50 | 45 |
5 | 100 | 110 |
Рассчитаем MAPE, используя данные из таблицы:
- Рассчитаем абсолютные ошибки и их процентное соотношение к реальным значениям для каждого дня:
- День 1: [math]\frac{ \left|100 — 95\right|}{\left|100\right|} \times 100\% = 5\%[/math]
- День 2: [math]\frac{ \left|200 — 190\right|}{\left|200\right|} \times 100\% = 5\%[/math]
- День 3: [math]\frac{ \left|150 — 160\right|}{\left|150\right|} \times 100\% = 6.67\%[/math]
- День 4: [math]\frac{ \left|50 — 45\right|}{\left|50\right|} \times 100\% = 10\%[/math]
- День 5: [math]\frac{ \left|100 — 110\right|}{\left|100\right|} \times 100\% = 10\%[/math]
- Вычислим среднее значение полученных процентов: $$ \text{MAPE} = \frac{5\% + 5\% + 6.67\% + 10\% + 10\%}{5} = 7.33\% $$Таким образом, средняя абсолютная процентная ошибка (MAPE) для нашего прогноза составляет 7.33%. Это означает, что в среднем наши прогнозы отклоняются от реальных значений на 7.33%.
SMAPE (Symmetric Mean Absolute Percentage Error:
Симметричная средняя абсолютная процентная ошибка)
Симметричное среднее абсолютное процентное отклонение SMAPE является метрикой оценки точности прогнозов, которая широко используется для измерения степени точности прогнозов в задачах регрессии. Она представляет собой улучшенную версию MAPE (среднего абсолютного процентного отклонения), поскольку более симметрично учитывает разницу между фактическими и прогнозируемыми значениями, минимизируя влияние экстремальных значений.
Когда применяется SMAPE:
- SMAPE предлагает более симметричный вариант MAPE, который уменьшает проблемы, связанные с малыми или нулевыми значениями [math]y_i[/math]. В SMAPE, как числитель, так и знаменатель модифицируются для обеспечения большей стабильности и справедливости в расчетах:
Формула SMAPE определяется как:$$\text{SMAPE}(y^{\text{true}}, y^{\text{pred}}) = \frac{1}{N} \sum_{i=1}^{N} \frac{ 2 \left|y_i — f(x_i)\right|}{\left|y_i\right| + \left|f(x_i)\right|} \times 100\%$$ - Эта метрика особенно полезна, когда данные включают нулевые или очень маленькие значения, а также когда различия в масштабах между истинными и прогнозируемыми значениями могут существенно исказить результаты оценки.
Почему sMAPE может быть предпочтительнее MAPE:
- Балансировка вклада ошибок: В MAPE, если истинное значение [math]y_i[/math] близко к нулю, ошибка может быть драматически высокой, что делает метрику чрезмерно чувствительной к малым значениям. SMAPE уменьшает эту чувствительность, используя среднее значение истинного и прогнозируемого значений в знаменателе, что делает ошибки более сбалансированными.
- Справедливость оценки: SMAPE обеспечивает более симметричный взгляд на ошибки, учитывая, что и переоценка, и недооценка одинаково влияют на конечный результат.
Пример расчета SMAPE
Предположим, у нас есть данные о фактических и прогнозируемых продажах товара за 4 дня:
День | Фактические продажи [math](y_i)[/math] | Прогнозируемые продажи [math](f(x_i))[/math] |
---|---|---|
1 | 120 | 100 |
2 | 80 | 90 |
3 | 200 | 180 |
4 | 100 | 120 |
Рассчитаем SMAPE, используя данные из таблицы:
- Рассчитаем относительные ошибки для каждого дня:
- День 1: [math]\frac{ 2 \left|120 — 100\right|}{120 + 100} \times 100\% = \frac{40}{220} \times 100\% \approx 18.18\%[/math]
- День 2: [math]\frac{ 2 \left|80 — 90\right|}{80 + 90} \times 100\% = \frac{20}{170} \times 100\% \approx 11.76\%[/math]
- День 3: [math]\frac{ 2 \left|200 — 180\right|}{200 + 180} \times 100\% = \frac{40}{380} \times 100\% \approx 10.53\%[/math]
- День 4: [math]\frac{ 2 \left|100 — 120\right|}{100 + 120} \times 100\% = \frac{40}{220} \times 100\% \approx 18.18\%[/math]
- Вычислим среднее значение полученных процентов: $$\text{SMAPE} = \frac{18.18\% + 11.76\% + 10.53\% + 18.18\%}{4} \approx 14.66\%$$
Таким образом, среднее симметричное абсолютное процентное отклонение (SMAPE) для нашего набора данных составляет примерно[math] 14.66%[/math]. Это означает, что в среднем наши прогнозы отклоняются от фактических значений на [math]14.66%[/math]. SMAPE является полезной метрикой для оценки точности прогнозов, поскольку она симметрично учитывает как переоценку, так и недооценку, предлагая более сбалансированную меру ошибки по сравнению с другими метриками, такими как MAPE.
WAPE (Weighted Average Percentage Error:
Средневзвешенная процентная ошибка)
WAPE — это взвешенная средняя процентная ошибка, которая измеряет отклонения прогнозируемых значений от фактических. Формула для расчета WAPE выглядит следующим образом:$$\text{WAPE}(y^{true}, y^{pred}) = \frac{\sum_{i=1}^{N} \left|y_i — f(x_i)\right|}{\sum_{i=1}^{N} \left|y_i\right|}$$Этот показатель особенно полезен, когда абсолютные значения прогнозируемой переменной могут сильно варьироваться, поскольку WAPE нормализует общую ошибку к общей сумме фактических значений, что позволяет справедливо сравнивать качество прогнозов между разными моделями или наборами данных.
Пример расчета WAPE
Представим, что у нас есть данные за определенный период с сильными колебаниями в объемах продаж из-за сезонности, акций, или других факторов.
День | Фактические продажи [math](y^{true})[/math] | Прогнозируемые продажи [math](y^{pred})[/math] |
---|---|---|
1 | 50 | 60 |
2 | 200 | 180 |
3 | 30 | 40 |
4 | 400 | 380 |
5 | 100 | 120 |
6 | 300 | 290 |
7 | 80 | 70 |
В этом случае, мы видим значительные колебания в продажах, от очень низких до очень высоких значений. Это усложняет задачу точного прогнозирования и делает WAPE особенно полезным инструментом для оценки эффективности прогнозной модели, поскольку он учитывает масштаб фактических значений.
Давайте подробно рассмотрим математические расчеты для примера с значительными колебаниями в продажах:
- Абсолютные ошибки прогнозирования [math](\left|y_i — f(x_i)\right|)[/math] для каждого дня:
- День 1: [math]|50 — 60| = 10[/math]
- День 2: [math]|200 — 180| = 20[/math]
- День 3: [math]|30 — 40| = 10[/math]
- День 4: [math]|400 — 380| = 20[/math]
- День 5: [math]|100 — 120| = 20[/math]
- День 6: [math]|300 — 290| = 10[/math]
- День 7: [math]|80 — 70| = 10[/math]
- Сумма фактических продаж [math](\sum_{i=1}^{N} \left|y_i\right|)[/math]:
- Сумма фактических продаж за все дни составляет [math](50 + 200 + 30 + 400 + 100 + 300 + 80 = 1160)[/math].
- Расчет WAPE:
- Используя рассчитанные выше значения, WAPE получается как [math]\frac{\sum \text{абсолютных ошибок}}{\text{сумма фактических продаж}} = \frac{10 + 20 + 10 + 20 + 20 + 10 + 10}{1160} \approx 0.0862[/math] или [math]8.62%[/math].
Эти расчеты показывают, как WAPE используется для оценки точности прогнозов в условиях с значительными колебаниями в объемах продаж. Полученное значение WAPE в [math]8.62%[/math] указывает на то, что средняя ошибка прогноза составляет менее [math]10%[/math] от общего объема фактических продаж, что может быть приемлемым в зависимости от конкретных требований к точности в данной области применения.
RMSLE (Root Mean Squared Logarithmic Error:
Среднеквадратическая логарифмическая ошибка)
Метрика RMSLE используется для оценки точности прогнозных моделей, особенно когда важно учитывать относительные ошибки, а не абсолютные значения ошибок. Это особенно актуально в задачах с сильно различающимися масштабами целевой переменной, где ошибки в прогнозах больших значений не должны доминировать над ошибками меньших значений.
Формула для расчета RMSLE задается как:$$\text{RMSLE}(y, \hat{y}| c) = \sqrt{ \frac{1}{N} \sum_{i=1}^N \left( \log(y_i + c) — \log(\hat{y_i} + c) \right)^2 }$$где:
- [math]c[/math] — константа, добавленная к значениям для предотвращения вычисления логарифма от нуля
Пример расчета RMSLE
Допустим, у нас есть набор данных из 3 объектов, для которых мы хотим рассчитать RMSLE. Истинные значения [math]y[/math] и прогнозируемые значения [math]\hat{y}[/math] приведены ниже, а константа [math]c[/math] равна 1 для предотвращения вычисления логарифма от нуля.
Объект | Истинное значение [math]y[/math] | Прогноз [math]\hat{y}[/math] |
---|---|---|
1 | 100 | 110 |
2 | 50 | 40 |
3 | 80 | 90 |
Расчеты шаг за шагом:
- Вычисление логарифмической разницы для каждого объекта:
Для объекта 1:
[math]\Delta_1 = \log(100 + 1) — \log(110 + 1) \approx -0.0953[/math]
Для объекта 2:
[math]\Delta_2 = \log(50 + 1) — \log(40 + 1) \approx 0.2180[/math]
Для объекта 3:
[math]\Delta_3 = \log(80 + 1) — \log(90 + 1) \approx -0.1178[/math] - Вычисление квадрата логарифмической разницы для каждого объекта:
[math]\Delta^2_1 \approx 0.0091[/math]
[math]\Delta^2_2 \approx 0.0475[/math]
[math]\Delta^2_3 \approx 0.0139[/math] - Вычисление среднего квадрата логарифмических разниц:
[math]\text{Среднее} = \frac{0.0091 + 0.0475 + 0.0139}{3} \approx 0.0235[/math] - Вычисление корня из среднего квадрата логарифмических разниц (RMSLE):
[math]\text{RMSLE} = \sqrt{0.0235} \approx 0.1533[/math]
Таким образом, значение RMSLE для нашего набора данных равно приблизительно [math]0.1533[/math]. Это значение показывает относительную ошибку между истинными и прогнозируемыми значениями, учитывая логарифмический масштаб, что делает эту метрику особенно полезной при сравнении прогнозов разного масштаба.
Заключение
В заключении статьи о метриках в машинном обучении можно отметить, что правильный выбор и оценка метрик играют ключевую роль в успешной разработке и применении моделей. Рассмотренные метрики для задач классификации предоставляют разностороннюю оценку производительности модели, позволяя более глубоко понять ее поведение в различных аспектах.
Accuracy (доля верных ответов) является простой и интуитивно понятной метрикой, однако не всегда достаточной, особенно в случаях дисбаланса классов. Confusion Matrix раскрывает детали результатов классификации, что полезно для выявления проблем, таких как ложные положительные и ложные отрицательные ответы.
Precision (Точность) и Recall (Полнота) предоставляют более детальную информацию о производительности модели, особенно в случаях, когда один из этих аспектов важнее другого. F1-мера комбинирует точность и полноту, обеспечивая сбалансированную оценку.
ROC-AUC является полезной метрикой для оценки классификаторов при различных порогах. Log Loss позволяет учесть уверенность модели в своих прогнозах.
Для задач регрессии MSE, RMSE и MAE предоставляют информацию о средней ошибке модели в прогнозах. R² дает представление о том, насколько хорошо модель соответствует данным.
MAPE и SMAPE оценивают процентное отклонение предсказаний, WAPE – взвешенное абсолютное отклонение, а RMSLE (Root Mean Squared Logarithmic Error) учитывает логарифмическое преобразование.
В целом, подбор и использование соответствующих метрик зависит от конкретной задачи и требований заказчика. Комбинированное использование нескольких метрик может обеспечить более полное понимание производительности модели, что важно для ее оптимизации и дальнейшего улучшения.