ฉันพยายามเข้าใจว่า Random Forest ทำงานอย่างไร ฉันมีความเข้าใจเกี่ยวกับวิธีการสร้างต้นไม้ แต่ไม่สามารถเข้าใจว่า Random Forest สร้างการคาดการณ์จากตัวอย่างถุงได้อย่างไร มีใครให้คำอธิบายง่ายๆกับฉันได้ไหม :)
ฉันพยายามเข้าใจว่า Random Forest ทำงานอย่างไร ฉันมีความเข้าใจเกี่ยวกับวิธีการสร้างต้นไม้ แต่ไม่สามารถเข้าใจว่า Random Forest สร้างการคาดการณ์จากตัวอย่างถุงได้อย่างไร มีใครให้คำอธิบายง่ายๆกับฉันได้ไหม :)
คำตอบ:
ต้นไม้แต่ละต้นในป่าถูกสร้างขึ้นจากตัวอย่างบูตของการสังเกตในข้อมูลการฝึกอบรมของคุณ ข้อสังเกตเหล่านั้นในตัวอย่าง bootstrap สร้างต้นไม้ในขณะที่สิ่งที่ไม่อยู่ในตัวอย่าง bootstrap จะสร้างตัวอย่าง out-of-bag (หรือ OOB)
ควรชัดเจนว่าตัวแปรเดียวกันพร้อมใช้งานสำหรับเคสในข้อมูลที่ใช้ในการสร้างทรีสำหรับเคสในตัวอย่าง OOB ในการรับการคาดการณ์สำหรับตัวอย่าง OOB แต่ละอันจะถูกส่งผ่านต้นไม้ปัจจุบันและกฎสำหรับต้นไม้ที่ตามมาจนกระทั่งมันมาถึงในโหนดเทอร์มินัล นั่นทำให้การคาดการณ์ของ OOB สำหรับต้นไม้นั้น
กระบวนการนี้ซ้ำหลายครั้งโดยแต่ละต้นได้รับการฝึกฝนเกี่ยวกับตัวอย่างบู๊ตสแตรปใหม่จากข้อมูลการฝึกอบรมและการคาดการณ์สำหรับตัวอย่าง OOB ใหม่ที่ได้รับ
เมื่อต้นไม้โตขึ้นจำนวนหนึ่งตัวอย่างจะอยู่ในกลุ่มตัวอย่างของ OOB มากกว่าหนึ่งครั้งดังนั้น "ค่าเฉลี่ย" ของการคาดการณ์เหนือต้นไม้ N ที่มีกลุ่มตัวอย่างอยู่ใน OOB ใช้เป็นคำทำนายของ OOB สำหรับแต่ละตัวอย่างการฝึกอบรมสำหรับ ต้นไม้ 1, ... , N. โดย "เฉลี่ย" เราใช้ค่าเฉลี่ยของการคาดคะเนสำหรับการตอบสนองอย่างต่อเนื่องหรือการโหวตส่วนใหญ่อาจใช้สำหรับการตอบสนองอย่างเป็นหมวดหมู่ (การโหวตส่วนใหญ่คือชั้นที่มีคะแนนโหวตมากกว่าชุด ต้นไม้ 1, ... , N)
ตัวอย่างเช่นสมมติว่าเรามีการคาดการณ์ OOB ต่อไปนี้สำหรับตัวอย่าง 10 ชุดในการฝึกอบรมบนต้นไม้ 10 ต้น
set.seed(123)
oob.p <- matrix(rpois(100, lambda = 4), ncol = 10)
colnames(oob.p) <- paste0("tree", seq_len(ncol(oob.p)))
rownames(oob.p) <- paste0("samp", seq_len(nrow(oob.p)))
oob.p[sample(length(oob.p), 50)] <- NA
oob.p
> oob.p
tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1 NA NA 7 8 2 1 NA 5 3 2
samp2 6 NA 5 7 3 NA NA NA NA NA
samp3 3 NA 5 NA NA NA 3 5 NA NA
samp4 6 NA 10 6 NA NA 3 NA 6 NA
samp5 NA 2 NA NA 2 NA 6 4 NA NA
samp6 NA 7 NA 4 NA 2 4 2 NA NA
samp7 NA NA NA 5 NA NA NA 3 9 5
samp8 7 1 4 NA NA 5 6 NA 7 NA
samp9 4 NA NA 3 NA 7 6 3 NA NA
samp10 4 8 2 2 NA NA 4 NA NA 4
ในกรณีNA
ที่ตัวอย่างอยู่ในข้อมูลการฝึกอบรมสำหรับต้นไม้นั้น (กล่าวอีกนัยหนึ่งว่าไม่ได้อยู่ในตัวอย่าง OOB)
ค่าเฉลี่ยของNA
ค่าที่ไม่ใช่สำหรับแต่ละแถวให้การคาดการณ์ของ OOB สำหรับแต่ละตัวอย่างสำหรับทั้งฟอเรสต์
> rowMeans(oob.p, na.rm = TRUE)
samp1 samp2 samp3 samp4 samp5 samp6 samp7 samp8 samp9 samp10
4.00 5.25 4.00 6.20 3.50 3.80 5.50 5.00 4.60 4.00
เนื่องจากต้นไม้แต่ละต้นถูกเพิ่มเข้าไปในป่าเราสามารถคำนวณข้อผิดพลาดของ OOB ได้รวมถึงต้นไม้นั้น ตัวอย่างเช่นด้านล่างเป็นวิธีการคำนวณสำหรับแต่ละตัวอย่าง:
FUN <- function(x) {
na <- is.na(x)
cs <- cumsum(x[!na]) / seq_len(sum(!na))
x[!na] <- cs
x
}
t(apply(oob.p, 1, FUN))
> print(t(apply(oob.p, 1, FUN)), digits = 3)
tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1 NA NA 7.00 7.50 5.67 4.50 NA 4.6 4.33 4.0
samp2 6 NA 5.50 6.00 5.25 NA NA NA NA NA
samp3 3 NA 4.00 NA NA NA 3.67 4.0 NA NA
samp4 6 NA 8.00 7.33 NA NA 6.25 NA 6.20 NA
samp5 NA 2 NA NA 2.00 NA 3.33 3.5 NA NA
samp6 NA 7 NA 5.50 NA 4.33 4.25 3.8 NA NA
samp7 NA NA NA 5.00 NA NA NA 4.0 5.67 5.5
samp8 7 4 4.00 NA NA 4.25 4.60 NA 5.00 NA
samp9 4 NA NA 3.50 NA 4.67 5.00 4.6 NA NA
samp10 4 6 4.67 4.00 NA NA 4.00 NA NA 4.0
ด้วยวิธีนี้เราจะเห็นว่าการทำนายถูกสะสมเหนือต้นไม้ N ในป่าจนถึงการวนซ้ำที่กำหนด หากคุณอ่านข้ามแถวค่าที่ไม่ถูกต้องที่สุดNA
คือค่าที่ฉันแสดงด้านบนสำหรับการทำนาย OOB นั่นคือวิธีการติดตามประสิทธิภาพ OOB - สามารถคำนวณ RMSEP สำหรับตัวอย่าง OOB ตามการคาดการณ์ของ OOB ที่สะสมอยู่เหนือต้นไม้ N
โปรดทราบว่ารหัส R ที่แสดงไม่ได้มาจากภายในของรหัส RandomForest ในแพ็คเกจRandomForestสำหรับ R - ฉันเพิ่งเคาะรหัสง่ายๆเพื่อให้คุณสามารถติดตามสิ่งที่เกิดขึ้นเมื่อการคาดการณ์ของแต่ละต้นถูกกำหนด
เป็นเพราะต้นไม้แต่ละต้นสร้างขึ้นจากตัวอย่าง bootstrap และมีต้นไม้จำนวนมากในป่าสุ่มเช่นการสังเกตแต่ละชุดการฝึกอบรมอยู่ในตัวอย่าง OOB สำหรับต้นไม้หนึ่งต้นหรือมากกว่านั้นสามารถคาดการณ์ OOB ได้ทั้งหมด ตัวอย่างในข้อมูลการฝึกอบรม
ฉันได้คัดลอกปัญหาต่าง ๆ เช่นข้อมูลที่ขาดหายไปสำหรับกรณี OOB บางกรณี ฯลฯ แต่ปัญหาเหล่านี้เกี่ยวข้องกับการถดถอยแบบเดี่ยวหรือแผนภูมิการจำแนกประเภท นอกจากนี้โปรดทราบว่าแต่ละต้นในฟอเรสต์จะใช้mtry
ตัวแปรที่เลือกแบบสุ่มเท่านั้น
http://www.ime.unicamp.br/~ra109078/PED/Data%20Minig%20with%20R/Data%20Mining%20with%20R.pdf
ฉันอ่านและพยายามที่จะเข้าใจ บนหน้า 115-116 ผู้เขียนใช้ RF เพื่อเลือกvariable importance
ตัวบ่งชี้ทางเทคนิค
"To get predictions for the OOB sample, each one is passed down the current tree and the rules for the tree followed until it arrives in a terminal node"
คุณมีคำอธิบายง่ายๆว่าอะไรrules for the tree
คืออะไร และฉันเข้าใจsample
ว่าเป็นแถวอย่างถูกต้องหรือไม่ถ้าฉันเข้าใจว่ากลุ่มตัวอย่างเป็นgroups
ข้อสังเกตที่ต้นไม้แบ่งข้อมูลออกมา