中文翻译暂不可用,显示俄语原文。
Что такое calibration ошибок модели и как ее измерять (ECE, MCE, Brier score)?
Краткий тезис
Калибровка модели — это свойство, при котором предсказанные вероятности классов соответствуют реальной доле правильных ответов. Например, если модель предсказывает вероятность 0.8 для 100 объектов, то примерно 80 из них должны быть верно классифицированы. Основные метрики: Calibration Error|Expected Calibration Error (ECE) — среднее отклонение по бинам, Maximum Calibration Error (MCE) — максимальное отклонение, и Brier score — среднеквадратичная ошибка между предсказанной вероятностью и истинным классом. Хорошо откалиброванная модель критична для принятия решений в условиях неопределённости (например, в RAG-агентах или медицинских системах).
1. Термин: Calibration (калибровка)
Калибровка (calibration) — это согласованность между предсказанной моделью вероятностью и фактической частотой правильных ответов. Формально, для каждого значения предсказанной вероятности p модель должна давать правильный ответ в 100×p% случаев.
Зачем нужна калибровка
- Принятие решений — если модель говорит «уверен на 90%», хочется знать, что в 9 из 10 случаев она права.
- Оценка неопределённости — в RAG-системах или agentic-подходах важно понимать, когда ответу можно доверять, а когда стоит запросить уточнение.
- Сравнение моделей — две модели с одинаковой accuracy могут сильно различаться по калибровке.
Термин: вероятностный выход (probabilistic output) — softmax-вероятности или логиты, преобразованные в вероятности.
2. Reliability Diagram (диаграмма надёжности)
Reliability diagram — это визуальный способ оценки калибровки.
- Ось X: предсказанные вероятности (разбиты на бины (bins), например [0,0.1), [0.1,0.2), ..., [0.9,1]).
- Ось Y: фактическая доля правильных ответов в каждом бине.
- Идеальная калибровка — диагональная линия y = x.
- Отклонения от диагонали показывают недо- или перекалибровку.
Пример построения в Python
import numpy as np
import matplotlib.pyplot as plt
def reliability_diagram(y_true, y_prob, n_bins=10):
bins = np.linspace(0, 1, n_bins + 1)
bin_indices = np.digitize(y_prob, bins) - 1
bin_acc = []
bin_conf = []
bin_counts = []
for i in range(n_bins):
mask = (bin_indices == i)
if np.sum(mask) > 0:
bin_acc.append(np.mean(y_true[mask] == 1))
bin_conf.append(np.mean(y_prob[mask]))
bin_counts.append(np.sum(mask))
else:
bin_acc.append(0)
bin_conf.append(0)
bin_counts.append(0)
plt.plot([0, 1], [0, 1], '--', label='Ideal')
plt.plot(bin_conf, bin_acc, 'o-', label='Model')
plt.xlabel('Predicted probability')
plt.ylabel('True fraction positive')
plt.title('Reliability Diagram')
plt.legend()
return np.array(bin_acc), np.array(bin_conf), np.array(bin_counts)
3. Expected Calibration Error (ECE)
ECE — средневзвешенная абсолютная разница между accuracy и confidence по бинам.
- Accuracy в бине: доля правильных предсказаний.
- Confidence в бине: средняя предсказанная вероятность.
Формула:
[ ECE = \sum_{m=1}^{M} \frac{|B_m|}{N} \left| [text](/wiki/text){acc}(B_m) - [text](/wiki/text){conf}(B_m) \right| ]
где (B_m) — m-й бин, (N) — общее количество примеров.
Интерпретация
- ECE < 0.01 (1%) — отличная калибровка.
- ECE 0.01–0.05 (1–5%) — хорошая.
- ECE > 0.10 (10%+) — плохая, модель либо переуверена (overconfident), либо недоуверена (underconfident).
Код для расчёта ECE
def ece(y_true, y_prob, n_bins=10):
bins = np.linspace(0, 1, n_bins + 1)
bin_indices = np.digitize(y_prob, bins) - 1
ece = 0.0
for i in range(n_bins):
mask = (bin_indices == i)
if np.sum(mask) > 0:
acc = np.mean(y_true[mask] == 1)
conf = np.mean(y_prob[mask])
ece += np.sum(mask) * np.abs(acc - conf)
return ece / len(y_true)
4. Maximum Calibration Error (MCE)
MCE — максимальное по бинам абсолютное отклонение между accuracy и confidence:
[ MCE = \max_{m=1..M} \left| [text](/wiki/text){acc}(B_m) - [text](/wiki/text){conf}(B_m) \right| ]
- Показывает наихудший бин по калибровке.
- Полезно, когда отдельные диапазоны вероятностей критичны (например, высокие вероятности у модели, которая часто ошибается).
Пример: если в бине [0.9,1] accuracy = 0.7, а conf = 0.95, то вклад в MCE = 0.25.
5. Brier Score
Brier score — среднеквадратичная ошибка между предсказанными вероятностями и истинными метками (0 или 1). Определяется как:
[ BS = \frac{1}{N} \sum_{i=1}^{N} (p_i - y_i)^2 ]
- (p_i) — предсказанная вероятность для класса 1.
- (y_i) — истинная метка (1 если класс 1, иначе 0).
- Значение от 0 (идеал) до 1 (худший случай).
- Для мультиклассовой задачи используется multi-class Brier score: (\frac{1}{N} \sum_{i} \sum_{k} (p_{ik} - y_{ik})^2), где (y_{ik}) — one-hot кодировка.
Код
def brier_score(y_true, y_prob):
return np.mean((y_prob - y_true) ** 2)
Свойства Brier score
- Разлагается на калибровку (calibration) и разрешение (resolution).
- Чувствителен к экстремальным вероятностям.
6. Сравнение метрик
| Метрика | Что измеряет | Диапазон | Чувствительность | Интерпретация |
|---|---|---|---|---|
| ECE | Среднее отклонение по бинам | [0, 1] | Количество бинов | Чем меньше, тем лучше. Хорошо < 0.05 |
| MCE | Максимальное отклонение по бинам | [0, 1] | Только один бин | Показывает наихудший участок |
| Brier score | Среднеквадратичная ошибка | [0, 1] | Все примеры | Включает как калибровку, так и разрешение |
Когда какую использовать
- ECE — стандартная метрика для оценки калибровки.
- MCE — если есть риск в конкретном диапазоне вероятностей (например, high-confidence ошибки).
- Brier score — для общей оценки качества вероятностных предсказаний (включая правильность классификации).
7. Методы улучшения калибровки
7.1 Temperature Scaling
- Простейший пост-калибровочный метод для нейросетей.
- Делит логиты на скалярный параметр T (temperature) перед softmax.
- T учится на валидационном наборе, минимизируя negative log-likelihood (NLL).
- При T > 1 вероятности становятся более равномерными (снижается overconfidence).
7.2 Platt Scaling
- Для бинарной классификации: логистическая регрессия на логитах.
- Параметры a, b: (p = \sigma(a \cdot z + b)), где z — выход модели до softmax.
7.3 Isotonic Regression
- Непараметрический метод: кусочно-постоянная монотонная функция.
- Может переобучаться на малых данных.
Сравнение методов
| Метод | Тип | Параметры | Применимость |
|---|---|---|---|
| Temperature Scaling | Параметрический | 1 (T) | Нейросети, мультикласс |
| Platt Scaling | Параметрический | 2 (a,b) | Бинарная классификация |
| Isotonic Regression | Непараметрический | много | Мало данных → переобучение |
8. Калибровка в LLM и RAG-системах
В контексте LLM и agentic RAG калибровка важна для:
- Уверенность ответа — LLM может выдавать высокие вероятности даже при неверных ответах.
- Thresholding — отсечение ответов с низкой уверенностью для повышения качества.
- Active learning — запрос уточнения у пользователя, если модель не уверена.
Современные LLM (например, GPT-4) часто перекалиброваны (overconfident). Для улучшения применяют post-hoc calibration на небольшом датасете или prompt-based calibration (например, «Are you sure?»).
9. Пет-проект для закрепления
Задача Обучить модель классификации (например, LogisticRegression на датасете breast cancer), оценить её калибровку, применить Temperature Scaling и сравнить метрики.
Инструменты Python, scikit-learn, numpy, matplotlib.
Шаги:
- Загрузить датасет (sklearn.datasets.load_breast_cancer), разделить на train/val/test.
- Обучить RandomForestClassifier с predict_proba.
- Рассчитать ECE, MCE, Brier score на тесте.
- Построить reliability diagram.
- Реализовать Temperature Scaling:
- Взять логиты из model.predict_log_proba() или использовать CalibratedClassifierCV.
- Обучить T на валидации минимизацией NLL (использовать scipy.optimize.minimize).
- Применить T к тестовым вероятностям.
- Повторно рассчитать метрики и построить диаграмму.
- Вывести таблицу сравнения «до» и «после».
Ожидаемый результат ECE снижается (например, с 0.12 до 0.03), reliability diagram приближается к диагонали. Brier score также улучшается.
10. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 33 | AUC-ROC и вероятностные метрики |
| 34 | Log-loss и его связь с калибровкой |
| 35 | Оценка неопределённости в нейросетях |
| 36 | Monte Carlo Dropout |
| 180 | Оценка confidence в RAG |
| 200 | Decision threshold tuning |
11. Навигация
- Предыдущий: 347
- Следующий: 349
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 347
- Следующий: 349
- Индекс: 00. Индекс разборов