การเพิ่มการจัดกลุ่มแบบไล่ระดับคือวิธีการที่ใช้กับอัลกอริทึมแมชชีนเลิร์นนิงอื่น การเพิ่มประสิทธิภาพการไล่ระดับสีอย่างไม่เป็นทางการมีอยู่ด้วยกัน 2 ประเภทด้วยกัน ดังนี้
- รูปแบบ&อ่อน:แมชชีนเลิร์นนิง ซึ่งโดยปกติแล้วจะเป็นแผนผังการตัดสินใจ
- a "strong" โมเดลแมชชีนเลิร์นนิง ซึ่งประกอบด้วยโมเดลที่อ่อนหลายรูปแบบ
ในการกระตุ้นการไล่ระดับสี ในแต่ละขั้นตอน โมเดลที่อ่อนแอใหม่จะได้รับการฝึกให้คาดการณ์ &"ข้อผิดพลาด" ของโมเดลปัจจุบันที่มีประสิทธิภาพ (ซึ่งเรียกว่าการตอบกลับเทียม) เราจะลงรายละเอียด "error" ภายหลัง สําหรับตอนนี้ สมมติ "ข้อผิดพลาด" คือความแตกต่างระหว่างการคาดการณ์และป้ายกํากับการถดถอย จากนั้น ระบบจะเพิ่มรูปแบบจุดอ่อน (นั่นคือ "ข้อผิดพลาด") ลงในโมเดลที่มีประสิทธิภาพพร้อมเครื่องหมายลบเพื่อลดข้อผิดพลาดของโมเดลเปรียบเทียบ
การเร่งระดับการไล่ระดับสีเป็นการทําซ้ํา การทําซ้ําแต่ละครั้งจะเรียกสูตรต่อไปนี้
\[ F_{i+1} = F_i - f_i \]
ที่ไหน:
- $F_i$ คือต้นแบบที่แข็งแกร่งในขั้นตอน $i$
- $f_i$ เป็นโมเดลที่คาดเดาง่ายในขั้นตอน $i$
การดําเนินการนี้จะเกิดซ้ําจนกว่าจะถึงเกณฑ์ที่จะหยุด เช่น จํานวนการทําซ้ําสูงสุด หรือหากโมเดล (รัดกุม) เริ่มจัดจ้านมากเกินไปเมื่อวัดในชุดข้อมูลการตรวจสอบแยกต่างหาก
มาสาธิตการเร่งสีในชุดข้อมูลการถดถอยแบบง่ายที่
- วัตถุประสงค์คือการคาดการณ์ $y$ จาก $x$
- โมเดลที่แข็งแกร่งเริ่มต้นเป็นค่าคงที่ 0: $F_0(x) = 0$
# Simplified example of regressive gradient boosting.
y = ... # the labels
x = ... # the features
strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.
for i in range(num_iters):
# Error of the strong model
error = strong_predictions - y
# The weak model is a decision tree (see CART chapter)
# without pruning and a maximum depth of 3.
weak_model = tfdf.keras.CartModel(
task=tfdf.keras.Task.REGRESSION,
validation_ratio=0.0,
max_depth=3)
weak_model.fit(x=x, y=error)
strong_model.append(weak_model)
weak_predictions = weak_model.predict(x)[:,0]
strong_predictions -= weak_predictions
ใช้รหัสต่อไปนี้กับชุดข้อมูลต่อไปนี้
รูปที่ 25 ชุดข้อมูลแบบ Regression สังเคราะห์ที่มีฟีเจอร์ตัวเลข 1 รายการ
พล็อตกราฟ 3 แบบหลังจากอัลกอริทึมการเพิ่มความสว่างครั้งแรกมีดังนี้
รูปที่ 26 พล็อตโฆษณา 3 รายการหลังจากการทําซ้ําครั้งแรก
หมายเหตุเกี่ยวกับพล็อตในรูปที่ 26:
- พล็อตแรกแสดงการคาดคะเนของโมเดลที่มีประสิทธิภาพ ซึ่งปัจจุบันเป็น 0 เสมอ
- พล็อตที่สองแสดงข้อผิดพลาด ซึ่งเป็นป้ายกํากับของโมเดลที่อ่อนแอ
- พล็อตเรื่องที่ 3 แสดงรูปแบบที่อ่อน
รูปแบบที่อ่อนจุดแรกจะหมายถึงการนําเสนอป้ายกํากับแบบกว้างๆ คร่าวๆ และส่วนใหญ่แล้วจะอยู่ที่ด้านซ้ายของพื้นที่ฟีเจอร์ (ส่วนที่เป็นรูปแบบที่ใกล้เคียงที่สุด จึงเกิดจากข้อผิดพลาดที่ไม่ถูกต้องมากในรูปแบบที่ไม่ถูกต้อง)
ต่อไปนี้เป็นพล็อตเดียวกันสําหรับการทําอัลกอริทึมอีกรอบ
รูปที่ 27 พล็อตกราฟ 3 รายการหลังการปรับปรุงครั้งที่ 2
หมายเหตุเกี่ยวกับพล็อตในรูปที่ 27
- โมเดลที่มีประสิทธิภาพจะมีการคาดการณ์ของโมเดลที่อ่อนแอของการปรับปรุงก่อนหน้านี้
- ข้อผิดพลาดใหม่ของโมเดลนี้จะมีขนาดเล็กกว่าเล็กน้อย
- การคาดการณ์ของโมเดลที่อ่อนแอใหม่นี้เน้นที่ส่วนขวาของพื้นที่
เราเรียกใช้อัลกอริทึมสําหรับการทําซ้ําอีก 8 ครั้งดังนี้
รูปที่ 28 พล็อตกราฟ 3 รายการหลังการปรับปรุงครั้งที่ 3 และครั้งที่ 1
รูปที่ 28 โปรดทราบว่าการคาดการณ์ของโมเดลที่แข็งแกร่งจะเริ่มคล้ายกับพล็อตของชุดข้อมูล
ภาพเหล่านี้แสดงอัลกอริทึมการเพิ่มไล่ระดับสีโดยใช้แผนผังการตัดสินใจเป็นผู้เรียนรู้ที่ไม่รัดกุม ชุดค่าผสมนี้เรียกว่าต้นไม้ที่เร่งการไล่ระดับสี (การตัดสินใจ)
พล็อตก่อนหน้าจะแนะนําสาระสําคัญของการเพิ่มการไล่ระดับสี แต่ตัวอย่างนี้ขาดการดําเนินการ 2 อย่างในชีวิตจริงดังนี้
- เนื้อหา
- การเพิ่มประสิทธิภาพค่า Leaf ด้วยขั้นตอนเดียวที่ Newton's
การย่อ
โมเดลที่หละหลวม $f_i$ จะคูณด้วยค่าขนาดเล็ก $\nu$ (เช่น $\nu = 0.1$) ก่อนที่จะเพิ่มลงในโมเดลที่แข็งแกร่ง $F_i$ ค่าขนาดเล็กนี้จะเรียกว่าการย่อ กล่าวคือ แทนที่จะใช้การทําซ้ําซ้ําๆ โดยใช้สูตรต่อไปนี้
\[ F_{i+1} = F_i - f_i \]
การทําซ้ําแต่ละครั้งจะใช้สูตรต่อไปนี้
\[ F_{i+1} = F_i - \nu f_i \]
การย่อขนาดแบบไล่ระดับสีคล้ายกับอัตราการเรียนรู้ในเครือข่ายระบบประสาท การย่อจะควบคุมความเร็วในการเรียนรู้ของโมเดลที่แข็งแกร่ง ซึ่งจะช่วยจํากัดความมากเกินไป กล่าวคือ ค่าการย่อขนาดที่ใกล้เคียงกับ 0.0 จะลดความมากเกินไป มากกว่าค่าการย่อขนาดที่ใกล้เคียงกับ 1.0 มาก
ในโค้ดข้างต้น การลดขนาดจะมีผลดังนี้
shrinkage = 0.1 # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions