среда, 29 августа 2018 г.

Классификация: смещение прогноза

Прогнозы логистической регрессии не должны быть смещены. Таким образом:

"среднее значение прогнозов" должно быть ≈ "среднее значение наблюдений"

Смещение прогноза (prediction bias) - это величина, которая измеряет насколько далеко друг от друга эти средние значения. Таким образом:

Смещение прогноза = среднее значение прогнозов - среднее значение меток в наборе данных

Следует отметить, что "смещение прогноза" - это отличающаяся от смещения величина (b в wx + b).

Значительное ненулевое смещение прогноза говорит о том, что существует ошибка где-то в модели, поскольку это указывает на то, что модель ошибается о том, как часто появляются положительные метки.

Например, предположим мы знаем, что в среднем 1% всех писем является спамом. Если мы не знаем ничего о данных письмах, тогды нам следует прогнозировать, что примерно 1% является спамом. Схожим образом, хорошая модель поиска спама должна прогнозировать, что в среднем 1% писем является спамом. (Другими словами, если мы усредним спрогнозированную вероятность того, что письмо является спамом, то результат должен быть 1%.) Если же средний прогноз модели равен 20%, то мы можем заключить, что это является смещением прогноза.

Возможные корневые причины смещения прогноза могут быть следующими:

  • Незавершенный набор свойств
  • "Зашумленный" набор данных
  • Ошибочный рабочий процесс
  • Смещенный тренировочный набор
  • Слишком сильная регуляризация

Возможно вы захотите поправить смещение прогноза послеобработкой обученной модели - то есть, добавлением градуировочного слоя, который приведет в порядок вывод модели и уменьшит смещение прогноза. Например, если модель имеет +3% смещение, можно добавить градуировочный слой, который уменьшит среднее значение прогноза на 3%. Однако, добавление градуировочного слоя - плохая идея по следующим причинам:

  • Вы исправляете симптом, а не причину.
  • Вы построете более хрупкую систему, которую затем придется поддерживать.

Если возможно, избегайте градуировочных слоев. Проекты, которые используют градуировочные слои имеют тенденцию становиться основанными на них, используя калибровочные слои, чтобы исправить все проблемы модели. Впоследствии поддержка калибровочных слоев становится ночным кошмаром.

Следует отметить, что хорошая модель обычно имеет почти нулевое смещение. Хотя низкое смещение прогноза не подтверждает, что модель хороша. Ужасная модель может иметь нулевое смещение прогноза. Например, модель, которая просто прогнозирует среднее значение для всех примеров будет плохой моделью, несмотря на то, что будет иметь нулевое смещение прогноза.

Складывание в корзины (bucketing) и смещение прогноза

Логистическая регрессия прогнозирует значение между 0 и 1. Однако, все примеры с метками либо равны 0 (означая, например, "не спам"), либо 1 (означая, например, "спам"). Следовательно, когда идет проверка смещения прогноза, невозможно определить смещение прогноза, основанное только на одном примере, необходимо оценивать смещение прогноза на "корзине" примеров. То есть, смещение прогноза для логистической регрессии имеет смысл только при наличии достаточного количества сгруппированных вместе примеров, чтобы было возможно сравнить прогнозируемое значение (например, 0.392) с наблюдаемым значением (например, 0.394).

Можно формировать корзины следующими путями:

  • Линейное разбиение целевых прогнозов.
  • Формирование квантилей.

Рассмотрим следующий калибровочный график из отдельной модели. Каждая точка представляет корзину из 1000 значений. Оси имеют следующие значения:

  • x-ось представляет среднюю величину значений, которую модель спрогнозировала для этой корзины
  • y-ось представляет действительную среднюю величину значений в наборе данных для этой корзины

Обе оси в логарифмическом масштабе.

Кривая сдвига прогноза (логарифмические масштабы)

Почему прогнозы настолько слабы только в отдельной части модели? Вот возможные причины:

  • Тренировочный набор неадекватно представляет определенные поднаборы в области данных.
  • Некоторые поднаборы данных "зашумленней", чем другие.
  • Модель слишком сильно регуляризована. (Попробуйте уменьшить значение лямбда.)