جست وجوی شبکه ای (Grid Search)
«جست وجوی شبکه ای» برای پیدا کردن بهترین «ابرپارامتر (Hyperparameter)» است. ابرپارامتر، تنظیمات مدل است؛ مثلا C در رگرسیون لجستیک. ما چند مقدار را امتحان می کنیم و بهترین امتیاز را برمی داریم.
چطور کار می کند؟
ایده ساده است: یک فهرست از مقادیر بساز. سپس همه را تست کن. در پایان، بیشترین امتیاز را انتخاب کن.
نکته: مقدار بزرگ تر C یعنی تکیه بیشتر به داده های آموزش. مقدار کوچک تر یعنی منظم سازی بیشتر و مدل ساده تر.
شروع با تنظیمات پیش فرض
ابتدا دیتاست آیریس را لود کن.
from sklearn import datasets
iris = datasets.load_iris()
سپس X و y را از دیتاست جدا کن.
X = iris['data']
y = iris['target']
مدل رگرسیون لجستیک را می سازیم و max_iter را بالا می بریم.
from sklearn.linear_model import LogisticRegression
logit = LogisticRegression(max_iter = 10000)
logit.fit(X, y)
print(logit.score(X, y))
با C پیش فرض یعنی 1، امتیاز حدود 0.973 می شود.
اجرای جست وجوی شبکه ای روی C
حالا یک رِنج از مقادیر C می دهیم و همه را امتحان می کنیم.
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
iris = datasets.load_iris()
X = iris['data']
y = iris['target']
logit = LogisticRegression(max_iter = 10000)
C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
scores = []
for choice in C:
logit.set_params(C = choice)
logit.fit(X, y)
scores.append(logit.score(X, y))
print(scores)
نتیجه نشان می دهد مقادیر خیلی کوچک C بدترند. نزدیک 1.75 بهتر می شود. افزایش بیشتر سودی ندارد.
گام های عملی
- داده را لود کن و X، y بساز.
- مدل پایه را با C پیش فرض بسنج.
- فهرست مقادیر C را تعریف کن.
- یک حلقه بزن، fit و score را ذخیره کن.
- بهترین C را با بیشترین امتیاز انتخاب کن.
نکته های حرفه ای
اگر روی همان داده آموزش امتیاز بگیری، ممکن است «بیش برازش (Overfitting)» شود. پس داده را به آموزش/آزمون تقسیم کن.
هشدار: امتیاز روی آموزش ملاک نهایی نیست. همیشه روی داده دیده نشده بسنج.
جمع بندی سریع
- جست وجوی شبکه ای همه ترکیب ها را تست می کند.
- C بزرگ تر، تکیه بیشتر بر داده آموزش است.
- فقط به امتیاز آموزش اعتماد نکن.
- گام های ساده: تعریف رِنج، حلقه، سنجش، انتخاب.
ادامه مسیر: برای مدل پایه به رگرسیون لجستیک برو. سپس برای آماده سازی داده، پیش پردازش را ببین.