ค่า 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจจับอคติในโมเดลแมชชีนเลิร์นนิง
- ค่า SHAP สำหรับการอธิบายแบบจำลอง
- LIME: คำอธิบายเฉพาะที่ที่ตีความได้
- กรอบจริยธรรมและธรรมาภิบาลด้านปัญญาประดิษฐ์