RMSE (Root Mean Squared Error) สำหรับโมเดลโลจิสติก


10

ฉันมีคำถามเกี่ยวกับความถูกต้องของการใช้ RMSE (Root Mean Squared Error) เพื่อเปรียบเทียบโมเดลโลจิสติกที่แตกต่างกัน การตอบสนองเป็นอย่างใดอย่างหนึ่ง0หรือ1และการคาดการณ์ที่มีความน่าจะเป็นระหว่าง0- 1?

วิธีที่ใช้ด้านล่างนี้ใช้ได้กับการตอบกลับแบบไบนารีหรือไม่

# Using glmnet
require(glmnet)
load(url("https://github.com/cran/glmnet/raw/master    /data/BinomialExample.RData"))
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "mse")
A <- predict(cvfit, newx = x, s = "lambda.min", type = "response")
RMSE1 <- mean((y - A)^2)
# 0.05816881

# glm
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
AAA <- predict(mylogit, newdata = mydata, type = "response")
RMSE2 <- mean((mydata$admit - AAA)^2)
# 0.194714

1
ในกรณีนี้มันถูกเรียกว่าคะแนน Brier ให้ดูที่actuaries.org/ASTIN/Colloquia/Hague/Papers/Lo.pdf

คำตอบ:


14

เพื่อให้เข้าใจว่าทำไม "[t] การตอบสนองของเขาเป็นอย่างใดอย่างหนึ่ง0หรือ1[แต่] การคาดการณ์มีความน่าจะเป็นระหว่าง0- 1" คุณต้องเข้าใจประเภทของแบบจำลองที่คุณกำลังทำงานด้วย ถอดวิธีการลงโทษและการตรวจสอบความถูกต้องไขว้กันและคุณใช้การถดถอยโลจิสติกขั้นพื้นฐาน พารามิเตอร์มีความเหมาะสมกับอัตราต่อรอง / สเกลโลจิสติกส์ สิ่งนี้เรียกว่า "การทำนายเชิงเส้น" (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้มันอาจช่วยให้คุณอ่านคำตอบของฉันที่นี่: ความแตกต่างระหว่าง logit และ probit models ) หากคุณเสียบค่า x และทำให้ง่ายขึ้นค่าจะเป็นลอการิทึมตามธรรมชาติที่ทำนายไว้ของอัตราความสำเร็จ ( 1) หากคุณยกตัวอย่างค่านั้นคุณจะมีอัตราต่อรองที่คาดการณ์ของแบบจำลองของ 'ความสำเร็จ' ในการรับความน่าจะเป็นที่คาดการณ์คุณจะต้องแปลงอัตราต่อรองเป็นความน่าจะเป็นผ่านอัตราต่อรอง / (1 + อัตราต่อรอง) (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้มันอาจจะช่วยให้คุณสามารถอ่านคำตอบของฉันที่นี่: การแปลความหมายของการคาดการณ์ที่ง่ายในการอัตราส่วนราคาต่อรองในการถดถอยโลจิสติก .) นี้ยังคงไม่ได้รับคุณไปสู่การคาดการณ์ระดับ ในการรับสิ่งนั้นคุณจะต้องเปรียบเทียบความน่าจะเป็นที่คาดการณ์ของคุณกับเกณฑ์บางอย่างและถ้ามันน้อยกว่าเกณฑ์ 'ความล้มเหลว' ( 0), 'ความสำเร็จ' อื่น ๆ ( 1) เกณฑ์เริ่มต้นที่พบบ่อยที่สุดคือ. 5 แต่นี่มักจะไม่เหมาะสม predict.glm()ฟังก์ชั่นของ R จะช่วยให้คุณใช้type="link"ซึ่งผลลัพธ์การคาดการณ์ในระดับของตัวทำนายเชิงเส้น (เช่นก่อนการแปลงทั้งหมดข้างต้น) แต่จะไม่ช่วยคุณในบริบทนี้ การใช้type="response"ช่วยให้คุณมีความน่าจะเป็นที่คาดการณ์


เมื่อคุณพยายามประเมินว่ารูปแบบการถดถอยไบนารี (เช่นโลจิสติกส์) ทำนายการตอบสนองได้ดีแค่ไหนคุณมีหลายตัวเลือก:

  1. สิ่งแรกและที่เข้าใจง่ายที่สุดคือการเปรียบเทียบคลาสที่ทำนายกับคลาสที่สังเกตได้และคำนวณเปอร์เซ็นต์ที่ถูกต้อง แม้ว่ามันจะใช้งานง่าย แต่ก็มีปัญหา มันอาจเกิดขึ้นได้ในบางส่วนในขีด จำกัด ที่เหมาะสมที่สุดนอกเหนือจากด้านอื่น ๆ ของตัวแบบที่เหมาะสมอย่างเหมาะสม นอกจากนี้ยังโยนข้อมูลจำนวนมากออกไป (เช่นความห่างไกลจากความน่าจะเป็นที่คาดการณ์) ซึ่งเป็นสิ่งที่ไม่ควรทำ
  2. ตัวเลือกถัดไปของคุณคือการใช้พื้นที่ใต้เส้นโค้งลักษณะการดำเนินงานของตัวรับสัญญาณ (ROC) คนส่วนใหญ่ใช้ตัวเลือกนี้ มันค่อนข้างดีกว่าการใช้เปอร์เซ็นต์ที่ถูกต้อง สิ่งที่เกี่ยวกับ AUC ที่คนส่วนใหญ่ไม่ได้ตระหนักถึงก็คือว่ามันเป็นการวัดลำดับการทำนายที่เหมาะสมไม่ใช่ความแม่นยำจริงของพวกเขา นั่นคือถ้าคุณได้ทำนายความน่าจะเป็นสำหรับการสังเกตสี่ครั้ง.2, .4, .6, .8และคุณเพิ่ม. 01 ลงในพวกเขาทั้งหมด ( .21, .41, .61, .81), AUC ก็จะเหมือนเดิมแม้ว่าความน่าจะเป็นที่คาดการณ์ทั้งสองชุดจะไม่แม่นยำเท่ากันก็ตาม
  3. วิธีที่สามในการประเมินแบบจำลองของคุณคือการใช้ฟังก์ชันคะแนนที่เหมาะสม บางทีอาจจะเป็นฟังก์ชั่นคะแนนความนิยมมากที่สุดในบริบทของคุณเป็นคะแนนหนาม ในฐานะที่เป็น @fcoppens วิธีการในรหัสของคุณคือคะแนน Brier มันจะประเมินไม่เพียง แต่ถ้าตัวแบบทำนายอย่างเหมาะสมว่าการสังเกตการณ์หนึ่งมีแนวโน้มที่จะเป็น 'ความสำเร็จ' มากกว่าการสังเกตการณ์อื่น แต่ถ้าความน่าจะเป็นที่ทำนายของแบบจำลองนั้นถูกต้องจริง

เป็นที่น่าเสียดายที่คะแนน Brier นั้นเป็นที่รู้จักและใช้กันน้อยกว่า ถึงแม้ว่าการหยั่งรู้สัมพัทธ์ของวิธีการเหล่านี้คือ: เปอร์เซ็นต์ที่ถูกต้อง> AUC> คะแนน Brier แต่ข้อมูลที่แท้จริงของพวกเขาอยู่ตรงกันข้าม: คะแนน Brier> AUC> เปอร์เซ็นต์ที่ถูกต้อง หากคุณต้องการเพียงการวัดประสิทธิภาพของแบบจำลองอย่างง่ายความแตกต่างระหว่างวิธีการเหล่านี้มีความสำคัญน้อยกว่า แต่ถ้าคุณต้องการใช้วิธีการเหล่านี้เพื่อเพิ่มประสิทธิภาพของแบบจำลองหรือเลือกแบบจำลองการใช้วิธีที่ต่ำกว่าจะทำให้ประสิทธิภาพแย่ลง .


1

การใช้ RMSE นั้นเหมาะสมกว่าถ้าคำผิดพลาดของคุณถูกกระจายตามปกติโดยมีค่าเฉลี่ยเป็นศูนย์ แต่ในผลลัพธ์ไบนารีจะไม่ ดังนั้นฉันคิดว่าคุณควรใช้วิธีการที่แตกต่างกันซึ่งให้ผลที่ดีกว่าเช่นการเปรียบเทียบความแตกต่างในความน่าจะเป็น

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