วิธีการทำนายความน่าจะเป็นใน xgboost?


16

ฟังก์ชันการทำนายด้านล่างให้ค่า -ve เช่นกันดังนั้นจึงไม่น่าจะเป็น

param <- list(max.depth = 5, eta = 0.01,  objective="binary:logistic",subsample=0.9)
bst <- xgboost(param, data = x_mat, label = y_mat,nround = 3000)

pred_s <- predict(bst, x_mat_s2)

ฉันลองใช้ Google แล้วpred_s <- predict(bst, x_mat_s2,type="response") แต่มันไม่ทำงาน

คำถาม

จะทำนายความน่าจะเป็นแทนได้อย่างไร?


ความน่าจะเป็นของการส่งออกโดยค่าเริ่มต้นด้วยการตั้งค่าที่คุณใช้หรือไม่ ฉันหมายถึง: คุณตรวจสอบ pred_s แล้วและคุณมั่นใจว่าสิ่งเหล่านั้นไม่ใช่ความน่าจะเป็นหรือไม่?
kpb

ไม่มีค่าลบ ความน่าจะเป็นควรอยู่ระหว่าง 0 ถึง 1
GeorgeOfTheRF

ฉันไม่เห็นปัญหาใด ๆ ที่ชัดเจน (แม้ว่าฉันคุ้นเคยกับ wrapper หลาม) มีคุณพยายามเพิ่มoutputmargin=Fให้กับpredictฟังก์ชั่น? ถ้าอย่างใดoutputmarginมีการตั้งค่าTมันจะส่งกลับค่าก่อนการแปลงโลจิสติก
การกลับรายการ

1
สำหรับ Python คุณสามารถคัดลอกpredict_probaการใช้งานจากsklearnAPI: github.com/dmlc/xgboost/blob/master/python-package/xgboost/…
Anton Tarasenko

คำตอบ:


14

รู้ว่าฉันสายไปหน่อย แต่เพื่อให้ได้ความน่าจะเป็นจากxgboostคุณควรระบุmulti:softmaxวัตถุประสงค์ดังนี้:

xgboost(param, data = x_mat, label = y_mat,nround = 3000, objective='multi:softprob')

จาก ?xgb.train :

multi: softprob เหมือนกับ softmax แต่เอาท์พุทเวกเตอร์ของ ndata * nclass ซึ่งสามารถปรับเปลี่ยนเป็น ndata, nclass matrix เพิ่มเติม ผลลัพธ์ประกอบด้วยความน่าจะเป็นที่คาดการณ์ของแต่ละจุดข้อมูลที่เป็นของแต่ละคลาส


2
ขอบคุณ ฟังก์ชั่นการสูญเสียนี้แตกต่างจากไบนารี: โลจิสติกสำหรับการจำแนกไบนารีอย่างไร
GeorgeOfTheRF

3
มันเป็นเพียงการวางนัยทั่วไปของฟังก์ชันลอจิสติกสำหรับกรณีหลายระดับไม่ควรมีความแตกต่างอย่างมีนัยสำคัญ
cyberj0g

14

เพียงแค่ใช้แทนpredict_proba คุณสามารถออกจากวัตถุประสงค์เป็นpredictbinary:logistic


3
หากนี่คือ Python และไม่ใช่ R คำตอบนี้อาจสมเหตุสมผล ภาษาผิด
B_Miner

1
โอ๊ะ! ขอบคุณ @B_Miner ฉันไม่ได้ลบคำตอบนี้เพราะอาจเป็นประโยชน์กับคนอื่น ๆ ที่จะทำผิดพลาดเหมือนกันและคิดว่าเรากำลังพูดถึงงูหลาม ..
ihadanny

สำหรับฉันนี่ไม่ได้ทำเคล็ดลับdatascience.stackexchange.com/questions/14527/ …
Georg Heiler

4
xgboost ไม่มีฟังก์ชั่น predict_proba
Ashoka Lella

1
XGBoost ลักษณนามมีตัวเลือกPred_proba xgboost.readthedocs.io/en/latest/python/python_api.html
Paul Bendevis

0

หลังจากการทำนาย

pred_s <- predict(bst, x_mat_s2)

คุณสามารถรับความน่าจะเป็นได้ด้วย

pred_s$data

หากนี่คือการจำแนกประเภทไบนารีดังนั้นให้pred_s$dataรวม prob.0, prob.1,

ดังนั้นคุณสามารถรับ prob.1 โดย

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