מדריך DATA Analytics בעולם ה-Big Data

21 מרץ, 2016

לקראת הסמינר המקצועי Data Analytics בסביבת MATLAB, חברת סיסטמטיקס מספקת לקוראי Techtime מבוא מקיף למתחילים כיצד להיכנס אל התחום המשנה את פני עולם האלקטרוניקה

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

DA-SYSTEMATICSמאת: רוני פאר, מנהל טכני של קו מוצרי MathWorks, סיסטמטיקס

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

מבוא: מה זה בעצם DATA Analytics?

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

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

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

ברבות השנים התפתחו בכל חברה או ארגון שיטות וכלים שנועדו לסדר את המידע שנאסף, אך לא ניתן לצפות שאופן אגירת המידע בנושא טיפול בתקלות מטוסים, יהיה זהה לאופן אגירת המידע על הטיפול במאושפזים בבית-חולים, וגם לא למערכת אגירת מידע המסחר בבורסה. קיים הרבה מאוד מידע הזמין בקבצים מסוגים שונים (קבצי טקסט, אקסל, XML, תמונות, סרטוני וידאו, תוכן web) וכמובן המידע שמשודר בצורה חיה ישירות מרכיבי זמן-אמת כמו רכיבי Internet-of-Things, חיישנים, GPS, מצלמות ועוד.

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

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

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

DA-SEMINAR
הנכם מוזמנים לכנס טכני רב מסלולי, ב-5-6 לאפריל (ללא עלות) למהנדסים ו-Data Scientists, שבו תוכלו ללמוד כיצד להתמודד עם אתגרי המחר בתחום המתפתח של Data Analytics בסביבת MATLAB.

לפרטים נוספים והרשמה: Data Analytics בסביבת MATLAB

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

קיימות מספר גישות לביצוע לימוד מכונה – החל מסיווג כללי של למידה מונחית או בלתי-מונחית, וכלה בשיטות כגון רגרסיה (ליניארית ולא ליניארית) עצי סיווג, Support Vector Machine, אלגוריתמים גנטיים, רשתות מסוג Bayesian Networks וכמובן רשתות נוירונים (Neural Networks). המשותף לכל השיטות האלה הוא התהליך: ראשית מגדירים מודל ראשוני (סוג השיטה, מספר מקדמים חופשיים, גודל וכו'), לאחר מכן "מאמנים" את המודל בעזרת המידע, כלומר מנסים למצוא את המקדמים כך שתהיה התאמה מקסימלית בין המודל שאנו מאמנים לבין הנתונים בפועל. לבסוף – בודקים את אמינות המודל על-ידי הזנת נתונים חדשים ובדיקת אופן החיזוי. סוג השיטה ומידת ההתאמה שלה תלויה מאד באופי הבעיה, ולכן בחלק גדול מהמקרים ייבדקו מספר מודלים עם אותו המידע, עד שיימצא המודל המתאים ביותר.

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

דוגמא לשילוב מודלים ותובנות ביישומי web
דוגמא לשילוב מודלים ותובנות ביישומי web

ארגז הכלים למדען ולמהנדס

מי שעושה את צעדיו הראשונים בעולם החדשני והמסקרן של DA, צריך להיות בעל ידע רחב ומגוון. ראשית, כדאי להכיר אופן פעולה וגישה למאגרי נתונים מסוגים שונים. אפשר תמיד להתחיל עם קובץ אקסל לצורך לימוד בסיסי, ולאט לאט לעבור למאגרי נתונים מבוססי SQL ולבסוף ל-Hadoop או spark: ראשית טענו קבצים קטנים יחסית (למשל בעלי מימדים של 100 שורות ו-100 עמודות), רצוי בעלי סוגי מידע שונים – כותרות, תאריכים, ערכים מספריים שלמים, מחרוזות וכו'.

לאחר טעינת קבצים קטנים, נסו לעבוד עם קבצים גדולים יותר, כאלו שאקסל יחזיר לכם הודעת שגיאה אם תנסו לפתוח אותם (File not Loaded Completely). ב-http://www.data.gov תוכלו למצוא הרבה דוגמאות מתחומי חיים שונים ומסוגי קבצים שונים – מקום נהדר להתחיל. בשלב זה המטרה היא להתמודד עם כמות המידע הגדולה ועם אופן העיבוד שלה, ולצורך כך תצטרכו ללמוד שיטות לעיבוד המידע בצורה של גושים.בהתחלה אל תנסו להשתמש בכלים מובנים או בתוספים של שפות תכנות, אלא נסו לממש זאת בעצמכם – זה ישנה את אופן ההסתכלות שלכם על המידע ועל כמות הזמן שנחסכת לכם בשימוש חוזר של קוד. לאחר מכן תתחילו לעשות שימוש חוזר בקוד, בין אם שאתם כתבתם אותו ובין אם מצאתם אותו באתר שיתוף קבצים או חבילות מוכנות. זכרו: יש הרבה שפות תכנות בחוץ, ובכמעט כולן ישנו מימוש לקריאת קובץ אקסל או טקסט אחר. חפשו פונקציות כמו csvread, xlsread או אפילו readtable (או מקביליהן) שיקצרו את זמן העבודה וימקדו אתכם בעיקר. שימו לב לזמן הטעינה של הקובץ ולכמות הזיכרון שיש לכם – 2 פרמטרים שיהיו מאד חשובים בהמשך.

יש להגדיר "מצביע" לקובץ, ואז לטעון בכל פעם גוש אחר של מידע. תעשו שימוש בפונקציות כמו memmapfile ו-MapReduce, המאפשרות לבצע את העיבוד הזה. פעם קראתי הסבר ממש פשוט של אופן הפעולה של MapReduce – ומציע גם לכם (ראו כאן). השלב הבא יהיה עבודה עם מאגרי נתונים מבוססי SQL או JDBC/ODBC – אלו כבר מערכות שהמידע בהן זמין בצורה יחסית פשוטה, וכל שצריך הוא לשאול שאלה נכונה את המערכת, ע"י בנייה של שאילתא (Query) מתאימה.

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

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

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

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

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

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

סוגים של DSP יכללו מעבדי ARM, מעבדי אינטל, רוב המעבדים הסלולריים ויצרנים רבים נוספים (TI, NXP, Freescale וכדומה). בכדי להפעיל מעבדים אלו יש להשתמש בשפת תכנות מסוג C/C++ – שפת תכנות ותיקה שהחליפה את שפת האסמבלי ועדיין חיה ונושמת. מעבדי FPGA לרוב יהיו מוכווני מטרה וינסו לבצע אותה בשיטה המקבילה והמהירה ביותר. מעבדי תקשורת, סלולר, כל המוצרים שמיוצרים בכמויות של אלפים ומעלה לרוב יהיו מבוססי FPGA או ASIC שכן עלות הייצור שלהם נמוכה. בכדי להפעיל מעבדים מסוג זה יש לכתוב בשפת מכונה הדומה לשפת C, אשר נקראת VHDL או Verilog.

יש כמובן גישות ושיטות נוספות, אך לא נרחיב בנושא. לעולם ה-Web יש כבר צורך להכיר כתיבה של שפות אשר נעשה בהם שימוש היום בעולם זה, כמו JAVAScript, JAVA, C#, HTML, Python. יש לזכור ששפות תכנות הן מאד דומות במהות ובעקרונות המנחים אותן, אך עשויות להיות מאד שונות במימוש ובפקודות, כלומר ב-Syntax. לכן כדאי להכיר לפחות שפה אחת בצורה מלאה ועמוקה, ולהשתמש בה בתור בסיס לשפות האחרות.

אז מה עושים עם זה?

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

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

נשמע מעניין, איפה מתחילים?

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

DA-SEMINAR

Share via Whatsapp

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

פורסם בתגיות: featured