דלג לתוכן הראשי

צומת ניסוי (Experiment)

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

איך זה עובד במבט כללי

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

צומת הניסוי מחזיק שלושה מושגים:

  1. סוג נתיב - אסטרטגיית הניתוב (Standard / Pick winner / Personalized).
  2. חלוקת נתיבים - איך התעבורה מוקצית בין הנתיבים.
  3. סוגי נתיבים מיוחדים - נתיבים רגילים, קבוצות ביקורת (ללא וריאנט ניסוי), וקבוצות המתנה (ממתינים עד שיוכרז מנצח).

סוגי נתיבים

פתחו את הגדרות צומת הניסוי ובחרו אחד משלושה מצבים בראש לשונית Experiment.

סטנדרטי (Standard)

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

בחירת מנצח (Pick winner)

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

לבחירת המנצח, המערכת משתמשת בBayesian P(best) - ההסתברות שנתיב נתון הוא באמת הטוב ביותר, כפי שהיא מחושבת מהנתונים שנאספו עד כה. המדד מכויל לבדיקה רציפה (המתזמן בודק כל 5 דקות בלי לעוות את החישוב). ברגע שנתיב חוצה את סף הביטחון שלכם (95% כברירת מחדל), הוא מנצח.

מותאם אישית (Personalized)

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

קבוצת holdout קטנה (20% כברירת מחדל) ממשיכה לקבל את החלוקה האקראית של A/B כדי שהמערכת תוכל למדוד כמה שיפור המודל באמת מספק.

המודל מתאמן מחדש בכל יום ב-03:30 UTC על כל סביבות העבודה הפעילות. עד שיהיה מודל לסביבת העבודה שלכם, המערכת תחזור לחלוקה אקראית (אם תחזית נכשלת, המנגנון משתמש בחלוקה לפי גיבוב).

חלוקת נתיבים

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

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

Distribute evenly מפזר את התעבורה שנותרה רק בין נתיבי הניסוי - נתיבי הביקורת וההמתנה שומרים על ההקצאה שלהם.

קבוצת ביקורת

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

  • הוסיפו דרך + Add control.
  • רק ביקורת אחת לכל ניסוי.
  • מוחרגת מבחירת המנצח (הביקורת היא קו הבסיס, ולא יעד לאופטימיזציה).

קבוצת המתנה

זמינה במצבי Pick winner ו-Personalized. משתמשים המנותבים לכאן ממתינים עד שמוכרז מנצח או שהמודל מאומן, ואז מנותבים קדימה.

  • הוסיפו דרך + Add delay לפי הצורך - האפשרות נדרשת רק אם תרצו להגן על משתמשים שמגיעים מאוחר.
  • במצב Pick winner: משתמשים שממתינים מנותבים לנתיב המנצח ברגע שהוא מוכרז.
  • במצב Personalized: משתמשים שממתינים מנותבים דרך מודל ה-ML ברגע שחלון הבדיקה נסגר.
  • אם הניסוי מסתיים בלי להכריז על מנצח (האפשרות Statistical significance fallback מוגדרת ל-"mix"), ההרצות של המשתמשים הממתינים מסומנות כהושלמו והם יוצאים מהמסע.

כמה גדולה צריכה להיות קבוצת ההמתנה? זו פשרה:

  • שיעור נמוך (0–10%) - רוב המשתמשים מקבלים וריאנט ניסוי מיד, והלמידה מהירה יותר.
  • שיעור גבוה (20–50%) - יותר משתמשים ממתינים בבטחה למנצח.
  • ברירת המחדל המומלצת: 0% (דלגו על ההמתנה לחלוטין), אלא אם יש סיבה מסוימת להמתין עם משתמשים.

הגדרות Pick winner

הגדרות אלה מוצגות כשסוג הנתיב הוא Pick winner (וגם עבור Personalized, כדי שתוכלו לכוונן את תנאי העצירה של המודל).

הגדרהמה זה עושה
Winner is decided byהמדד שהמערכת מבצעת עליו אופטימיזציה: Open rate / Click rate / Conversion event / Custom event.
Test windowהזמן המרבי לפעולת הניסוי לפני הכרזה. נספר מכניסתו של המשתמש הראשון לנתיב ניסוי.
Custom eventנדרש כשמדד המנצח הוא "Custom event". בחרו מתוך האירועים שבמעקב בסביבת העבודה שלכם.
Score byלאירועים מותאמים: מספר אירועים (ברירת מחדל) או סכום של מאפיין מספרי (למשל הכנסה).
Statistical significance fallbackבתום חלון הזמן, אם התוצאות אינן מובהקות: Send best-performing path (הכרזה על הטוב ביותר עד כה) או Continue mix (המשך החלוקה, ללא מנצח).
Experiment modeStandard (נעילת המנצח לאחר הכרזה) או Bandit (איזון מחדש רציף לכיוון המוביל).

מצב Bandit

מימוש "בנדיט אמיתי" באמצעות Thompson sampling עם חלון נע.

  • לכל משתמש נערכת דגימה חדשה - אין מצב של "מנצח הוכרז". ההקצאה מוסטת באופן רציף לכיוון הנתיב המוביל כרגע.
  • חלון למידה (ברירת מחדל 7 ימים) משמיט בהדרגה נתונים ישנים, כדי שהבנדיט יסתגל לשינויים. "מנצח חורפי" מפסיק לשלוט בקיץ כשנתוני החורף יוצאים מהחלון.
  • שנו את החלון דרך Bandit learning window (days) בהגדרות הנוספות.

השתמשו בבנדיט כאשר:

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

לשונית Additional settings

הגדרהברירת מחדלהערות
Confidence level95%הסף ש-P(best) צריך לחצות כדי להכריז על מנצח. סף גבוה יותר מחמיר את הבדיקה ומאריך את זמן ההכרעה.
Minimum sample per path100אין להכריז על מנצח עד שבכל נתיב ניסוי יש לפחות מספר משתמשים זה. כך נמנעת הכרזה מוקדמת על סמך מדגם קטן.
Conversion window (hours)72למדדי "Conversion event" / "Custom event": כמה זמן לאחר הכניסה לספור המרות.
Bandit learning window (days)7למצב Bandit בלבד. רק אירועים מ-N הימים האחרונים נספרים ל-Thompson sampling.

לשונית תוצאות (Results)

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

  • נתונים לכל נתיב - לכל נתיב: אנשי קשר שנכנסו ושיעורי פתיחה / לחיצה / המרה.
  • תג מוביל / מנצח - מדגיש את הנתיב המוביל כרגע (ואת המנצח שהוכרז לאחר שנבחר).
  • תצוגת מובהקות סטטיסטית - מציגה את ערך ה-p כדי שתדעו אם ההבדל בין הנתיבים כבר מובהק.
  • Declare winner - פעולה לכל נתיב לנעילה ידנית של אותו נתיב כמנצח.
  • Reset experiment - מנקה את התוצאות שנצברו ומתחיל את הבדיקה מחדש.

Re-randomize on re-entry

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

אנליטיקה

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

  • תגית סטטוס - "Continuously optimizing" ל-Bandit, "Personalizing per user" ל-Personalized, ו-"Winner Declared" / "Collecting Data" / "Stopped" ל-Standard.
  • סרגל חלוקה - תצוגה פרופורציונלית של ההקצאה הנוכחית בין הנתיבים.
  • טבלת סטטיסטיקה - לכל נתיב: נכנסו, נמסרו, נפתחו, נלחצו, שיעור נוכחי, עמודת P(best) המציגה הסתברות בייסיאנית חיה שכל נתיב הוא באמת הטוב ביותר.
  • באנר מנצח - כשמוכרז: איזה נתיב, מתי ואיך (מובהקות סטטיסטית לעומת מגבלת זמן).
  • באנר המתנה - חיווי תפעולי שמראה כמה משתמשים ממתינים.
  • באנר שחרור אחרון - מופיע עד 24 שעות לאחר שמשתמשי המתנה משוחררים למנצח.

לוח בקרה חוצה ניסויים

ב־Analytics → Dashboards, מקור הנתונים החדש "Experiment" מוסיף רכיב טבלה של ניסויים, שמציג כל ניסוי בסביבת העבודה שלכם במבט כללי: סטטוס, מוביל, P(best), מנצח ותור המתנה. אפשר לסנן לפי סטטוס, סוג נתיב או מסע ולחפש לפי שם. הנתונים מתרעננים כל 30 שניות.

דפוסים נפוצים

בדיקת A/B של שורת נושא (Standard). שני נתיבים, חלוקה 50/50; נתבו את שניהם לצומתי שליחת אימייל עם שורות נושא שונות. ללא בחירת מנצח - העריכו את התוצאות ידנית לאחר שבוע.

בחירת מנצח במסע הצטרפות. שלושה נתיבים עם רצפי הצטרפות שונים, מצב Pick winner, מדד מנצח = אירוע מותאם "completed onboarding", חלון בדיקה של 7 ימים. הוסיפו קבוצת המתנה של 20% כדי להמתין עם משתמשים שמגיעים מאוחר עד לבחירת המנצח. הגדירו Statistical significance fallback = "best" כדי שתמיד תתקבל החלטה.

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

המלצות מותאמות אישית. שלושה נתיבים עם המלצות לקטגוריות מוצרים שונות. מצב Personalized ו-holdout של 20%. מודל ה-ML לומד את ההעדפות של כל משתמש לאורך זמן.

פתרון בעיות

המנצח אף פעם לא מוכרז. ודאו שכל נתיב ניסוי הגיע לגודל המדגם המינימלי (ברירת מחדל 100). ודאו שרמת המובהקות אינה גבוהה מדי (99% דורשים הרבה יותר זמן מ-95%). לבדיקות עם גודלי השפעה קטנים, ייתכן שבאמת תזדקקו ליותר תעבורה.

הניסוי המותאם אישית שלי מבצע רק חלוקות אקראיות. ייתכן שמודל ה-ML עדיין לא אומן. הוא מתאמן מחדש בכל יום ב-03:30 UTC על סביבות עבודה פעילות. אפשר גם להפעיל הרצת אימון ידנית משירות ה-ML במידת הצורך. ודאו שלסביבת העבודה שלכם יש מספיק נתוני אירועים היסטוריים - למשתני המודל דרוש מידע ממשי שאפשר ללמוד ממנו.

הבנדיט תקוע על נתיב אחד שמתדרדר. חלון הלמידה המוגדר כברירת מחדל הוא 7 ימים - ביצועים ישנים עדיין שולטים. נסו לקצר את החלון (למשל ל-3 ימים) כדי שהבנדיט יסתגל מהר יותר.

בקבוצת ההמתנה יש משתמשים שאף פעם לא משתחררים. ודאו שאכן אפשר להכריז על מנצח: המדגם המינימלי הושג, חלון הבדיקה עדיין לא פג ו-Statistical significance fallback מוגדר ל-"best" (ולא ל-"mix"). אם נבחר "mix" והבדיקה מסתיימת ללא מובהקות, ההרצות של משתמשי ההמתנה מסומנות כהושלמו והם יוצאים מהמסע.

הסכום הכולל ≠ 100%. כפתור Done מושבת עד שתתקנו זאת. השתמשו ב־Distribute evenly לאיפוס מהיר.