פיתוח מודלים של למידת מכונה לחיזוי תוצאות משחקים

הערכות מומחים ידניות תלויות במצב רוח ואינן ניתנות להרחבה. אנו מפתחים מודלים לחיזוי מקצה לקצה: אוספים ומכינים נתונים, מאמנים, בודקים יציבות ומוסרים נוהל הפעלה. זמן הכנת ההערכות מתקצר פי כמה, והחיזוי נבנה עבור כל משחק באופן אוטומטי.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

למה חיזוי תוצאות משחקים נשבר על היסטוריה

מודל שאומן על היסטוריה לא פעם מציג דיוק גבוה על מדגם בדיקה — ומאבד אותו במחזורים הראשונים של העונה החדשה. הסיבה כמעט תמיד אחת: דליפת נתונים. בתכונות נכנס משהו שלא היה קיים בזמן המשחק — פרוטוקול סופי, הרכב סופי, סטטיסטיקה במהלך המשחק. המודל לומד לא לחזות אלא להציץ.

בעיה נפרדת היא איכות הנתונים ההיסטוריים ותיוג האירועים. פרוטוקולים מתקנים בדיעבד: שער מיוחס לשחקן אחר, כרטיס מסווג מחדש, פציעה מדייקת לאחר המשחק. אם מאמנים על הגרסה הסופית של הייצוא, חיזוי תוצאות משחקים יישען על מידע שלא היה לא אצל סוכני ההימורים ולא אצל המאמן שעה לפני הפתיחה.

לוח זמנים לא אחיד מוסיף משלו. קבוצה משחקת כל יומיים בקטע צפוף, אחר כך יוצאת לפגרה, משחק נדחה — ואילו מדגם האימון נאסף כסדרה אחידה. מודל שלא מתחשב בצפיפות ובהקשר של המחזור טועה בביטחון בדיוק במקום שבו התחזית נחוצה ביותר.

בנוסף, הרכבים לא יציבים: רוטציה, הרחקות, החלפת מאמן משנים את ההתפלגות מהר יותר משנצברת היסטוריה ברת-השוואה. בלי בקרת איכות — בדיקה על קטע מושהה בזמן, ולא על משחקים אקראיים — אי אפשר להבחין בין אות אמיתי לבין התאמת יתר.

מה נותן מודל חיזוי: דיוק ויציבות

המודל מחזיר לא תווית «ניצחון או הפסד» אלא הסתברות מכוילת, ולכן תחזיות חיות על אותו סולם: ערך 0.7 נקרא אותו דבר גם עבור פייבוריט ברור וגם עבור משחק שקול. מחשבים עם בוסטינג גרדיאנטי CatBoost — הוא יציב על נתונים טבלאיים עם תכונות קטגוריאליות כמו טורניר, מועדון ומערך הרכב. כיול מוחל מעל הערכות גולמיות: בלעדיו המודל מפיק מספרים בטוחים מדי בתוצאות נדירות.

יציבות בודקים לא בפיצול אקראי אלא בחלון מחליק לפי לוח הזמנים: אימון על מחזורים קודמים, בדיקה על הבאים. כך נעלמת דליפה מההערכה — הרכב ופציעות ידועים רק לקראת המשחק, והמודל רואה אותם באותו זמן שבו רואה אותם המומחה. איכות נמדדת בשגיאה לוגריתמית ובמדד ברייר: הם מענישים על טעות בביטחון רב יותר מאשר על «לא יודע» כן.

יכולת שחזור מובטחת על ידי חיתוך נתונים לפי תאריך, גרסאות תכונות ופרמטרי אימון קבועים. הרצה חוזרת על אותו חיתוך נותנת את אותה ספרה, ולכן ויכוח «המודל השתפר או שזה רעש» נפתר בהרצה מחודשת, לא בדיון.

בכל תחזית אנחנו מציגים את תרומת התכונות — כמה הוסיפו מנוחה, כושר, היעדרות שחקן מפתח: המומחה רואה היגיון, לא קופסה שחורה. בדרך נעלם סוג שלם של כשלים — משחקים עם נתונים חסרים המודל מסמן בביטחון נמוך ולא מפיק עבורם מספרים נחרצים, כך שצריך לנתח כמה תחזיות משמעותיות במקום מאה רועשות.

גישות לחיזוי: השוואת מצבי עבודה

בחירת גישה לחיזוי נקבעת לא לפי אופנה אלא לפי מבנה הנתונים: כמה עונות היסטוריה יש, עד כמה פרוטוקולים לפי שחקנים מלאים והאם אירועים משתנים במהלך המשחק. מודלים סטטיסטיים על רגרסיה והתפלגויות פואסון נותנים רמת בסיס יציבה במדגמים קטנים ומסבירים כל תחזית בתרומת תכונה מסוימת.

מודלים אנסמבליים על בוסטינג גרדיאנטי מוציאים יותר מתכונות טבלאיות וממקורות מגוונים, אבל דורשים נפח נתונים גדול בהרבה ובקרת התאמת יתר. מודלים סדרתיים עובדים עם דינמיקה: מתחשבים בסדר האירועים ובכושר הקבוצה לאורך זמן, אבל רגישים לחסרים ודורשים סדרות רצופות ארוכות.

גישה מתי מתאימה מגבלות
מודלים סטטיסטיים מעט היסטוריה, צריך הסבריות ורמת בסיס מהירה לא תופסים אינטראקציות בין תכונות ושינוי משטר במהלך העונה
מודלים אנסמבליים הרבה תכונות טבלאיות ומקורות מגוונים, חשוב דיוק על סט יציב צריך נפח נתונים ותיוג איכותי, סיכון להתאמת יתר, הסבריות נמוכה יותר
מודלים סדרתיים דינמיקה במהלך המשחק, סדרות רצופות ארוכות, חיזוי בזמן אמת רגישים לחסרים ולתקלות כרונולוגיה, יקרים יותר באימון ובתחזוקה
גישה היברידית היסטוריה לא אחידה, חלק מהתכונות דלילות, צריך דיוק והסבריות בבת אחת מורכבת יותר בהגדרה, דורשת ולידציה נפרדת לכל שכבה

הגישות לא מתחרות אלא מצטברות בשכבות: מודל בסיס קובע נקודת ייחוס, שכבת אנסמבל או סדרתיות מוסיפים במקום שבו היא נותנת שיפור על מדגם מושהה בזמן. תארו את סוג הספורט ונפח ההיסטוריה — נחזור עם הערכה ותוכנית.

שלבי פיתוח מודל חיזוי: מהנתונים ועד למסירה

תחזית תוצאת משחק היא לא על ניחוש תוצאה מדויקת אלא על הערכת הסתברויות כנה, שאפשר לבדוק על נתונים שהמודל לא ראה. לכן המחזור בנוי כך שכל צעד הבא נשען על תוצאה קבועה של הקודם, ולא על «נשלים אימון אחר כך».

  1. ביקורת היסטוריה. מפרקים פרוטוקולי משחקים, לוחות זמנים וסטטיסטיקות זמינים: עומק, שלמות לפי עונות, חסרים, החלפת פורמטים של טורנירים. בפלט — רשימת תקופות שמתאימות לאימון ולבדיקה.

  2. סכמת תכונות. כושר הקבוצה בחלון מחליק, הרכבים וחילופים, צפיפות לוח הזמנים, גורם בית, סגנון היריב. כלל מפתח: כל תכונה מחושבת רק מנתונים שהיו זמינים בזמן המשחק.

  3. אימון ובחירה. משווים כמה משפחות של מודלים, מסתכלים לא על מקסימום פגיעות במדגם האימון אלא על יציבות איכות ההסתברויות בין עונות.

  4. בדיקה על תקופות מושהות. אימון על העבר, בדיקה על קטע עוקב שלא נכנס לאימון. כך רואים היכן המודל התאים יתר על הרכב קבוצות או טורניר מסוים.

  5. הטמעת המודל. חישוב לפי לוח זמנים, מסירת הסתברויות לממשק, גרסת מודל ויכולת חזרה לגרסה קודמת בעת הרעה.

  6. ניטור ומסירה. עוקבים אחרי פער בין תחזית למציאות ונהירת נתונים; בחריגה מסף מפעילים אימון מחדש. מוסרים תקנון עדכון, הרשאות ויומן גרסאות.

המודל לאחר מסירה — לא חפץ אלא שירות עובד: בלי בקרת פערים האיכות שלו יורדת בתוך עונה אחת.

מה מוסרים ללקוח: ארטיפקטים ותקנוני הפעלה

פרויקט נחשב למסור לא ברגע שבו המודל הראה איכות על מדגם מושהה, אלא כשהצוות שלכם יכול לאמן אותו מחדש, להסביר תחזית ולעדכן בלעדינו. לכן מוסרים לא רק את המודל עצמו אלא את כל המעגל סביבו — ממילון תכונות ועד תקנון עדכון.

החבילה נשארת אצלכם, ולפיה מתבצעת גם הקבלה.

  • מודל מאומן עם גרסה קבועה והרצת אימון ניתנת לשחזור: אותו סט נתונים ואותם פרמטרים נותנים אותה תוצאה.
  • תיאור תכונות: המשמעות של כל אחת, מקור, נוסחת חישוב, חלון היסטוריה, טיפול בחסרים וכללים שמונעים חדירת מידע מהמשחק שאנו מנבאים לתוך התכונות.
  • כללי הרכבת מדגם: תיוג תוצאות, איזון לפי ליגות ועונות, סינון משחקים עם נתונים חסרים.
  • תקנון אימון מחדש: טריגרים (ירידת איכות מתחת לסף, החלפת פורמט טורניר, מקור נתונים חדש), תדירות, חלון נתונים וסדר חזרה לגרסה קודמת.
  • דוחות איכות: דיוק ויציבות לפי ליגות ותקופות, השוואה לקו בסיס ולגרסה קודמת, ניתוח שגיאות במקרים מורכבים.
  • הוראות לאנליסטים: הפעלה מדורגת של עדכון, ניהול ספרי עזר, קריאת דוח ופעולות בפער בין תחזית למציאות.
  • תקנון ניטור בעבודה: אילו אותות עוקבים אחריהם, מה נחשב לירידה באיכות ולמי נשלחת התראה.

קבלה היא לא חתימה על מסמכים: אתם בעצמכם מריצים אימון מחדש על הנתונים שלכם ומשווים את הדוח לשלנו. פערים מנתחים ומביאים להתאמה עד סגירת השלב.

מקרה בוחן: תחזית יציבה במקום הערכות מומחים ידניות

מחלקת אנליטיקה בנתה תחזית ידנית: שלושה מומחים איחדו כושר הרכבים, היסטוריית מפגשים, לוח זמנים והיעדרויות שחקנים. על מחזור אחד הלכו 6–8 שעות, והתוצאה הייתה תלויה במי שהכין את הניתוח — פערים בהערכות למשחק אחד הגיעו עד 15%.

מה הראו המדדים לפני הרכבה מחדש

אספנו היסטוריית משחקים ואירועים מ-SofaScore, תייגנו תוצאות ואימנו מודל על הנתונים האלה, והשארנו למומחים תפקיד של בדיקה ולא של חישוב.

מדד לפני אחרי
דיוק לפי תוצאה (ניצחון / תיקו / הפסד) 44–46% 54–56%
זמן הכנה למחזור 6–8 שעות 40–50 דקות
פער בהערכות בין אנליסטים עד 15% עד 4%
משחקים שמנותחים ידנית כולם רק שנויים במחלוקת 10–15%

מה השתנה בתהליך

העבודה הידנית הצטמצמה למשחקים שבהם המודל לא בטוח: מומחים מנתחים 10–15% מהמפגשים, והשאר — תחזית מוכנה עם הסתברות לכל תוצאה ורשימת גורמים שהזיזו אותה.

האמון בהערכות גדל לא מ«מודל חכם» אלא מיכולת שחזור: אותו קלט נותן אותה תחזית, ופער עם המומחה נראה בתכונה מסוימת ומנותח עניינית, בלי ויכוח על טעם.

מה לעשות אם יש מעט מדי משחקים היסטוריים לאימון?

מספר קטן של משחקים הוא מגבלה לא על נפח הטבלה אלא על מספר התצפיות הבלתי תלויות. תוצאות רועשות, חלק מהמשחקים מוכרעים באקראיות, ולכן מודל עם מאות פרמטרים פשוט יזכור אפיזודות בודדות. ההיגיון ההפוך עובד: קודם מפחיתים מורכבות, אחר כך מחפשים מאיפה לקחת מבנה.

העברת תכונות מתקופות וטורנירים סמוכים נותנת יותר מהצפוי. דפוסים כמו יתרון בית, השפעת קצב המשחק או צפיפות לוח הזמנים חוזרים בליגות, דיוויזיות וגביעים אחרים, שבהם ההיסטוריה גדולה בסדר גודל.

מעבירים לא תיוג תוצאות אלא ייצוג: קורפוס רחב קובע קשרים כלליים בין תכונות, ואחר כך המודל עובר אימון משלים על סט צר. את הפער בין תקופות מפצים במשקלות רעננות — משחקים ישנים משפיעים פחות.

רגולריזציה במערך כזה היא הכלי המרכזי. עונשים על משקלות, בחירה של מספר קטן של תכונות יציבות, הגבלות מונוטוניות ומודלים עם התפלגויות פריאוריות שהוגדרו על ידי מומחים. המומחה מנסח לא תחזית מדויקת אלא טווח ערכים סבירים, והאימון רק מדייק אותו ולא מתאים את עצמו לעשרה משחקים.

אי-ודאות מעריכים בכנות. הסתברויות מכיילים, פיצול למדגמי בדיקה עושים לפי זמן ולא באקראי, אחרת העתיד זולג לאימון. אם רווח הסמך רחב מהחלטה שימושית, המערכת מחזירה «אין מספיק נתונים» במקום מספר בטוח — זה מגן גם מפני ציפיות מוגזמות וגם מפני אובדן אמון בתחזיות.

התאמת יתר, דליפות ונהירת נתונים: ספקות טכניים

התאמת יתר הכי קל לתפוס לפי הפער בין אימון לבדיקה על העתיד. אנחנו מחלקים את ההיסטוריה לפי זמן: אימון — על כל מה שלפני סימן הבקרה, בדיקה — על העונות האחרונות שהמודל לא ראה בשום צורה.

אם שם הדיוק נופל לרמה של קו בסיס פשוט (תדירות ניצחונות בית, הפרש שערים), סימן שהמודל למד רעש של עונות מסוימות ולא את חוקיות המשחק.

דליפת נתונים היא הסיבה השנייה בשכיחותה לתוצאות «טובות מדי». מקרה אופייני: לתכונות נכנסת סטטיסטיקה שעודכנה כבר אחרי המשחק — דירוגים מחושבים מחדש, הרכבים סופיים, מדדים אחרי המשחק.

אנחנו קובעים את זמן הצילום לכל תכונה ולוקחים רק את מה שהיה זמין לפני שריקת הפתיחה; האיכות במקרה כזה בדרך כלל יורדת בכמה אחוזים, אבל תואמת את המציאות. נהירה מתפתחת לאט יותר: סגנון המשחק, החוקים, זרימות ההעברות משתנים, והתפלגות התכונות מתרחקת מזו של האימון.

איך להבדיל בין אות אמיתי להתאמה מלאכותית?

מסתכלים על יציבות, לא על ספרה אחת: האם התכונה נותנת תוספת דיוק בעונות, טורנירים ותת-מדגמים שונים של קבוצות. אם הרווח נשמר רק בקטע אחד — זו התאמה מלאכותית; אם הוא חוזר בכמה — זה אות. בודקים גם את פיזור ההערכה, לא רק את הממוצע.

מה לעשות כשמתחלף פורמט הטורניר?

פורמט משנה את מבנה לוח הזמנים: מספר משחקים, צפיפות, שלבי פלייאוף, פגרות. תכונות שקשורות לגדלים האלה מפסיקות לומר את אותו דבר, ולכן אנחנו מרכיבים אותן מחדש לפי התקנון החדש ומבצעים אימון משלים על נתונים ששוחקו לפיו.

כל עוד ההיסטוריה המצטברת קטנה, מנמיכים את משקל תכונות לוח הזמנים לטובת תכונות אינוואריאנטיות — כושר של שחקנים בודדים, איכות ההרכב.

באיזו תדירות נדרש כיול מחדש בזמן נהירה?

מתמצאים לא לפי מועד אלא לפי אותות: שיעור הערכים שמחוץ לטווח האימון וירידת דיוק בחלונות מחליקים. כל עוד שני המדדים תקינים, המודל עובד בלי התערבות; בחריגה מהסף מפעילים הרכבה מחדש של תכונות ואימון מחדש על קטע רענן.

נדון במשימת החיזוי שלכם

כדי שההערכה תהיה עניינית ולא «בעין», צריך מינימום נתוני פתיחה: מה כבר נצבר על משחקים ומה בדיוק צריך להתקבל בפלט. להלן מה לשלוח כדי להתחיל דיון. אם אין חצי מהסעיפים, זו לא סיבה לדחות: חלק מהפערים נסגר בשלב הכנת הנתונים.

  • היסטוריית תוצאות: על כמה עונות, באיזו צורה (ייצוא, טבלה, ארכיון), אילו שדות יש — תוצאה, הרכבים, פציעות, סטטיסטיקת שחקנים, יחסי הימורים.
  • מה מנבאים: תוצאת משחק, תוצאה מדויקת, מספר שערים או סדרה — ובאיזה טווח: לפני המשחק או במהלכו.
  • דרישות מהתחזית: הסתברות או תווית מחלקה, איזה שיעור פגיעות נחשב מועיל, עם מה משווים את התוצאה.
  • איך התחזית תשמש: אנליטיקה למערכת, רמז למשתמש, פרסום אוטומטי — ובאיזו צורה למסור אותה.
  • מצב עבודה: כמה משחקים ביום, כמה מהר נדרשת תשובה, האם צריך לעדכן חישוב במהלך העונה.
  • מגבלות: איפה מאחסנים — אצלכם או אצלנו, אילו כללי גישה לנתונים חלים.
  • מה כבר ניסיתם: חישובים משלכם, שירותים מוכנים, למה התוצאה לא התאימה.

ננתח את הנתונים ונחזור עם הערכה ותוכנית עבודה: היקף ההכנה, סכמת בדיקה על משחקים עתידיים, שלבים ולוחות זמנים. בנפרד נאמר אילו מסקנות הנתונים לא מאפשרים להסיק — גם זה חלק מהתוכנית.