אימון מודל קיבוץ נתונים: K-Means, DBSCAN, HDBSCAN

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

תחומי פיתוח AI

שאלות נפוצות

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

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

אימון אשכולות: היכן נשברת איכות הקבוצות

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

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

הכנת מאפיינים אינה "סירוק הנתונים", אלא החלטה אילו הבדלים בין אובייקטים אנו מחשיבים למשמעותיים. K-Means ושיטות מבוססות צפיפות כמו DBSCAN ו-HDBSCAN מגיבות לקנה מידה שונה בדרכים שונות: עבור חלקן מאפיין דומיננטי גורר את כל החלוקה, עבור אחרות נקודות שכנות עוברות לרעש.

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

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

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

אפקט מדיד: סגמנטים יציבים ופחות עבודה ידנית

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

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

K-Means נוח כאשר מספר הקבוצות ידוע מראש; DBSCAN ו-HDBSCAN קובעים אותו מצפיפות הנתונים בעצמם — זה עקרוני עבור זרימות שבהן סוגי רשומות חדשים מופיעים בהדרגה.

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

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

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

אימון אשכולות: השוואת שיטות ואופני עבודה

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

גישה מתי מתאימה מגבלות
מבוססת מרכזים (K-Means ודומות) מאפיינים מספריים, קבוצות קומפקטיות וקרובות בגודלן, מספר האשכולות ידוע מהלוגיקה העסקית מספר הקבוצות נקבע ידנית, התוצאה רגישה לקנה המידה של המאפיינים ולחריגים, מתקשה להפריד קבוצות מקוננות ומוארכות
מבוססת צפיפות (DBSCAN, HDBSCAN) צורת הקבוצות חופשית, הגבולות מטושטשים, חלק מהנקודות הן רעש שאין לכפות על אשכול דורשת כוונון פרמטרים של שכנות, בממדים גדולים המרחקים מאבדים ניגודיות
היררכית יש צורך בעץ קינון ובהנמקה מדוע נבחר מספר קבוצות מסוים המיזוגים בלתי הפיכים, בנפחים גדולים מחושבת לאט יותר באופן ניכר
חלוקה משנית של קבוצות קיימות תיוג או סגמנטים כבר קיימים, יש לבדוק את ההומוגניות שלהם ולפצל גדולות מדי יורשת שגיאות של החלוקה המקורית, דורשת מדדי יציבות

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

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

שלבי יישום: מביקורת נתונים ועד מסירת המודל

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

  1. ביקורת נתונים — מפיקים פרופיל של מערך הנתונים: ערכים חסרים וטיבם, כפילויות רשומות, חריגים, יחידות מידה, סחיפת התפלגויות בין ייצואים. בפלט — רשימת העמודות שמותר להזין למודל, והחלטה מה נכנס לניקוי.
  2. הגדרת קריטריון איכות — מסכמים כיצד מודדים את התוצאה לפני ההרצה: קומפקטיות (מקדם סילואט), הפרדה בין קבוצות, יציבות החלוקה בחישוב חוזר. מתאימים למשמעות התוכן: עד כמה הסגמנט צריך להיות הומוגני והאם קבוצות קטנות מותרות.
  3. הכנת מאפיינים — סקיילינג עם התאמה לחריגים, קידוד שדות קטגוריים, חישוב מדד משותף לסוגים מעורבים. דווקא בשלב זה נקבעת עיקר האיכות: קני מידה לא עקביים מעוותים את התוצאה יותר מאשר החלפת אלגוריתם.
  4. כוונון פרמטרים — עבור K-Means מתאימים את מספר הקבוצות, עבור DBSCAN — רדיוס וסף צפיפות, עבור HDBSCAN — גודל אשכול מינימלי. משווים וריאנטים על אותה רשת, נקודות רעש משאירים כמחלקה נפרדת, ולא מפזרים אותן בין הקבוצות.
  5. בדיקה על מדגם נפרד — אימון על חלק אחד, הערכה על חלק בלתי תלוי: בודקים אם המבנה נשמר, אם התוויות יציבות, ואם אין התאמת יתר לחתך מסוים. קובעים זרע אקראי וגרסה של המאפיינים המוכנים, כדי שהתוצאה תשוחזר.
  6. מסירת המודל — מוסרים מודל מאומן, טרנספורמציית מאפיינים כארטיפקט נפרד, סקריפט חישוב לנתונים חדשים ודוח עם מדדים וגבולות יישום. בנפרד מתארים באיזה שינוי נתונים החלוקה מאבדת משמעות ונדרש חישוב מחדש.

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

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

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

כל ארטיפקט ניתן לבדוק, להריץ ולשנות בכוחות הצוות שלכם.

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

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

מדדים לפני כיוונון מחדש

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

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

בנייה מחדש של מאפיינים והחלפת גישה

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

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

מדדים אחרי

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

במה נבדלות שיטות צפיפות משיטות מבוססות מרכזים?

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

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

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

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

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

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

ספקות לפני התחלה: רעש, התאמת יתר, תיוג

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

אשכולות חופפים — זו בעיה?

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

כיצד לבחור מספר קבוצות ולא להתאים אותו בדיעבד?

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

מה יקרה בנתונים חדשים?

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

כיצד לא לקבל התאמת יתר?

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

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

כדאי להתחיל את השיחה לא מבחירת האלגוריתם, אלא מהנתונים: אשכול נשען על מאפיינים, קנה מידה, ומה שאתם מחשיבים לקבוצה שימושית. K-Means, DBSCAN ו-HDBSCAN נותנים תוצאה שונה על אותו מערך — לכן תוכנית העבודה והערכת הזמנים נבנות לאחר שנראה את הרכב הנתונים ואת מדד הקבלה.

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

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

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