การแสดงผล SHAP explainability

Explainable AI ด้วย Python

Fouad Trad

Machine Learning Engineer

ชุดข้อมูล

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

model: random forest regressor เพื่อพยากรณ์ charges

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Explainable AI ด้วย Python

Feature importance plot

  • แสดงความสำคัญของแต่ละฟีเจอร์ที่มีต่อผลลัพธ์ของโมเดล
shap.summary_plot(shap_values, X, plot_type="bar")

กราฟ feature importance แสดงว่าสถานะการสูบบุหรี่เป็นฟีเจอร์ที่สำคัญที่สุด

Explainable AI ด้วย Python

Beeswarm plot

  • แสดงการกระจายตัวของค่า SHAP
  • เน้นทิศทางและขนาดของแต่ละฟีเจอร์ที่มีต่อการพยากรณ์
    • สีแดง → ค่าฟีเจอร์สูง
    • สีน้ำเงิน → ค่าฟีเจอร์ต่ำ
    • SHAP value > 0 → เพิ่มผลลัพธ์
    • SHAP value < 0 → ลดผลลัพธ์

Beeswarm plot แสดงการกระจายตัวของค่า SHAP แต่ละฟีเจอร์ โดยสีแสดงค่าของฟีเจอร์

Explainable AI ด้วย Python

Beeswarm plot

  • แสดงการกระจายตัวของค่า SHAP
  • เน้นทิศทางและขนาดของแต่ละฟีเจอร์ที่มีต่อการพยากรณ์
    • สีแดง → ค่าฟีเจอร์สูง
    • สีน้ำเงิน → ค่าฟีเจอร์ต่ำ
    • SHAP value > 0 → เพิ่มผลลัพธ์
    • SHAP value < 0 → ลดผลลัพธ์

Beeswarm plot เดิม เน้นให้เห็นว่าค่าฟีเจอร์ 'smoker' ที่สูงมีค่า SHAP เป็นบวก

Explainable AI ด้วย Python

Beeswarm plot

  • แสดงการกระจายตัวของค่า SHAP
  • เน้นทิศทางและขนาดของแต่ละฟีเจอร์ที่มีต่อการพยากรณ์
    • สีแดง → ค่าฟีเจอร์สูง
    • สีน้ำเงิน → ค่าฟีเจอร์ต่ำ
    • SHAP value > 0 → เพิ่มผลลัพธ์
    • SHAP value < 0 → ลดผลลัพธ์
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

Beeswarm plot เดิม เน้นให้เห็นว่าค่าฟีเจอร์ 'smoker' ที่ต่ำมีค่า SHAP เป็นลบ

Explainable AI ด้วย Python

Partial dependence plot

  • แสดงความสัมพันธ์ระหว่างฟีเจอร์และผลลัพธ์การพยากรณ์
  • แสดงผลกระทบของฟีเจอร์ตลอดช่วงค่า
  • ตรวจสอบว่าความสัมพันธ์เป็นไปตามที่คาดหวังหรือไม่

กราฟ partial dependence ทั่วไป แสดงความสัมพันธ์ระหว่างฟีเจอร์และผลลัพธ์ในรูปแบบฟังก์ชันลดลง

Explainable AI ด้วย Python

Partial dependence plot

  • สำหรับแต่ละตัวอย่าง:
    • เปลี่ยนค่าของฟีเจอร์ที่เลือก
    • คงค่าฟีเจอร์อื่นไว้
    • พยากรณ์ผลลัพธ์
  • เฉลี่ยผลลัพธ์จากทุกตัวอย่าง
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Partial dependence plot ของฟีเจอร์ age แสดงว่าเมื่ออายุเพิ่มขึ้น ค่าพยากรณ์ก็เพิ่มขึ้นด้วย

Explainable AI ด้วย Python

Partial dependence plot

  • สำหรับแต่ละตัวอย่าง:

    • เปลี่ยนค่าของฟีเจอร์ที่เลือก
    • คงค่าฟีเจอร์อื่นไว้
    • พยากรณ์ผลลัพธ์
  • เฉลี่ยผลลัพธ์จากทุกตัวอย่าง

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Partial dependence plot เดิม เน้นให้เห็นการกระจายตัวของค่า age ในชุดข้อมูล

Explainable AI ด้วย Python

มาฝึกกันเถอะ!

Explainable AI ด้วย Python

Preparing Video For Download...