การเพิ่มแบบไล่ระดับ: GBM และ XGBoost
การเพิ่มแบบไล่ระดับเทียบกับแบ็กกิง GradientBoostingClassifier, XGBClassifier และการหยุดก่อนกำหนด
การเพิ่มแบบไล่ระดับ: GBM และ XGBoost เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
การบูสต์เทียบกับแบ็กกิง
แบ็กกิง ฝึกต้นไม้แบบขนานกันแล้วหาค่าเฉลี่ย ส่วนการบูสต์ฝึกต้นไม้แบบ เป็นลำดับ โดยต้นไม้ใหม่แต่ละต้นจะแก้ไขข้อผิดพลาดของต้นไม้ก่อนหน้า
การบูสต์ช่วยลดอคติ จึงมักให้ความแม่นยำสูงกว่าแบ็กกิงเมื่อใช้กับข้อมูลแบบมีโครงสร้าง
ตัวเรียนรู้แบบอ่อนที่ทำงานเป็นลำดับ
การบูสต์แบบเกรเดียนต์สร้างกลุ่มแบบจำลองจากต้นไม้ตื้น ๆ (ตัวเรียนรู้แบบอ่อน) ต้นไม้แต่ละต้นจะปรับให้เข้ากับค่าคงเหลือ (เกรเดียนต์ของฟังก์ชันการสูญเสีย) ที่กลุ่มแบบจำลองปัจจุบันทิ้งไว้
การเพิ่มการแก้ไขเล็ก ๆ จำนวนมากจะสร้างแบบจำลองโดยรวมที่แข็งแกร่ง
GradientBoostingClassifier
สกิกิต-เลิร์นมี GradientBoostingClassifier ให้ใช้งาน พารามิเตอร์สำคัญ ได้แก่ n_estimators (จำนวนต้นไม้), learning_rate (การลดทอนอิทธิพล) และ max_depth (ขนาดของต้นไม้)
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=200,
learning_rate=0.1,
max_depth=3,
random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))ข้อแลกเปลี่ยนของอัตราการเรียนรู้
learning_rate จะปรับขนาดส่วนร่วมของต้นไม้แต่ละต้น อัตราการเรียนรู้ที่ต่ำกว่าต้องใช้ต้นไม้มากขึ้น แต่โดยทั่วไปจะทำให้แบบจำลองใช้กับข้อมูลใหม่ได้ดีกว่า
กลยุทธ์ที่ใช้กันทั่วไปคือ ตั้งอัตราการเรียนรู้ให้ต่ำ (เช่น 0.05) และใช้ตัวประมาณจำนวนมาก จากนั้นใช้การหยุดก่อนกำหนด
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)เหตุใดความลึกสูงสุดจึงคงไว้ต่ำ
ในการบูสต์ ต้นไม้แต่ละต้นเป็นตัวเรียนรู้แบบอ่อน ดังนั้น max_depth จึงมักอยู่ที่ 3 ถึง 6 ต้นไม้ที่ลึกจะทำให้ค่าคงเหลือเกิดการเรียนรู้เกินจริงอย่างรวดเร็ว กลุ่มแบบจำลองจะแข็งแกร่งขึ้นจากต้นไม้ตื้นจำนวนมาก ไม่ใช่จากต้นไม้ลึกเพียงไม่กี่ต้น
แนะนำเอ็กซ์จีบูสต์
เอ็กซ์จีบูสต์เป็นไลบรารีการบูสต์แบบเกรเดียนต์ที่ปรับให้มีประสิทธิภาพสูงขึ้น ทำงานเร็วกว่า ควบคุมความซับซ้อน และมีการจัดการค่าที่หายไปในตัว ไลบรารีนี้ทำผลงานได้โดดเด่นในการแข่งขันการเรียนรู้ของเครื่องกับข้อมูลแบบตาราง
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=300,
learning_rate=0.1,
max_depth=4,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))พารามิเตอร์สำคัญของเอ็กซ์จีบูสต์
พารามิเตอร์หลักมีแนวคิดคล้ายกับ GBM:
n_estimatorsจำนวนรอบของการบูสต์learning_rateการลดทอนอิทธิพลในแต่ละรอบmax_depthความลึกของต้นไม้subsampleและcolsample_bytreeเพิ่มความสุ่มเพื่อควบคุมความซับซ้อน
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)การควบคุมความซับซ้อนในเอ็กซ์จีบูสต์
เอ็กซ์จีบูสต์เพิ่มบทลงโทษแบบ L1 (reg_alpha) และ L2 (reg_lambda) รวมถึง gamma (การลดการสูญเสียขั้นต่ำที่จำเป็นต่อการแบ่ง) สิ่งเหล่านี้ช่วยควบคุมความซับซ้อนและลดการเรียนรู้เกินจริงได้มากกว่าที่ GBM แบบพื้นฐานทำได้
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)การหยุดก่อนกำหนด
early_stopping_rounds จะหยุดการฝึกเมื่อค่าตัวชี้วัดจากชุดตรวจสอบไม่ดีขึ้นเป็นเวลา N รอบ วิธีนี้ช่วยค้นหาจำนวนต้นไม้ที่เหมาะสมโดยอัตโนมัติและป้องกันการเรียนรู้เกินจริง
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=2000,
learning_rate=0.05,
early_stopping_rounds=50,
eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)การอ่านค่าความสำคัญของคุณลักษณะ
เอ็กซ์จีบูสต์มี feature_importances_ และ get_booster().get_score() ที่ให้รายละเอียดมากกว่า พร้อมชนิดของค่าความสำคัญ เช่น การลดการสูญเสียและน้ำหนัก ค่าการลดการสูญเสียสะท้อนว่าคุณลักษณะนั้นช่วยปรับปรุงการสูญเสียได้มากเพียงใด
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))ควรเลือกใช้การบูสต์เมื่อใด
การบูสต์แบบเกรเดียนต์มักทำได้ดีกว่าป่าสุ่มบนข้อมูลแบบตารางเมื่อปรับแต่งอย่างเหมาะสม ข้อแลกเปลี่ยนคือมีความไวต่อพารามิเตอร์ไฮเปอร์พารามิเตอร์มากกว่าและฝึกแบบลำดับได้ช้ากว่า ให้เริ่มจากค่าเริ่มต้นของเอ็กซ์จีบูสต์ จากนั้นปรับแต่ง learning_rate, max_depth และใช้การหยุดก่อนกำหนด
ตรวจสอบความรู้อย่างรวดเร็ว
ตรวจสอบความรู้เกี่ยวกับการบูสต์ของคุณ
สรุปบทเรียน
สรุปบทเรียน: การบูสต์ฝึกต้นไม้แบบ เป็นลำดับ โดยแต่ละต้นจะแก้ไขข้อผิดพลาดก่อนหน้า ปรับแต่ง n_estimators, learning_rate (อัตราต่ำและต้นไม้จำนวนมาก) และใช้ max_depth ขนาดเล็ก เอ็กซ์จีบูสต์เพิ่มการควบคุมความซับซ้อน (reg_alpha, reg_lambda, gamma) และ early_stopping_rounds เพื่อเลือกจำนวนต้นไม้ที่เหมาะสมโดยอัตโนมัติ
คำถามที่พบบ่อย
บทเรียน “การเพิ่มแบบไล่ระดับ: GBM และ XGBoost” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเพิ่มแบบไล่ระดับ: GBM และ XGBoost” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเพิ่มแบบไล่ระดับ: GBM และ XGBoost”
การเพิ่มแบบไล่ระดับเทียบกับแบ็กกิง GradientBoostingClassifier, XGBClassifier และการหยุดก่อนกำหนด คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเพิ่มแบบไล่ระดับ: GBM และ XGBoost” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ต้นไม้ตัดสินใจ: ทฤษฎีและการนำไปใช้
- ป่าสุ่มและแบ็กกิง
- การเพิ่มแบบไล่ระดับ: GBM และ XGBoost
- LightGBM และ CatBoost