חדשות היום

המדריך למתחיל: DATA Analytics בעולם של Big Data

ב

כל יום אנחנו מופצצים בכמויות אדירות של נתונים אשר מגיעות ממקומות מגוונים. נתוני מזג אוויר, נתוני תנועה בכבישים, מדידות חיישנים שמצויים על הגוף האנושי, נתוני חיפוש באינטרנט, רשתות חברתיות, אימיילים, חיישנים בתוך המכשירים הסלולריים, תמונות, סרטונים, ועוד – מידע שנאגר ומתווסף לכדי 5 הקסבייט (5 עם 18 אפסים לאחריו) מדי יום (נכון ל-2013…). אז מה עושים עם כל הנתונים הללו, ואיך אפשר להוציא מהם מידע שימושי? התשובה: לימוד מכונה, IoT, סטטיסטיקה ומידענות – ברוך הבא לעולם ה-DATA Analytics.

מבוא: אז מה זה בעצם DATA Analytics?
המונח Data Analytics מגיע מעולם ניתוח המידע, ולרוב מתייחס למחקר או לימוד של מידע היסטורי לצורך מציאת מגמות פטנציאליות, לניתוח השפעות של החלטות או אירועים או להעריך ביצועים של כלי או תרחיש כלשהו. המטרה היא לשפר את ביצועי המערכת ע”י צבירת ידע שיכול לשמש לצורך ביצוע שיפורים או שינויים. התהליך ב-DA מורכב למעשה מ-4 שלבים מרכזיים: גישה למידע, עיבוד ראשוני, הפעלת אלגוריתמים ללימוד והפקת תובנות וייצוא התוצר ליישום עצמאי או משולב.
איסוף המידע. בכדי שנוכל לעבוד עם המידע ולהפעיל עליו פעולות לצורך ניתוחו, ראשית עלינו לשים אותו בתבניות מתאימות. כיום יש מספר חלופות מרכזיות: שימוש במאגרי נתונים – המערכת הנפוצה בתחום זה נקראת Hadoop שהיא למעשה מאגר נתונים מבוזר וזמין לכל, ומספקת גם אפשרות לביצוע ניתוחים ואנליזות על גבי המאגר עצמו, ללא הורדת/משיכת המידע. קיימים גם מאגרי נתונים מבוססי SQL אשר מאפשרים גישה למידע ע”י ביצוע שאילתות מתאימות. ברבות השנים התפתחו בכל חברה או ארגון שיטות וכלים שנועדו לסדר את המידע שנאסף, אך לא ניתן לצפות שאופן אגירת המידע המרכז טיפול בתקלות מטוסים יהיה זהה לאופן אגירת המידע לסוג הטיפול במאושפזים בבית-חולים, וגם לא למערכת אגירת מידע המסחר בבורסה. בל נשכח שגם יש המון מידע שזמין היום בקבצים מסוגים שונים (קבצי טקסט, אקסל, XML, תמונות, סרטוני וידאו, תוכן web) וכמובן כל המידע שמשודר בצורה חיה ישירות מרכיבי זמן-אמת כמו רכיבי (Internet-of-Things (IoT, חיישנים, GPS, מצלמות ועוד. יש אפילו פלטפורמות פתוחות, כמו ThingSpeak שמאפשרות לחבר כל חיישן או רכיב בכל מקום בעולם ולהעביר את המידע למקום מרוכז, ללא עלות כמובן. מאחר וכמות המידע היא גדולה, וברוב המקרים גדולה מדי מכדי לטעון אותה למחשב בודד, הגישה הנפוצה כיום היא עיבוד המידע בצורה חלקית, אך מקבילית או מבוזרת – כלומר טעינה של חלק מהמידע (גוש, או Chunk), ביצוע הניתוח המתאים, ואז מעבר לגוש הבא. לכל המידע ניתן לגשת ישירות מתוך MATLAB, וסוגי הנתונים כמו categorical או table מאפשרים לנו יכולות של תכנות מונחה עצמים עם גישה ישירה למידע והפניות מהירות.
שילוב המידע ועיבוד ראשוני. על מנת לוודא שהמידע שאנחנו פועלים עליו הוא באמת מידע נכון – מה הטעם בחיזוי ערך מניה אם אין אנו יודעים מהו מועד הערך? – יש לבצע ניתוח ראשוני של המידע והכנה שלו לצורך בדיקה כי לא חסרים ערכים כלשהם, אין ערכים שגויים, או תבנית זמן שאיננה מתאימה. בהתאם לסוג המידע והמקור שממנו מגיע, נשתמש באלגוריתמים ושיטות מתאימים – לסינון רעש המגיע מחיישן נפעיל אלגוריתם לעיבוד אות ולהורדת גודל תמונה נשתמש באלגוריתם מעולם עיבוד התמונה. בשלב זה ננסה להקטין את כמות המידע שאנחנו מנסים לעבוד איתה, ע”י מציאת מאפיינים (או features) ייחודיים. בשלב זה עושים שימוש נרחב בפונקציונליות ויכולות מובנות של MATLAB והכלים הנלווים אליה. למשל נעשה שימוש בפקודה filter בכדי לסנן מידע רועש או נחליף ערכים לא קיימים ב-NaN.
ניתוח ומידול המידע. כעת, כשיש בידינו גישה למידע מסודר, נקי ובעל מספר נמוך של features, מגיע השלב המרכזי – כיצד לוקחים את כל הנתונים ומוצאים מתוכם מודל או התנהגות

השלבים המרכזיים בביצוע Data Analytics

השלבים המרכזיים בביצוע Data Analytics

שמסבירה אותם, וגם מספקת חיזוי להתנהגות עתידית? משתמשים במתימטיקה, והמתימטיקה עובדת! בשנים האחרונות נושא לימוד המכונה (Machine Learning) והלמידה העמוקה (Deep Learning) הולך יד ביד עם מערכות אגירת מידע ו-Big Data. הרעיון המרכזי הוא להשתמש בשיטות סדורות שמאפשרות לבנות מודלים מתימטיים שמתארים את התנהגות המערכת, ורמת הדיוק של המודל לרוב תהיה טובה יותר ככל שיהיה יותר מידע. קיימות מספר גישות לביצוע לימוד מכונה – החל מסיווג כללי של למידה מונחית או בלתי-מונחית, וכלה בשיטות, כגון רגרסיה (ליניארית ולא ליניארית) עצי סיווג, Support Vector Machine, אלגוריתמים גנטיים, רשתות מסוג Bayesian Networks וכמובן רשתות נוירונים (Neural Networks). המשותף לכל השיטות הוא התהליך: ראשית מגדירים מודל ראשוני – סוג השיטה, מספר מקדמים חופשיים, גודל וכו’, לאחר מכן “מאמנים” את המודל בעזרת המידע, כלומר מנסים למצוא את המקדמים כך שתהיה התאמה מקסימלית בין המודל שאנו מאמנים לבין הנתונים בפועל. לבסוף – בודקים את אמינות המודל ע”י הכנסה של נתונים חדשים ובדיקת אופן החיזוי. סוג השיטה ומידת ההתאמה שלה תלוי מאד באופי הבעיה, ולכן בחלק גדול מהמקרים ייבדקו מספר מודלים עם אותו המידע, עד שיימצא המודל המתאים ביותר. בעזרת ה-classificationLearner ב-MATLAB ניתן לעבור בקלות ממודל למודל ולבחון את תוצאות החיזוי, מבלי לקודד אף לא שורת קוד אחת.
הטמעה במערכת החלטה. המטרה המרכזית בעיבוד המידע הייתה לבצע פעולה כלשהי, כלומר לספק תובנה כלשהי או לפעול לפי סט כללים שהוגדר מראש – לתת התרעה על חולה שצפוי לקבל התקף, לצפות כשל טכני במטוס, לבצע פעולת קניה/מכירה של מניה או להוסיף Tag לאדם שזיהינו בתמונה. ההטמעה יכולה להיות במערכת מאגר הנתונים, ביצירה של קבצים חדשים, התממשקות ליישומי web או כל פעולה אחרת. שימוש ב-MATLAB Coder יאפשר לנו למשל לייצר קוד C בצורה אוטומטית, בעוד שה-MATLAB Compiler יאפשר לנו לייצר ספריות להטמעה בסביבת .NET, JAVA ואף פיית’ון. בעזרת ה-MATLAB Production Server, אשר מוטמע ישירות בסביבת web, כל התהליך הופך פשוט להפליא, ואף ניהול הגרסאות מבוצע ישירות עבורכם!

ארגז הכלים למדען ולמהנדס
מי שעושה את צעדיו הראשונים בעולם החדשני והמסקרן של DA, צריך להיות בעל ידע רחב ומגוון. ראשית, כדאי להכיר אופן פעולה וגישה למאגרי נתונים מסוגים שונים. אפשר תמיד להתחיל עם קובץ אקסל לצורך לימוד בסיסי, ולאט לאט לעבור למאגרי נתונים מבוססי SQL ולבסוף ל-Hadoop או spark:
ראשית טענו קבצים קטנים יחסית (למשל בעלי מימדים של 100 שורות ו-100 עמודות), רצוי בעלי סוגי מידע שונים – כותרות, תאריכים, ערכים מספריים שלמים, מחרוזות וכו’. בהתחלה אל תנסו להשתמש בכלים מובנים או תוספים של שפות תכנות, אלא נסו לממש זאת בעצמכם – זה ישנה את אופן ההסתכלות שלכם על המידע ועל כמות הזמן שנחסכת לכם בשימוש חוזר של קוד. לאחר מכן תתחילו לעשות שימוש חוזר בקוד, בין אם שאתם כתבתם ובין אם מצאתם באתר שיתוף קבצים או חבילות מוכנות. זכרו תמיד שיש המון שפות תכנות בחוץ, וכמעט בכולן ישנו מימוש לקריאת קובץ אקסל או טקסט אחר. חפשו פונקציות מובנות כמו csvread, xlsread או אפילו readtable (או את מקביליהן כמובן) שיקצרו את זמן העבודה שלכם וימקדו אתכם בעיקר. שימו לב לזמן הטעינה של הקובץ וכמות הזיכרון שיש לכם – 2 פרמטרים שיהיו מאד חשובים בהמשך.
לאחר טעינת קבצים קטנים, נסו לעבוד עם קבצים גדולים יותר, כאלו שאקסל יחזיר לכם הודעת שגיאה אם תנסו לפתוח אותם – “File not Loaded Completely”. ב-http://www.data.gov תוכלו למצוא המון דוגמאות שכוללות גם תחומי חיים שונים וגם סוגי קבצים שונים – מקום נהדר להתחיל. בשלב זה המטרה היא להתמודד עם כמות המידע הגדולה ועם אופן העיבוד שלה, ולצורך כך תצטרכו ללמוד שיטות לעיבוד המידע בצורה של גושים. יש להגדיר “מצביע” לקובץ, ואז לטעון בכל פעם גוש אחר של מידע. אתם תעשו שימוש בפונקציות כמו memmapfile ו-MapReduce, שמאפשרות לכן לבצע את העיבוד הזה. פעם קראתי הסבר ממש פשוט של אופן הפעולה של MapReduce – ומציע גם לכם לעשות זאת. השלב הבא יהיה העבודה עם מאגרי נתונים מבוססי SQL או JDBC/ODBC – אלו כבר מערכות שהמידע זמין בצורה יחסית פשוטה, וכל שצריך הוא לשאול שאלה נכונה את המערכת, ע”י בניה של שאילתא (Query) מתאימה. לצורך כך כמובן שתצטרכו גישה למאגר נתונים שכזה, וניתן למצוא רבים כאלו. לדוגמא, מיקרוסופט מציעה מאגר נתונים כזה עם 10GB של מידע ועם עדכונים חופשיים בחינם, וכמובן שלא ניתן להתעלם מ-mySQL הפופולרית. לא משנה מה תתקינו או עם מה תעבדו – חשוב לשים לב לתהליך העבודה, לאופן כתיבת השאילתא, לאופן רכישת המידע ולאופן כתיבת התוצאות בחזרה. ובשלב האחרון, שימו יהבכם ותבחנו כיצד אתם מתמודדים עם Hadoop או Spark. מאגרי נתונים מבוזרים שבהם אתם מוכרחים להשתמש ב-MapReduce וכל העיבוד נעשה ישירות בענן. אם לא תעבדו נכון – תקבלו תוצאות לא נכונות.
הנושא המרכזי ביותר הוא עולם המתמטיקה, כלומר – שימוש בסטטיסטיקה וניתוח נתונים וכמובן ידע והיכרות עם אלגוריתמים מסוגים שונים – לימוד מכונה/עיבוד תמונה/עיבוד אות – בהתאם לנושאים המעניינים אתכם או שבהם תעסקו. לא כל העוסקים בתחום הם בוגרי תואר בהנדסה או מתימטיקה ולכן אני מציע לעבור לפחות הכשרה או שתיים בעולם הניתוח הסטטיסטי. יש קורס ממש טוב של Coursera שמראה כיצד עושים זאת, אבל גם ספר טוב יכול לשמש בתור מנחה מצוין. תתמקדו בעיקר – איך לפתור בעיות מינימום ומקסימום, איך מבצעים פעולות אלגבריות כמו כפל מטריצות וקצת על רשתות נוירונים. זה יספק לכם מבוא מצוין לפרק הבא של לימוד מכונה שרובו ככולו מבוסס על מתמטיקה. וכאן שוב ניתן למצוא ספר מצוין, לעבור קורס במרכז הדרכה בסיסטמטיקס או קורס ב-Coursera. לא מצאתי אף קורס שיכול להנחיל את כל תורת לימוד המכונה בפרק זמן סביר, ועל כן תיאלצו להמשיך ולהתעמק וללמוד בעצמכם גם לאחר הקורס – ואפילו כדאי לעשות זאת. זהו תחום של המדע שממשיך להתפתח כל הזמן וחייבים להישאר עדכניים. לפני מספר שנים, עם כניסת יכולות מתקדמות לעיבוד וידאו, התפתח תחום שלם שעוסק בלמידה מתוך וידאו וכיום ניתן לראות דוגמאות רבות של זיהוי עצמים בתוך סרטים, מעקב אחרי חשודים וכמובן מציאת קשר בין מספר תמונות ממספר אתרי אינטרנט או אתרי שיתוף מידע קיימים. אז אם חבר תייג אותי בתור חבר באינסטגרם, כנראה שאני גם חבר שלו בפייסבוק וניתן להציע לו להוסיף אותי בתור חבר, נכון? את החלק האחרון של הלימוד תיאלצו כבר לעשות בהתאם לתחום שמעניין אתכם. בנושא של עיבוד אות ותמונה יש לא מעט קורסים והכשרות, בין אם באוניברסיטאות או מכללות ובין אם בהכשרות אונליין למיניהן. אבל שימו לב שלא ניתן לצפות מאף בוגר של קורס “חד-פעמי” שכזה באמת להבין בחומר, ללא תרגול, בניה של מערכת או שתיים ולמידה מניסיון של אחרים. ובנושא זה אני תמיד ממליץ לשוחח עם מי שכבר עשה את זה, כלומר להתייעץ עם מישהו שהוא מומחה לתחום הייחודי, ולקבל ממנו הכוונה ועצה. מניסיוני – ברוב המקרים זה ייעשה בשמחה.
ולבסוף ידע וניסיון בהטמעת פתרון בעולם האמיתי – קוד מכונה/Web/וכדומה. כאשר אנו רוצים להטמיע מערכת בעולם האמיתי, היא צריכה להתנהג לפי הגדרות העולם האמיתי, שבו כל שניה לוקחת בדיוק שניה ואם צריכת הזיכרון גבוהה בבית אחד מעבר למה שיש – המערכת קורסת. לשם כך יש לבצע היכרות מעמיקה עם מערכות הפעלה ועם מעבדי זמן-אמת, אשר כיום נחלקים בכלליות ל-2 סוגים – DSP ו-FPGA. תחת קטגוריות DSP נכללים כל אותם מחשבים שיכולים להריץ מערכת הפעלה, והם בדר”כ מכילים עוד רכיבי זיכרון, ממשקים וכדומה. סוגים של DSP יכללו מעבדי ARM, מעבדי אינטל, רוב המעבדים הסלולריים ויצרנים רבים נוספים (TI, NXP, Freescale, Windriver…). בכדי להפעיל מעבדים אלו יש להשתמש בשפת תכנות מסוג C/C++ – שפת תכנות ותיקה שהחליפה את שפת האסמבלי ועדיין חיה ונושמת. מעבדי FPGA לרוב יהיו מוכווני מטרה וינסו לבצע אותה בשיטה המקבילה והמהירה ביותר. מעבדי תקשורת, סלולר, כל המוצרים שמיוצרים בכמויות של אלפים ומעלה לרוב יהיו מבוססי FPGA או ASIC שכן עלות הייצור שלהם נמוכה. בכדי להפעיל מעבדים מסוג זה יש לכתוב בשפת מכונה הדומה לשפת C, אשר נקראת VHDL או Verilog. יש כמובן גישות ושיטות נוספות, אך לא נרחיב בנושא. לעולם ה-Web יש כבר צורך להכיר כתיבה של שפות אשר נעשה בהם שימוש היום בעולם זה, כמו JAVAScript, JAVA, C#, HTML, Python. יש לזכור ששפות תכנות הן מאד דומות במהות ובעקרונות המנחים אותן, אך עשויות להיות מאד שונות במימוש ובפקודות, כלומר ב-Syntax. לכן כדאי להכיר לפחות שפה אחת בצורה מלאה ועמוקה, ולהשתמש בה בתור בסיס לשפות האחרות.

אז מה עושים עם זה?
יש כל כך הרבה דוגמאות של חברות, מוצרים ופתרונות שמגיעים מעולם ה-DA, שקשה לבחור במה להתמקד. אז פשוט אשאל אתכם, מה אתם הייתם עושים אם:
במבנה המשרדים שלכם הייתם אוספים 3-12 חודשים של נתונים של מדי טמפרטורה, לחץ, תנאי מזג אוויר חיצוניים, עלויות חשמל, צריכות חשמל? האם הייתם יכולים לשנות את אופן פילוג צריכת החשמל בכדי לחסוך 15-25% מחשבון החשמל ולהפוך את הבניין שלכם ליותר “ירוק”?
היה לכם גישה למכשיר רפואי שדוגם פרמטר חיוני (למשל קולות הנשימה), מקליט אותו למשך 30 שניות ומשדר אותו למערכת מרכזית? האם הייתם יכולים לבנות מערכת שתחזה התקף אסטמה מבעוד מועד?
הייתה לכם גישה למספר חודשים או שנים של נתוני מזג אוויר ושל נתוני מכירה של מוצרים ברשת הסופרמרקטים שלכם? האם הייתם יכולים להיערך בצורה טובה מבחינת כמויות המוצרים על המדפים, לצאת במבצעים רלוונטיים בזמן, ולמנוע השלכת מזון מקולקל? וכל זאת תוך כדי ייעול שרשרת האספקה?
הייתה לכם גישה ללא הגבלה למידע הקיים על אנשים מתוך חשבונות הרשתות החברתיות שלהם, כמו פייסבוק, טוויטר ואינסטגרם? האם הייתם יכולים להמליץ להם על חבר נוסף להוסיף, לספק להם אתרעות על מה שאנשים אחרים עושים? או אולי לזהות פעילות חשודה של אדם כלשהו ולסווג אותו כמשתייך לתא טרור שהולך ומתגבש בארצכם?
במפעל שברשותכם היו מותקנים מאות ואף אלפי חיישנים אשר מנטרים את פעולתו התקינה של המתקן ושל התהליך הכימי שמתרחש בו? האם הייתם יכולים לזהות מבעוד מועד תקלה באחד מרכיבי הציוד? האם הייתם יכולים לחזות דליפה של חומר מסוכן לפני שהיא קרתה ולהציל חיים של עשרות אנשים?

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

רוני פאר הינו מנהל טכני של קו מוצרי MathWorks בחברת סיסטמטיקס.

רוני פאר, סיסטמטיקס

תגובות סגורות