Gradient boosted trees: การแสดงผลด้วยกราฟ
เมื่อได้ผลการพยากรณ์จากโมเดลแล้ว คำถามต่อมาคือ "ผลลัพธ์เหล่านี้แม่นยำแค่ไหน?" มีกราฟหลายประเภทที่ช่วยวินิจฉัยความแม่นยำของการพยากรณ์ได้ ในที่นี้จะดูกราฟที่ใช้บ่อย 2 แบบ ได้แก่ scatter plot ของค่าพยากรณ์เทียบกับค่าจริง เพื่อดูว่าทั้งสองสอดคล้องกันเพียงใด และ density plot ของ residuals ซึ่งควรมีการกระจายใกล้เคียงกับการแจกแจงปกติ กราฟที่ได้จะมีลักษณะดังนี้

ในแบบฝึกหัดนี้ จะฝึกคำนวณ residuals ด้วยตัวเอง (ค่าพยากรณ์ลบด้วยค่าจริง) จากผลการพยากรณ์ของโมเดล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
มีการกำหนด tibble ในเครื่องชื่อ responses ซึ่งประกอบด้วยปีที่พยากรณ์และปีจริงไว้แล้ว
- วาด scatter plot ของค่าพยากรณ์เทียบกับค่าจริง
- เรียกใช้
ggplot() - อาร์กิวเมนต์แรกคือชุดข้อมูล
responses - อาร์กิวเมนต์ที่สองควรระบุชื่อคอลัมน์สำหรับแกน x และแกน y (
actualและpredictedตามลำดับ) โดยไม่ต้องใส่เครื่องหมายคำพูด และครอบด้วยaes() - เพิ่มจุดข้อมูลโดยเรียก
geom_point() - ทำให้จุดข้อมูลโปร่งแสงบางส่วนโดยตั้งค่า
alpha = 0.1 - เพิ่มเส้นอ้างอิงโดยเรียก
geom_abline()พร้อมกำหนดintercept = 0และslope = 1
- เรียกใช้
- สร้าง tibble ของ residuals โดยตั้งชื่อว่า
residuals- เรียก
transmute()บนresponses - ตั้งชื่อคอลัมน์ใหม่ว่า
residual residualควรเท่ากับค่าพยากรณ์ลบด้วยค่าจริง
- เรียก
- วาด density plot ของ residuals
- ส่งต่อ tibble ที่ได้จาก transmute ไปยัง
ggplot()ด้วย pipe ggplot()ต้องการ aesthetic เดียว คือresidualครอบด้วยaes()- เพิ่มเส้นโค้งความหนาแน่นความน่าจะเป็นโดยเรียก
geom_density() - เพิ่มเส้นอ้างอิงแนวตั้งผ่านศูนย์โดยเรียก
geom_vline()พร้อมกำหนดxintercept = 0
- ส่งต่อ tibble ที่ได้จาก transmute ไปยัง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# responses has been pre-defined
responses
# Draw a scatterplot of predicted vs. actual
ggplot(___, aes(___, ___)) +
# Add the points
___ +
# Add a line at actual = predicted
___
residuals <- responses %>%
# Transmute response data to residuals
___
# Draw a density plot of residuals
ggplot(___, aes(___)) +
# Add a density curve
___ +
# Add a vertical line through zero
___