วิธีการควบคุมค่าใช้จ่ายของการจำแนกประเภทในป่าสุ่ม?


21

เป็นไปได้หรือไม่ที่จะควบคุมค่าใช้จ่ายในการจำแนกประเภทใน R แพ็คเกจแบบสุ่มป่าไม้ ?

ในงานของฉันเองเชิงลบเท็จ (เช่นหายไปในข้อผิดพลาดที่บุคคลอาจมีโรค) มีราคาแพงกว่าบวกเท็จ แพ็คเกจrpartช่วยให้ผู้ใช้สามารถควบคุมค่าใช้จ่ายในการจำแนกประเภทได้โดยการระบุเมทริกซ์การสูญเสียไปยังการจัดประเภทน้ำหนักที่แตกต่างกัน มีอะไรที่คล้ายกันเกิดขึ้นเพื่อrandomForestอะไร? ตัวอย่างเช่นฉันควรใช้classwtตัวเลือกในการควบคุมเกณฑ์ของ Gini หรือไม่

คำตอบ:


8

ไม่จริงถ้าไม่ใช่โดยการสร้าง RF clone ด้วยตนเองเพื่อทำการบรรจุrpartโมเดล

ตัวเลือกบางอย่างมาจากความจริงที่ว่าเอาท์พุทของ RF เป็นจริงคะแนนต่อเนื่องมากกว่าการตัดสินใจที่คมชัดคือส่วนของต้นไม้ที่ลงคะแนนในชั้นเรียนบางส่วน มันสามารถสกัดด้วยpredict(rf_model,type="prob")และใช้ในการทำตัวอย่างเช่นเส้นโค้ง ROC ซึ่งจะเปิดเผยเกณฑ์ที่ดีกว่า 0.5 (ซึ่งสามารถรวมในภายหลังในการฝึกอบรม RF ด้วยcutoffพารามิเตอร์)

classwt วิธีการนั้นดูเหมือนจะใช้ได้ แต่มันก็ใช้งานไม่ได้ในทางปฏิบัติ - การเปลี่ยนระหว่างการทำนายที่สมดุลและการคัดเลือกระดับเดียวกันเล็กน้อยโดยไม่คำนึงถึงคุณลักษณะที่มีความคมชัดเกินกว่าจะใช้งานได้


MBq ขอบคุณมาก. (i) ROC Curve: ในกรณีนี้ฉันไม่ต้องการเส้นโค้ง ROC เนื่องจากฉันมีนักบวชของตัวเองเกี่ยวกับสิ่งที่การลดน้ำหนักควรจะเป็น (ii) classwt: ใช่ฉันพบว่าในทางปฏิบัติและสอดคล้องกับผู้ใช้รายอื่นผลลัพธ์ไม่เป็นไปตามที่คาดไว้ (iii) cutoff: ฉันไม่ชัดเจนเกี่ยวกับวิธีการใช้ประโยชน์cutoffในกรณีนี้และฉันยินดีรับคำแนะนำเพิ่มเติม
user5944

3

มีหลายวิธีรวมถึงค่าใช้จ่าย
(1) การสุ่มตัวอย่างสูง / ต่ำสำหรับต้นไม้แต่ละถุง (การสุ่มแบบแบ่งชั้น) เป็นวิธีการทั่วไปในการแนะนำต้นทุน คุณมีความไม่สมดุลของชุดข้อมูล
(2) น้ำหนัก ไม่ทำงาน ฉันคิดว่าสิ่งนี้จะเน้นในเอกสาร บางคนอ้างว่าคุณต้องการน้ำหนักในทุกขั้นตอนรวมถึงการแยก Gini และการลงคะแนนครั้งสุดท้าย ถ้ามันจะไปทำงานมันจะเป็นการใช้งานที่ยุ่งยาก
(3) ฟังก์ชัน Metacost ใน Weka
(4) การรักษาฟอเรสต์แบบสุ่มเป็นลักษณนามน่าจะเป็นและเปลี่ยนเกณฑ์ ฉันชอบตัวเลือกนี้น้อยที่สุด อาจเป็นเพราะการขาดความรู้ของฉัน แต่ถึงแม้ว่าอัลกอริทึมสามารถส่งออกความน่าจะเป็นไม่ได้กับฉันที่จะปฏิบัติต่อพวกเขาราวกับว่านี่เป็นแบบจำลองความน่าจะเป็น

แต่ฉันแน่ใจว่ามีวิธีการเพิ่มเติม


3

ขอแนะนำว่าหากตัวแปรที่คุณพยายามคาดการณ์ไม่ใช่ 50% สำหรับclass 1และ 50% สำหรับclass 2(เช่นส่วนใหญ่ของกรณี) คุณปรับcutoffพารามิเตอร์เพื่อแสดงค่าจริงOOBโดยสรุป

ตัวอย่างเช่น,

randomForest(data=my_data, formula, ntree = 501, cutoff=c(.96,.04))

ในกรณีนี้น่าจะเป็นของมีค่าของหนึ่งclass 1คือ.96ในขณะที่มีค่ามีclass 2.04

0.5มิฉะนั้นป่าสุ่มใช้เกณฑ์ของ


1

หนึ่งสามารถรวมcostMatrixในrandomForestอย่างชัดเจนผ่านparmsพารามิเตอร์:

library(randomForest)
costMatrix <- matrix(c(0,10,1,0), nrow=2)
mod_rf <- randomForest(outcome ~ ., data = train, ntree = 1000, parms = list(loss=costMatrix))

0

คุณสามารถรวมความไวของราคาโดยใช้sampsizeฟังก์ชั่นในrandomForestแพ็คเกจ

model1=randomForest(DependentVariable~., data=my_data, sampsize=c(100,20))

แตกต่างกันไป(100,20)ตามข้อมูลที่คุณมีและสมมติฐาน / กฎเกณฑ์ทางธุรกิจที่คุณใช้งาน

ต้องใช้การทดลองและข้อผิดพลาดเล็กน้อยเพื่อรับความสับสนของเมทริกซ์ที่สะท้อนต้นทุนของข้อผิดพลาดการจำแนกประเภท ดูที่การคาดการณ์ความเสี่ยงทางอาญาของ Richard Berk : วิธีการเรียนรู้ของเครื่อง , หน้า 38 82

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