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

Linear base learners

หลังจากที่ได้ใช้ decision tree เป็น base model ใน XGBoost แล้ว คราวนี้มาลองใช้ base model อีกประเภทหนึ่ง นั่นคือ linear learner แม้ว่าโมเดลประเภทนี้จะไม่ค่อยถูกนำมาใช้กับ XGBoost บ่อยนัก แต่ก็ช่วยให้สร้าง regularized linear regression ได้โดยอาศัย learning API อันทรงพลังของ XGBoost อย่างไรก็ตาม เนื่องจากเป็นรูปแบบที่ไม่ค่อยพบบ่อย จึงต้องใช้ฟังก์ชันของ XGBoost โดยตรง ซึ่งไม่รองรับ scikit-learn เช่น xgb.train()

ในการทำเช่นนี้ ต้องสร้าง parameter dictionary เพื่อกำหนดประเภทของ booster ที่ต้องการใช้ (คล้ายกับที่สร้าง dictionary ในบทที่ 1 ตอนใช้ xgb.cv()) คู่ key-value ที่กำหนดประเภท booster (base model) คือ "booster":"gblinear"

เมื่อสร้างโมเดลแล้ว สามารถใช้เมธอด .train() และ .predict() ได้เช่นเดิม

ในแบบฝึกหัดนี้ ข้อมูลถูกแบ่งเป็นชุดเทรนและชุดทดสอบไว้เรียบร้อยแล้ว จึงเริ่มสร้างออบเจกต์ DMatrix ที่ XGBoost learning API ต้องการได้เลย

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

Extreme Gradient Boosting with XGBoost

ดูคอร์ส

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

  • สร้างออบเจกต์ DMatrix สองตัว ได้แก่ DM_train สำหรับชุดเทรน (X_train และ y_train) และ DM_test สำหรับชุดทดสอบ (X_test และ y_test)
  • สร้าง parameter dictionary โดยกำหนดประเภท "booster" ที่จะใช้ ("gblinear") และ "objective" ที่ต้องการ minimize ("reg:squarederror")
  • เทรนโมเดลด้วย xgb.train() โดยระบุอาร์กิวเมนต์สำหรับพารามิเตอร์ต่อไปนี้: params, dtrain และ num_boost_round ใช้จำนวน boosting rounds เท่ากับ 5
  • ทำนายเลเบลบนชุดทดสอบด้วย xg_reg.predict() โดยส่ง DM_test เข้าไป แล้วกำหนดผลลัพธ์ให้กับ preds
  • กด 'ส่งคำตอบ' เพื่อดูค่า RMSE!

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

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

# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test =  ____

# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}

# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)

# Predict the labels of the test set: preds
preds = ____

# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))
แก้ไขและรันโค้ด