Typefully

אשכול - Clustering (לא שרשור מוצלח כל כך לעניות דעתי)

Avatar

Share

 • 

3 years ago

 • 

View on X

מה עושים כשלא יודעים הרבה? בהמשך לשרשור הקודם, נמשיך לחפש בוטים בטוויטר - אבל הפעם בכלים אחרים. היום נדבר על אִשְׁכּוּל, מלשון להפוך לאשכול. #פידאטה , #פידטק 🧵 (כרגיל - אין צורך בידע במתמטיקה או במחשבים)
(1/14) הנה הבעיה. כדי לאמן, נניח, רשת נוירונים (ראו שרשור קודם) לזיהוי בוטים, נצטרך קודם כל מאגר ענק של משתמשים - בוטים ולא בוטים. נצטרך את הנתונים של כל אחד מהם ובסוף גם תווית על המצח של כל אחד: "בוט" ו"לא בוט". מה שנקרא - "למידה מונחית". זה עלול להיות לא מעשי מהרבה סיבות:
(2/14) קודם כל, זה מאד יקר. צריך ממש לשלם למישהו שיעשה את זה, אחד אחד, עשרות אלפי צייצנים. דבר נוסף הוא שהבוט של היום זה לא הבוט של מחר. מחר כבר יצא בוט חדש שיתנהג אחרת, והמערכת שנבנה לא תצליח לזהות אותו. אז צריך פתרון אחר, מתעדכן וזול - גם כספית, גם חישובית.
(3/14) מה עושים כשאין תווית על המצח? איך לומדים בלי פידבק? קודם כל, צריך להחליט החלטות על העולם. במקרה שלנו, החלטנו שהעולם מתחלק לשניים - בוטים ולא בוטים. זאת ההחלטה הראשונה כשמאשכלים, מספר האשכולות. זאת לא החלטה טרוויאלית כשחוקרים דאטה. אולי יש סוג שלישי?
(4/14) בכל מקרה, החלטנו מה שהחלטנו. עכשיו מגיע החלק הכי חשוב ומשמעותי (ואכתוב את זה בכל שרשור), בחירת המאפיינים. אם זה היה חשוב בלימדה המונחית, זה חשוב על אחת כמה וכמה בלמידה לא מונחית שהיא מדוייקת פחות. מה בדיוק אני בוחן בכל צייצן: כמות עוקבים ונעקבים? כמה רפרנסים לפוליטיקה הוא
(5/14) עושה בתגובות? תדירות התגובות\ציוצים? מיקום גיאוגרפי? התפלגות שעות הכתיבה שלו? אני יכול להמשיך ולהמשיך - זה הרבה מה"סאיינס" ב"דאטה סיינס". נניח לרגע שאנחנו אלופים ובחרנו מאפיינים נהדרים שמפרידים טוב בין בוטים ללא בוטים - הגיע הזמן לייצר מהם קבוצות.
(6/14) אנחנו יצורים שחיים בעולם תלת מימדי ומסתכלים על מסך דו מימדי. אנחנו רגילים לגרפים של 2 משתנים, לפעמים לפעמים שלושה. בעולם הדאטה סיינס אפשר לאפיין צייצן בעזרת עשרות או מאות מאפייינים, שאי אפשר בדיוק לצייר על המסך. אחד הקונצים לפתור את הבעיה הזו הוא PCA, שעליו לא ארחיב
(7/14) יותר מידי - אבל הוא כמו מצלמה שיודעת להסתכל על הנתונים מהזווית שיוצרת את ההפרדה הכי טובה בינהם, ולצייר אותם בדו מימד. זה מיצוי למשהו שאפשר לראות על מסך. אז מעכשיו גם אם אנחנו רואים רק שני צירים, נדמיין שמדובר כאן בייצוג של כל המאפיינים שבחרנו. איך זה עובד - בשרשור אחר.
(8/14) עכשיו נעבור יחד על אחד האלגוריתמים הכי פשוטים וחזקים בתחום - K-Means, או במקרה שלנו 2-Means, כי יש 2 אשכולות (בוט\לא בוט). חשוב להזכיר: גם כאן חייב להיות דאטה להתאמן עליו. הוא רק לא מתוייג, לא כתוב מי בוט ומי לא. אז ניקח אותו ונתחיל בלבחור שני צייצנים באקראי.
(9/14) נקרא להם A וB. עבור כל צייצן בבסיס הנתונים - נבדוק אל מי הוא יותר "קרוב" - אל A או B, הם הקבוצות שלנו. איך מודדים קרבה? עם משולשים ישרי זווית. בעולם דו מימדי המרחק נמדד עם משפט פיתוגרס, המרחק כשיש הרבה מאפיינים נמדד באותה צורה בדיוק פשוט עם מלא מחוברים.
(10/14) מודדים את המרחק לצייצן A ולצייצן B לכווווולם, ומשייכים כל צייצן לקבוצה A או לקבוצה B. עד כאן? עד כאן. יצרנו 2 קבוצות, על בסיס די אקראי. לכל קבוצה כזו נמצא את המרכז - הממוצע של כל הערכים בקבוצה. אחרי שמצאנו את המרכזים, חוזרים על התהליך עבור כל הנקודות עם המרכזים החדשים.
(11/14) עושים זאת שוב ושוב עד שאין שינוי והרי לנו - שתי קבוצות שבינהן ההפרדה הכי טובה שהאלגוריתם הצליח למצוא בין בוטים ללא בוטים! עכשיו בטח אתם שואלים את עצמכם: "רגע!! איך אתה יודע בכלל שמצאת הפרדה בין בוטים ללא בוטים? אולי בכלל מצאנו הפרדה סתם בין, נגיד, ימין ושמאל?!".
(12/14) התשובה שלי היא שאתם לגמרי צודקים, קצת שיקרתי. אין לנו שום דרך לשלוט באיזה סוג של הפרדה נבצע. אחרי ההפרדה, זה הזמן להתחיל לחקור מדגמית את המשתמשים שמצאנו בשתי הקבוצות ולנסות להבין מה קרה. בסוף, כל מה שעשינו זה לחפש את הדרך הכי טובה להפריד את הצייצנים לשתי קבוצות.
(13/14) הסיכוי שהצלחנו להפריד בדיוק לקבוצות שחיפשנו אפסי - אבל זה צעד בדרך הנכונה. אם הכל היה אלגוריתם והביתה לא היינו צריכים מהנדסים, וכמובן שזה רק כלי אחד מיני רבים. אפשר לשפר את הרעיון - נגיד, לבחור מראש את שני המשתמשים הראשונים מהם נתחיל להיות בוט ולא בוט,
(14/14) ככה ש"נכנס" את האלגוריתם סביבם. אפשר לחלק ליותר קבוצות, ולנסות למצוא את קבוצת הבוטים מהן. אפשר לייצר קבוצות קטנות של בוטים ואמיתיים, ולשייך על פי קרבה אליהן - אין לזה סוף. אבל בדרך הבנו על הרעיון הכללי של אשכול - חלוקה לקבוצות כשאין לנו מידע מלא ומתוייג.
אז אם הגעתם עד כאן - כבוד! :) כרגיל, לפעמים אני לא מדייק למען הפשטות והנעימות של הקריאה, נא לקטול במשורה. תמיד שמח לשמוע מאנשים לא מהתחום אם הדברים ברורים ומועילים. נתראה 😊
Avatar

Tsoof Bar Or

@tsoofbaror

יש פה בעיה עם הצגת ציוצים בישור לימין. ממליץ לקרוא דרך כפתור ה View On Twitter שנמצא מעל כל ציוץ.