0Pricing
Learn AI with Python · บทเรียน

ค่า SHAP สำหรับการอธิบายแบบจำลอง

shap.Explainer, TreeExplainer, แผนภาพแรง แผนภาพฝูงผึ้ง และการจัดอันดับความสำคัญของคุณลักษณะ

ค่า SHAP สำหรับการอธิบายแบบจำลอง เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดความสามารถในการอธิบายจึงสำคัญ

โมเดลที่ซับซ้อนมีความแม่นยำสูงแต่ไม่โปร่งใส ความสามารถในการอธิบายช่วยตอบคำถามว่า "เหตุใดโมเดลจึงทำการทำนายนี้" ซึ่งจำเป็นต่อความไว้วางใจ การแก้ไขข้อบกพร่อง และการปฏิบัติตามข้อกำหนดของหน่วยงานกำกับดูแล SHAP เป็นหนึ่งในวิธีการอธิบายที่ได้รับความนิยมมากที่สุด

SHAP วัดอะไร

SHAP (คำอธิบายแบบบวกของแชปลีย์ หรือ SHapley Additive exPlanations) กำหนดให้คุณลักษณะแต่ละรายการมีส่วนสนับสนุนต่อการทำนายหนึ่งรายการ ค่าดังกล่าวอ้างอิงจากค่าของแชปลีย์ในทฤษฎีเกมแบบร่วมมือ โดยคุณลักษณะแต่ละรายการเปรียบเสมือน "ผู้เล่น" และค่า SHAP ของคุณลักษณะนั้นคือส่วนแบ่งที่เป็นธรรมของผลการทำนายเมื่อเทียบกับค่าอ้างอิง

การบวก

ค่า SHAP เป็นค่าแบบบวก กล่าวคือ ค่าอ้างอิง (ผลลัพธ์เฉลี่ยของโมเดล) บวกกับผลรวมของค่า SHAP ของคุณลักษณะทั้งหมดจะเท่ากับผลการทำนายจริง ทำให้คำอธิบายทุกชุดเป็นการแจกแจงผลลัพธ์อย่างครบถ้วนและตรวจสอบย้อนหลังได้

# prediction = base_value + sum(shap_values_for_each_feature)

TreeExplainer

สำหรับโมเดลต้นไม้ (เอกซ์จีบูสต์, LightGBM และป่าสุ่ม) shap.TreeExplainer จะคำนวณค่า SHAP ที่แม่นยำได้อย่างรวดเร็วโดยใช้ประโยชน์จากโครงสร้างของต้นไม้

import shap
import xgboost

model = xgboost.XGBClassifier().fit(X_train, y_train)
explainer = shap.TreeExplainer(model)

การคำนวณ shap_values

explainer.shap_values(X_test) จะคืนค่าเมทริกซ์ที่มีค่า SHAP หนึ่งค่าต่อคุณลักษณะต่อแถว ค่าเหล่านี้คือส่วนสนับสนุนดิบที่คุณจะนำไปแสดงภาพ

shap_values = explainer.shap_values(X_test)
print(shap_values.shape)  # (n_samples, n_features)

แผนภาพฝูงผึ้งของ summary_plot

shap.summary_plot จะสร้างแผนภาพฝูงผึ้ง โดยจุดแต่ละจุดแทนตัวอย่างหนึ่งรายการของคุณลักษณะหนึ่งรายการ ตำแหน่งแสดงค่า SHAP (ทิศทางและขนาดของผลกระทบ) ส่วนสีแสดงค่าของคุณลักษณะ คุณลักษณะจะเรียงลำดับตามความสำคัญโดยรวม

shap.summary_plot(shap_values, X_test)

การอ่านแผนภาพฝูงผึ้ง

วิธีอ่านแผนภาพฝูงผึ้ง:

  • คุณลักษณะที่อยู่ด้านบนมีความสำคัญมากที่สุดในภาพรวม
  • จุดที่อยู่ไกลทางขวาจะผลักให้การทำนายสูงขึ้น ส่วนจุดที่อยู่ไกลทางซ้ายจะผลักให้การทำนายต่ำลง
  • สีช่วยบอกทิศทาง เช่น ค่าคุณลักษณะที่สูง (สีแดง) อยู่ทางขวา หมายความว่า "ค่าที่สูงทำให้การทำนายเพิ่มขึ้น"

การอธิบายการทำนายหนึ่งรายการ

SHAP โดดเด่นเมื่อใช้ในระดับรายบุคคล หากต้องการอธิบายแถวหนึ่งรายการ คุณต้องมีค่า SHAP ของแถวนั้นและค่าพื้นฐานของโมเดล

idx = 0
base = explainer.expected_value
row_shap = shap_values[idx]

force_plot

shap.force_plot แสดงการทำนายหนึ่งรายการเป็นแรงที่ผลักออกจากค่าพื้นฐาน คุณลักษณะสีแดงจะผลักผลลัพธ์ให้สูงขึ้น ส่วนคุณลักษณะสีน้ำเงินจะผลักให้ต่ำลง ผลรวมสุทธิจะไปสิ้นสุดที่การทำนายสุดท้าย

shap.force_plot(
    explainer.expected_value,
    shap_values[0],
    X_test.iloc[0],
)

waterfall_plot

shap.waterfall_plotเป็นมุมมองการทำนายหนึ่งรายการที่อ่านเข้าใจได้ง่ายที่สุด โดยเริ่มจากค่าพื้นฐาน แล้วเรียงซ้อนส่วนสนับสนุนของคุณลักษณะแต่ละรายการทีละขั้นจนถึงผลลัพธ์สุดท้าย โดยเรียงตามขนาด

shap.waterfall_plot(
    shap.Explanation(
        values=shap_values[0],
        base_values=explainer.expected_value,
        data=X_test.iloc[0],
    )
)

ระดับภาพรวมกับระดับเฉพาะรายการ

SHAP ตอบโจทย์สองด้าน:

  • ภาพรวม: summary_plot แสดงว่าคุณลักษณะใดขับเคลื่อนโมเดลโดยรวม
  • เฉพาะรายการ: force_plot และ waterfall_plot อธิบายการทำนายหนึ่งรายการโดยเฉพาะ

ทั้งสองแบบมาจากค่า SHAP ชุดเดียวกัน จึงให้คำอธิบายที่สอดคล้องกันในทุกระดับ

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับ SHAP ของคุณ

ทบทวน

คุณได้เรียนรู้ความสามารถในการอธิบายโมเดลด้วย SHAP:

  • shap.TreeExplainer(model)คำนวณค่าที่แม่นยำสำหรับโมเดลต้นไม้
  • explainer.shap_values(X_test)คืนค่าส่วนสนับสนุนของคุณลักษณะแต่ละรายการ
  • summary_plotแผนภาพฝูงผึ้งแสดงความสำคัญในภาพรวม
  • force_plot และ waterfall_plotอธิบายการทำนายหนึ่งรายการ
  • ค่า SHAP เป็นค่าแบบบวก: ค่าพื้นฐาน + ส่วนสนับสนุน = การทำนาย

คำถามที่พบบ่อย

บทเรียน “ค่า SHAP สำหรับการอธิบายแบบจำลอง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ค่า SHAP สำหรับการอธิบายแบบจำลอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ค่า SHAP สำหรับการอธิบายแบบจำลอง”

shap.Explainer, TreeExplainer, แผนภาพแรง แผนภาพฝูงผึ้ง และการจัดอันดับความสำคัญของคุณลักษณะ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ค่า SHAP สำหรับการอธิบายแบบจำลอง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจจับอคติในโมเดลแมชชีนเลิร์นนิง
  2. ค่า SHAP สำหรับการอธิบายแบบจำลอง
  3. LIME: คำอธิบายเฉพาะที่ที่ตีความได้
  4. กรอบจริยธรรมและธรรมาภิบาลด้านปัญญาประดิษฐ์
← กลับไปที่ Learn AI with Python