31 ธ.ค. 2021 เวลา 03:00 • การศึกษา
Machine Hee-hee 101 EP5
Decision Tree EP 2
สวัสดีครับผู้อ่านทุกท่าน พรุ่งนี้ก็ปีใหม่แล้วนะครับ เสียดายจังหลายที่อดไม่ให้จัดงาน แต่ก็ดีแล้วครับเพราะเป็นการป้องกันการติดเชื้อ
สำหรับวันนี้เราจะใช้เนื้อหาจากบทความก่อน (Decision Tree EP1)
ดังนั้น ถ้าใครยังไม่ได้อ่านบทความก่อนหน้านี้ ผมขอแนะนำให้ย้อนกลับไปอ่านก่อนนะครับ เพราะเนื้อหามีความต่อเนื่องกัน
การสร้าง Decision Tree
สมมุติผมให้ข้อมูล หรือ Data Set มาแบบนี้นะครับ
ข้อมูลเกี่ยวกับการออกไปเล่น Tennis ใน 14 วันที่ผ่านมา
เราจะนำ Data Set นี้หาการทำนายว่าเราควรออกไปเล่น Tennis ข้างนอกไหมจากการใส่ข้อมูลเข้าไป
เราจะหาค่า Gain ของแต่ละ Feature
เพื่อหา Feature ที่สามารถแยกการทำนายผลลัพธ์ได้ (ลดการปะปนข้อมูล)
และ เราต้องหาทุก ๆ Feature
สูตรของ Gain
โดย S คือข้อมูล Data Set ทั้งหมด และ Sv คือ แต่ละประเภท V ใน Feature A
เราจะหาค่า Gain ของแต่ละ Feature กัน โดยเราจะมี step 3 step
Step1 : หา Gini(S) ของข้อมูลทั้งหมด
เนื่องจากทุก ๆ Feature จะใช้ Gini(S) เหมือนกัน ดังนั้นเราต้องหาค่านี้ก่อน
สูตร
โดย Pi คือสัดส่วนข้อมูลในแต่ละ Class/Label/ผลลัพธ์
ในที่นี้ Class -> columns: Decision จะมีอยู่ 2 ประเภทคือ Yes = 9 และ No 5
เราสามารถนำมาคำนวณได้ดังนี้
9/14 คือสัดส่วนของ Yes และ 5/14 คือสัดส่วนของ No
Step 2 หา Gain ของแต่ละ Feature -> Gain(S,A)
เราจะหา Gain(S,A) ทั้งหมดดังนี้
  • 1.
    Gain(S, Outlook)
  • 2.
    Gain(S, Temp)
  • 3.
    Gain(S, Humidity)
  • 4.
    Gain(S, Wind)
โดยผมจะทำเฉพาะ Gain(S, Temp) และ Gain(S, Outlook)
เพื่อน ๆ ลองทดลองคำนวณที่เหลือด้วยตนเองนะครับ (ไม่ยาก)
โดยสูตรการคำนวณ Gain(S, Outlook) ทำได้ดังนี้ครับ
Note :
  • Soc -> S ของ Overcast ใน feature Outlook
  • Sr -> S ของ Rain ใน feature Outlook
  • Ss -> S ของ Sunny ใน feature Outlook
Step 2.1 หา |S..|/|S|
Value Overcast ใน Outlook มี 4 ค่า
Value Rain ใน Outlook มี 5 ค่า
Value Sunny ใน Outlook มี 5 ค่า
|Soc|/|S| หมายถึงสัดส่วนที่เป็น Overcast ใน Feature Outlook ในที่นี้เป็น 4/14
|Sr|/|S| หมายถึงสัดส่วนที่เป็น Rain ใน Feature Outlook = 5/14
|Ss|/|S| หมายถึงสัดส่วนที่เป็น Sunny ใน Feature Outlook = 5/14
Step 2.2 หา Gini(Soc), Gini(Sr), Gini(Ss)
Gini(Soc)
เราะใช้สัดส่วน Overcast และ ผลลัพธ์ เป็น Yes หรือ No
Outlook == Overcast and Class == Yes or No
4/4 หมายถึง Overcast ที่เป็น Yes ต่อข้อมูลที่เป็น Overcast ทั้งหมด
0/4 หมายถึง Overcast ที่เป็น No ต่อข้อมูลที่เป็น Overcast ทั้งหมด
นั้นหมายความว่า ประเภท Overcast ใน Outlook ที่เป็น No ไม่มีในข้อมูล
Gini(Sr)
Outlook == Rain and Class == Yes or No
Gini(Ss)
Outlook == Sunny and Class == Yes or No
Step 2.3 เอาค่าที่ได้จาก 2.1 และ 2.2 มารวมกัน
Gain(S, Outlook) = 0.11
Step 3 เราจะหา Gain Ratio ของทุก ๆ โดยใช้ Gain ที่เราได้มาจาก Step 2
Note: หากทุกคนยังจำได้ เราจะรู้ว่าการตัดสินใจในการเลือก Feature จากค่า Gain สามารถทำได้ 2 วิธีคือ ID3 และ C4.5
โดย ID3 จะใช้ ค่า Gain ที่มากที่สุด และ C4.5 จะใช้ Gain Ratio
ในที่นี้เราจะใช้ Gain Ratio มาเป็นตัวตัดสิน
โดยสูตรของ Gain Ratio
|Sv|/|S| ของแต่ละ Feature เราได้หามาแล้ว
GainRatio(S, Outlook)
  • |Soc|/|S| หมายถึงสัดส่วนที่เป็น Overcast ใน Feature Outlook ในที่นี้เป็น 4/14
  • |Sr|/|S| หมายถึงสัดส่วนที่เป็น Rain ใน Feature Outlook = 5/14
  • |Ss|/|S| หมายถึงสัดส่วนที่เป็น Sunny ใน Feature Outlook = 5/14
ดังนั้นเราสามารถคำนวณ Split Information และ Gain Ratio ได้
Note : ทุกๆ Feature ใช้ Step ตามนี้ทั้งหมด
ตอนนี้เราก็ได้ค่า Gain และ Gain Ratio ของ Feature Outlook แล้วนะครับ
ซึ่งเราจะต้องหา Gain และ Gain Ratio ของ Feature Temp, Humidity และ Wind
ตอนนี้ผมว่าทุกคนคงสงสัยแล้วว่า เราจะหา Columns ของ Temp และ Humidity ยังไง เพราะมันเป็นตัวเลข
คำตอบคือเราจะหาค่าเฉลี่ยของ Columns ที่เป็นตัวเลขนั้น ๆ เพื่อทำการจัดแบ่งค่าที่น้อยกว่าหรือมากกว่าเท่ากับค่าเฉลี่ย
คราวหน้าผมจะมาทำ feature ที่เป็นประเภทตัวเลขกันครับ ส่วนครั้งนี้ผมขอฝากให้ทุกคนลองหาค่าของ Wind ก่อนนะครับ
ถ้าใครได้ค่าที่ไม่เท่ากับผมแต่ใกล้เคียงก็ไม่ต้องเป็นห่วงนะครับ
เพราะผมปัดเศษส่วนให้เหลือทศนิยม 2 ตำแหน่ง
การทำแบบนี้จะทำให้คำนวณง่ายขึ้นแต่ค่าที่แท้จริงจะคลาดเคลื่อนตาม
แต่เนื่องจากผมต้องการให้รู้ถึงหลักการ ดังนั้นไม่ต้องกังวลไปครับ
วันนี้ก็มีเพียงเท่านี้ครับ หากมีข้อสงสัยหรือเพิ่มเติมสามารถคอมเม้น หรือส่งข้อความมาได้ในนี้ หรือเพจ FB นะครับ สำหรับวันนี้สวัสดีครับ

ดูเพิ่มเติมในซีรีส์

โฆษณา