ข้ามไปยังเนื้อหาหลัก

Random Forest Regression: คู่มือฉบับสมบูรณ์

การทำงานของ Random Forest Regression ข้อจำกัด วิธีประเมิน ปรับแต่ง และตีความ พร้อมตัวอย่าง Python และกรอบงานเปรียบเทียบโมเดล
อัปเดตแล้ว 17 มิ.ย. 2569  · 12 นาที อ่าน

Random Forest Regression เป็นหนึ่งในวิธีที่น่าเชื่อถือที่สุดในการทำแบบจำลองข้อมูลตารางแบบไม่เชิงเส้น โดยต้องตั้งค่าเพียงเล็กน้อย ช่วยให้ได้โมเดลที่ใช้งานได้อย่างรวดเร็ว แม้ข้อมูลจะมีสัญญาณรบกวนหรือความสัมพันธ์ไม่ชัดเจน

คู่มือนี้จะพาคุณผ่านเวิร์กโฟลว์ครบถ้วนของ Random Forest Regression คุณจะเข้าใจกลไกของอัลกอริทึมและสามารถใช้งานด้วย Python เราจะพูดคุยถึงเทคนิคการประเมินผลและการปรับจูนเพื่อให้ได้ประสิทธิภาพที่ดีขึ้น

Random Forest Regression คืออะไร?

การถดถอยแบบ Random forest เป็นเทคนิคเอนเซมเบิลที่สร้างต้นไม้ตัดสินใจแบบสุ่มหลายต้นและผสานผลลัพธ์เพื่อให้ได้ค่าพยากรณ์แบบต่อเนื่อง แทนที่จะพึ่งโมเดลเดียว จะรวมการทำนายจากหลายต้นไม้ โดยปกติด้วยการหาเฉลี่ยของผลลัพธ์

Random Forest Regression

ทำไมต้องหลายต้นไม้? ต้นไม้ตัดสินใจเพียงต้นเดียวมักจะโอเวอร์ฟิต มันจับทั้งสัญญาณรบกวนและสัญญาณจริง โดยเฉพาะเมื่อทำงานกับข้อมูลจริงที่ยุ่งเหยิง

Bootstrap aggregating และการสุ่มคุณลักษณะ

จุดแข็งของ Random Forest Regression มาจากการใส่ความสุ่มในแต่ละขั้นตอน แล้วรวมผลลัพธ์เพื่อลดความแปรปรวน มาดูกลไกภายในนี้กัน

Bootstrap aggregating หรือ bagging จะฝึกต้นไม้แต่ละต้นด้วยชุดย่อยแบบสุ่มของข้อมูล วิธีนี้สร้างความหลากหลายระหว่างต้นไม้และลดความเสี่ยงของการโอเวอร์ฟิต

การสุ่มคุณลักษณะเพิ่มความหลากหลายอีกชั้น โดยเลือกคุณลักษณะย่อยแบบสุ่มในแต่ละครั้งที่แยกโหนด ทั้งสองเทคนิคร่วมกันช่วยทำให้การทำนายเสถียรและเพิ่มความสามารถในการทั่วไป

การสุ่มตัวอย่างแบบบูตสแตรปและการสุ่มคุณลักษณะ

Random Forest เริ่มจากการสุ่มตัวอย่างแบบบูตสแตรป หรือที่เรียกว่า bagging ต้นไม้แต่ละต้นจะถูกฝึกด้วยชุดย่อยที่สุ่มมาจากชุดข้อมูลดั้งเดิม ทำให้ต้นไม้เรียนรู้รูปแบบที่แตกต่างกันแทนที่จะมีโครงสร้างซ้ำกัน

โมเดลยังเพิ่มการสุ่มคุณลักษณะ โดยพิจารณาเพียงชุดย่อยของคุณลักษณะแบบสุ่มในแต่ละครั้งที่แยกโหนด แทนที่จะใช้ทุกคุณลักษณะที่มีอยู่ วิธีนี้ป้องกันไม่ให้คุณลักษณะเด่นเพียงไม่กี่ตัวครอบงำทุกต้นไม้

เมื่อรวม bagging และการสุ่มคุณลักษณะเข้าด้วยกัน จะได้ชุดต้นไม้ที่ไม่สัมพันธ์กัน ทำให้เกิดข้อผิดพลาดคนละแบบ และเมื่อรวมกัน การทำนายจะหักล้างสัญญาณรบกวนและเพิ่มความแม่นยำโดยรวม

การขยายต้นไม้และการรวมการทำนาย

ต้นไม้แต่ละต้นในป่าจะเติบโตลึก มักไม่ตัดแต่งกิ่ง เพื่อให้โมเดลจับรูปแบบที่ซับซ้อน ปฏิสัมพันธ์ และความสัมพันธ์แบบไม่เชิงเส้นในข้อมูลได้

ต้นไม้แต่ละต้นอาจโอเวอร์ฟิต แต่ผลกระทบนั้นจะลดลงเมื่อ Random Forest รวมผลลัพธ์ของพวกมันเพื่อให้ได้ผลสุดท้าย

สมดุลระหว่างอคติและความแปรปรวน

Random Forest สร้างสมดุลระหว่างสองปัจจัยหลัก: ความแข็งแกร่งของต้นไม้แต่ละต้นและความหลากหลายของทั้งป่า

ต้นไม้ลึกมีอคติต่ำ เพราะสามารถฟิตกับข้อมูลฝึกได้ใกล้เคียง ขณะเดียวกัน ความสุ่มในการสุ่มตัวอย่างข้อมูลและการเลือกคุณลักษณะช่วยลดความสัมพันธ์ระหว่างต้นไม้ ด้วยการเฉลี่ยต้นไม้จำนวนมากที่มีอคติต่ำและความสัมพันธ์กันอ่อน โมเดลจึงลดความแปรปรวนโดยรวมได้โดยไม่เพิ่มอคติ

การเตรียมข้อมูลและเวิร์กโฟลว์การใช้งาน

ต่อไปจะนำแนวคิดไปใช้จริง และดูเทคนิคในการเปลี่ยนข้อมูลดิบให้เป็นโมเดล Random Forest ที่ใช้งานได้

การทำความสะอาดข้อมูลและการสร้างคุณลักษณะ

การเตรียมข้อมูลสำหรับ Random Forest มักเริ่มจากการจัดการตัวแปรเชิงหมวดหมู่

  • สำหรับหมวดหมู่จำนวนน้อย one-hot encoding ใช้งานได้ดีและเชื่อถือได้
  • สำหรับคุณลักษณะที่มีจำนวนหมวดหมู่สูง target encoding มักมีประสิทธิภาพกว่า เพราะจับสัญญาณระดับหมวดหมู่ได้โดยไม่เพิ่มมิติอย่างมีนัยสำคัญ

ถัดมาคือข้อมูลสูญหาย วิธีการขึ้นกับไลบรารีที่ใช้ บางการใช้งานสามารถจัดการค่าว่างได้โดยตรงระหว่างการแยกโหนด ขณะที่บางไลบรารีคาดหวังให้เติมค่าก่อน ในหลายกรณี การชดเชยค่าง่าย ๆ ด้วยมัธยฐานหรือโหมดก็เพียงพอ เนื่องจาก Random Forest ไม่พึ่งพาการแจกแจงที่เคร่งครัด วิธีตรงไปตรงมานี้จึงได้ผลดีในทางปฏิบัติ

ท้ายที่สุดแล้ว ผลกระทบที่ใหญ่กว่ามาจากการสร้างคุณลักษณะ ตัวอย่างเช่น ตัวแปรล่าช้า (lag) สร้างการพึ่งพาตามเวลา ค่ารวมแบบกลิ้ง (rolling) จับแนวโน้มเฉพาะช่วง และสถิติแบบจัดกลุ่ม เข้ารหัสรูปแบบระดับสูง คุณลักษณะที่สร้างขึ้นเหล่านี้ช่วยให้โมเดลแทนข้อมูลได้ดีขึ้นและเพิ่มประสิทธิภาพการพยากรณ์

หากต้องการเจาะลึก แนะนำให้อ่านบทความ Feature Engineering in Machine Learning ของฉัน

การตั้งค่าค่าอ้างอิงพื้นฐานและกลยุทธ์การแบ่งข้อมูล

ก่อนปรับจูนใด ๆ ขั้นแรกคือแบ่งข้อมูลให้ถูกต้อง

สำหรับปัญหาข้อมูลตารางทั่วไป โดยมากหมายถึงการแยกชุดข้อมูลเป็นชุดฝึก ชุดตรวจสอบความถูกต้อง และชุดทดสอบ เพื่อให้โมเดลถูกฝึกบนส่วนหนึ่ง ปรับจูนบนอีกส่วนหนึ่ง และประเมินบนส่วนสุดท้ายที่ไม่ถูกแตะต้อง

การแยกเช่นนี้สำคัญเพราะให้ภาพที่สมจริงว่าโมเดลจะทำงานอย่างไรกับข้อมูลใหม่

Train-Test Split vs Walk-Forward Validation

สำหรับอนุกรมเวลา กลยุทธ์การแบ่งจะแตกต่างออกไป การแบ่งแบบสุ่มอาจทำให้ข้อมูลอนาคตไหลย้อนสู่ข้อมูลอดีต ทำให้ดูเหมือนประสิทธิภาพดีกว่าความเป็นจริง

Walk-forward validation หลีกเลี่ยงปัญหานี้ด้วยการฝึกบนช่วงเวลาเริ่มต้น ตรวจสอบบนช่วงถัดไป แล้วขยับหน้าต่างเวลาไปทีละก้าว การประเมินแบบนี้สอดคล้องกับวิธีใช้งานจริงในระบบโปรดักชัน

การเขียนโค้ด Python แบบครบเวิร์กโฟลว์

การใช้งานทำตามกระบวนการของ scikit-learn ที่เรียบง่าย:

  1. นำเข้าโมเดล
  2. แบ่งข้อมูล
  3. ฝึกตัวประมาณค่า (estimator)
  4. สร้างการพยากรณ์
  5. ประเมินผลลัพธ์

การตั้งค่าทั่วไปในทางปฏิบัติจะมีลักษณะดังนี้:

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, root_mean_squared_error
import matplotlib.pyplot as plt

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

mae = mean_absolute_error(y_test, y_pred)
rmse = root_mean_squared_error(y_test, y_pred)

เมื่อฝึกและประเมินโมเดลแล้ว ขั้นตอนถัดไปคือการสร้างภาพเปรียบเทียบค่าทำนายกับค่าจริง

สแคตเทอร์พล็อตช่วยให้มองเห็นอคติอย่างเป็นระบบได้ง่าย เช่น การทำนายที่มักเกินหรือขาดเป้าหมายเสมอ นอกจากนี้ยังช่วยเผยให้เห็นheteroscedasticity ซึ่งความคลาดเคลื่อนของการพยากรณ์จะกว้างขึ้นเมื่อค่าเป้าหมายเพิ่มขึ้น

การปรับจูนไฮเปอร์พารามิเตอร์และการประเมินผล

หลังจากฝึกโมเดลแล้ว ขั้นตอนต่อไปคือการปรับพารามิเตอร์สำคัญและประเมินประสิทธิภาพ ต่อไปนี้คือเทคนิคยอดนิยม

การเลือกและตีความเมตริกการถดถอย

Root mean squared error (RMSE), mean average error (MAE) และ R² วัดประสิทธิภาพต่างกัน

  • RMSE ลงโทษความผิดพลาดขนาดใหญ่หนักกว่า เพราะยกกำลังสองเศษเหลือ จึงเหมาะเมื่อความผิดพลาดใหญ่มีต้นทุนสูงและต้องลดให้เหลือน้อยที่สุด
  • MAE ปฏิบัติต่อความผิดพลาดทุกขนาดเท่าเทียมกัน จึงให้ภาพที่เสถียรกว่าเมื่อข้อมูลมีเอาต์ไลเออร์ หรือเมื่อค่าคลาดเคลื่อนเฉลี่ยสม่ำเสมอสำคัญกว่าความผิดพลาดที่พุ่งสูงเป็นครั้งคราว
  • วัดสัดส่วนความแปรปรวนของเป้าหมายที่โมเดลอธิบายได้ ช่วยเปรียบเทียบความพอดีโดยรวม แต่ไม่สะท้อนความคลาดเคลื่อนในการพยากรณ์โดยตรง

นอกเหนือจากเมตริกรวม การวิเคราะห์ความคลาดเคลื่อนให้ข้อมูลเชิงลึกมากขึ้น เศษเหลือ (residual) ซึ่งนิยามเป็นค่าต่างระหว่างค่าจริงกับค่าทำนาย ควรตรวจสอบในหลายช่วงของข้อมูล

การพล็อตเศษเหลือกับค่าทำนายหรือค่าเป้าหมายจริงช่วยเผยรูปแบบได้ เช่น หากความผิดพลาดเพิ่มเมื่อค่าเป้าหมายสูงขึ้น แสดงถึง heteroscedasticity หากการทำนายอยู่เหนือหรือต่ำกว่าเส้นทแยงมุมอย่างสม่ำเสมอ แสดงถึงอคติอย่างเป็นระบบ

การแบ่งวิเคราะห์ความผิดพลาดตามกลุ่มคุณลักษณะหรือช่วงค่าเป้าหมายยังช่วยระบุรูปแบบความล้มเหลวได้ เพราะโมเดลอาจทำได้ดีในค่าช่วงกลางแต่ยากในค่าที่สุดขั้ว หรือมีพฤติกรรมต่างกันในแต่ละกลุ่มข้อมูล

การประเมินแบบ out-of-bag (OOB)

Random Forest มีเครื่องมือประเมินในตัวผ่านการสุ่มตัวอย่างแบบ out-of-bag เนื่องจากต้นไม้แต่ละต้นฝึกบนตัวอย่างแบบบูตสแตรป ส่วนหนึ่งของข้อมูลจะถูกเว้นไว้และไม่ได้เห็นระหว่างการฝึก ตัวอย่าง out-of-bag เหล่านี้สามารถใช้ประเมินโมเดลได้โดยไม่ต้องสร้างชุดตรวจสอบแยกต่างหาก ซึ่งคะแนน OOB สะท้อนสิ่งนี้

OOB evaluation

อย่างไรก็ตาม การประเมินแบบ OOB อาจไม่เพียงพอเสมอไป สำหรับการยืนยันโมเดลขั้นสุดท้าย โดยเฉพาะในกรณีที่มีความเสี่ยงสูงหรือกังวลเรื่องข้อมูลรั่วไหล จำเป็นต้องมีชุดทดสอบแบบแยกเด็ดขาด

การจัดลำดับความสำคัญไฮเปอร์พารามิเตอร์ที่จะปรับจูน

ใน Random Forest พารามิเตอร์ max_features และ n_estimators มักส่งผลต่อประสิทธิภาพอย่างเห็นได้ชัดที่สุด

  • max_features ควบคุมจำนวนสูงสุดของคุณลักษณะที่พิจารณาในแต่ละการแยกโหนด ค่าที่ต่ำเพิ่มความสุ่มและลดความสัมพันธ์ระหว่างต้นไม้ ซึ่งอาจช่วยการทั่วไป ค่าสูงทำให้ต้นไม้แต่ละต้นแข็งแรงขึ้นแต่คล้ายกันมากขึ้น ซึ่งอาจเพิ่มความแปรปรวน

  • n_estimators ควบคุมจำนวนต้นไม้ในป่า การเพิ่มจำนวนโดยทั่วไปช่วยให้ผลลัพธ์ดีขึ้นด้วยการทำให้การทำนายเสถียรขึ้น แต่ก็เพิ่มเวลาในการคำนวณ เกินจุดหนึ่งผลกำไรจะน้อยมาก จึงควรระบุจุดอิ่มตัวนั้น

ควรปรับพารามิเตอร์เหล่านี้ด้วยการตรวจสอบแบบไขว้ เพื่อสร้างสมดุลระหว่างความซับซ้อนของโมเดล เวลาในการฝึก และประสิทธิภาพในการพยากรณ์

ความสำคัญของคุณลักษณะและการตีความ

โมเดล Random Forest มักถูกมองว่าเป็นกล่องดำ แต่มีหลายวิธีในการทำความเข้าใจว่าแต่ละคุณลักษณะมีอิทธิพลต่อการทำนายอย่างไร มาดูวิธีสำคัญบางประการ

ความสำคัญตามความไม่บริสุทธิ์ (impurity-based)

Random Forest คำนวณความสำคัญของคุณลักษณะด้วยค่า Mean Decrease in Impurity (MDI) ทุกครั้งที่ใช้คุณลักษณะเพื่อแยกโหนด โมเดลจะวัดว่าการแยกนั้นลดความไม่บริสุทธิ์ได้เท่าใด เช่น ความแปรปรวนในงานถดถอย การลดลงเหล่านี้จะถูกรวมสะสมข้ามทุกต้นไม้ เป็นคะแนนสะท้อนการมีส่วนช่วยของคุณลักษณะต่อการพยากรณ์ที่ดีขึ้น

แม้วิธีนี้จะรวดเร็วและมีอยู่ในโมเดล แต่มีข้อจำกัดที่ทราบกัน คือ MDI มักเอนเอียงไปทางคุณลักษณะเชิงต่อเนื่องหรือเชิงหมวดหมู่ที่มีค่าจำแนกจำนวนมาก เพราะมีจุดแยกที่เป็นไปได้มากกว่า ซึ่งอาจทำให้คะแนนความสำคัญสูงเกินจริง แม้ไม่ได้ทำนายได้ดีกว่าจริง ๆ

Permutation importance

Permutation importance วัดการเปลี่ยนแปลงของประสิทธิภาพเมื่อสุ่มสลับค่าของคุณลักษณะหนึ่ง ๆ ในชุดข้อมูลที่กันไว้ หากการสลับทำให้ประสิทธิภาพลดลงอย่างมีนัยสำคัญ คุณลักษณะนั้นก็สำคัญ หากผลกระทบเล็กน้อย แสดงว่าคุณลักษณะนั้นมีคุณค่าการพยากรณ์จำกัด

วิธีนี้สะท้อนพฤติกรรมของโมเดลจริง จึงน่าเชื่อถือกว่าในการวิเคราะห์

อย่างไรก็ตาม คุณลักษณะที่มีความสัมพันธ์กันทำให้การตีความซับซ้อน เมื่อสองคุณลักษณะบรรทุกข้อมูลคล้ายกัน การสลับค่าหนึ่งอาจไม่กระทบประสิทธิภาพมากนัก เพราะอีกตัวให้สัญญาณแทนได้ ส่งผลให้ความสำคัญถูกเฉลี่ยข้ามคุณลักษณะที่สัมพันธ์กัน ซึ่งต้องตีความอย่างระมัดระวัง

ค่า SHAP

ค่า SHAP (Shapley Additive Explanations) อธิบายว่าคุณลักษณะแต่ละตัวมีส่วนต่อการทำนายรายกรณีมากน้อยเพียงใด โดยกำหนดค่าที่บอกว่าคุณลักษณะนั้นผลักการทำนายให้สูงหรือต่ำกว่าค่าอ้างอิงเท่าไร

วิธีนี้มักใช้เพื่ออธิบายการตัดสินใจของโมเดลและสร้างความเชื่อมั่น หากต้องการดูรายละเอียดเพิ่มเติม โปรดอ่านบทความ SHAP Values in Machine Learning

ข้อจำกัดและกรณีที่มักล้มเหลว

Random Forest Regression ใช้งานได้ดีในหลายสถานการณ์ แต่ก็มีข้อจำกัดชัดเจน การเข้าใจข้อจำกัดเหล่านี้ช่วยตัดสินใจว่าเมื่อใดควรใช้ และเมื่อใดควรเปลี่ยนวิธี

ขีดจำกัดการคาดเกินช่วง (extrapolation) และกรณีขอบเขต

Random Forest ไม่สามารถคาดเกินช่วงค่าที่พบในข้อมูลฝึกได้

ต้นไม้แต่ละต้นทำนายจากการแยกโหนดที่เห็นระหว่างการฝึก ดังนั้นผลสุดท้ายจึงถูกจำกัดด้วยค่าต่ำสุดและค่าสูงสุดของเป้าหมายที่พบในชุดข้อมูล หากโมเดลเห็นค่าเป้าหมายเพียงระหว่าง 10 ถึง 100 ก็จะไม่สามารถทำนาย 120 ได้ ไม่ว่าค่าสัญญาณขาเข้าจะแรงเพียงใด ปัญหานี้เด่นชัดในงานคาดการณ์การเติบโตหรือระบบที่ขับเคลื่อนด้วยแนวโน้ม

โมเดลยังทำงานยากกับข้อมูลมิติสูงแบบเบาบางมาก เช่น ตัวแทนข้อความ หรือเวกเตอร์ one-hot ที่มีหลายพันคอลัมน์ ในกรณีนี้ต้นไม้ไม่มีประสิทธิภาพและไม่สามารถจับการแยกที่มีความหมาย ทางออกที่ใช้ได้จริง ได้แก่

การแลกเปลี่ยนด้านการตีความ

ต้นไม้เดี่ยวให้เส้นทางชัดเจนจากอินพุตสู่เอาต์พุต จึงอธิบายได้ง่าย ในทางกลับกัน ป่าซึ่งรวมต้นไม้นับร้อยเข้าด้วยกัน ทำให้ยากที่จะไล่ตามการตัดสินใจแต่ละต้น

ในสภาพแวดล้อมที่มีข้อกำกับเข้มงวด ประเด็นนี้สำคัญ หากคำอธิบายต้องเรียบง่ายและไล่ตามได้โดยตรง ต้นไม้เดี่ยวหรือโมเดลเชิงเส้นอาจเหมาะกว่า หากให้ความสำคัญกับประสิทธิภาพ และยอมรับคำอธิบายผ่านวิธีอย่างความสำคัญของคุณลักษณะหรือ SHAP ได้ Random Forest ก็ยังเป็นตัวเลือกที่แข็งแกร่ง

ข้อจำกัดด้านคอมพิวต์ หน่วยความจำ และเวลาแฝง

Random Forest สเกลตามเชิงเส้นกับจำนวนต้นไม้และขนาดข้อมูล เมื่อชุดข้อมูลใหญ่ขึ้น เวลาในการฝึกและการใช้หน่วยความจำจะเพิ่มขึ้น เพราะต้องสร้างและเก็บต้นไม้แต่ละต้น ป่าขนาดใหญ่ยังทำให้การอนุมานช้าลง เนื่องจากต้องรวมผลจากต้นไม้ทั้งหมด

ในระบบโปรดักชันที่จำกัดเวลาแฝงหรือค่าใช้จ่าย ประเด็นนี้อาจเป็นคอขวด การลดจำนวนต้นไม้ จำกัดความลึกของต้นไม้ หรือจำกัดจำนวนคุณลักษณะที่พิจารณาในแต่ละการแยกโหนด ช่วยควบคุมการใช้ทรัพยากรได้ ซึ่งเป็นการแลกความแม่นยำบางส่วนกับเวลาในการฝึกและทำนายที่เร็วขึ้น

Random Forest Regression เทียบกับทางเลือกอื่น: เลือกอย่างไร

อาจสงสัยว่า Random Forest Regression เหมาะกับกรณีใช้งานของคุณหรือไม่ หรือควรพิจารณาทางเลือกใด

การสร้างกรอบเปรียบเทียบโมเดล

กรณีใช้งานแตกต่างกัน แต่แนวทางหนึ่งที่ช่วยได้เสมอคือ เปรียบเทียบประสิทธิภาพของโมเดลต่าง ๆ (เช่น การถดถอยเชิงเส้น support vector regression การบูสต์แบบไล่ระดับ ฯลฯ) บนชุดข้อมูลเดียวกัน ควบคู่กับ Random Forest Regressor

นั่นคือใช้ชุดฝึก ชุดตรวจสอบ และชุดทดสอบชุดเดียวกันทุกโมเดล จากนั้นประเมินภายใต้เกณฑ์ความผิดพลาดและสมมติฐานทางธุรกิจเดียวกัน

Random forest regression เทียบกับการถดถอยเชิงเส้นและ support vector regression

Random Forest และการถดถอยเชิงเส้น แก้ปัญหาคนละแบบ การถดถอยเชิงเส้นเหมาะที่สุดเมื่อความสัมพันธ์ระหว่างอินพุตกับเป้าหมายส่วนใหญ่เป็นเชิงเส้น และต้องการสัมประสิทธิ์ที่อธิบายง่าย นอกจากนี้ยังเหมาะกว่าเมื่อการคาดเกินช่วงที่เคร่งครัดสำคัญ เพราะสามารถขยายเกินช่วงเป้าหมายที่สังเกตได้

ตรงกันข้าม Random Forest เก่งเรื่องรูปแบบไม่เชิงเส้น ปฏิสัมพันธ์ของคุณลักษณะ และขอบเขตที่ไม่ปกติ จึงเป็นเครื่องมือทำแบบจำลองที่แข็งแรงสำหรับระบบจริงที่ซับซ้อน แต่เป็นตัวเลือกที่อ่อนกว่าในงานพยากรณ์ที่พึ่งพาแนวโน้มหนัก ๆ

Support vector regression (SVR) อยู่ในอีกมุมหนึ่ง มักทำงานได้ดีบนชุดข้อมูลขนาดเล็ก แต่ไวต่อการสเกลคุณลักษณะมากกว่าและต้องปรับจูนอย่างระมัดระวัง Random Forest ไม่พึ่งอินพุตที่ทำมาตรฐาน จึงใช้ง่ายกว่าในเวิร์กโฟลว์ข้อมูลตารางทั่วไป

SVR เป็นตัวเลือกที่แข็งแรงเมื่อชุดข้อมูลกะทัดรัดและพื้นที่คุณลักษณะจำกัด แต่จะดูแลง่ายน้อยลงเมื่อปริมาณข้อมูล ความซับซ้อนของคุณลักษณะ หรือแรงกดดันด้านการปฏิบัติงานเพิ่มขึ้น

Random forest regression เทียบกับการบูสต์แบบไล่ระดับและต้นไม้เดี่ยว

Random Forest สร้างต้นไม้อย่างอิสระและเฉลี่ยผลลัพธ์ Gradient boosting สร้างต้นไม้อย่างมีลำดับ โดยแต่ละต้นแก้ข้อผิดพลาดของต้นก่อนหน้า

วิธีการบูสต์แบบไล่ระดับ เช่น XGBoost มักทำได้แม่นยำกว่า โดยเฉพาะกับข้อมูลตารางที่มีโครงสร้าง แต่ต้องปรับจูนมากกว่าและไวต่อไฮเปอร์พารามิเตอร์มากกว่า อีกทั้งฝึกช้ากว่าเพราะมีลำดับขั้น Random Forest ฝึกง่ายกว่า เสถียรกว่าโดยไม่ต้องจูนมาก และไวต่อการตั้งค่าน้อยกว่า

เมื่อเทียบกับต้นไม้เดี่ยว Random Forest เสถียรและแม่นยำกว่ามาก ต้นไม้เดี่ยวตีความง่ายเพราะไล่ตามเส้นทางการตัดสินใจได้ทุกขั้น แต่ไวต่อการเปลี่ยนแปลงเล็กน้อยของข้อมูลอย่างมาก Random Forest ลดความไม่เสถียรนี้ด้วยการเฉลี่ยข้ามหลายต้นไม้ แต่ก็สูญเสียความสามารถในการตีความโดยตรง

สรุปการเปรียบเทียบโมเดล

โมเดล

รับมือความไม่เชิงเส้น

คาดเกินช่วง (Extrapolation)

การตีความ

ความซับซ้อนในการจูน

ต้นทุนการฝึก

Random Forest Regression

แข็งแกร่ง

อ่อน

ปานกลาง

ปานกลาง

ปานกลาง

การถดถอยเชิงเส้น

อ่อนไปจนถึงปานกลาง

แข็งแกร่ง

สูง

ต่ำ

ต่ำ

Support Vector Regression

แข็งแกร่ง

อ่อนไปจนถึงปานกลาง

ต่ำ

สูง

สูง (เมื่อข้อมูลใหญ่)

Gradient Boosting (XGBoost)

แข็งแกร่งมาก

อ่อน

ต่ำถึงปานกลาง

สูง

สูง

ต้นไม้ตัดสินใจเดี่ยว

ปานกลาง

อ่อน

สูง

ต่ำ

ต่ำ

ข้อคิดส่งท้าย

Random Forest Regression เหมาะเป็นโมเดลตั้งต้นเมื่อข้อมูลยุ่ง ความสัมพันธ์ไม่เชิงเส้น และต้องการฐานที่แข็งแรงโดยไม่ต้องพรีโปรเซสซิงหนัก รองรับคุณลักษณะแบบผสม จับปฏิสัมพันธ์ และให้ประสิทธิภาพที่เสถียรด้วยการตั้งค่าน้อย

เวิร์กโฟลว์ทั่วไปดำเนินไปอย่างชัดเจน เริ่มจากการพรีโปรเซสซิงขั้นต่ำและโฟกัสที่โครงสร้างข้อมูลให้ถูกต้อง สร้างค่าอ้างอิงพื้นฐานด้วยโมเดล Random Forest ค่าเริ่มต้น และประเมินด้วยเมตริกที่สอดคล้องกัน จากนั้นปรับจูนไฮเปอร์พารามิเตอร์สำคัญอย่างจำนวนต้นไม้และกลยุทธ์สุ่มคุณลักษณะเพื่อยกระดับประสิทธิภาพ

เมื่อโมเดลนิ่งแล้ว ดำดิ่งสู่การประเมินเชิงลึกด้วยการวิเคราะห์เศษเหลือ แบ่งช่วงความผิดพลาด และใช้ SHAP เพื่ออธิบายการทำนายเมื่อจำเป็น

ขั้นตอนถัดไป เพื่อความเข้าใจเชิงลึกและการลงมือปฏิบัติ ลองดูคอร์ส Machine Learning with Tree-Based Models in Python

Random Forest Regression คำถามที่พบบ่อย

ข้อจำกัดของโมเดล Random Forest มีอะไรบ้าง?

Random Forest ไม่สามารถคาดเกินช่วงค่าของข้อมูลฝึก และอาจมีปัญหากับข้อมูลมิติสูงที่เบาบางมาก นอกจากนี้ยังตีความได้น้อยกว่าต้นไม้เดี่ยว และอาจใช้ทรัพยากรคำนวณมากขึ้นตามจำนวนต้นไม้ที่เพิ่มขึ้น

จะรู้ได้อย่างไรว่ารุ่น Random Forest ของฉันโอเวอร์ฟิต?

เปรียบเทียบผลการฝึกกับผลการตรวจสอบ หากความผิดพลาดบนชุดฝึกต่ำ แต่บนชุดตรวจสอบสูงกว่ามาก แสดงว่าโมเดลกำลังโอเวอร์ฟิต นอกจากนี้ หากเพิ่มความลึกของต้นไม้แล้วเมตริกบนชุดตรวจสอบไม่ดีขึ้น ก็เป็นสัญญาณเช่นกัน

XGBoost หรือ Random Forest ดีกว่ากัน?

โดยทั่วไป XGBoost ได้ความแม่นยำสูงกว่า เพราะสร้างต้นไม้อย่างมีลำดับและแก้ข้อผิดพลาดในแต่ละขั้น เหมาะเมื่อสามารถลงทุนเวลาในการปรับจูนไฮเปอร์พารามิเตอร์ได้ ส่วน Random Forest สร้างต้นไม้อย่างอิสระและเฉลี่ยการทำนาย ทำงานได้เสถียรกว่า ต้องจูนน้อยกว่า และเหมาะเป็นค่าอ้างอิงพื้นฐาน

Random Forest จัดการข้อมูลอนุกรมเวลาได้หรือไม่?

ไม่รองรับโดยตรง ต้องแปลงอนุกรมเวลาเป็นรูปแบบตารางก่อน โดยใช้คุณลักษณะแบบ lag ค่าสถิติเคลื่อนที่ หรือการแปลงแบบหน้าต่างเวลา แล้วจึงฝึกโมเดล

หัวข้อ

คอร์สแมชชีนเลิร์นนิงยอดนิยม

Tracks

นักวิทยาศาสตร์การเรียนรู้ของเครื่อง ใน Python

85 ชม.
ค้นพบการเรียนรู้ของเครื่องด้วย Python และมุ่งสู่การเป็นนักวิทยาศาสตร์การเรียนรู้ของเครื่อง สำรวจการเรียนรู้แบบมีผู้สอน การเรียนรู้แบบไม่มีผู้สอน และการเรียนรู้เชิงลึก
ดูรายละเอียดRight Arrow
เริ่มหลักสูตร
ดูเพิ่มเติมRight Arrow