Phương pháp dự đoán
Cách chúng tôi tạo dự đoán, chốt kết quả và cách đọc chúng.
Dự đoán được tạo như thế nào
- Thắng/thua (Elo) — Điểm Elo của hai đội được đưa vào công thức xác suất thắng chuẩn. Hệ số K quyết định mức biến động mỗi trận:
P(A wins) = 1 / (1 + 10^((R_B − R_A) / 400)) - Tổng điểm (Poisson) — Điểm trung bình của mỗi đội trong các trận đã kết thúc trở thành λ; chúng tôi cộng hai phân phối Poisson để ước tính tổng điểm:
projected_total = Σ Poisson(λ_team) for each team's finished-event mean - Tác vụ định kỳ generate-predictions chạy mỗi giờ, quét các trận trong 6 giờ tới, ghi dòng dự đoán và đóng dấu thời gian generated_at, nên dự đoán được chốt trước giờ khai cuộc.
Quy tắc chốt kết quả
- Thắng/thua — Sau khi trận có status='finished', chúng tôi so sánh score_json.winner với pick.side: cùng phía là trúng, khác phía là trượt.
- Tổng điểm — Chúng tôi tính actual_total = home_score + away_score, rồi lưu abs_error và signed_error so với projected_total. Kết quả được gắn nhãn scored (không phải hit / miss vì đây là thước đo liên tục, không phải lựa chọn nhị phân).
- Hủy — Nếu trận bị hoãn hoặc hủy, dự đoán bị hủy và không được tính vào tỷ lệ trúng lẫn MAE.
Cách đọc các con số
- Khi tổng số kết quả đã chốt dưới 30, ô tỷ lệ trúng / MAE hiển thị 'Mẫu quá nhỏ' thay vì con số, vì quy luật số lớn cần thời gian để phát huy.
- Độ tin cậy là mức tin của chính mô hình vào dự đoán, không phải độ tin cậy của thị trường hay cộng đồng. Mô hình hiệu chỉnh tốt sẽ thắng 70% số trận mà nó gắn nhãn 70%; chúng tôi minh họa điều này trên biểu đồ hiệu chỉnh ở trang thành tích.
- MAE là sai số tuyệt đối trung bình của (dự đoán − thực tế) lấy giá trị tuyệt đối. Độ lệch là sai số có dấu trung bình: giá trị dương kéo dài nghĩa là mô hình thường dự đoán tổng điểm cao hơn thực tế, giá trị âm kéo dài nghĩa là thấp hơn.
Mỗi dự đoán bị khóa ngay khi generated_at được ghi. Các trang lịch sử vẫn đọc được; lịch sử commit được công khai trên git.