การจัดประเภท: การให้น้ําหนักการคาดการณ์

การคาดการณ์การถดถอยแบบโลจิสติกส์ไม่ควรเป็นกลาง โดยการ

"ค่าเฉลี่ยของการคาดคะเน" ≈ "โดยเฉลี่ยของการสังเกตการณ์"

การให้น้ําหนักการคาดการณ์ คือปริมาณที่วัดว่า 2 ค่าเฉลี่ยนี้ห่างกันเพียงใด โดยการ

$$\text{prediction bias} = \text{average of predictions} - \text{average of labels in data set}$$

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

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

สาเหตุที่เป็นไปได้ของการให้น้ําหนักพิเศษในการคาดการณ์มีดังนี้

  • ชุดฟีเจอร์ไม่สมบูรณ์
  • ชุดข้อมูลที่มีเสียงดัง
  • ไปป์ไลน์ข้อบกพร่อง
  • ตัวอย่างการฝึกอบรมการให้น้ําหนักพิเศษ
  • การปรับรูปแบบให้แรงเกินไป

คุณอาจอยากแก้ไขการให้น้ําหนักพิเศษในการคาดการณ์ด้วยการประมวลผลหลังโมเดลที่เรียนรู้ กล่าวคือ โดยการเพิ่มเลเยอร์การปรับเทียบ ซึ่งจะปรับเอาต์พุตของโมเดลเพื่อลดอคติการคาดการณ์ ตัวอย่างเช่น หากโมเดลของคุณมีการให้น้ําหนัก +3% คุณสามารถเพิ่มเลเยอร์การปรับเทียบที่จะลดการคาดการณ์ค่าเฉลี่ยลง 3% อย่างไรก็ตาม การเพิ่มเลเยอร์การปรับเทียบเป็นแนวคิดที่ไม่เหมาะสมด้วยเหตุผลดังต่อไปนี้

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

หากเป็นไปได้ ให้หลีกเลี่ยงการปรับเทียบเลเยอร์ โปรเจ็กต์ที่ใช้เลเยอร์การปรับเทียบมักจะเป็นแบบที่เชื่อถือได้ โดยใช้เลเยอร์การปรับเทียบเพื่อแก้ไข ไซนของโมเดลทั้งหมด ท้ายที่สุด การดูแลรักษาเลเยอร์การปรับเทียบอาจกลายเป็นฝันร้าย

การให้น้ําหนักที่เก็บข้อมูลและการคาดการณ์

การถดถอยแบบโลจิสติกจะคาดการณ์ค่า ระหว่าง 0 ถึง 1 อย่างไรก็ตาม ตัวอย่างทั้งหมดที่มีป้ายกํากับเป็น 0 (เช่น " "ไม่ใช่สแปม") หรือ 1 (เช่น "spam") ดังนั้น เมื่อประเมินการให้น้ําหนักการคาดการณ์ คุณจะกําหนดการให้น้ําหนักการคาดการณ์ได้อย่างแม่นยําโดยอิงตามตัวอย่างเดียวเท่านั้น คุณต้องตรวจสอบการให้น้ําหนักการคาดการณ์ในตัวอย่าง "bucket" ตัวอย่าง กล่าวคือ การให้น้ําหนักเชิงคาดการณ์สําหรับการถดถอยแบบโลจิสติกส์จะทําได้ดีเมื่อจัดกลุ่มตัวอย่างเข้าด้วยกันเพียงเท่านั้นเพื่อให้สามารถเปรียบเทียบค่าที่คาดการณ์ไว้ (เช่น 0.392) กับค่าที่สังเกตได้ (เช่น 0.394)

คุณสามารถสร้างที่เก็บข้อมูลได้ด้วยวิธีต่อไปนี้

  • แจกแจงการคาดการณ์เป้าหมายเป็นเชิงเส้น
  • การคิดเชิงปริมาณ

ลองพิจารณาพล็อตการปรับเทียบต่อไปนี้จากโมเดลที่เฉพาะเจาะจง แต่ละจุดแสดงถึงที่เก็บข้อมูลที่มีค่า 1,000 แกนต่างๆ มีความหมายดังต่อไปนี้

  • แกน x แสดงค่าเฉลี่ยของค่าที่โมเดลคาดการณ์สําหรับที่เก็บข้อมูลนั้น
  • แกน Y แสดงค่าเฉลี่ยที่แท้จริงของชุดข้อมูลในที่เก็บข้อมูลนั้น

แกนทั้ง 2 แกนเป็นสเกลลอการิทึม

แกน X คือการคาดการณ์ แกน Y คือป้ายกํากับ สําหรับค่ากลางและสูงของการคาดการณ์ การให้น้ําหนักการคาดการณ์จะไม่มีนัยสําคัญ สําหรับค่าของการคาดการณ์ที่ต่ํา การให้น้ําหนักการคาดการณ์จะค่อนข้างสูง

รูปที่ 8 เส้นโค้งการให้น้ําหนักการให้น้ําหนักตามการคาดการณ์ (สเกลลอการิทึม)

เหตุใดการคาดการณ์จึงแย่มากสําหรับรูปแบบบางส่วนเท่านั้น ตัวอย่างความเป็นไปได้มีดังนี้

  • ชุดการฝึกไม่ได้แสดงเนื้อหาบางส่วน อย่างเพียงพอ
  • ชุดข้อมูลบางส่วนมีเสียงดังกว่าชุดข้อมูลอื่นๆ
  • รูปแบบมีมาตรฐานมากเกินไป (ลองลดค่าของ lambda)