Experis Academy Blog

למידת מכונה – Machine Learning

למידת מכונה היא חלק מתחום ה-Data Science רוצים להיות Data Scientists?
חזרה לרשימת המאמרים

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

נתחיל עם משהו קל להבנה… אבולוציית קניות של גבר:

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

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

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

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

מה קרה פה בעצם?

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

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

למידת מכונה  (Machine Learning – ML)

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

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

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

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

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

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

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

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

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

 כדי להתקיים למידת מכונה חייבת את כל הגורמים הבאים

נתונים – לרוב נמצאים בצורה כלשהי כחלק מהמוצר. צריך להתאים אותם לצרכי למידת מכונה. איסוף וניפוי הנתונים ובחירת מאפיינים (feature selection) הם שלב קריטי.

מודל – לרוב נעשה מראש, ולוקח זמן רב.

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

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

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

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

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

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

למפתחים בלבד – אז איך מתחילים לפתח מכונה חישובית?

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

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

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

שפת  R

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

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

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

שפת  Python

בעוד ש-R  תוכננה ומיועדת לביצוע חישובים, Python  היא שפת תכנות כללית שמשמשת לכל מטרה, החל מפיתוח Web  ועד לשליטה ובקרה של ציוד תעשייתי. בשלב מוקדם של קיומה Python אומצה ע”י הקהילה המדעית שפיתחה תוספים כדי להפוך אותה לכלי יעיל למחקר. כיום יש ל-Python כלים מתמטיים וספריות יעילות ל-ML .

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

הלמרות כל האמור לעיל, שימוש ב-R ו/או Python דורש ידע בתכנות, הבנה של האלגוריתמים השונים והפרמטרים שלהם ולמעשה דורש בנייה של תוכנה ייעודית בכל פעם שנרצה להתחיל ניתוח חדש. בשוק קיימים כיום כלים שמאפשרים גם לכאלה שאינם Data Scientists או בעלי ידע מתקדם בתכנות להשתמש ביכולות ML כדי לנתח נתונים.

חזרה לרשימת המאמרים