ประสิทธิภาพของตัวแบบในการสร้างแบบจำลองควอไทล์


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

@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% ของข้อมูลการทดสอบของคุณควรอยู่เหนือการคาดการณ์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.