בפרק זה נלמד מעט מהתיאוריה העומדת מאחורי מידול סטטיסטי. למרות שנושא זה הוא מתמטי בבסיסו, הפרק אינו נכנס לעומק התיאורטי, אלא מנסה להנגיש את הנושא לקהל רחב.
רקע קל בקורס בסטטיסטיקה או רגרסיה יסייע בהבנת הפרק. כמו כן, ספר מומלץ שיכול ללוות את הפרק הוא:
ניתן לחלק בעיות בלמידה סטטיסטית לשני סוגים:
בפרק זה נתמקד בבעיות מפוקחות. בבעיה מפוקחת, אנחנו ניצבים בפני סט נתונים שכולל משתנים מסבירים (שנקראים גם features או input) ומשתנה מטרה (output או dependent variable). המטרה שלנו היא להתאים “מודל”, תיאור מתמטי שיעשה שימוש במשתנים המסבירים ויחזה את ערכו של המשתנה התלוי.
בהמשך הספר, נדון גם בבעיות בלתי מפוקחות: בעיות שבהן אין משתנה מטרה, ואנו נדרשים להפיק מידע (או לייצר תיאור מתמטי) שיסביר את הנתונים, בלי שיש לנו משתנה מטרה מסוים.
בחזרה לבעיות מפוקחות (Supervised learning). באופן כללי, בעיית מידול ניתנת לניסוח כך:
\[Y=f(X)+\epsilon\]
המטרה היא לאמוד את הפונקציה \(f\) כאשר אנחנו משתמשים במשתנים המסבירים ובתצפיות \(X\), ובערכים הנצפים של משתנה המטרה \(Y\). כל זה תוך שאנחנו מתמודדים עם שגיאה סטטיסטית \(\epsilon\).
בבעיות חיזוי, אנחנו לא בהכרח נצליח למצוא את הפונקציה \(f\), אך המטרה היא למצוא פונקציה המקרבת אותה, ועוזרת לנו לחזות את ערך המטרה עבור תצפיות חדשות.
\[\hat{Y}=\hat{f}\left(X\right)\]
בבעיות חיזוי יש שתי סוגי שגיאות: שגיאת מודל הניתנת לצמצום, ושגיאה אקראית. אנחנו תמיד ננסה לטפל בשגיאת המודל (לשפר את המודל כדי לצמצם שגיאה זו), אך בשגיאה האקראית יותר קשה לטפל (לפעמים צריך משתנים נוספים בשביל להסביר את השגיאה).
\[E\left(Y-\hat{Y}\right)^2 = E\left[f(X)+\epsilon-\hat{f}(X)\right]^2 = \\ E\left[f(X)-\hat{f}(X)\right]^2 + 2E\left[f(X)-\hat{f}(X)\right]E\left[\epsilon\right] + E\epsilon^2=\\ E\left[f(X)-\hat{f}(X)\right]^2 + \text{Var}(\epsilon)\]
במילים אחרות, כל עוד ישנה שגיאה סטטיסטית, אז השונות שלה תשפיע על מידת הדיוק של התחזית שלנו, ושונות זו אינה ניתנת לצמצום.
התרשים הבא מציג מודל רגרסיה לינארית המציג רוחב של עלי כותרת כפונקציה של אורכם של עלי הכותרת.
האם לדעתכם המודל נותן התאמה “טובה”?
library(tidyverse)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(aes(color = Species)) + stat_smooth(method = "lm", color = "black")
לרוב, העבודה של התאמת מודל תידרוש הרבה “ניסוי וטעיה”, הפעלת חשיבה, השוואות, והמחשה ויזואלית. לדוגמה, המודל הקודם השתמש במשתנה אחד בלבד (Sepal.Length) כדי להסביר את Sepal.Width, אבל במקרה זה ייתכן ששימוש ביותר ממשתנה אחד (או לחילופין שימוש ביותר ממודל אחד), ישיג חיזוי טוב יותר. המשתנה שישפר את המודל הוא סוג הצמח.
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) +
geom_point() + stat_smooth(method = "lm")
ניתן לחלק בעיות חיזוי לפי שני סוגים:
הצורך במודלים סטטיסטיים יכול להתבטא בשני אופנים שונים.
הסקה סטטיסטית משמשת אותנו כדי לקשור בין משתנים שונים. לדוגמה להסיק שמשתנה מסוים נמצא בקשר חיובי עם משתנה אחר, או להסיק שלמשתנה מסוים במודל יש השפעה מובהקת על משתנה המטרה. למשל, בדוגמה של הפרחים אנחנו יכולים להשתמש ברגרסיה לינארית כדי להסיק על הקשר שבין אורך עלי כותרת ורוחבם, עבור המינים השונים.
iris %>%
split(.$Species) %>%
map( ~ summary(lm(formula = Sepal.Width ~ Sepal.Length, data = .x)))
## $setosa
##
## Call:
## lm(formula = Sepal.Width ~ Sepal.Length, data = .x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.72394 -0.18273 -0.00306 0.15738 0.51709
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.5694 0.5217 -1.091 0.281
## Sepal.Length 0.7985 0.1040 7.681 6.71e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2565 on 48 degrees of freedom
## Multiple R-squared: 0.5514, Adjusted R-squared: 0.542
## F-statistic: 58.99 on 1 and 48 DF, p-value: 6.71e-10
##
##
## $versicolor
##
## Call:
## lm(formula = Sepal.Width ~ Sepal.Length, data = .x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.65441 -0.12958 -0.00849 0.15137 0.60954
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.87215 0.44466 1.961 0.0556 .
## Sepal.Length 0.31972 0.07463 4.284 8.77e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2697 on 48 degrees of freedom
## Multiple R-squared: 0.2766, Adjusted R-squared: 0.2615
## F-statistic: 18.35 on 1 and 48 DF, p-value: 8.772e-05
##
##
## $virginica
##
## Call:
## lm(formula = Sepal.Width ~ Sepal.Length, data = .x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.63765 -0.18801 0.00438 0.16778 0.56814
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.4463 0.4309 3.357 0.001549 **
## Sepal.Length 0.2319 0.0651 3.562 0.000843 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2898 on 48 degrees of freedom
## Multiple R-squared: 0.2091, Adjusted R-squared: 0.1926
## F-statistic: 12.69 on 1 and 48 DF, p-value: 0.0008435
במין setosa המקדם הוא חיובי (הרוחב של עלה הכותרת הוא כ-79.85% מהאורך). לעומת זאת במין versicolor, המקדם הוא חיובי אך קטן יותר (23.19%), אך ישנו גם “חותך” (עלה בעל אורך קטן מאוד, הרוחב עדיין יהיה לפחות 1.44).
הסטטיסטיקה ה“קלאסית” (וגם דיווחים כיום של תחומי מדעי החברה) מבוססים הרבה על הסקה סטטיסטית, משום שהם משמשים לדיווח על תופעות סוציולוגיות והתנהגותיות.
לעומת זאת, בחיזוי אנחנו מנסים לבנות מודל שניתן יהיה להשתמש בו לצרכים עתידיים או לתצפיות עבורן איננו יודעים מה ערך המטרה. למשל בקובץ הנתונים של Telco אותו ראינו בפרקים הקודמים ישנו דיווח על נטישה של לקוחות. על ידי התאמת מודל נטישה יכולה החברה בכל חודש לבחון מיהם הלקוחות בעלי הסבירות הגבוהה ביותר לנטישה, וליזום פעילות מונעת מולם.
לכל אחת מהבעיות הבאות, תאר את:
להלן הבעיות:
כחלק מהאתגר של בניית מודל טוב, עלינו לבחון את הביצועים שלו. בדרך כלל מקובל לחלק את הנתונים לשני חלקים: חלק אחד הוא חלק האימון (Train set). נתונים אלו ישמשו לאימון המודל (בניית המודל). החלק השני הוא חלק הבדיקה (Test set). באמצעות חלק זה אנחנו משווים את ביצועי המודל שלנו למול תוצאות האמת.
כך על ידי שימוש בחלק הבדיקה, אנחנו יכולים להעריך האם המודל שלנו טוב או לא.
ישנם מדדים שונים המשמשים אותנו להשוואה, לדוגמה:
בהמשך נלמד גם שיטה נוספת שניתן להשתמש בה לצורך הערכת ביצועים של מודלים (או בחירה של מודלים) הנקראת Cross validation.
בפרק הבא נדון במודל שיכול לשמש גם לסיווג וגם לרגרסיה, הנקרא K-Nearest Neighbors.