เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การแข่งขัน Boosting: Light vs Extreme

แม้โมเดล CatBoost จะให้ประสิทธิภาพที่ดีพอสมควร แต่ลองมาทดสอบ boosting อีกสองแนวทางเพื่อดูว่าแบบใดให้ผลดีกว่า นั่นคือแนวทาง "Light" หรือ "Extreme"

CatBoost เหมาะอย่างยิ่งเมื่อข้อมูลมี feature ประเภท categorical แต่ในกรณีนี้ทุก feature เป็นตัวเลข ดังนั้นแนวทางอื่นอาจให้ผลลัพธ์ที่ดีกว่า

เนื่องจากเรากำลังสร้าง regressor จึงต้องใช้พารามิเตอร์เพิ่มเติมคือ objective ซึ่งระบุฟังก์ชันการเรียนรู้ที่ต้องการใช้ หากต้องการใช้ squared error ให้กำหนด objective เป็น 'reg:squarederror' สำหรับ XGBoost และ 'mean_squared_error' สำหรับ LightGBM

นอกจากนี้ยังกำหนดพารามิเตอร์ n_jobs สำหรับ XGBoost เพื่อเพิ่มความเร็วในการประมวลผล

หมายเหตุ: ระวังอย่าใช้ classifier แทน regressor เพราะอาจทำให้เซสชันหมดอายุได้!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Ensemble Methods ใน Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง XGBRegressor โดยใช้พารามิเตอร์: max_depth = 3, learning_rate = 0.1, n_estimators = 100 และ n_jobs=2
  • สร้าง LGBMRegressor โดยใช้พารามิเตอร์: max_depth = 3, learning_rate = 0.1 และ n_estimators = 100

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Build and fit an XGBoost regressor
reg_xgb = ____.____(____, ____, ____, ____, objective='reg:squarederror', random_state=500)
reg_xgb.fit(X_train, y_train)

# Build and fit a LightGBM regressor
reg_lgb = ____.____(____, ____, ____, objective='mean_squared_error', seed=500)
reg_lgb.fit(X_train, y_train)

# Calculate the predictions and evaluate both regressors
pred_xgb = reg_xgb.predict(X_test)
rmse_xgb = np.sqrt(mean_squared_error(y_test, pred_xgb))
pred_lgb = reg_lgb.predict(X_test)
rmse_lgb = np.sqrt(mean_squared_error(y_test, pred_lgb))

print('Extreme: {:.3f}, Light: {:.3f}'.format(rmse_xgb, rmse_lgb))
แก้ไขและรันโค้ด