คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาจะดี - KDnuggets

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี – KDnuggets

โหนดต้นทาง: 2893531

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
[ภาพโดยผู้เขียน]

 

แนวคิดเรื่อง "ความสำคัญของคุณลักษณะ" ถูกนำมาใช้กันอย่างแพร่หลายในการเรียนรู้ของเครื่องเนื่องจากเป็นประเภทพื้นฐานที่สุดในการอธิบายโมเดล ตัวอย่างเช่น ใช้ในการกำจัดคุณลักษณะแบบเรียกซ้ำ (RFE) เพื่อละทิ้งคุณลักษณะที่สำคัญน้อยที่สุดของโมเดลซ้ำๆ

อย่างไรก็ตาม มีความเข้าใจผิดเกี่ยวกับเรื่องนี้

ความจริงที่ว่าคุณลักษณะมีความสำคัญไม่ได้หมายความว่าจะเป็นประโยชน์ต่อโมเดล!

จริงๆ แล้ว เมื่อเราบอกว่าคุณลักษณะมีความสำคัญ ก็หมายความว่าคุณลักษณะดังกล่าวมีส่วนช่วยอย่างมากต่อการคาดการณ์ของแบบจำลอง แต่เราควรพิจารณาว่า การบริจาคดังกล่าวอาจจะผิด.

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

เพื่อให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้น เราจะต้องสร้างความแตกต่างระหว่างสองแนวคิด:

  • การมีส่วนร่วมทำนาย: ส่วนใดของการคาดการณ์ที่เกิดจากฟีเจอร์นี้ นี่เทียบเท่ากับความสำคัญของคุณลักษณะ
  • ข้อผิดพลาด การสนับสนุน: ส่วนใดของข้อผิดพลาดในการทำนายที่เกิดจากการมีอยู่ของฟีเจอร์ในโมเดล

ในบทความนี้ เราจะดูวิธีคำนวณปริมาณเหล่านี้และวิธีใช้เพื่อรับข้อมูลเชิงลึกอันมีค่าเกี่ยวกับแบบจำลองการคาดการณ์ (และปรับปรุงให้ดีขึ้น)

หมายเหตุ: บทความนี้เน้นที่กรณีการถดถอย หากคุณสนใจกรณีการจำแนกประเภทมากขึ้นก็สามารถอ่านได้ “ฟีเจอร์ใดที่เป็นอันตรายต่อโมเดลการจัดหมวดหมู่ของคุณ”

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

ดังนั้นเราจึงมีความจริงภาคพื้นดิน การทำนายแบบจำลอง และข้อผิดพลาดที่เกิดขึ้น:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ความจริงภาคพื้นดิน การทำนายแบบจำลอง และข้อผิดพลาดสัมบูรณ์ (เป็นพันดอลลาร์สหรัฐฯ) [ภาพโดยผู้เขียน]

 

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

สมมติว่านี่คือค่า SHAP ที่สัมพันธ์กับแบบจำลองของเราสำหรับบุคคลทั้งสาม

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ค่า SHAP สำหรับการคาดการณ์แบบจำลองของเรา (เป็นพันดอลลาร์) [ภาพโดยผู้เขียน]

 

คุณสมบัติหลักของค่า SHAP คือเป็นค่าบวก ซึ่งหมายความว่า เมื่อนำผลรวมของแต่ละแถวมา เราจะได้คำทำนายของแบบจำลองสำหรับบุคคลนั้น ตัวอย่างเช่น หากเราใช้แถวที่สอง: 72k $ +3k $ -22k $ = 53k $ ซึ่งเป็นการคาดการณ์ของแบบจำลองสำหรับบุคคลที่สองอย่างแน่นอน

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

ดังนั้น การมีส่วนร่วมทำนายของจุดสนใจจะเท่ากับค่าเฉลี่ยของค่า SHAP สัมบูรณ์ของจุดสนใจนั้น. หากคุณมีค่า SHAP เก็บไว้ใน Pandas dataframe สิ่งนี้ทำได้ง่ายเพียง:

prediction_contribution = shap_values.abs().mean()

ในตัวอย่างของเรา นี่คือผลลัพธ์:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
การมีส่วนร่วมทำนาย [ภาพโดยผู้เขียน]

 

อย่างที่คุณเห็น งานเป็นคุณลักษณะที่สำคัญที่สุดอย่างชัดเจน เนื่องจากโดยเฉลี่ยแล้ว คิดเป็นมูลค่า 71.67k $ ของการคาดการณ์ขั้นสุดท้าย สัญชาติและอายุถือเป็นคุณลักษณะที่เกี่ยวข้องมากที่สุดเป็นอันดับสองและสามตามลำดับ

อย่างไรก็ตาม ความจริงที่ว่าฟีเจอร์ที่กำหนดมีส่วนที่เกี่ยวข้องในการคาดการณ์ขั้นสุดท้ายไม่ได้บอกอะไรเกี่ยวกับประสิทธิภาพของฟีเจอร์นั้นเลย เพื่อพิจารณาประเด็นนี้ด้วย เราจะต้องคำนวณ "การมีส่วนร่วมของข้อผิดพลาด"

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

แน่นอนว่าเราสามารถทำซ้ำขั้นตอนนี้สำหรับแต่ละฟีเจอร์ได้ ในแพนด้า:

y_pred_wo_feature = shap_values.apply(lambda feature: y_pred - feature)

นี่คือผลลัพธ์:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
การคาดการณ์ที่เราจะได้รับหากเราลบคุณลักษณะที่เกี่ยวข้องออก [ภาพโดยผู้เขียน]

 

นั่นหมายความว่าถ้าเราไม่มีฟีเจอร์นี้ งานจากนั้นแบบจำลองจะทำนาย 20 ดอลลาร์สำหรับคนแรก, -19 ดอลลาร์สำหรับอันที่สอง และ -8 ดอลลาร์สำหรับอันที่สาม หากเราไม่มีคุณสมบัติดังกล่าว อายุโมเดลจะทำนาย 73 ดอลลาร์สำหรับคนแรก 50 ดอลลาร์สำหรับอันที่สอง และอื่นๆ

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

abs_error_wo_feature = y_pred_wo_feature.apply(lambda feature: (y_true - feature).abs())

ผลลัพธ์จะเป็นดังนี้:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ข้อผิดพลาดที่แน่นอนที่เราจะได้รับหากเราลบคุณลักษณะที่เกี่ยวข้องออก [ภาพโดยผู้เขียน]

 

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

แต่เราสามารถทำได้มากกว่านี้ แท้จริงแล้ว เราสามารถคำนวณความแตกต่างระหว่างข้อผิดพลาดของแบบจำลองเต็มและข้อผิดพลาดที่เราจะได้รับโดยไม่มีคุณลักษณะ:

error_diff = abs_error_wo_feature.apply(lambda feature: abs_error - feature)

ซึ่งเป็น:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ความแตกต่างระหว่างข้อผิดพลาดของโมเดลและข้อผิดพลาดที่เราจะมีหากไม่มีฟีเจอร์ [ภาพโดยผู้เขียน]

 

หากหมายเลขนี้คือ:

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

เราสามารถคำนวณ "การมีส่วนร่วมของข้อผิดพลาด" เป็นค่าเฉลี่ยของค่าเหล่านี้สำหรับแต่ละคุณลักษณะได้. ในแพนด้า:

error_contribution = error_diff.mean()

นี่คือผลลัพธ์:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
การมีส่วนร่วมผิดพลาด [ภาพโดยผู้เขียน]

 

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

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

ลองใช้แนวคิดเหล่านี้กับชุดข้อมูลจริง

หลังจากนี้ฉันจะใช้ชุดข้อมูลที่นำมาจาก ไพคาเรต (ไลบรารี Python อยู่ภายใต้ ใบอนุญาต MIT). ชุดข้อมูลนี้เรียกว่า "ทองคำ" และมีอนุกรมเวลาของข้อมูลทางการเงิน

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ตัวอย่างชุดข้อมูล คุณสมบัติทั้งหมดแสดงเป็นเปอร์เซ็นต์ ดังนั้น -4.07 หมายถึงผลตอบแทน -4.07% [ภาพโดยผู้เขียน]

 

ลักษณะประกอบด้วยผลตอบแทนของสินทรัพย์ทางการเงินตามลำดับ 22, 14, 7 และ 1 วันก่อนช่วงเวลาสังเกต (“T-22”, “T-14”, “T-7”, “T-1”) ต่อไปนี้เป็นรายการสินทรัพย์ทางการเงินทั้งหมดที่ใช้เป็นคุณลักษณะเชิงคาดการณ์โดยครบถ้วน:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
รายการทรัพย์สินที่มีอยู่ สินทรัพย์แต่ละรายการจะถูกสังเกต ณ เวลา -22, -14, -7 และ -1 [ภาพโดยผู้เขียน]

 

โดยรวมแล้วเรามีคุณสมบัติ 120 รายการ

เป้าหมายคือการคาดการณ์ราคาทองคำ (ผลตอบแทน) ล่วงหน้า 22 วัน (“Gold_T+22”) มาดูตัวแปรเป้าหมายกันดีกว่า

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ฮิสโตแกรมของตัวแปร [ภาพโดยผู้เขียน]

 

เมื่อฉันโหลดชุดข้อมูลแล้ว นี่คือขั้นตอนที่ฉันดำเนินการ:

  1. แบ่งชุดข้อมูลทั้งหมดแบบสุ่ม: 33% ของแถวในชุดข้อมูลการฝึกอบรม อีก 33% ในชุดข้อมูลการตรวจสอบ และที่เหลือ 33% ในชุดข้อมูลทดสอบ
  2. ฝึก LightGBM Regressor บนชุดข้อมูลการฝึก
  3. คาดการณ์ชุดข้อมูลการฝึก การตรวจสอบ และการทดสอบ โดยใช้แบบจำลองที่ได้รับการฝึกในขั้นตอนก่อนหน้า
  4. คำนวณค่า SHAP ของชุดข้อมูลการฝึกฝน การตรวจสอบ และการทดสอบ โดยใช้ไลบรารี Python “shap”
  5. คำนวณการมีส่วนร่วมในการคาดการณ์และการมีส่วนร่วมของข้อผิดพลาดของแต่ละคุณลักษณะในแต่ละชุดข้อมูล (การฝึกอบรม การตรวจสอบ และการทดสอบ) โดยใช้โค้ดที่เราได้เห็นในย่อหน้าก่อนหน้า

มาเปรียบเทียบการมีส่วนร่วมของข้อผิดพลาดและการมีส่วนร่วมในการคาดการณ์ในชุดข้อมูลการฝึกอบรม เราจะใช้แผนภูมิกระจาย ดังนั้นจุดต่างๆ จะระบุคุณลักษณะ 120 รายการของโมเดล

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
การมีส่วนร่วมของการคาดการณ์เทียบกับการมีส่วนร่วมของข้อผิดพลาด (บนชุดข้อมูลการฝึกอบรม) [ภาพโดยผู้เขียน]

 

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

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

แต่นี่ไม่ได้เพิ่มความรู้ของเรามากนักใช่ไหม?

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

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
การมีส่วนร่วมของการทำนายเทียบกับการมีส่วนร่วมของข้อผิดพลาด (บนชุดข้อมูลการตรวจสอบ) [ภาพโดยผู้เขียน]

 

จากโครงเรื่องนี้ เราสามารถดึงข้อมูลที่น่าสนใจอื่นๆ ออกมาได้

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

นอกจากนี้ โปรดทราบว่า “Gold_T-22” (การส่งคืนทองคำ 22 วันก่อนช่วงสังเกตการณ์) นั้นทำงานได้ดีมากเมื่อเทียบกับความสำคัญที่โมเดลมีให้ นี่หมายความว่า คุณลักษณะนี้อาจไม่เหมาะสม. และข้อมูลชิ้นนี้น่าสนใจอย่างยิ่งเนื่องจากทองคำเป็นสินทรัพย์ที่เราพยายามคาดการณ์ (“Gold_T+22”)

บนมืออื่น ๆ , คุณลักษณะที่มีส่วนสนับสนุนข้อผิดพลาดมากกว่า 0 กำลังทำให้การคาดการณ์ของเราแย่ลง. ตัวอย่างเช่น “พันธบัตรสหรัฐฯ ETF_T-1” โดยเฉลี่ยจะเปลี่ยนการทำนายแบบจำลอง 0.092% (การมีส่วนร่วมในการคาดการณ์) แต่จะทำให้แบบจำลองคาดการณ์โดยเฉลี่ย 0.013% (การมีส่วนร่วมของข้อผิดพลาด) แย่กว่าที่เคยไม่มีมาหากไม่มีฟีเจอร์นั้น .

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

มาดูกันว่าฟีเจอร์ใดมีส่วนทำให้เกิดข้อผิดพลาดมากที่สุด

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
คุณสมบัติจัดเรียงตามการลดการมีส่วนร่วมของข้อผิดพลาด [ภาพโดยผู้เขียน]

 

และตอนนี้คุณสมบัติที่มีส่วนทำให้เกิดข้อผิดพลาดต่ำที่สุด:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
คุณสมบัติจัดเรียงตามการเพิ่มการมีส่วนร่วมของข้อผิดพลาด [ภาพโดยผู้เขียน]

 

สิ่งที่น่าสนใจคือ เราอาจสังเกตเห็นว่าคุณลักษณะทั้งหมดที่มีส่วนทำให้เกิดข้อผิดพลาดที่สูงกว่าจะสัมพันธ์กับ T-1 (1 วันก่อนช่วงเวลาการสังเกต) ในขณะที่คุณลักษณะเกือบทั้งหมดที่มีส่วนทำให้เกิดข้อผิดพลาดน้อยกว่าจะสัมพันธ์กับ T-22 (22 วันก่อนช่วงเวลาการสังเกต) ).

นี่ดูเหมือนจะบ่งบอกว่า คุณสมบัติล่าสุดมีแนวโน้มที่จะมีความเหมาะสมมากเกินไป ในขณะที่คุณสมบัติที่อยู่ห่างไกลออกไปมีแนวโน้มที่จะสรุปได้ดีกว่า.

โปรดทราบว่าหากไม่มีการมีส่วนสนับสนุนข้อผิดพลาด เราจะไม่มีทางรู้ข้อมูลเชิงลึกนี้

วิธีการกำจัดคุณสมบัติแบบเรียกซ้ำแบบดั้งเดิม (RFE) นั้นมีพื้นฐานมาจากการลบคุณสมบัติที่ไม่สำคัญออก ซึ่งเทียบเท่ากับการลบคุณลักษณะที่มีส่วนสนับสนุนการคาดการณ์เล็กน้อยออกก่อน

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

เพื่อตรวจสอบว่าสัญชาตญาณของเราได้รับการยืนยันหรือไม่ ลองเปรียบเทียบทั้งสองวิธี:

  • RFE แบบดั้งเดิม: ลบคุณสมบัติที่ไม่มีประโยชน์ออกก่อน (การมีส่วนร่วมในการคาดการณ์ต่ำสุด)
  • RFE ของเรา: ลบคุณลักษณะที่เป็นอันตราย เป็นครั้งแรก (การมีส่วนร่วมของข้อผิดพลาดสูงสุด)

มาดูผลลัพธ์ของชุดการตรวจสอบกัน:

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
ค่าเฉลี่ยข้อผิดพลาดสัมบูรณ์ของทั้งสองกลยุทธ์ในชุดการตรวจสอบ [ภาพโดยผู้เขียน]

 

มีการวนซ้ำที่ดีที่สุดสำหรับแต่ละวิธี: เป็นรุ่นที่มีคุณสมบัติ 19 ประการสำหรับ RFE แบบดั้งเดิม (เส้นสีน้ำเงิน) และรุ่นที่มีคุณสมบัติ 17 ประการสำหรับ RFE ของเรา (เส้นสีส้ม)

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

อย่างไรก็ตาม คุณอาจคิดว่าวิธีนี้ใช้ได้ผลดีเพียงเพราะว่าเรากำลังติดตั้งชุดการตรวจสอบความถูกต้องมากเกินไป ท้ายที่สุดแล้ว เราสนใจในผลลัพธ์ที่เราจะได้รับจากชุดทดสอบ

เรามาดูการเปรียบเทียบแบบเดียวกันกับชุดทดสอบกัน

 

คุณลักษณะของคุณมีความสำคัญหรือไม่? ไม่ได้หมายความว่าพวกเขาดี
Mean Absolute Error ของทั้งสองกลยุทธ์ในชุดทดสอบ [ภาพโดยผู้เขียน]

 

ผลลัพธ์จะคล้ายกับครั้งก่อน แม้ว่าจะมีระยะห่างน้อยกว่าระหว่างสองบรรทัด แต่ MAE ที่ได้รับจากการลบตัวมีส่วนทำให้เกิดข้อผิดพลาดสูงสุดออกนั้นดีกว่า MAE อย่างชัดเจนโดยการลบตัวมีส่วนในการทำนายที่ต่ำที่สุดออก

เนื่องจากเราเลือกแบบจำลองที่นำไปสู่ ​​MAE ที่เล็กที่สุดในชุดการตรวจสอบ เรามาดูผลลัพธ์ของชุดทดสอบกันดีกว่า:

  • การมีส่วนร่วมในการคาดการณ์ RFE (คุณสมบัติ 19 รายการ) MAE ในชุดทดสอบ: 2.04
  • การมีส่วนสนับสนุนข้อผิดพลาด RFE (คุณสมบัติ 17 รายการ) MAE ในชุดทดสอบ: 1.94

ดังนั้น MAE ที่ดีที่สุดที่ใช้วิธีการของเราจึงดีกว่า 5% เมื่อเทียบกับ RFE แบบดั้งเดิม!

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

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

นอกจากนี้เรายังทดลองใช้ชุดข้อมูลทางการเงินจริง (ซึ่งงานกำลังคาดการณ์ราคาทองคำ) และพิสูจน์ว่าการกำจัดคุณลักษณะแบบเรียกซ้ำตามการมีส่วนร่วมของข้อผิดพลาด นำไปสู่ข้อผิดพลาดเฉลี่ยสัมบูรณ์ที่ดีกว่า 5% เมื่อเทียบกับ RFE แบบดั้งเดิมที่อิงตามการมีส่วนร่วมในการคาดการณ์

รหัสทั้งหมดที่ใช้สำหรับบทความนี้สามารถพบได้ใน สมุดบันทึกนี้.

ขอบคุณสำหรับการอ่าน!

 
 
ซามูเอเล มาซซานติ เป็น Lead Data Scientist ที่ Jakala และปัจจุบันอาศัยอยู่ที่กรุงโรม เขาสำเร็จการศึกษาสาขาสถิติและงานวิจัยหลักของเขาเกี่ยวข้องกับการประยุกต์ใช้การเรียนรู้ของเครื่องสำหรับอุตสาหกรรม เขายังเป็นผู้สร้างเนื้อหาอิสระอีกด้วย

 
Original. โพสต์ใหม่โดยได้รับอนุญาต
 

ประทับเวลา:

เพิ่มเติมจาก KD นักเก็ต