RandomizedSearchCV

การตรวจสอบความถูกต้องของโมเดลใน Python

Kasey Jones

Data Scientist

Grid search กับ hyperparameter

เมื่อเลือกค่าจาก hyperparameter หลายตัว ตัวเลือกที่เป็นไปได้จะสร้างกริด ซึ่งเรียกว่า hyperparameter space

การตรวจสอบความถูกต้องของโมเดลใน Python

Grid search เพิ่มเติม

ข้อดี:

  • ทดสอบทุกชุดค่าผสมที่เป็นไปได้

ข้อเสีย:

  • การเพิ่ม hyperparameter ทำให้เวลาเทรนเพิ่มขึ้นแบบ exponential
การตรวจสอบความถูกต้องของโมเดลใน Python

วิธีที่ดีกว่า

การตรวจสอบความถูกต้องของโมเดลใน Python

Random search

from sklearn.model_selection import RandomizedSearchCV

random_search = RandomizedSearchCV()

Parameter Distribution:

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
การตรวจสอบความถูกต้องของโมเดลใน Python

พารามิเตอร์ของ Random search

พารามิเตอร์:

  • estimator: โมเดลที่ใช้
  • param_distributions: dictionary ที่เก็บ hyperparameter และค่าที่เป็นไปได้
  • n_iter: จำนวน iteration
  • scoring: วิธีการคำนวณ score
การตรวจสอบความถูกต้องของโมเดลใน Python

กำหนดพารามิเตอร์ให้ RandomizedSearchCV

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import make_scorer, mean_absolute_error

rfr = RandomForestRegressor(n_estimators=20, random_state=1111)
scorer = make_scorer(mean_absolute_error)
การตรวจสอบความถูกต้องของโมเดลใน Python

ใช้งาน RandomizedSearchCV

ตั้งค่า random search:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)
  • การปรับ hyperparameter จำเป็นต้องเข้าใจ model validation ก่อน
  • Model validation ช่วยให้เปรียบเทียบโมเดลและชุดพารามิเตอร์ต่าง ๆ ได้
การตรวจสอบความถูกต้องของโมเดลใน Python

ใช้งาน RandomizedSearchCV

ตั้งค่า random search:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)

รัน random search ให้สมบูรณ์:

random_search.fit(X, y)
การตรวจสอบความถูกต้องของโมเดลใน Python

มาลองดูตัวอย่างกัน!

การตรวจสอบความถูกต้องของโมเดลใน Python

Preparing Video For Download...