ต้นไม้ตัดสินใจแบบไล่ระดับสี

การเพิ่มการจัดกลุ่มแบบไล่ระดับคือวิธีการที่ใช้กับอัลกอริทึมแมชชีนเลิร์นนิงอื่น การเพิ่มประสิทธิภาพการไล่ระดับสีอย่างไม่เป็นทางการมีอยู่ด้วยกัน 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

ใช้รหัสต่อไปนี้กับชุดข้อมูลต่อไปนี้

โครงกราฟของข้อมูลจากการสังเกตการณ์โดยตรงของฟีเจอร์หนึ่ง, x และป้ายกํากับ y พล็อตเรื่องเป็นคลื่นไซน์ที่ค่อนข้างรก

รูปที่ 25 ชุดข้อมูลแบบ Regression สังเคราะห์ที่มีฟีเจอร์ตัวเลข 1 รายการ

 

พล็อตกราฟ 3 แบบหลังจากอัลกอริทึมการเพิ่มความสว่างครั้งแรกมีดังนี้

พล็อต 3 เรื่อง พล็อตแรกจะแสดงการคาดคะเนของโมเดลที่แข็งแกร่ง ซึ่งเป็นเส้นตรงของความลาดชัน 0 และจุดตัดแกน Y พล็อตที่ 2 แสดงข้อผิดพลาดของโมเดลที่แข็งแรง ซึ่งเป็นชุดของคลื่นไซน์ พล็อตที่ 3 แสดงการคาดคะเนของโมเดลที่อ่อนแอ ซึ่งเป็นชุดของคลื่นสี่เหลี่ยมจัตุรัส

รูปที่ 26 พล็อตโฆษณา 3 รายการหลังจากการทําซ้ําครั้งแรก

 

หมายเหตุเกี่ยวกับพล็อตในรูปที่ 26:

  • พล็อตแรกแสดงการคาดคะเนของโมเดลที่มีประสิทธิภาพ ซึ่งปัจจุบันเป็น 0 เสมอ
  • พล็อตที่สองแสดงข้อผิดพลาด ซึ่งเป็นป้ายกํากับของโมเดลที่อ่อนแอ
  • พล็อตเรื่องที่ 3 แสดงรูปแบบที่อ่อน

รูปแบบที่อ่อนจุดแรกจะหมายถึงการนําเสนอป้ายกํากับแบบกว้างๆ คร่าวๆ และส่วนใหญ่แล้วจะอยู่ที่ด้านซ้ายของพื้นที่ฟีเจอร์ (ส่วนที่เป็นรูปแบบที่ใกล้เคียงที่สุด จึงเกิดจากข้อผิดพลาดที่ไม่ถูกต้องมากในรูปแบบที่ไม่ถูกต้อง)

ต่อไปนี้เป็นพล็อตเดียวกันสําหรับการทําอัลกอริทึมอีกรอบ

พล็อต 3 เรื่อง พล็อตแรกจะแสดงการคาดคะเนของโมเดลที่แข็งแรง ซึ่งคือผกผันของการคาดการณ์ของโมเดลที่อ่อนแอจากรูปก่อนหน้า พล็อตเรื่องที่ 2 แสดงข้อผิดพลาดของโมเดลแรงๆ ซึ่งเป็นชุดคลื่นเสียงดัง พล็อตที่ 3 แสดงการคาดคะเนของโมเดลที่อ่อนแอ
ซึ่งเป็นรูปคลื่นสี่เหลี่ยมจัตุรัส 2 รอบ

รูปที่ 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