Monday, September 7, 2015

Ensemble method

วันนี้จะมาแนะนำเทคนิคของ advanced machine learning model ที่ช่วยทำให้ประสิทธิภาพการทำนายผล (prediction performance) ดียิ่งขึ้นไปอีก

Ensemble เป็นการสร้างหลายๆ model จาก data ชุดเดียวกัน แล้วนำผลลัพธ์ที่ได้จากหลายๆ model มารวมกัน(combined) อาจะเป็นด้วยวิธีหาค่าเฉลี่ย (averaging) หรือดูจากเสียงข้างมากเป็นหลัก (majority vote)

อัลกอริทึมที่พัฒนาบน concept ของ Ensemble และถูกใช้กันมาก มีดังนี้

1. Bagging Tree คำว่า  Bagging ย่อมาจาก Bootstrap Aggregation โดย bagging tree นี้ จะทำการสร้าง หลายๆ subset แบบสุ่มจาก train data  แล้วแต่ละชุดจะถูกเรียนรู้ด้วย Tree  ผลลัพธ์ที่ได้คือ จะได้ Tree ที่หลากหลาย เนื่องจากเรียนรู้จากชุดข้อมุลแบบสุ่ม (random subset)
ข้อดี 

  • ค่า variance จะลดลงทันที (Precision เพิ่มขึ้น) เนื่องจากค่าทำนายที่ได้จากแต่ละ Tree จะถูกเฉลี่ย  อาจสรุปได้ว่ายิ่งสร้าง Tree มาก  ค่า variance ก็ยิ่งลดลง 

ข้อเสีย

  • ยังคงมีค่า bias อยู่ ซึ่งแก้โดยเพิ่ม depth ของ Tree 


2. Random Forest  พูดง่ายคือ Bagging Tree + Random Attribute Subsets ซึ่งตอนสร้าง random subset แทนที่จะรวม attribute ทั้งหมดใน random subset ตัว attribute จะถูก Random ด้วย
ข้อดี

  • ลดค่า correlation ระหว่าง Tree ได้ เนื่องจาก function Random Attribute Subsets

ข้อเสีย เหมือนกับ Bagging Tree

3. Gradient Boosting Tree (GBT) จะแตกต่างกับสอง model ข้างบนตรงที่ การสร้างแต่ละ Tree จะเป็นแบบ Sequence โดย input แต่ละ Tree จะเป็น output จาก Tree ก่อนหน้า  โดย concept คือ GBT จะทำการสร้างแต่ละ Tree เพื่อลดค่า error ที่เกิดจาก Tree ก่อนหน้า โดยวิธี Gradient Descend

Y(actual) = Y(predict) + Error< - (สร้าง Tree เพื่อ predict Error)

แล้วนำผลลัพธ์ที่ได้มารวมกัน ก็จะทำให้ได้ค่าใกล้เคียงกับ Y(actual)

ข้อดี
  • bias และ variance ลดลง เนื่องจาก Error ถูกแก้ไข
  • แค่ depth ของ tree = 1  ก้เพียงพอที่จะได้ค่า performance ที่ดีขึ้นมาก เมื่อเทียบกับ Bagging Tree และ Random forest ที่ต้องเพิ่ม depth มากขึ้น เพื่อให้ได้ performance ที่ใกล้เคียง
ข้อเสีย
  • มีค่า parameter หลายตัวที่ต้อง tune เพื่อให้ได้ค่า performance ที่ดี และเลี่ยงการเกิด over-fitting 



No comments:

Post a Comment