0Pricing
Learn AI with Python · บทเรียน

การเพิ่มแบบไล่ระดับ: 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ต้นไม้ตัดสินใจ: ทฤษฎีและการนำไปใช้
  2. ป่าสุ่มและแบ็กกิง
  3. การเพิ่มแบบไล่ระดับ: GBM และ XGBoost
  4. LightGBM และ CatBoost
← กลับไปที่ Learn AI with Python