วิธีการคาดการณ์
เราคำนวณ สรุปผล และอ่านค่าการคาดการณ์อย่างไร
การคาดการณ์เกิดขึ้นอย่างไร
- ชนะ-แพ้ (Elo) — นำคะแนน Elo ของสองทีมไปใส่สูตรมาตรฐานเพื่อหาโอกาสชนะ ค่า K-factor ควบคุมความผันผวนต่อแมตช์:
P(A wins) = 1 / (1 + 10^((R_B − R_A) / 400)) - คะแนนรวม (Poisson) — ใช้ค่าเฉลี่ยคะแนนของแมตช์ที่จบแล้วของแต่ละทีมเป็นค่า λ แล้วรวมการแจกแจง Poisson สองชุดเพื่อคาดการณ์คะแนนรวม:
projected_total = Σ Poisson(λ_team) for each team's finished-event mean - งาน generate-predictions ทำงานทุกชั่วโมง สแกนแมตช์ใน 6 ชั่วโมงข้างหน้า บันทึกการคาดการณ์ และประทับเวลา generated_at ดังนั้นการคาดการณ์จะถูกบันทึกก่อนเริ่มแข่งเสมอ
กฎการสรุปผล
- ชนะ-แพ้ — เมื่อแมตช์มีสถานะ status='finished' เราจะเทียบ score_json.winner กับ pick.side ถ้าเป็นฝั่งเดียวกัน = ตรง ถ้าคนละฝั่ง = พลาด
- คะแนนรวม — เราคำนวณ actual_total = home_score + away_score แล้วเก็บ abs_error และ signed_error เทียบกับ projected_total ผลลัพธ์จะติดป้าย scored (ไม่ใช่ตรง/พลาด เพราะเป็นตัววัดแบบต่อเนื่อง ไม่ใช่การเลือกสองทาง)
- โมฆะ — หากแมตช์ถูกเลื่อนหรือยกเลิก การคาดการณ์จะเป็นโมฆะ และไม่ถูกนับรวมในอัตราที่ตรงหรือ MAE
วิธีอ่านตัวเลข
- เมื่อจำนวนที่สรุปผลแล้วต่ำกว่า 30 ช่องอัตราที่ตรง / MAE จะแสดง 'ตัวอย่างน้อยเกินไป' แทนตัวเลข เพราะกฎของจำนวนมากต้องใช้เวลาสะสม
- ความมั่นใจคือความเชื่อของโมเดลเองต่อการคาดการณ์ ไม่ใช่ความมั่นใจของตลาดหรือกลุ่มผู้ใช้ โมเดลที่สอบเทียบดีจะชนะ 70% ของแมตช์ที่ติดป้าย 70% เราแสดงเรื่องนี้ด้วยแผนภาพการสอบเทียบในหน้าสถิติ
- MAE คือค่าคลาดเคลื่อนสัมบูรณ์เฉลี่ยระหว่างค่าคาดการณ์กับผลจริง ส่วน Bias คือค่าคลาดเคลื่อนแบบมีเครื่องหมายเฉลี่ย ถ้าเป็นบวกต่อเนื่องแสดงว่าโมเดลประเมินคะแนนรวมสูงเกินไปเสมอ ถ้าเป็นลบต่อเนื่องแสดงว่าประเมินต่ำเกินไป
การคาดการณ์ทุกรายการจะถูกล็อกทันทีที่บันทึก generated_at หน้าย้อนหลังยังอ่านได้ และประวัติ commit เปิดเผยบน git