|
|
4 months ago | |
|---|---|---|
| .. | ||
| solution | 6 months ago | |
| README.md | 4 months ago | |
| assignment.md | 6 months ago | |
| notebook.ipynb | 11 months ago | |
README.md
לבנות מודל רגרסיה באמצעות Scikit-learn: רגרסיה בארבע דרכים
הערת מתחילים
רגרסיה ליניארית משמשת כאשר אנו רוצים לחזות ערך מספרי (לדוגמה, מחיר בית, טמפרטורה, או מכירות). היא פועלת על ידי מציאת קו ישר המייצג בצורה הטובה ביותר את הקשר בין תכונות הקלט לפלט.
בשיעור זה, נתמקד בהבנת המושג לפני שנחפש טכניקות רגרסיה מתקדמות יותר.

אינפוגרפיקה מאת דאסאני מדיפאלי
חידון לפני השיעור
שיעור זה זמין ב-R!
מבוא
עד כה חקרתם מהי רגרסיה באמצעות דוגמת נתונים שנלקחה ממאגר הנתונים למחירי דלעות שבו נשתמש לאורך כל השיעור. גם הצגתם זאת באמצעות Matplotlib.
כעת אתם מוכנים לצלול לעומק אל עולם הרגרסיה ללמידת מכונה. בעוד שהויזואליזציה מאפשרת לכם להבין נתונים, הכוח האמיתי של למידת מכונה מגיע מ_מודלים מאומנים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד באופן אוטומטי תלות בין הנתונים, ומאפשרים לכם לחזות תוצאות עבור נתונים חדשים, אותם המודל לא ראה קודם.
בשיעור הזה תלמדו על שני סוגים של רגרסיה: רגרסיה ליניארית בסיסית ו_רגרסיה פולינומית_, יחד עם חלק מהמתמטיקה שמאחורי הטכניקות האלה. המודלים האלה יאפשרו לנו לחזות מחירי דלעות בהתאם לנתוני קלט שונים.
🎥 לחצו על התמונה למעלה לסרטון קצר המסביר רגרסיה ליניארית.
לאורך כל התכנית אנו מניחים ידע מינימלי במתמטיקה, ושואפים להפוך את התוכן לנגיש לסטודנטים ממקצועות אחרים, לכן שימו לב להערות, 🧮 קריאות, דיאגרמות, וכלי למידה נוספים שיעזרו לכם בהבנה.
דרישות מקדימות
עד כה עליכם להיות מוכרים עם מבנה נתוני הדלעות שאנו בודקים. ניתן למצוא אותם טעונים ומנוקים מראש בקובץ notebook.ipynb של השיעור הזה. בקובץ, מחיר הדלעות מוצג לפי באושל במסגרת מסגרת נתונים חדשה. וודאו שניתן להריץ קבצים אלה ב-kernels של Visual Studio Code.
הכנה
לתזכורת, אתם טוענים את הנתונים האלה כדי לשאול עליהם שאלות.
- מתי הזמן הטוב ביותר לקנות דלעות?
- איזה מחיר אפשר לצפות עבור קופסת דלעות מיני?
- האם כדאי לקנות בסלים של חצי באושל או בקופסה של 1 1/9 באושל? נמשיך לחפור בנתונים האלה.
בשיעור הקודם יצרתם מסגרת נתונים של Pandas ומילאתם אותה בחלק מן הנתונים המקוריים, כשהמחיר מתוקנן לפי הבאושל. עם זאת, בדרך זו הצלחתם לאסוף רק כ-400 נקודות מידע ורק לחודשי הסתיו.
תסתכלו על הנתונים הטעונים מראש במחברת המצורפת לשיעור זה. הנתונים טעונים מראש ויצרנו גרף פיזור ראשוני שמראה את נתוני החודשים. אולי נוכל לקבל פרטים נוספים על אופי הנתונים על ידי ניקוי נוסף.
קו רגרסיה ליניארית
כפי שלמדתם בשיעור 1, המטרה של תרגיל רגרסיה ליניארית היא להיות מסוגלים לשרטט קו כדי:
- להראות קשר בין משתנים. להראות את הקשר בין המשתנים.
- לעשות תחזיות. לבצע תחזיות מדויקות לגבי מיקום נקודת נתונים חדשה ביחס לקו זה.
מקובל להשתמש ברגרסיית הריבועים הפחותים לציור קו כזה. המונח "ריבועים הפחותים" מתייחס לתהליך של מזעור השגיאה הכוללת במודל שלנו. עבור כל נקודת נתונים, אנו מודדים את המרחק האנכי (נקרא שארית) בין הנקודה האמיתית לקו הרגרסיה.
אנו מוכפלים את המרחקים האלה בריבוע משתי סיבות עיקריות:
-
גודל ולא כיוון: אנו רוצים להתייחס לשגיאה של -5 באותו אופן כמו לשגיאה של +5. הכפלה בריבוע הופכת את כל הערכים לחיוביים.
-
עונש לחריגות: ריבוע נותן משקל גבוה יותר לשגיאות גדולות, ומכריח את הקו להישאר קרוב יותר לנקודות הרחוקות.
אחרי זה אנו מוסיפים את כל הערכים בריבוע יחד. המטרה שלנו היא למצוא את הקו הספציפי שבו סכום זה הוא הנמוך ביותר (הערך הקטן ביותר האפשרי) — ומכאן השם "ריבועים הפחותים".
🧮 הראה לי את המתמטיקה
קו זה, שנקרא קו ההתאמה הטובה ביותר ניתן לתאר באמצעות משוואה:
Y = a + bX
Xהוא 'משתנה מסביר'.Yהוא 'משתנה תלוי'. השיפוע של הקו הואbו-aהוא נקודת החיתוך עם ציר ה-Y, שמתאר את ערךYכאשרX = 0.תחילה, חשבו את השיפוע
b. אינפוגרפיקה מאת ג'ן לופרבמילים אחרות, ובמתייחס לשאלה המקורית של נתוני הדלעות שלנו: "לחזות את מחיר הדלעת ליחידת באושל לפי חודש",
Xיהיה מחיר ו-Yיהיה חודש המכירה.חשבו את ערך Y. אם אתם משלמים כ־4 דולר, חייב להיות שזה אפריל! אינפוגרפיקה מאת ג'ן לופר
המתמטיקה המחושבת את הקו חייבת להראות את השיפוע של הקו, שתלוי גם בנקודת החיתוך, או היכן ש-
Yנמצא כאשרX = 0.ניתן לראות את שיטת החישוב עבור הערכים האלה באתר Math is Fun. בקרו גם במחשבון ריבועים הפחותים הזה כדי לראות איך ערכי המספרים משפיעים על הקו.
קורלציה
עוד מונח שיש להבין הוא מקדם המתאם בין משתני X ו-Y נתונים. בעזרת גרף פיזור ניתן להמחיש במהירות מקדם זה. גרף עם נקודות מפוזרות לאורך קו נקי הוא בעל קורלציה גבוהה, אך גרף עם נקודות מפוזרות בכל מקום בין X ל-Y הוא בעל קורלציה נמוכה.
מודל רגרסיה ליניארית טוב יהיה כזה שיביא למקדם מתאם גבוה (קרוב ל-1 יותר מאשר ל-0) באמצעות שיטת ריבועי השגיאות הפחותים עם קו רגרסיה.
✅ הריצו את המחברת המצורפת לשיעור זה וצפו בגרף פיזור מחיר לפי חודש. האם הנתונים הקושרים בין חודש למחיר מכירות דלעות נראים בעלי קורלציה גבוהה או נמוכה, לפי הפרשנות הויזואלית שלכם לגרף הפיזור? האם זה משתנה אם משתמשים במדד מדויק יותר במקום Month, למשל יום בשנה (כלומר מספר הימים מאז תחילת השנה)?
בקוד למטה נניח שניקינו את הנתונים, וקיבלנו מסגרת נתונים בשם new_pumpkins, דומה לטבלה הבאה:
| ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price |
|---|---|---|---|---|---|---|---|---|
| 70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 |
| 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 |
| 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 |
| 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 |
| 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 |
הקוד לניקוי הנתונים זמין ב-
notebook.ipynb. ביצענו את אותם צעדי ניקוי כמו בשיעור הקודם, וחישבנו את העמודהDayOfYearבאמצעות הביטוי הבא:
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
עכשיו כשיש לכם הבנה של המתמטיקה שמאחורי רגרסיה ליניארית, בואו ניצור מודל רגרסיה כדי לבדוק אם נוכל לחזות איזו חבילה של דלעות תכיל את מחירי הדלעות הטובים ביותר. מישהו שקונה דלעות לחג עלול לרצות מידע זה כדי למקסם את רכישת חבילות הדלעות שלו עבור החג.
מחפשים קורלציה
🎥 לחצו על התמונה למעלה לסרטון קצר המסביר קורלציה.
בשיעור הקודם כנראה ראיתם שהמחיר הממוצע לפי חודשים נראה כך:
הדבר מצביע על כך שצריכה להיות קורלציה, ואפשר לנסות לאמן מודל רגרסיה ליניארית לחזות את הקשר בין Month ל-Price, או בין DayOfYear ל-Price. להלן גרף הפיזור שמראה את הקשר האחרון:
נבדוק אם קיימת קורלציה באמצעות הפונקציה corr:
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
נראה שהקורלציה יחסית נמוכה, -0.15 לפי Month ו- -0.17 לפי DayOfMonth, אך ייתכן שקיים קשר חשוב אחר. נראה שישנם אשכולות שונים של מחירים התואמים לזני דלעות שונים. כדי לאשר השערה זו, נשרטט כל קטגוריית דלעות בצבע שונה. על ידי העברת פרמטר ax לפונקציית הפריטה scatter נוכל להראות את כל הנקודות באותה גרף:
ax=None
colors = ['red','blue','green','yellow']
for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
החקירה שלנו מצביעה על כך שלזן יש השפעה גדולה יותר על המחיר הכולל מאשר על תאריך המכירה בפועל. נוכל לראות זאת באמצעות תרשים עמודות:
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
נקדיש כרגע תשומת לב לזן אחד בלבד, 'pie type', ונראה מה השפעת התאריך על המחיר:
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
עכשיו אם נחשב את הקורלציה בין Price ל-DayOfYear באמצעות הפונקציה corr, נקבל משהו בסביבות -0.27 - מה שאומר שאימון מודל ניבוי הגיוני.
לפני אימון מודל רגרסיה ליניארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה ליניארית אינה עובדת טוב עם ערכים חסרים, לכן כדאי להיפטר מכל התאים הריקים:
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
גישה נוספת תהיה למלא את הערכים החסרים בערכים ממוצעים מתוך העמודה המתאימה.
רגרסיה ליניארית פשוטה
🎥 לחצו על התמונה למעלה לסרטון קצר המסביר רגרסיה ליניארית ופולינומית.
לאימון מודל הרגרסיה הליניארית שלנו נשתמש בספריית Scikit-learn.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
נתחיל בהפרדת ערכי הקלט (תכונות) והתוצאה המצופה (תווית) למערכי numpy נפרדים:
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
שימו לב שנאלצנו לבצע
reshapeעל נתוני הקלט כדי שהחבילה Linear Regression תוכל להבין אותם כראוי. רגרסיה ליניארית מצפה לקבל מערך דו-ממדי כקלט, שבו כל שורה במערך מייצגת וקטור של תכונות הקלט. במקרה שלנו, מכיוון שיש לנו רק קלט אחד - דרוש מערך בצורת N×1, כאשר N הוא גודל מאגר הנתונים.
לאחר מכן, נצטרך לחלק את הנתונים למאגר אימון ומאגר בדיקה כדי שנוכל לאמת את המודל לאחר האימון:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
לבסוף, אימון מודל הרגרסיה הליניארית בפועל לוקח רק שתי שורות קוד. אנו מגדירים את האובייקט LinearRegression, ומתאימים אותו לנתונים שלנו באמצעות השיטה fit:
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
אובייקט LinearRegression לאחר ביצוע fit מכיל את כל המקדמים של הרגרסיה, אליהם ניתן לגשת באמצעות המאפיין .coef_. במקרה שלנו, יש רק מקדם אחד, שצריך להיות סביב -0.017. המשמעות היא שמחירי הדלעות נראים יורדים מעט עם הזמן, אבל לא יותר מדי, בסביבות 2 סנט ליום. ניתן גם לגשת לנקודת המפגש של הרגרסיה עם ציר ה-Y באמצעות lin_reg.intercept_ - היא תהיה סביב 21 במקרה שלנו, מציינת את המחיר בתחילת השנה.
כדי לראות כמה המודל שלנו מדויק, נוכל לחזות מחירים על סט נתוני בדיקה, ואז למדוד כמה החזויים שלנו קרובים לערכים הצפויים. אפשר לעשות זאת באמצעות מדד שגיאת השורש הממוצעת המרובעת (RMSE), שהוא השורש של ממוצע כל ההפרשים בריבוע בין הערך הצפוי והערך החזוי.
pred = lin_reg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
השגיאה שלנו נראית באזור של כ-2 נקודות, שזה בערך ~17%. לא כל כך טוב. מדד נוסף לאיכות המודל הוא מקדם הקביעה, שניתן לקבל כך:
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
אם הערך הוא 0, זה אומר שהמודל אינו מתחשב בנתוני הקלט ופועל כ-התחזית הלינארית הגרועה ביותר, שהיא פשוט ערך ממוצע של התוצאה. הערך 1 מצביע על כך שניתן לחזות במדויק את כל הערכים הצפויים. במקרה שלנו, המקדמה היא סביב 0.06, שזה יחסית נמוך.
נוכל גם לשרטט את נתוני הבדיקה יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה עובדת במקרה שלנו:
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
רגרסיה פולינומית
סוג נוסף של רגרסיה לינארית הוא רגרסיה פולינומית. לפעמים יש קשר לינארי בין משתנים - למשל, ככל שהדלעת גדולה יותר בנפח, המחיר גבוה יותר - אבל לפעמים הקשרים האלה לא ניתנים לייצוג כמישור או כקו ישר.
✅ הנה כמה דוגמאות נוספות לנתונים שיכולים להשתמש ברגרסיה פולינומית
הסתכלו שוב על הקשר בין תאריך למחיר. האם הפיזור הזה נראה כמו משהו שצריך בהכרח לנתח באמצעות קו ישר? האם המחירים לא עשויים להשתנות? במצב כזה, אפשר לנסות רגרסיה פולינומית.
✅ פולינומים הם ביטויים מתמטיים שעשויים לכלול משתנה או יותר ומקדמים
רגרסיה פולינומית יוצרת קו מעוקל שיתאים טוב יותר לנתונים לא לינאריים. במקרה שלנו, אם נכלול את המשתנה הרבוע DayOfYear בתוך נתוני הקלט, נוכל לנסות להתאים את הנתונים שלנו בעקומה פרבולית, שתכלול נקודת מינימום מסוימת בתוך השנה.
סייקיט-לרן כוללת API נוח בשם pipeline שמשלב ביחד כמה שלבי עיבוד של הנתונים. פייפליין הוא שרשרת של אמדנים. במקרה שלנו, ניצור פייפליין שמוסיף תחילה תכונות פולינומיות למודל, ואחר כך מאמן את הרגרסיה:
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
שימוש ב-PolynomialFeatures(2) משמעותו שנכליל את כל הפולינומים ממעלה שנייה מתוך נתוני הקלט. במקרה שלנו זה יהיה רק DayOfYear2, אבל אם יש לנו שני משתנים קלט, X ו-Y, זה יכלול את X2, XY ו-Y2. אפשר גם להשתמש בפולינומים ממעלה גבוהה יותר אם רוצים.
ניתן להשתמש בפייפליינים באותה צורה שבה השתמשנו באובייקט LinearRegression המקורי, כלומר נבצע fit לפייפליין, ואז נשתמש ב-predict לקבלת התוצאות. הנה הגרף שמראה את נתוני הבדיקה ואת עקומת ההתאמה:
באמצעות רגרסיה פולינומית נוכל לקבל מעט פחות שגיאה ממוצעת מרובעת ומקדמת קביעה גבוהה יותר, אך לא משמעותית. צריך לקחת בחשבון תכונות נוספות!
אפשר לראות שמחירי הדלעות הנמוכים ביותר נצפים בערך סביב הלואווין. איך אתה מסביר את זה?
🎃 מזל טוב, רק יצרת מודל שיכול לעזור לחזות את מחירי דלעות הפאי. כנראה שתוכל לחזור על אותה פעולה עבור כל סוגי הדלעות, אבל זה יהיה משעמם. בוא נלמד עכשיו כיצד לקחת את סוג הדלעת בחשבון במודל שלנו!
תכונות קטגוריאליות
בעולם האידיאלי, היינו רוצים לחזות מחירים עבור סוגים שונים של דלעות תוך שימוש באותו מודל. עם זאת, עמודת Variety שונה במקצת מעמודות כמו Month, כי היא מכילה ערכים שאינם מספריים. עמודות כאלה נקראות קטגוריאליות.
🎥 לחצו על התמונה למעלה לסרטון קצר שמסביר על שימוש בתכונות קטגוריאליות.
כאן נראה איך המחיר הממוצע תלוי בסוג:
כדי לקחת בחשבון את הסוג, אנחנו צריכים קודם להמיר אותו לצורה מספרית, כלומר לקודד אותו. יש כמה דרכים לעשות זאת:
- הקידוד המספרי הפשוט יבנה טבלה של סוגים שונים, ואז יחליף את שם הסוג עם אינדקס בטבלה הזו. זו לא רעיון טוב במיוחד עבור רגרסיה לינארית, כי הרגרסיה הלינארית מתייחסת לערך המספרי הממשי של האינדקס ומוסיפה אותו לתוצאה, כפול מקדם מסוים. במקרה שלנו, הקשר בין מספר האינדקס למחיר אינו לינארי, אפילו אם נסדר את האינדקסים בסדר כלשהו.
- קידוד one-hot יחליף את העמודה
Varietyבארבעה עמודות שונות, אחת לכל סוג. כל עמודה תכיל1אם השורה המקבילה שייכת לסוג זה, ו-0אחרת. המשמעות היא שיהיו ארבעה מקדמים ברגרסיה הלינארית, אחד לכל סוג דלעת, שאחראים על "מחיר התחלתי" (או יותר נכון המחיר הנוסף) עבור הסוג המסוים הזה.
הקוד מטה מראה איך לקודד את הסוג ב-one-hot:
pd.get_dummies(new_pumpkins['Variety'])
| ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE |
|---|---|---|---|---|
| 70 | 0 | 0 | 0 | 1 |
| 71 | 0 | 0 | 0 | 1 |
| ... | ... | ... | ... | ... |
| 1738 | 0 | 1 | 0 | 0 |
| 1739 | 0 | 1 | 0 | 0 |
| 1740 | 0 | 1 | 0 | 0 |
| 1741 | 0 | 1 | 0 | 0 |
| 1742 | 0 | 1 | 0 | 0 |
כדי לאמן רגרסיה לינארית עם סוג מקודד ב-one-hot כקלט, פשוט צריך לאתחל את הנתונים X ו-y בצורה נכונה:
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
שאר הקוד זהה לזה שבו השתמשנו למעלה כדי לאמן רגרסיה לינארית. אם תנסו זאת, תראו שהשגיאה הממוצעת המרובעת דומה, אבל מקדם הקביעה גבוה משמעותית (~77%). כדי לקבל תחזיות מדויקות יותר, נוכל לקחת בחשבון יותר תכונות קטגוריאליות, וגם תכונות מספריות, כגון Month או DayOfYear. כדי לקבל מערך אחד גדול של תכונות, נוכל להשתמש ב-join:
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
כאן אנחנו גם לוקחים בחשבון את City ואת סוג Package, מה שמביא אותנו ל-MSE של 2.84 (10%), ומקדם קביעה של 0.94!
לשלב את הכול ביחד
כדי ליצור את המודל הטוב ביותר, נוכל להשתמש בנתונים משולבים (קטגוריאליים המקודדים ב-one-hot + מספריים) מהדוגמה שלמעלה יחד עם רגרסיה פולינומית. הנה הקוד המלא לנוחותכם:
# להגדיר את נתוני האימון
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# לבצע חלוקה לאימון ובדיקה
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# להגדיר ולאמן את צינור העיבוד
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# לחזות תוצאות עבור נתוני הבדיקה
pred = pipeline.predict(X_test)
# לחשב שגיאת ממוצע ריבועי ויחס ההסבר
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
זה אמור לתת לנו את מקדם הקביעה הטוב ביותר, כמעט 97%, ו-MSE=2.23 (~8% שגיאת תחזית).
| מודל | MSE | מקדם קביעה |
|---|---|---|
רגרסיה לינארית עם DayOfYear |
2.77 (17.2%) | 0.07 |
רגרסיה פולינומית עם DayOfYear |
2.73 (17.0%) | 0.08 |
רגרסיה לינארית עם Variety |
5.24 (19.7%) | 0.77 |
| רגרסיה לינארית עם כל התכונות | 2.84 (10.5%) | 0.94 |
| רגרסיה פולינומית עם כל התכונות | 2.23 (8.25%) | 0.97 |
🏆 כל הכבוד! יצרתם ארבעה מודלי רגרסיה בשיעור אחד, ושיפרתם את האיכות של המודל ל-97%. בסעיף הסופי ברגרסיה תלמדו על רגרסיה לוגיסטית כדי לקבוע קטגוריות.
🚀אתגר
נסו משתנים שונים במחברת זו כדי לראות כיצד הקורלציה מתיישבת עם דיוק המודל.
מבחן אחרי ההרצאה
סקירה ולמידה עצמית
בשיעור זה למדנו על רגרסיה לינארית. ישנם סוגים חשובים אחרים של רגרסיה. קראו על טכניקות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמוד ממנו עוד הוא קורס למידה סטטיסטית של סטנפורד
מטלה
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. אמנם אנו שואפים לדיוק, אך יש לקחת בחשבון שתירגומים אוטומטיים עלולים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפת המקור שלו הוא המקור הסמכותי. למידע קריטי מומלץ תרגום מקצועי ובידי אדם. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעים מהשימוש בתרגום זה.





