You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/he/7-TimeSeries/1-Introduction/README.md

15 KiB

מבוא לחיזוי סדרות זמן

סיכום סדרות זמן בסקצ'נוט

סקצ'נוט מאת Tomomi Imura

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

מבוא לחיזוי סדרות זמן

🎥 לחצו על התמונה למעלה לצפייה בסרטון על חיזוי סדרות זמן

שאלון לפני השיעור

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

ניתן למצוא את תכנית הלימודים השימושית של Penn State בנושא סדרות זמן כאן

מבוא

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

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

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

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

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

כמה הגדרות

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

🎓 סדרות זמן

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

🎓 ניתוח סדרות זמן

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

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

🎓 חיזוי סדרות זמן

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

נתוני סדרות זמן הם רשימה של תצפיות מסודרות, בניגוד לנתונים שניתן לנתח באמצעות רגרסיה ליניארית. המודל הנפוץ ביותר הוא ARIMA, ראשי תיבות של "Autoregressive Integrated Moving Average".

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

ישנם כמה סוגים של מודלי ARIMA, עליהם תוכלו ללמוד כאן ותגעו בהם בשיעור הבא.

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

CO2 YearMonth Year Month
330.62 1975.04 1975 1
331.40 1975.13 1975 2
331.87 1975.21 1975 3
333.18 1975.29 1975 4
333.92 1975.38 1975 5
333.43 1975.46 1975 6
331.85 1975.54 1975 7
330.01 1975.63 1975 8
328.51 1975.71 1975 9
328.41 1975.79 1975 10
329.25 1975.88 1975 11
330.97 1975.96 1975 12

זיהו את המשתנה שמשתנה לאורך זמן במערך הנתונים הזה

מאפיינים של נתוני סדרות זמן שיש לקחת בחשבון

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

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

🎓 מגמות

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

🎓 עונתיות

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

🎓 חריגות

חריגות הן נקודות נתונים רחוקות מהשונות הסטנדרטית של הנתונים.

🎓 מחזור ארוך טווח

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

🎓 שונות קבועה

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

🎓 שינויים פתאומיים

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

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

הוצאה על מטבע במשחק

תרגיל - התחלה עם נתוני שימוש באנרגיה

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

הנתונים בדוגמה זו נלקחו מתחרות החיזוי GEFCom2014. הם כוללים 3 שנים של נתוני עומס חשמל וטמפרטורה לפי שעה בין השנים 2012 ל-2014.

Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli and Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016.

  1. בתיקיית working של השיעור הזה, פתחו את הקובץ notebook.ipynb. התחילו בהוספת ספריות שיעזרו לכם לטעון ולהציג נתונים

    import os
    import matplotlib.pyplot as plt
    from common.utils import load_data
    %matplotlib inline
    

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

  2. לאחר מכן, בדקו את הנתונים כ-DataFrame על ידי קריאה ל-load_data() ו-head():

    data_dir = './data'
    energy = load_data(data_dir)[['load']]
    energy.head()
    

    תוכלו לראות שישנם שני עמודות שמייצגות תאריך ועומס:

    load
    2012-01-01 00:00:00 2698.0
    2012-01-01 01:00:00 2558.0
    2012-01-01 02:00:00 2444.0
    2012-01-01 03:00:00 2402.0
    2012-01-01 04:00:00 2403.0
  3. עכשיו, הציגו את הנתונים בגרף על ידי קריאה ל-plot():

    energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
    plt.xlabel('timestamp', fontsize=12)
    plt.ylabel('load', fontsize=12)
    plt.show()
    

    גרף אנרגיה

  4. עכשיו, הציגו את השבוע הראשון של יולי 2014, על ידי מתן קלט ל-energy בתבנית [מתאריך]: [עד תאריך]:

    energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
    plt.xlabel('timestamp', fontsize=12)
    plt.ylabel('load', fontsize=12)
    plt.show()
    

    יולי

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

בשיעור הבא, תיצרו מודל ARIMA כדי ליצור תחזיות.


🚀אתגר

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

שאלון לאחר השיעור

סקירה ולימוד עצמי

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

משימה

הציגו עוד סדרות זמן


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