Продуктивність моделі в квантильному моделюванні


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% часу?

Чи існують інші формальні чи евристичні методи для опису того, наскільки вдало модель передбачить нові випадки?


Розділ 3 у цій роботі може бути корисним.
чакраварти

@tchakravarty Я думаю, що посилання загинула
alexpghayes

Відповіді:



0

Я використовував би втрату пінболу (визначений на початку другої сторінки https://arxiv.org/pdf/1102.2101.pdf ) і інтерпретував це як середню абсолютну помилку (МАЕ) для квантиля, який ви моделюєте, наприклад , скажімо, для помилки 100: "Середня абсолютна похибка нашої моделі щодо реального 75% -кісного в наших тестових даних становить 100".

Майте на увазі, що це не можна порівняти з RMSE, оскільки ексклюзиви мають набагато менший вплив.

Щоб відповісти на ваше запитання (2): Якщо ви моделюєте 75-відсотковий квантил, вам підійде межа, що розділяє масу даних! до співвідношення 75:25. Тоді приблизно 25% ваших даних тесту повинні лежати вище вашого прогнозу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.