Как замерять bias и variance модели
Что проверяют
Знаете ли вы, что bias и variance не метрики из коробки, а составляющие ошибки, которые оценивают косвенно. Хороший ответ сочетает формулу и практику: как по кривым обучения понять, чем болеет модель. Следом спрашивают, что делать в каждом из двух случаев.
Как отвечать
Начните с разложения: для квадратичной ошибки ожидаемая ошибка на новом объекте равна bias² + variance + неустранимый шум. Bias показывает, насколько средний прогноз по разным обучающим выборкам далёк от истины, variance показывает, насколько прогноз меняется от выборки к выборке.
- бутстрап: обучаете модель на N бутстрап-выборках и прогнозируете фиксированный тестовый набор. Разброс прогнозов по моделям в каждой точке даёт variance, отклонение среднего прогноза от ответа даёт bias² вместе с шумом, отделить их на реальных данных нельзя. Готовая реализация:
bias_variance_decompвmlxtend; - кривые обучения:
learning_curveиз scikit-learn строит ошибку на обучении и валидации в зависимости от объёма данных. Обе высокие и близки друг к другу: высокий bias. На обучении низкая, а зазор большой и сокращается с ростом данных: высокая variance; - кривые валидации:
validation_curveпоказывает то же по параметру сложности, например глубине дерева или силе регуляризации; - ориентир: сравнивайте ошибку с базовой моделью или с уровнем человека, иначе непонятно, высокая она или уже у предела.
Высокий bias лечат более сложной моделью, новыми признаками, ослаблением регуляризации. Высокую variance лечат данными, регуляризацией, упрощением модели, бэггингом.
Где спотыкаются
Путают variance модели с разбросом метрики по фолдам кросс-валидации. Стандартное отклонение ROC-AUC по фолдам говорит о надёжности оценки, а не о дисперсии прогнозов.
Приравнивают bias к ошибке на обучении без оговорок. В ней сидит и шум данных, а у модели с большой variance она занижена.
Переносят аддитивное разложение на классификацию с 0-1 loss. Там bias и variance так просто не складываются, и честнее говорить о кривых, а не о формуле.