สถาบันข้อมูลขนาดใหญ่ (องค์การมหาชน)

Logo BDI For web

ตีความโมเดล Machine Learning: การใช้งาน LIME กับข้อมูลตาราง

Sep 5, 2022

บทความนี้ถูกคุ้มครองด้วย Creative Commons License

เนื้อหาส่วนมากของบทความนี้ได้รับการแปล สังเคราะห์ และเรียบเรียงจากหนังสือ Interpretable Machine Learning โดย Christoph Molnar

Most content in this article is translated, compiled, and summarized from the Interpretable Machine Learning by Christoph Molnar

จากที่เราได้พูดถึงหลักการคร่าวๆ ของ Model-Agnostic Interpretation Method สำหรับใช้ในการตีความโมเดล machine learning และหลักการทำงานของ LIME ซึ่งเป็นเทคนิคหนึ่งในการอธิบายผลกระทบของ feature ต่อคำทำนายของโมเดล ณ จุดที่สนใจในบทความที่แล้ว ในบทความนี้ เราจะมาดูตัวอย่างการใช้งานเทคนิค LIME กับข้อมูลจำพวกตารางกันครับ สำหรับการใช้งาน LIME กับข้อมูลประเภทอื่นๆเช่นข้อมูลข้อความ (text) หรือ ข้อมูลรูปภาพ (image) นั้น ผู้อ่านสามารถอ่านรายละเอียดเพิ่มเติมได้จากผลงานตีพิมพ์ รวมไปทั้งหนังสือที่เป็นแหล่งที่มาของข้อมูลของบทความนี้ และแหล่งข้อมูลข้อมูลอื่น ๆ อีกมากมายครับ

การสร้างชุดข้อมูลใหม่สำหรับ LIME จากข้อมูลประเภทตาราง (tabular data)

สำหรับการสร้างชุดข้อมูลที่ใช้ฝึกฝนจากข้อมูลประเภทตารางนั้น ผู้ใช้จะเริ่มจากการปรับค่าแต่ละ feature ของข้อมูลจุดที่สนใจ (perturb) โดยค่าที่นำมาเปลี่ยนแปลงนั้นจะได้มาจากการสุ่มข้อมูลจาก normal distribution ที่ถูกสร้างขึ้นด้วยค่าเฉลี่ย (mean) และส่วนเบี่ยงเบนมาตรฐาน (standard deviation) ที่ได้มาจากข้อมูลของ feature ที่ต้องการจากข้อมูลจริงทั้งหมดในชุดข้อมูล ทั้งนี้ แม้ว่าค่าที่เทคนิค LIME นำมาใช้สร้าง distribution เพื่อเปลี่ยนแปลงข้อมูลจะเป็นค่าที่ถูกคำนวณมาจากภาพรวมของข้อมูลทั้งหมดที่นำมาใช้ฝึกฝนแทนที่จะเป็นข้อมูลเฉพาะในบริเวณจุดที่สนใจ ซึ่งอาจมองดูไม่เหมาะสมในทางทฤษฎี (เนื่องจากเราพยายามเน้นให้โมเดลที่เลือกมาใช้อธิบายมีความคล้ายคลึงกับโมเดลตั้งต้นในพื้นที่เล็กๆใกล้กับจุดที่สนใจ) แต่ในทางกลับกัน การสุ่มในลักษณะนี้จะช่วยเพิ่มโอกาสให้ผลการทำนายของข้อมูลบางส่วนที่ถูกสุ่มออกมามีความแตกต่างจากผลการทำนายของข้อมูลจุดที่เราสนใจ ซึ่งจะทำให้โมเดลที่ผู้ใช้เลือกมาทำการอธิบายสามารถทำการเรียนรู้ในระหว่างการฝึกฝนได้บ้าง (เพราะถ้าหากข้อมูลที่ได้จากการสุ่มมีผลการทำนายเหมือนกันหมด โมเดลก็จะไม่สามารถเรียนรู้อะไรได้) เมื่อได้ทำการฝึกฝนโมเดลสำหรับอธิบายเสร็จสิ้น ผู้ใช้ก็จะสามารถนำโมเดลดังกล่าวมาใช้อธิบายผลกระทบของข้อมูลต่อการทำนายในจุดที่ต้องการได้ครับ

รูปภาพจาก Interpretable Machine Learning Chapter 9.2

ในรูปด้านบน ภาพ A แสดงผลการทำนายของโมเดล random forest ที่ใช้งาน features 2 อย่างได้แก่ x1 และ x2 โดยมีผลการทำนายเป็น 1 (สีฟ้า) หรือ 0 (สีเทา) ภาพ B แสดงจุดข้อมูลที่ผู้ใช้สนใจ (จุดเหลืองใหญ่) และจุดข้อมูลที่ถูกสุ่มมาจาก normal distribution ของข้อมูล (จุดเล็ก) ภาพ C แสดงการให้ความสำคัญ (weight) กับข้อมูลที่อยู่ใกล้กับจุดที่สนใจมากกว่าข้อมูลที่อยู่ไกลออกไป และ ภาพ D แสดงกริดของสัญลักษณ์ที่บ่งบอกผลของการทำ classification  (+ หมายถึงทำนาย 1 , – หมายถึงทำนาย 0) ในแต่ละพื้นที่ (region) ของโมเดลที่ถูกฝึกฝนจากจุดข้อมูลที่ผ่านการกำหนด weight ดังแสดงในภาพ C  ในขณะที่ เส้นสีขาวเป็นเส้นแบ่งขอบเขตการตัดสินใจของ classifier (decision boundary) ที่มีความน่าจะเป็น (probability) ในการทำนายผลเป็น 1 เท่ากับ 0.5

อย่างที่เคยได้กล่าวไปแล้ว สิ่งที่ยากสำหรับการใช้งานเทคนิคนี้คือการตัดสินใจเลือกบริเวณ (neighborhood) รอบๆจุดที่สนใจที่จะเป็นประโยชน์แก่การใช้ฝึกฝนโมเดลเพื่อตีความ ในปัจจุบัน เทคนิค LIME อาศัยการทำ exponential smoothing kernel ในการกำหนด neighborhood ที่ใช้งาน โดยตัว library สำหรับใช้งานเทคนิค LIME ใน Python จะใช้ smoothing kernel นี้กับข้อมูลที่ผ่านการทำ normalized แล้ว สำหรับความกว้างของ kernel (kernel width) นั้น โดย default ตัว library จะใช้ค่าความกว้างที่มีขนาด 0.75 เท่าของ รากที่สอง (square root) ของจำนวนคอลัมน์ของข้อมูลที่ใช้งาน (training data)

ค่า default ของ kernel width จากโค้ดใน LIME library ของ python

คำอธิบายสั้น ๆ ในโค้ดบรรทัดนี้ที่ถ้าหากเราทำการอ่านอย่างผ่าน ๆ ก็อาจจะไม่ได้คิดอะไรมากนี้แหละ คือจุดที่บ่งบอกปัญหาหลักในการใช้งานเทคนิค LIME คำถามคือ ตัวเลข 0.75 ที่กำหนดไว้ในโค้ดนี้มาจากไหนกันแน่?

คำศัพท์เฉพาะ

smoothing kernel คือฟังก์ชันที่รับจุดข้อมูลจำนวนสองจุดเป็น input และคำนวณค่าวัดระยะความใกล้เคียง (proximity measure) ออกมาเป็นผลลัพธ์

kernel width คือค่าที่ใช้กำหนดขนาดของ neighborhood ที่ทำการพิจารณา โดยค่าที่ต่ำหมายความว่าโมเดลที่ทำการฝึกฝนจะได้รับผลกระทบจากจุดข้อมูลต่างๆที่อยู่ใกล้กับจุดข้อมูลที่สนใจมากเท่านั้น ในขณะที่ค่าที่สูงหมายความว่า ข้อมูลจุดที่อยู่ห่างออกไปจะสามารถส่งผลกระทบต่อโมเดลได้ด้วย

ปัญหา (challenge) หลักของการใช้เทคนิค LIME

ถ้าผู้อ่านคาดหวังคำตอบที่ชัดเจนสำหรับคำถามที่ทิ้งไว้ในย่อหน้าที่แล้ว ผมก็ต้องขออภัยมา ณ ที่นี้ด้วยครับ ในความจริงแล้วปัญหาหลักของการใช้งานเทคนิค LIME ก็คือ เรายังไม่มีวิธีการที่ดีในการหาชนิดของ kernel หรือขนาดของ kernel ที่เหมาะสมที่สุดในการใช้งาน และยิ่งไปกว่านั้นแล้ว ในบางกรณี คำอธิบายที่ได้อาจจะถึงกับให้ผลตรงกันข้าม ถ้าหากค่า kernel width ที่เลือกมีการเปลี่ยนแปลงด้วยซ้ำ ลองพิจารณารูปด้านล่างดูนะครับ

โมเดลสำหรับใช้ตีความที่มีขนาด kernel width ต่างๆ (เส้นตรง) และคำทำนายของโมเดลตั้งต้น (เส้นหนา) ที่จุด x = 1.6
(รูปภาพจาก Interpretable Machine Learning Chapter 9.2)

รูปด้านบนแสดงโมเดลสำหรับตีความต่าง ๆ (เส้นตรงทั้ง 3 เส้น) ที่เราได้จากการฝึกฝนเพื่ออธิบายคำทำนายของโมเดลตั้งต้น (เส้นหนา) ที่จุด x = 1.6  ด้วยค่าความกว่างของ kernel ที่แตกต่างกัน โดยคำทำนายของโมเดลตั้งต้น (เส้นหนา) จะขึ้นอยู่กับ feature x เพียงอย่างเดียวและการกระจายตัวของจุดข้อมูลนั้นจะถูกแสดงไว้ให้เห็นในด้านล่าง

จากภาพเราจะเห็นได้ว่าผลลัพธ์ของการทำโมเดล linear regression เพื่ออธิบายโมเดลตั้งต้นชิ้นนี้ขึ้นอยู่กับความกว้างของ kernel อย่างชัดเจน จากกรณีนี้ เราจะอธิบายว่า feature x มีความสัมพันธ์เชิงบวก ลบ หรือ ไม่มีผลกระทบ สำหรับข้อมูลจุดนี้กันแน่?

ตัวอย่างที่แสดงให้เห็นเป็นตัวอย่างที่ใช้เพียง 1 feature ของข้อมูลเท่านั้น ถ้าหากข้อมูลที่โมเดลใช้มีจำนวน feature มากกว่านี้ ปัญหาที่เราเห็นอยู่ก็จะมีความหนักหนาสาหัสมากยิ่งขึ้นไปอีก นอกจากนี้เรายังไม่สามารถแน่ใจได้อีกด้วยว่ามาตรวัตรระยะห่างระหว่างจุดข้อมูลที่ใช้ควรจะเป็นลักษณะเดียวกันและให้ความสำคัญกับทุก feature เท่ากันด้วยหรือไม่ การวัดระยะห่างใน feature ที่ต่างกันก็อาจไม่สามารถเปรียบเทียบกันได้อีกด้วย ประเด็นเหล่านี้เป็นความท้าทายที่ผู้ใช้งานเทคนิคต้องพิจารณาอย่างระมัดระวังต่อไป

ตัวอย่างการประยุกต์ใช้งาน LIME กับข้อมูลประเภทตาราง

(ตัวอย่างจาก Interpretable Machine Learning Chapter 9.2 )

ในตัวอย่างนี้จะเป็นการนำข้อมูลการเช่าจักรยาน มาสร้างโมเดล classification โดยตั้งโจทย์ว่า หลังจากที่ทำการลากเส้นแนวโน้ม (trend line) ของการเช่ารถจักรยานในแต่ละวันแล้ว เราอยากจะทราบว่า วันไหนที่จำนวนการเช่ารถจักรยานจะ “มากกว่า” หรือ “น้อยกว่า” เส้นแนวโน้มที่เราสร้างขึ้น (ผู้อ่านสามารถมองโจทย์นี้ได้ว่า เรากำลังพยายามทำนายว่ายอดการเช่ารถจักรยานของวันที่สนใจจะมากกว่า ค่าเฉลี่ยของการเช่ารถโดยปกติหรือไม่ เพียงแค่ “ค่าเฉลี่ย” ที่เราใช้ในกรณีนี้เป็นค่าที่ปรับตามแนวโน้มข้อมูลด้วย เนื่องจากจำนวนการเช่ารถนั้นเพิ่มขึ้นเรื่อย ๆ จากอดีต)

เพื่อตอบโจทย์นี้ โมเดล random forest ที่ใช้งานต้นไม้ทั้งหมด 100 ต้น ได้ถูกเลือกมาทำการฝึกฝนให้ทำนายว่าในวันวันหนึ่ง จำนวนการเช่าจักยานจะมากกว่า “ค่าเฉลี่ย” ณ วันนั้นหรือไม่ โดยใช้งานข้อมูลเกี่ยวกับสภาพอากาศและข้อมูลที่เกี่ยวกับวันที่ในการทำนายเป็น feature ในการทำนาย จากนั้นเราทำการสร้างโมเดลสำหรับตีความโดยกำหนดให้โมเดลนี้เลือกใช้งานเพียง 2 feature (เพื่อลดความซับซ้อนของโมเดล ดังที่ได้อธิบายไว้ในบทความที่แล้ว) โดยจะใช้งาน sparse local linear model (เช่นตระกูล lasso อย่าง sparse logistic regression ที่ใช้งาน l1 regularization) ในการอธิบาย ผลของโมเดลสำหรับตีความที่เลือกมาแสดงในรูปภาพด้านล่างนั้นมาจาก 2 จุด ที่มีผลการทำนายของโมเดลตั้งต้นแตกต่างกัน

ผลของโมเดลเพื่อการตีความสำหรับจุดข้อมูลที่เลือกมาศึกษาสองจุด
(รูปภาพจาก Interpretable Machine Learning Chapter 9.2)

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

นอกจากนี้ เมื่อสังเกตผลที่ได้จากโมเดลด้านบนจะเห็นว่า ถ้าหาก feature ที่นำมาใช้อธิบายเป็น feature ในลักษณะของหมวดหมู่ (categorical) ผู้ใช้จะสามารถตีความผลลัพธ์ที่ได้ง่ายกว่าเมื่อเทียบกับ feature ที่เป็นตัวเลข (numerical) เช่น การบอกว่า “สภาพอากาศดีมีผลเชิงบวกกับการทำนาย” นั้นจะสามารถทำให้ผู้ใช้สามารถเข้าใจได้ง่ายกว่าการบอกว่า “อุณหภูมิ 11.86 องศามีผลเชิงบวกกับการทำนาย” (เพราะถ้าหากดูจุดนี้เดี่ยว ๆ อาจไม่แน่ใจว่าควรจะตีความเลขนี้อย่างไรดี) ดังนั้น หนึ่งในวิธีที่ทำให้ตีความง่ายขึ้น คือการจัดกลุ่ม (categorize)  ข้อมูลประเภทตัวเลขให้กลายเป็นหมวดหมู่ (bins) ครับ

ประโยชน์และข้อจำกัด

ประโยชน์

  • เทคนิค LIME สามารถอธิบายโมเดล machine learning ที่ไม่สามารถอธิบายได้โดยง่าย หรือผู้ทำการศึกษาไม่สามารถเข้าถึงรายละเอียดภายในของโมเดลได้ เนื่องจากตัวเทคนิคอาศัยการใช้โมเดลเทียบเคียงอื่นมาใช้อธิบายแทน
  • ในกรณีที่ explanation model ที่เลือกใช้เป็น Lasso หรือ decision tree ที่มีความยาว path ต่ำ (short tree) คำอธิบายโมเดลที่ได้จะสั้นและเข้าใจได้ง่าย (human-friendly) จึงเหมาะสำหรับการหาคำอธิบายเร็ว ๆ หรือใช้เพื่ออธิบายให้แก่บุคคลทั่วไป อย่างไรก็ดีวิธีนี้อาจไม่เหมาะแก้การอธิบายโมเดลในภาพรวมอย่างสมบูรณ์ (สังเกตว่าถ้าหากมีตัวแปรเป็นจำนวนมากหรือ decision tree มีความลึกมาก การตีความคำอธิบายจะทำได้ยากขึ้น)
  • มีการคำนวณ local fidelity ที่สามารถใช้ในการวัดความน่าเชื่อถือ (reliability) ของโมเดลที่ใช้อธิบายได้ใน neighborhood ของข้อมูลจุดที่สนใจได้
  • สามารถใช้งานได้กับทั้งข้อมูลในรูปแบบตาราง ข้อความ หรือ รูปภาพ

ข้อจำกัด

  • การเลือกฟังก์ชัน neighborhood ที่เหมาะสมนั้นยังเป็นปัญหาที่ยังไม่มีแนวทางที่เหมาะสมโดยชัดเจน (unsolved problems)
  • คำอธิบายที่ได้รับอาจมีความไม่เสถียรอยู่บ้าง โดยคำอธิบายของข้อมูลสองจุดที่อยู่ใกล้กันอาจแตกต่างกันได้มาก
  • มีความเป็นไปได้ที่ผู้พัฒนาโมเดลคำอธิบายอาจจงใจปรับการตั้งค่าเพื่อใช้ซ่อน bias ของโมเดลที่ถูกอธิบายได้

โดยสรุปแล้ว เทคนิค LIME ซึ่งเป็นเทคนิคที่อาศัยการสร้างโมเดลที่สามารถตีความได้ง่าย (interpretable model) ให้มีพฤติกรรมการทำนายใกล้เคียงกับโมเดลที่ต้องการอธิบายในบริเวณของจุดข้อมูลที่ต้องการทำการศึกษา จึงทำให้สามารถนำมาประยุกต์ใช้เพื่ออธิบายโมเดลที่มีความซับซ้อนสูงได้ อย่างไรก็ดีเทคนิคนี้ยังมีข้อจำกัดในระดับหนึ่งที่ทำให้ไม่เหมาะสมในการใช้งานในกรณีที่ข้อมูลมี feature ที่ต้องการใช้อธิบายมาก ทั้งยังประสบปัญหาเรื่องการเลือก proximity measure ที่เหมาะสมกับการใช้งานเนื่องจากยังไม่มีวิธีการที่แน่ชัด ในบทความต่อไป เราจะมาพูดถึงทางเลือกอื่นในการตีความผลกระทบของ feature ต่อผลการทำนายเฉพาะรายการ โดยจะพูดถึงค่าทางคณิตศาสตร์ค่าหนึ่งที่นิยมใช้เพื่อจุดประสงค์นี้ ซึ่งก็คือค่า Shapley Value และการนำค่านี้มาประยุกต์ใช้ด้วยเทคนิค SHapley Additive exPlanations (SHAP) กันครับ


ข้อมูลที่เกี่ยวข้องและข้อมูลเพิ่มเติม

แปล สังเคราะห์ เรียบเรียง และเขียนเพิ่มเติม โดยปฏิภาณ ประเสริฐสม
ตรวจทานและปรับปรุงโดย พีรดล สามะศิริ

Patipan Prasertsom

Data Scientist Expert at Big Data Institute (BDI)

© Big Data Institute | Privacy Notice