רגולריזציה
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 34 מתוך 58.
מודל ליניארי בהתאמת יתר נשען על משקולות גדולות כדי להתכופף לעבר כל שורה רועשת. רגרסיית Ridge מטילה קנס על משקולות גדולות, ו-alpha קובע את המחיר.
הנה 20 גיטרות משומשות, שישה מאפיינים שעברו שינוי קנה מידה ומנבאים את המחיר:
הוא נמצא במרחק החלפה אחת מ־LinearRegression, שהמשקלים שלו היו [-83. 116. 104. 27. 17. 15.]:
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))זה מדפיס:
[-14. 18. 16. 10. 5. 8.]אלפא גדולה יותר, משקולות קטנות יותר, פחות התאמת יתר. אם היא גדולה מדי, המודל לא מתאים מספיק.
אתגר
בינוניאתר נופש חוזה מחירים של בקתות ללילה על סמך 8 מאפיינים, תוך שימוש ב-16 בקתות בלבד. התוכנית קוראת את alpha; קוד הפתיחה מפצל את הנתונים ומבצע להם קנה מידה.
- התאימו מודל
LinearRegressionומודלRidgeעם אותוalpha. - הדפיסו את גודל המשקל הכולל של כל מודל: סכום המשקלים שלו ללא סימנים, מעוגל למספר השלם הקרוב ביותר.
- הדפיסו את R בריבוע של כל מודל במבחן (3 ספרות אחרי הנקודה העשרונית) ואת המודל הטוב יותר, כמו בדוגמה.
עבור אזור אחר ו-5:
Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridgeנסו בעצמכם
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score
alpha = float(input())
# אין לשנות את השורות שלהלן: 28 בקתות נופש, 8 מאפיינים והמחיר ללילה באירו
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין