Модель производительности в квантовом моделировании

14

Я использую квантильную регрессию (например, через gbmили quantregв R) - фокусируюсь не на медиане, а на верхнем квантиле (например, 75-й). Исходя из опыта прогнозного моделирования, я хочу измерить, насколько хорошо модель вписывается в набор тестов, и иметь возможность описать это для бизнес-пользователя. Мой вопрос как? В типичной обстановке с непрерывной целью я мог бы сделать следующее:

  • Рассчитать общую RMSE
  • Децилируйте данные, установленные по прогнозируемому значению, и сравните среднее фактическое значение со средним, прогнозируемым в каждом дециле.
  • И т.п.

Что можно сделать в этом случае, где на самом деле нет фактического значения (я думаю, по крайней мере), с которым можно сравнить прогноз?

Вот пример кода:

install.packages("quantreg")
library(quantreg)

install.packages("gbm")
library(gbm)

data("barro")

trainIndx<-sample(1:nrow(barro),size=round(nrow(barro)*0.7),replace=FALSE)
train<-barro[trainIndx,]
valid<-barro[-trainIndx,]

modGBM<-gbm(y.net~., # formula
            data=train, # dataset
            distribution=list(name="quantile",alpha=0.75), # see the help for other choices
            n.trees=5000, # number of trees
            shrinkage=0.005, # shrinkage or learning rate,
            # 0.001 to 0.1 usually work
            interaction.depth=5, # 1: additive model, 2: two-way interactions, etc.
            bag.fraction = 0.5, # subsampling fraction, 0.5 is probably best
            train.fraction = 0.5, # fraction of data for training,
            # first train.fraction*N used for training
            n.minobsinnode = 10, # minimum total weight needed in each node
            cv.folds = 5, # do 3-fold cross-validation
            keep.data=TRUE, # keep a copy of the dataset with the object
            verbose=TRUE) # don’t print out progress

best.iter<-gbm.perf(modGBM,method="cv")

pred<-predict(modGBM,valid,best.iter)

Что теперь, поскольку мы не наблюдаем процентиль условного распределения?

Добавлять:

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

  1. Рассчитайте среднее значение по функциям потерь:

    qregLoss<-function(actual, estimate,quantile)
    {
       (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual)
    
    }
    

    Это функция потерь для квантильной регрессии - но как мы можем интерпретировать значение?

  2. Стоит ли ожидать, что, например, если мы вычисляем 75-й процентиль для тестового набора, прогнозируемое значение должно быть больше, чем фактическое значение в 75% случаев?

Существуют ли другие методы, формальные или эвристические, чтобы описать, насколько хорошо модель предсказывает новые случаи?

B_Miner
источник
Раздел 3 в этой статье может быть полезным.
Чакраварти
@tchakravarty Я думаю, что ссылка умерла
alexpghayes

Ответы:

3

Полезной ссылкой может быть Haupt, Kagerer и Schnurbus (2011), обсуждающие использование специфических для квантилей мер прогнозной точности, основанных на перекрестной проверке для различных классов моделей квантильной регрессии.

разводка
источник
0

Я бы использовал потерю пинбола (определенную в начале второй страницы https://arxiv.org/pdf/1102.2101.pdf ) и интерпретировал бы ее как среднюю абсолютную ошибку (MAE) для квантиля, который вы моделируете, например скажем, для ошибки 100: «Средняя абсолютная ошибка нашей модели относительно реального 75% -квентиля в наших тестовых данных равна 100».

Имейте в виду, что это не сравнимо с RMSE, поскольку выбросы гораздо менее влиятельны.

Чтобы ответить на ваш вопрос (2): если вы смоделируете квантиль 75%, вы укажете границу, разделяющую массу данных! в соотношении 75:25. Тогда примерно 25% ваших тестовых данных должны лежать выше вашего прогноза.

Себастьян Грубер
источник