Реальные данные зашумлены. Наша способность их предсказывать ограничена.
Например биржевая цена на серебро как бы должна определяться спросом, но торгуемый объем значительно превосходит тот объем, который реально потребляется. А значит, цена зависит от слухов, дня недели и способности китайских производителей солнечных батарей влиять на цену неэкономическими методами. Всего этого в данных обычно нет, поэтому предсказания содержат ошибку - реальные значения разбросаны вокруг предсказанных нами.
Квантильная регрессия помогает целиться в верхнюю или нижнюю часть облака разброса.
Возьмем пример попроще, из управления запасами. Предположим, мы хотим купить X, одну штуку. X - не всегда доступный товар, он то появляется, то изчезает. У нас есть данные о наличии X в торговых точках за последний год, мы строим модель - где он есть, предсказываем наличие на сегодняшнее утро и идем в выбранный магазин. У модели низкая средняя ошибка, но в выбранном магазине X отсутствует. Вчера был, да, и всю неделю до того, завтра приходите, наверняка привезут.
Возвращаемся в прошлое и снова строим модель. Нам все равно, какова будет средняя ошибка, мы хотим чтобы в выбранном нами магазине была одна штука X.
Строим логистическую регрессию, которая предсказывает веростность того, что в магазине будет X. Приходим в выбранный магазин - и да, он там есть. Одна штука. Прямо сейчас ее пробивают покупателю перед вами. Ой, уже кончилась.
Назад в прошлое, и подумаем еще раз. Нам нужно 2 единицы X и мы хотим, чтобы они были в магазине с 95% вероятностью.
На этот раз мы берем квантильную регрессию. Квантильная регрессия дает отвратительный RMSE на валидации - в полтора раза больше чем обычная регрессия. С покерфейсом, чтобы не выдать своего разочарования моделью, мы идем в выбранный магазин - и, о чудо, X там есть. Повезло.
Недостаток квантильной регрессии - оценку нельзя просто так использовать в других вычислениях. Например, если мы сложим средние продажи по всем торговым точкам города, мы получим средние продажи города. С квантилями так не получится - сумма квантилей не дает квантиль суммы. Неудобно.
Если вам нужно предсказание само по себе (чтобы управлять запасами, или оценивать финансовые риски) - квантильная регрессия работает отлично. Идеальный выбор для данных, которые кто-то пропустил через мясорубку.
Нельзя ли было вместо квантильной регрессии взять доверительный интервал? Не, не сработает. Доверительный интервал оценивает разброс предсказанного значения, а не вероятность получить предсказанное значение в реальности.
Очень приличная квантильная регрессия есть в CatBoost:
from catboost import CatBoostRegressor
model = CatBoostRegressor(
loss_function='Quantile:alpha=0.95'
)
Что делать, если хочется быть и умным, и красивым? Конформное прогнозирование (Conformal Prediction) умеет строить интервалы, в которые попадает нужная часть распределения. Мы по-прежнему предсказываем среднее, но знаем, что наше предсказанное среднее 3 - это с 95% вероятностью "где-то от 1.3 до 7". Звучит не очень, но такова жизнь.
На скриншотах - обычная регрессия и регрессия по 99% квантилю, чтоб наверняка.
Дальше разберем конформное прогнозирование , не переключайтесь!
* Квантильная регрессия
* Quantile Regression, Roger Koenker and Kevin F. Hallock
Ваш @Reliable ML
#reliable_ml #tools

