Courses
การทำนายฟุตบอลเป็นเรื่องยาก ฟุตบอลเป็นกีฬาที่ทำประตูน้อย ซึ่งลูกยิงแฉลบลูกเดียวสามารถเปลี่ยนผลการแข่งขันได้ และความโชคดีมีส่วนไม่น้อยในทุกนัด ฟุตบอลทีมชาติยิ่งยากกว่าเดิม เพราะทีมชาติมักลงเล่นเกมทางการเพียงไม่กี่นัดต่อปี ทำให้มีข้อมูลให้เรียนรู้น้อยกว่าลีกสโมสรอย่างมาก
และหากยังไม่พอ ปีนี้ FIFA ก็ทำให้โจทย์ยากขึ้นอีกสำหรับฟุตบอลโลก รอบสุดท้ายแบบ 48 ทีมที่ขยายเพิ่มมาพร้อมรูปแบบใหม่ที่ทีมอันดับ 1–2 จากทั้ง 12 กลุ่มผ่านเข้ารอบ พร้อมด้วยทีมอันดับ 3 ที่ดีที่สุด 8 จาก 12 กลุ่ม ทำให้ชะตากรรมรอบแบ่งกลุ่มคาดเดายากยิ่งขึ้น ในเมื่อชอบความท้าทาย (และฟุตบอล) นี่จึงเป็นสิ่งที่ตั้งใจจะทำนายให้ได้
นี่เป็นงานต่อยอดจากโครงการ คาดการณ์ EURO 2024 ที่เกือบสร้างใหม่ทั้งชุด ครั้งก่อนทำงานทั้งหมดใน Jupyter notebook และทำนายสกอร์ที่มีแนวโน้มมากที่สุดเพียงค่าเดียวต่อนัด คราวนี้สร้างไปป์ไลน์ MLOps แบบครบวงจรที่ดึงผลการแข่งขันล่าสุด ฝึกใหม่ด้วยตนเอง และรันการจำลองมอนติคาร์โลของทั้งทัวร์นาเมนต์ 10,000 ครั้ง เปลี่ยนการทำนายระดับแมตช์ให้กลายเป็นความน่าจะเป็นว่าทีมแต่ละทีมจะไปได้ไกลแค่ไหน
บทความนี้จะพาชมภาพรวมระดับสูงของโครงการ: ข้อมูลและฟีเจอร์ แนวปฏิบัติ MLOps ที่ทำให้ทำซ้ำได้ โครงสร้างไปป์ไลน์ และแบบจำลองใดที่ทำนายฟุตบอลทีมชาติได้ดีที่สุด โค้ดทั้งหมดอยู่ใน repo ของโปรเจกต์ และแน่นอน จะบอกด้วยว่าแบบจำลองคิดว่าใครจะเป็นผู้ชนะ (สปอยล์: ชอบสเปนและอาร์เจนตินาราว 16% เท่ากัน แต่ที่น่าสนใจกว่าคือกระบวนการที่พาไปถึงตรงนั้น)
ถ้าเริ่มคึกคักกับทัวร์นาเมนต์นี้ แนะนำให้รับชมสัปดาห์ Data & AI World Cup ของเรา ชุดเซสชันว่าข้อมูลและ AI กำลังเปลี่ยนโฉมฟุตบอลอย่างไร รับชมสดหรือย้อนหลังได้ฟรี
สรุปย่อ
- นี่คือไปป์ไลน์ MLOps แบบครบวงจรที่ทำนายฟุตบอลโลก 2026 ดึงผลทีมชาติล่าสุดและฝึกใหม่อัตโนมัติบน Google Cloud ทุกสองชั่วโมงระหว่างทัวร์นาเมนต์
- ข้อมูลจาก API-Football และคะแนน Elo ถูกประมวลผลผ่านสถาปัตยกรรมเหรียญ Bronze-Silver-Gold และจัดเวอร์ชันด้วย DVC เพื่อความสามารถในการทำซ้ำอย่างสมบูรณ์
- เปรียบเทียบ 10 โมเดลจาก 5 ตระกูลบนชุดทดสอบกันไว้ 347 นัด; XGBoost ชนะฉิวเฉียด ท็อปไฟว์แทบแยกกันไม่ออก และความต่าง Elo ระหว่างทีมทำงานเชิงทำนายส่วนใหญ่
- การจำลองมอนติคาร์โลเล่นทั้งทัวร์นาเมนต์ 10,000 ครั้ง แปลงการทำนายจำนวนประตูระดับแมตช์ให้เป็นโอกาสเข้ารอบและคว้าแชมป์ของแต่ละทีม
- ณ วันที่ 10 มิถุนายน 2026 ตัวเต็งของโมเดลคือสเปนและอาร์เจนตินาราว 16% เท่ากัน ดูการทำนายสดได้บน แดชบอร์ด Streamlit ที่รีเฟรชทุกสองชั่วโมง
ข้อมูลที่อยู่เบื้องหลังการทำนาย
คุณภาพของการทำนายดีได้เท่ากับสิ่งที่ป้อนเข้าไปเท่านั้น จึงคุ้มค่าที่จะเริ่มจากวัตถุดิบ โมเดลเรียนรู้จากสองแหล่งข้อมูลสดและแปลงให้เป็นตารางฟีเจอร์ที่เป็นระเบียบเพียงชุดเดียว
ข้อมูลมาจากไหน
ทุกอย่างสร้างจากสองแหล่ง API-Football จัดหาโปรแกรมแข่งขันและสถิติต่อแมตช์: ใครเจอใคร เมื่อไหร่ ที่ไหน และจบอย่างไร eloratings.net จัดหาเรตติ้ง Elo สำหรับทุกทีมชาติ
คะแนน Elo คือค่าตัวเลขเดียวที่สะท้อนความแข็งแกร่งของทีม ทุกทีมอยู่บนสเกลเดียวกัน และหลังจบทุกนัด คะแนนจะอัปเดต: ชนะทีมที่แกร่งกว่า ได้แต้มมาก แพ้ทีมที่อ่อนกว่า แต้มจะร่วงแรง แนวคิดมาจากหมากรุกและปรับใช้กับฟุตบอลได้อย่างลงตัว หากอยากเข้าใจเต็ม ๆ บทความ DataCamp ก่อนหน้านี้ อธิบายไว้ในบริบทฟุตบอลโลก 2022
เมื่อรวมกัน ทั้งสองแหล่งให้ชุดข้อมูล Gold ของการแข่งขันทีมชาติราว 6,900 นัดตั้งแต่ปี 2018 สำหรับการเรียนรู้
โมเดลทำนายอะไร
นี่คือจุดออกแบบสำคัญข้อแรก แทนที่จะทำนายผลลัพธ์โดยตรงว่า ชนะ เสมอ หรือแพ้ โมเดลทำนายสิ่งที่ละเอียดกว่า: จำนวนประตูที่แต่ละทีมทำได้ในนัดนั้น จำนวนประตูในฟุตบอลโดยประมาณตาม การกระจายปัวซอง วิธีมาตรฐานในการจำลองเหตุการณ์ที่พบไม่บ่อยภายในช่วงเวลาคงที่
การทำนายจำนวนประตูแทนผลลัพธ์คือสิ่งที่ทำให้ทุกอย่างต่อจากนี้เป็นไปได้ เมื่อโมเดลสร้างสกอร์ไลน์ที่สมเหตุสมผลได้สำหรับคู่ใดก็ตาม คำถามที่ทุกคนสนใจจริง ๆ ว่าใครจะผ่านรอบแบ่งกลุ่มและใครจะชูถ้วย ก็สามารถตอบได้ด้วยการจำลองสกอร์ไลน์เหล่านั้นนับพันครั้ง
ฟีเจอร์ที่สำคัญ
แต่ละนัดอธิบายด้วยชุดฟีเจอร์เล็ก ๆ ที่คัดสรรอย่างระมัดระวัง:
- ความต่าง Elo: ช่องว่างคะแนนระหว่างสองทีม นี่คือฟีเจอร์ที่สำคัญที่สุดทิ้งห่าง โดยมีความสำคัญมากกว่าฟีเจอร์รองลงมาราวสองลำดับขั้น ตรงกับสัญชาตญาณ เพราะช่องว่างความแข็งแกร่งระหว่างสองฝ่ายบอกแนวโน้มผลได้มากกว่าสิ่งอื่นส่วนใหญ่
- ผลรวม Elo: คะแนนสองทีมบวกกัน ใช้แทนคุณภาพโดยรวมของแมตช์ ความต่างอย่างเดียวบอกไม่ออกว่าอาร์เจนตินาพบสเปนต่างจากซานมารีโนพบอันดอร์ราอย่างไร ซึ่งเป็นเกมสูสีคนละระดับกัน ผลรวมช่วยคืนข้อมูลนั้น
- การเปลี่ยนแปลง Elo แบบกลิ้ง (5 นัดหลัง): คะแนนของแต่ละทีมเปลี่ยนไปล่าสุดเท่าไร จับฟอร์มพร้อมคำนึงถึงความแข็งแกร่งของคู่แข่งที่เจอมาแล้ว
- จำนวนประตูได้–เสียแบบกลิ้ง (5 นัดหลัง): ผลงานรุกและรับล่าสุดแบบสัมบูรณ์ คำนวณแยกสำหรับแต่ละทีม
- บริบทของแมตช์: ระดับความสำคัญของรายการ (ฟุตบอลโลกต่างจากรอบคัดเลือกหรือนัดเนชันส์ลีก) เป็นนัดน็อกเอาต์หรือไม่ และแข่งสนามกลางหรือไม่
ทุกฟีเจอร์ออกแบบให้ปลอดการรั่วของข้อมูลอย่างเคร่งครัด หมายความว่าใช้เฉพาะข้อมูลที่มีอยู่ก่อนเขี่ยบอลเท่านั้น ฟังดูชัดเจน แต่เป็นวิธีที่พลาดง่ายที่สุดวิธีหนึ่งในการสร้างโมเดลที่ดูดีเลิศตอนทดสอบแต่พังในโลกจริง
ไอเดียหนึ่งที่ไม่ผ่าน: เดิมตั้งใจทำฟีเจอร์ "สไตล์การเล่น" โดยจัดกลุ่มทีมจากสถิติระหว่างเกม ซึ่งเป็นขั้นตอน เรียนรู้แบบไม่ต้องมีตัวแปรอธิบาย ในทางปฏิบัติ ทีมไม่ได้แยกเป็นกลุ่มที่มีความหมาย จึงตัดทิ้งเพื่อไม่ป้อนสัญญาณรบกวนให้โมเดล ผลลัพธ์เชิงลบก็คือผลลัพธ์
ทำให้ข้อมูลทำซ้ำได้
เมื่อข้อมูลทยอยเข้าจากสองแหล่ง เส้นทางจากไฟล์ดิบไปยังฟีเจอร์พร้อมเทรนต้องเหมือนกันทุกครั้ง ซึ่ง สถาปัตยกรรมเหรียญ ช่วยได้ โดยจัดข้อมูลเป็นสามเลเยอร์:
- Bronze: ข้อมูลดิบตามที่ได้รับมา ไม่แตะต้อง
- Silver: ทำความสะอาดและมาตรฐาน ในขั้นนี้จะทำแมปชื่อทีมระหว่างสองแหล่ง (มักสะกดไม่ตรงกัน) ตรวจสคีมา ผนวกรวม Elo เข้ากับข้อมูลแมตช์ และจัดการข้อมูลที่หายหรือผิดรูป
- Gold: เลเยอร์สำหรับโมเดล ข้อมูลแบบ tidy หนึ่งแถวต่อแมตช์ พร้อมฟีเจอร์คำนวณครบสำหรับฝึก
แต่ละเลเยอร์ป้อนให้เลเยอร์ถัดไป เมื่อมีอะไรดูแปลก จะไล่ย้อนทีละขั้นได้แทนที่จะต้องแกะทุกอย่างพร้อมกัน เพื่อทำให้ทั้งเส้นทางทำซ้ำได้ ใช้ DVC (Data Version Control) เมื่อมีผลใหม่เข้า เพียงคำสั่ง dvc repro ก็จะสร้าง Silver และ Gold จาก Bronze ใหม่ รันเฉพาะขั้นที่อินพุตเปลี่ยน และจัดเวอร์ชันชุดข้อมูลที่ได้เพื่อกู้สถานะก่อนหน้าได้ตรงตัว
เลือกโมเดลที่ดีที่สุด
การทำนายจำนวนประตูเป็นปัญหาที่ศึกษากันมาก และไม่มีเครื่องมือเดียวที่ชัดเจน จึงไม่ผูกมัดแนวทางเดียวแต่แรก สร้างไว้สิบโมเดลแล้วปล่อยแข่งกัน
ผู้ท้าชิง
สิบโมเดลครอบคลุมห้าตระกูลพร้อมเบสไลน์ง่าย ๆ ไม่จำเป็นต้องรู้กลไกภายในของแต่ละตัว จุดสำคัญคือพวกมันตั้งสมมติฐานต่างกันมากเกี่ยวกับการเกิดประตู
| ตระกูล | โมเดล | แนวคิดหลัก |
|---|---|---|
| เบสไลน์ | Poisson อัตราเฉลี่ย | สมมติว่าทุกทีมทำประตูตามค่าเฉลี่ยระยะยาวโดยรวม เพิกเฉยต่อฟีเจอร์ทั้งหมด เป็นพื้นฐานให้ตัวอื่นทำคะแนนเหนือกว่า |
| เชิงสถิติ | Bivariate Poisson, Negative Binomial | จำลองจำนวนประตูทั้งสองฝั่งด้วยการกระจายความน่าจะเป็นสำหรับการนับเหตุการณ์ |
| แบบเบย์esian | Bayesian Poisson (MCMC) | ไอเดียการนับเดียวกัน แต่ให้ช่วงความไม่แน่นอนเต็มรอบค่าประมาณแต่ละค่า ต้องคำนวณมากกว่ามาก: ใช้เวลาฟิตประมาณ 100 เท่าของตัวอื่น |
| อนุกรมเวลา | SARIMAX | มองผลของทีมเป็นลำดับตามเวลาและฉายภาพไปข้างหน้า |
| แมชชีนเลิร์นนิง | Ridge, Random Forest, XGBoost | เรียนรู้รูปแบบจากฟีเจอร์โดยไม่ยึดติดสมการตายตัว |
| ดีปเลิร์นนิง | LSTM, 1D CNN | โครงข่ายประสาทที่ค้นหารูปแบบตามลำดับและเฉพาะที่ในข้อมูล |
วิธีให้คะแนน
มีผู้ท้าชิงสิบราย การเลือกผู้ชนะด้วยสายตาย่อมเป็นไปไม่ได้ แทนที่จะเป็นเช่นนั้น แต่ละโมเดลต้องผ่านสามขั้น และโค้ดจะตัดสินว่าจะได้ไปต่อหรือไม่ นี่คือความหมายของ การดีพลอยโดยอิงโค้ด: โมเดลถูกโปรโมตจากสภาพแวดล้อมหนึ่งไปยังอีกสภาพแวดล้อมด้วยการตรวจอัตโนมัติแทนการปรับด้วยมือ ทำให้กระบวนการคัดเลือกทำซ้ำและตรวจสอบได้ง่าย
- ทดลอง. ทุกโมเดลฝึกด้วยแมตช์ทีมชาติที่เกิดขึ้นก่อนฟุตบอลโลก 2022 เท่านั้น ไม่ใช่ทุกนัดมีน้ำหนักเท่ากัน: เกมล่าสุดและนัดเดิมพันสูงให้น้ำหนักมากกว่า (การถดถอยตามเวลาและน้ำหนักตามความสำคัญของแมตช์) เพื่อให้ผลทางการล่าสุดมีอิทธิพลต่อโมเดลมากกว่าเกมอุ่นเครื่องเก่า จากนั้นปรับจูนพารามิเตอร์ของแต่ละโมเดลให้ลด Poisson negative log-likelihood (NLL) ด้วย cross-validation NLL เป็นคะแนนว่าค่าอัตราทำประตูที่ทำนายสอดคล้องกับประตูที่เกิดขึ้นจริงแค่ไหน ยิ่งต่ำยิ่งดี ได้เวอร์ชันที่จูนดีที่สุดของแต่ละโมเดล
- ประกันคุณภาพ. โมเดลที่จูนแล้วถูกทดสอบกับแมตช์ที่ไม่เคยเห็น: ฟุตบอลโลก 2022 บวกทัวร์นาเมนต์ใหญ่อีกหกรายการหลังจากนั้น (EURO, แอฟริกันคัพแห่งชาติสองครั้ง, โคปาอเมริกา, เอเชียนคัพ, และโกลด์คัพ) รวม 347 นัด ที่นี่เมตริกจะเปลี่ยนเป็น ranked probability score (RPS) วัดความแม่นของการพยากรณ์เชิงความน่าจะเป็นเมื่อผลลัพธ์มีลำดับธรรมชาติ เช่น แพ้ เสมอ ชนะ และให้รางวัลเมื่อมั่นใจไปในทิศที่ถูกโดยประมาณ ยิ่งต่ำยิ่งดีเช่นกัน โมเดลที่แข็งแกร่งที่สุดที่นี่จะเป็น ผู้ท้าชิง RPS เป็นไม้บรรทัดที่เหมาะสมเพราะเป้าหมายจริงคือการทำนายว่าแต่ละทีมจะไปได้ไกลแค่ไหน ไม่ใช่แค่ยอดรวมประตู
- ดีพลอย. ผู้ท้าชิงถูกเปรียบเทียบกับแชมป์เก่า หากชนะ จะถูกโปรโมตและฟิตใหม่ด้วยทุกแมตช์ที่มี เพื่อเข้าทัวร์นาเมนต์โดยได้เรียนรู้จากข้อมูลทั้งหมด
ผู้ชนะคือใคร
แล้วแนวทางใดชนะ? นี่คือบอร์ดผู้นำชุดทดสอบกันไว้เต็มรูปแบบ วัดด้วย RPS (ยิ่งต่ำยิ่งดี):
| โมเดล | RPS บนชุดกันไว้ |
|---|---|
| XGBoost | 0.18289 |
| Bayesian Poisson | 0.18316 |
| Negative Binomial | 0.18373 |
| Bivariate Poisson | 0.18389 |
| Random Forest | 0.18392 |
| SARIMAX | 0.18583 |
| Ridge | 0.18813 |
| LSTM | 0.19299 |
| 1D CNN | 0.20916 |
| Poisson อัตราเฉลี่ย (เบสไลน์) | 0.22872 |
มีสี่ประเด็นที่โดดเด่นจากผลลัพธ์นี้:
- XGBoost ชนะ แต่เฉียดฉิวมาก. ห้าอันดับแรก (XGBoost, Bayesian Poisson, Negative Binomial, Bivariate Poisson และ Random Forest) จบภายในช่วงประมาณ 0.0011 RPS ของกันและกัน เมื่อหลายแนวทางที่ต่างกันมากมาลงที่ใกล้กันขนาดนี้ มักหมายความว่าเพดานถูกกำหนดโดยข้อมูลและฟีเจอร์ ไม่ใช่ตัวโมเดล ที่นี่ ความต่าง Elo ทำงานส่วนใหญ่จนการเลือกโมเดลแทบไม่ขยับเข็ม
- ฟีเจอร์เดียวครองเกม. ความต่าง Elo เป็นตัวทำนายสำคัญทิ้งห่าง มีอิทธิพลมากกว่าฟีเจอร์รองลงมาราวร้อยเท่า นั่นน่าชื่นใจมากกว่าน่าประหลาดใจ: ในเกมเดียว ช่องว่างความแข็งแกร่งระหว่างสองทีมคือเกือบทั้งหมดของเรื่อง
- ดีปเลิร์นนิงรั้งท้าย ยกเว้นเบสไลน์. 1D CNN และ LSTM เป็นโมเดลที่อ่อนที่สุดยกเว้นเบสไลน์อย่างง่าย ด้วยข้อมูลให้เรียนรู้เพียงราว 7,000 นัด จำนวนน้อยไปสำหรับเครือข่ายที่มีพารามิเตอร์มาก วิธีคลาสสิกจัดการกับชุดข้อมูลขนาดเล็กและมีโครงสร้างได้ดีกว่า
- ไม่เห็นสัญญาณโอเวอร์ฟิตในโมเดลคลาสสิก. ปกติแล้วโมเดลจะทำได้แย่ลงเล็กน้อยบนข้อมูลที่ไม่เคยเห็นเมื่อเทียบกับระหว่างฝึก ที่นี่เกือบทุกโมเดล (ยกเว้น LSTM) ทำคะแนนดีกว่าบนทัวร์นาเมนต์กันไว้มากกว่าในการ cross-validation เหตุผลที่เป็นไปได้คือฟุตบอลทัวร์นาเมนต์คาดเดาได้มากกว่าปฏิทินทีมชาติประจำ: เดิมพันสูง ทีมแข็งแกร่งและคุ้นเคยกว่า สนามกลาง ช่วยลดความสุ่มบางส่วนออกไป
สำหรับทัวร์นาเมนต์สด จะไม่รันทั้งสิบตัว รักษาโรสเตอร์เล็กลง: เบสไลน์อัตราเฉลี่ยเป็นจุดอ้างอิง พร้อมผู้ทำผลงานดีที่สุดสามตัว โดย XGBoost และ Bayesian Poisson ครองสองอันดับแรก
ที่สามถือว่าเสมอกัน: Negative Binomial และ Bivariate Poisson จบห่างกันเพียง 0.0002 RPS และสลับอันดับกันตาม random seed ดังนั้นระหว่างโมเดลที่แยกกันไม่ออกทางสถิติ เลือก Bivariate Poisson ซึ่งมีสูตรตั้งอยู่บนฐานวรรณกรรมการทำนายฟุตบอลที่แข็งแรงกว่า (Karlis and Ntzoufras, 2004)
สรุปโรสเตอร์คือ XGBoost (แมชชีนเลิร์นนิง), Bivariate Poisson (สถิติคลาสสิก) และ Bayesian Poisson (อนุมานแบบเบย์) ส่วนต่อไปจะอธิบายว่าโมเดลเหล่านี้ทำงาน ฝึกใหม่ และเปลี่ยนการทำนายแมตช์เดี่ยวให้เป็นการคาดการณ์ทั้งทัวร์นาเมนต์อย่างไร
นำขึ้นใช้งานจริง
โมเดลที่อยู่ในโน้ตบุ๊กมีประโยชน์เฉพาะตอนที่กำลังนั่งอยู่หน้ามัน การทำนายนัดต่าง ๆ ตลอดทัวร์นาเมนต์ที่ยาวหนึ่งเดือน จำเป็นต้องให้ทุกอย่างทำงานเอง: ดึงผลใหม่ ฝึกใหม่ จำลองใหม่ และรีเฟรชพยากรณ์โดยไม่ต้องมีใครแตะต้อง นั่นคือหน้าที่ของไปป์ไลน์
ไปป์ไลน์ทุกสองชั่วโมงบน GCP
ทั้งโปรเจกต์รันเป็นงานกำหนดเวลาเดียวบน Google Cloud Run ก่อนทัวร์นาเมนต์จะปลุกวันละครั้ง ตั้งแต่แมตช์เปิดวันที่ 11 มิถุนายน จะรันทุกสองชั่วโมง แต่ละรันทำวงจรเดิม:
- ตรวจข้อมูลใหม่. หากไม่มีนัดใดจบตั้งแต่รอบก่อน ก็ไม่มีอะไรต้องทำ งานจะจบลงทันที
- ดึงเข้าและสร้างใหม่. เมื่อมีผลใหม่ จะดึงจากแหล่งข้อมูล และสั่ง
dvc reproเดียวเพื่อสร้างเลเยอร์ Silver และ Gold ใหม่ให้ฟีเจอร์เป็นปัจจุบัน - ฝึกใหม่ ทำนาย จำลอง. โมเดลในโรสเตอร์อัปเดตให้ทันสมัย (รายละเอียดด้านล่าง) ทำนายทุกคู่ที่กำลังจะมา และจำลองทั้งทัวร์นาเมนต์
- ให้คะแนน. เมื่อแมตช์หนึ่งสิ้นสุด จะนำการทำนายที่ทำไว้มาให้คะแนน ซึ่งป้อนเข้าการมอนิเตอร์ด้านล่าง
เพราะทุกขั้นถูกเรียกด้วยโค้ดตามตาราง จึงไม่มีการกดปุ่มด้วยมือระหว่างทัวร์นาเมนต์ ผลใหม่เข้า พยากรณ์รีเฟรชออก
สองโหมด: แช่แข็ง vs. ต่อรอบ
ตรงนี้โปรเจกต์ทำหน้าที่เป็นการทดลองไปพร้อมกัน ระหว่างทัวร์นาเมนต์ โรสเตอร์รันสองโหมดคู่ขนาน และความต่างระหว่างสองโหมดคือคำถามที่หวังจะตอบจากข้อมูล: การฝึกใหม่ระหว่างทัวร์นาเมนต์ช่วยให้การทำนายดีขึ้นหรือไม่?
- แช่แข็ง. โมเดลถูกล็อกตั้งแต่ทัวร์นาเมนต์เริ่มและไม่ฝึกใหม่ พวกมันยังตอบสนองต่อผลการแข่งขัน เพราะการจำลองแต่ละครั้งเริ่มจากผังประกบที่อัปเดตแล้ว แต่พารามิเตอร์ของโมเดลเองจะไม่เปลี่ยน
- ต่อรอบ. ไฮเปอร์พารามิเตอร์ (การตั้งค่าระดับสูง) คงที่ แต่พารามิเตอร์ที่โมเดลเรียนรู้จะฟิตใหม่บนข้อมูลที่มีอยู่ทั้งหมดหลังจบรอบแมตช์แบ่งกลุ่มแต่ละชุดและหลังจบแต่ละรอบน็อกเอาต์ เพื่อให้โมเดลเรียนรู้จากทัวร์นาเมนต์ขณะเกิดขึ้น
การรันทั้งสองแบบพร้อมกันทำให้เปรียบเทียบได้สองด้านเมื่อจบ: ความแม่นยำเชิงทำนาย และความเร็วที่ความไม่แน่นอนของแต่ละแบบคลี่คลายเมื่อสนามแคบลง หากต่อรอบชนะ การฝึกใหม่สม่ำเสมอก็คุ้มค่า หากแช่แข็งยังสูสี เครื่องจักรพิเศษอาจไม่จำเป็น
จากการทำนายสู่ทัวร์นาเมนต์: การจำลองมอนติคาร์โล
ทำนายนัดเดียวอย่างหนึ่ง การแปลงให้เป็น "โอกาสคว้าแชมป์ของแต่ละทีม" คือหน้าที่ของการจำลองมอนติคาร์โล
เริ่มจากการอนุมาน แทนที่จะทำนายเฉพาะโปรแกรมที่รู้แล้ว โมเดลจะทำนายทุกคู่ที่เป็นไปได้ในบรรดา 48 ทีม ฟังดูมากเกินไป แต่ในทัวร์นาเมนต์ ทีมไหนก็มีสิทธิ์เจอกันได้ในรอบน็อกเอาต์ จึงต้องมีการทำนายพร้อมสำหรับทุกคู่
ต่อไปต้องเข้ารหัสกติกา และรูปแบบปี 2026 ทำให้ซับซ้อนเป็นพิเศษ ใน 12 กลุ่ม อันดับ 1–2 เข้ารอบอัตโนมัติ แต่ยังมีทีมอันดับ 3 ที่ดีที่สุด 8 ทีมเข้ารอบด้วย และตำแหน่งน็อกเอาต์ของทีมอันดับ 3 เหล่านั้นขึ้นอยู่กับว่ามาจากกลุ่มใด
มี 495 วิธีในการเลือก 8 กลุ่มจาก 12 กลุ่ม (สิบสองเลือกแปด) และแต่ละวิธีให้คู่ประกบรอบ 32 ทีมสุดท้ายต่างกัน ไม่มีสูตรที่สวยงาม FIFA เผยแพร่เป็นตารางไว้เฉย ๆ ดังนั้นฉัน (หรือพูดให้ถูกคือเพื่อนร่วมงานที่เก่งมากของฉัน Cursor) จึงฮาร์ดโค้ดทั้ง 495 แบบลงในแมปปิง โดยใช้อ้างอิงจากตารางทางการ
"best_third_mappings": {
"EFGHIJKL": {
"74": "3F",
"77": "3G",
"79": "3E",
"80": "3K",
"81": "3I",
"82": "3H",
"85": "3J",
"87": "3L"
},
"DFGHIJKL": ...
แต่ละคีย์อย่าง EFGHIJKL ระบุว่าทีมอันดับ 3 ที่ผ่านเข้ารอบมาจากกลุ่มใดบ้าง และค่าจะแมปทีมเหล่านั้น (3E, 3F เป็นต้น) ไปยังหมายเลขแมตช์รอบ 32 ทีมสุดท้ายที่กำหนด นี่คือตัวอย่างหนึ่ง รายการเต็มทำซ้ำ 495 ครั้ง ครั้งละหนึ่งคอมบิเนชัน
สามชาติเจ้าภาพ (สหรัฐฯ แคนาดา เม็กซิโก) ต้องจัดการพิเศษหนึ่งอย่าง เมื่อเจ้าภาพเตะในประเทศตนเอง การจำลองจะปรับอคติเจ้าบ้านสำหรับนัดนั้น ขณะที่แมตช์อื่นถือเป็นสนามกลาง
เมื่อได้การทำนายและกติกา การจำลองจะวิ่งทั้งทัวร์นาเมนต์ 10,000 ครั้ง ในแต่ละครั้ง ทำตามขั้นตอนนี้:
- สุ่มสกอร์ของทุกแมตช์โดยจับจำนวนประตูเหย้า–เยือนจากการกระจายที่โมเดลทำนาย
- เล่นรอบแบ่งกลุ่มตามกฎคะแนนและตัวตัดสินจริง
- ตัดสินตารางทีมอันดับสามที่ดีที่สุด
- เติมสายประกบน็อกเอาต์จากแมปปิงด้านบน
- เล่นไปจนได้แชมป์หนึ่งทีม
ในบรรดาทัวร์นาเมนต์จำลอง 10,000 รายการ สัดส่วนครั้งที่ทีมหนึ่งไปถึงรอบชิงหรือคว้าแชมป์จะกลายเป็นความน่าจะเป็นของทีมนั้น การวิ่งครั้งเดียวคือการเดา การวิ่งหมื่นครั้งคือพยากรณ์
ติดตามทั้งหมดด้วย MLflow
การรันทุกครั้งที่กล่าวมา ในทั้งสองโหมด ถูกบันทึกลง MLflow (โฮสต์บน DagsHub) การติดตามการทดลองคือการบันทึกอินพุต การตั้งค่า ผลลัพธ์ และเอาต์พุตของแต่ละรันอย่างเป็นระบบ เพื่อให้เปรียบเทียบกันหรือนำมาทำซ้ำได้ตรงตัว มีหลายอย่างที่ควรกล่าวถึง:
- ความทำซ้ำได้. การจำลองใช้ seed แบบสุ่มคงที่ที่ได้มาจากรอบของทัวร์นาเมนต์ และใช้ seed เดียวกันทั้งโหมดแช่แข็งและต่อรอบ หมายความว่าแตกต่างใด ๆ ระหว่างสองโหมดมาจากตัวโมเดลเอง ไม่ใช่ดวงภายในจำลอง แต่ละรันยังบันทึกสแน็ปช็อตข้อมูลที่เห็น (จำนวนแถว Gold และเวลา) เพื่อไล่ที่มาของผลลัพธ์กลับไปยังอินพุตได้เสมอ
- การทดลอง. แต่ละรันติดแท็กโหมด (แช่แข็งหรืออต่อรอบ) และสถานะในวงจรชีวิต ตั้งแต่เชิงทดลองและ QA ไปจนถึงการอนุมานสดและการฟิตใหม่ สะท้อนโฟลว์การโปรโมตจากส่วนก่อนหน้า
- การเปรียบเทียบ. บันทึก RPS บนชุดกันไว้เป็นเมตริกคัดเลือก พร้อมการอ้างอิงไปยังรันของแชมป์ปัจจุบันเพื่อดูสายสัมพันธ์ บันทึกเวลาในการฟิตด้วย ซึ่งทำให้เห็นชัด ๆ ว่าโมเดลแบบเบย์ฝึกช้ากว่าราว 100 เท่า
โมเดลที่ฝึกแล้วและไฟล์การทำนายเอง (ความน่าจะเป็นของทัวร์นาเมนต์ อันดับรอบแบ่งกลุ่ม และพยากรณ์แมตช์) ถูกเก็บเป็นอาร์ติแฟกต์ของรัน และไฟล์เหล่านี้คือสิ่งที่แดชบอร์ดสดอ่าน ปิดลูปตั้งแต่ผลดิบ ผ่านการฝึกและการจำลอง ไปจนถึงตัวเลขที่เห็นออนไลน์
มอนิเตอร์การดริฟต์
ชิ้นส่วนสุดท้ายรันเมื่อแมตช์สิ้นสุด เมื่อผลจริงเข้ามา จะนำการทำนายที่ทำไว้มาให้คะแนนและเปรียบเทียบกับเบสไลน์อัตราเฉลี่ยง่าย ๆ หากโมเดลเต็มเริ่มแพ้ให้กับโมเดลที่ไม่รู้อะไรเกี่ยวกับทีม นั่นคือสัญญาณเตือนการดริฟต์: รูปแบบที่เรียนรู้ก่อนทัวร์นาเมนต์อาจไม่ตรงกับสิ่งที่เกิดขึ้นในสนามอีกต่อไป
การเฝ้าดูเช่นนี้เป็นแนวปฏิบัติมาตรฐานสำหรับระบบที่ทำนายสดใด ๆ และอ่านเพิ่มเติมเกี่ยวกับวิธีตรวจจับได้ในคู่มือนี้เกี่ยวกับ data drift และ model drift
แล้วใครจะคว้าแชมป์โลก?
หลังเครื่องไม้เครื่องมือทั้งหมด นี่คือสิ่งที่สร้างขึ้นมาเพื่อมัน
ตัวเต็ง
ณ วันที่ 10 มิถุนายน 2026 วันก่อนนัดเปิด โมเดลให้คำตัดสินที่ชัดเจนที่หัวขบวนและแน่นหนาในกลุ่มตามมา สเปนและอาร์เจนตินานำหน้าด้วยโอกาสชูถ้วยราว 16% เท่ากัน ที่แชมป์โลกปัจจุบัน (อาร์เจนตินา) และแชมป์ยุโรปปัจจุบัน (สเปน) ออกมานำหน้าถือเป็นเช็คสติว่าตัวโมเดลยืนอยู่บนความจริง
ด้านหลังคือกลุ่มไล่ล่าที่สูสี: ฝรั่งเศส อังกฤษ บราซิล และโคลอมเบีย คือผู้ชนะที่มีความเป็นไปได้มากที่สุดถัดมา ตัวเลขเหล่านี้เป็นแบบสด และจะขยับทันทีที่ผลจริงเริ่มเข้ามา จึงควรมองเป็นภาพ ณ วันที่ 10 มิถุนายน ไม่ใช่คำทำนายตายตัว แดชบอร์ดจะแสดงตัวเลขปัจจุบันเสมอ โดยหน่วงสูงสุดสองชั่วโมง
แดชบอร์ดสด
พูดถึงแล้ว: ตัวเลขทุกค่าในบทความนี้มาจากแอป Streamlit สดที่อัปเดตอัตโนมัติพร้อมการรันของไปป์ไลน์ เปิดได้ที่ wc2026-predictions.streamlit.app เพื่อติดตามทัวร์นาเมนต์ มีสี่มุมมองหลัก:
- ภาพรวมทัวร์นาเมนต์: ทีมแต่ละทีมคาดว่าจะไปได้ไกลแค่ไหน แบบมองภาพรวม
- อันดับรอบแบ่งกลุ่ม: สำหรับแต่ละกลุ่ม ความน่าจะเป็นที่แต่ละทีมจะจบอันดับหนึ่ง สอง สาม (แยกเป็นที่สามแล้วเข้ารอบกับที่สามแล้วตกรอบ ตามกฎทีมอันดับสามที่ดีที่สุด) หรือสี่
- การทำนายแมตช์: สำหรับแต่ละนัดในรอบแบ่งกลุ่ม โอกาสชนะเหย้า เสมอ หรือชนะเยือน พร้อมสายประกบน็อกเอาต์ที่มีแนวโน้มที่สุด
- คู่ประกบน็อกเอาต์ที่พบบ่อยที่สุด: คู่ที่การจำลองสร้างบ่อยที่สุด
จุดสังเกตหนึ่งในมุมมองแมตช์: บางทีมปรากฏในสองตำแหน่งที่เป็นไปได้ของรอบ 32 ทีมพร้อมกัน นั่นไม่ใช่บั๊ก เกิดขึ้นเมื่อกลุ่มสูสีจนโมเดลบอกตำแหน่งเข้ารอบของทีมหนึ่ง ๆ ได้ไม่มั่นใจนัก เมื่อรวมความไม่แน่นอนของทีมอันดับสามเข้ามา ผลสองแบบนำไปสู่ช่องประกบที่ต่างกัน สำหรับตุรกีถึงขั้นทำให้พวกเขาอยู่ในรอบ 16 ทีมถึงสองครั้ง
กราฟิกต่อไปนี้แสดงรอบสุดท้าย (ตั้งแต่รอบก่อนรองชนะเลิศจนถึงชิงชนะเลิศ) ที่โมเดล XGBoost ฉายภาพก่อนทัวร์นาเมนต์เริ่ม:

ทีมเหรียญเสี่ยงทาย: สหรัฐอเมริกา
ความสนุกของโมเดลแบบนี้อยู่ที่ทีมที่สวนทางกับความรู้สึก โดยตัวอย่างชัดที่สุดคือสหรัฐอเมริกา หากไปที่ภาพรวมทัวร์นาเมนต์บนแดชบอร์ด จะสังเกตเห็นว่าสหรัฐฯ โดดเด่นขึ้นมาด้วยสีทันที
ในฐานะเจ้าภาพร่วมเล่นต่อหน้าแฟนบอลในบ้าน อาจคาดหวังการออกสตาร์ทที่สบาย ๆ แต่โมเดลระมัดระวังกว่ามาก: ให้โอกาสผ่านรอบแบ่งกลุ่มเพียงราว 54.6% ซึ่งต่ำเป็นอันดับ 13 ของทั้งสนาม (อย่าลืมว่าสองในสามของทีมเข้ารอบ!) เพราะอยู่กลุ่มที่สูพลังพอ ๆ กันกับออสเตรเลีย ปารากวัย และตุรกี
ที่น่าสนใจคือสิ่งที่ตามมา เมื่อผ่านแบบเฉียด ๆ สหรัฐฯ จะอยู่แถว ๆ โอกาสเสี่ยงทายในทุกรอบถัดไป เมื่อนำการเสี่ยงทายเหล่านั้นมาต่อกัน พวกเขามีโอกาสชนะทั้งทัวร์นาเมนต์ราว 2% ซึ่งสูงเป็นอันดับ 13 จากทั้ง 48 ทีม
ทีมที่อยู่ราวอันดับ 13 จากท้ายเพื่อผ่านรอบแบ่งกลุ่ม แต่ราวอันดับ 13 จากหัวเพื่อคว้าแชมป์ คือคำจำกัดความที่สมบูรณ์แบบของทีมเหรียญเสี่ยงทาย: ไม่เคยเป็นตัวเต็ง แต่ไม่เคยถูกตัดออก
บทส่งท้าย
โปรเจกต์นี้ใช้แรงไม่น้อย และครอบคลุมมากกว่าที่บทความเดียวจะบรรจุได้ repo ยังมีอีกมากที่ไม่ได้ใส่มาที่นี่: ชุดผู้สมัครโมเดลเต็ม ฟีเจอร์เอนจิเนียริง และการจัดการที่ทำให้ทุกอย่างวิ่งต่อเนื่อง เป็นต้น
ตอนนี้โมเดลได้เลือกของมันแล้ว และทัวร์นาเมนต์จะเป็นผู้ตัดสิน ไม่ว่ามาเพราะ MLOps หรือฟุตบอล หวังว่าจะสนุกกับการติดตามไปพร้อมกัน เปิดดู พยากรณ์สด ขณะผลการแข่งขันไหลมา และดูว่าการทำนายจะยืนระยะได้ดีแค่ไหน
หากอยากเจาะลึกแนวคิดบางส่วนที่กล่าวถึง แนะนำคอร์ส MLOps Concepts ของเรา