มารู้จักกับ Supervised Learning Algorithm เบื้องต้น (PART 1)

Pitchaya Thipkham
ConvoLab
Published in
3 min readJan 22, 2020

สวัสดีค่ะผู้อ่านทุกท่าน สืบเนื่องจากบทความที่แล้วที่ Convolab Team ได้อธิบายเรื่อง Machine Learning เบื้องต้นเอาไว้

สำหรับบทความนี้เราจะมาพูดถึง Algorithm เบื้องต้นที่ควรรู้จัก ใน Supervised Learning กันค่ะ จากบทความที่แล้วเราทราบว่า Supervised Learning จะแบ่งออกเป็น 2 ประเภทด้วยกันคือ 1) Classification ซึ่งก็คือการจำแนกข้อมูล และ 2) Statistic Regression คือการหาความสัมพันธ์ของข้อมูล

Supervised Learning ก็จะมี Algorithm ที่นำมาใช้งานอยู่บ่อยๆ หลายตัวด้วยกันสำหรับ Supervised Learning Algorithm เบื้องต้นที่พูดถึงในบทความนี้ ได้แก่

  1. Decision Tree
  2. Support Vector Machine
  3. K-Nearest Neighbors (KNN)

แต่ก่อนที่เราจะไปดูกันว่าแต่ละตัวทำงานอย่างไร เราต้องมารู้จักคำว่า Feature หรือ Attribute กันก่อน

Feature หรือ Attribute คือลักษณะของข้อมูลที่จะนำมาให้ตัว Machine หรือ Computer ของเราเรียนรู้นั่นเอง หากจะให้เห็นภาพง่ายขึ้น เราลองมาดูตัวอย่างกันค่ะ

ลักษณะของ Data สำหรับใช้สอน Machine

Data ในรูปด้านบนคือ ข้อมูลสภาพอากาศทั้งหมด 14 วันย้อนหลัง จากในกรอบสีแดงเราจะเรียกส่วนนี้ว่า Feature ซึ่งจะเป็นลักษณะของอากาศในแต่ละวัน โดยในข้อมูลชุดนี้จะมีทั้งหมด 4 Feature คือ outlook, temperature, humidity และ windy ซึ่งในแต่ละ Feature จะแบ่งออกเป็นหลายค่า ดังนี้

  • outlook เป็นออกเป็น 3 ค่าคือ sunny, overcast และ rainy
  • temperature แบ่งออกเป็น 3 ค่าคือ hot, mild และ cool
  • humidity แบ่งออกเป็น 2 ค่าคือ high และ normal
  • windy แบ่งออกเป็น 2 ค่าคือ TRUE และ FALSE

และในกรอบสีเขียว คอลัมน์นี้เราจะเรียกว่า Class ซึ่งได้กล่าวถึงไปในบทความที่แล้วใน data ชุดนี้มี 2 ค่า คือ Yes และ No

จนถึงตอนนี้ผู้อ่านก็จะเข้าใจลักษณะของข้อมูลที่เราจะนำมาสอนตัว Machine หรือเครื่องคอมพิวเตอร์ของเราแล้ว เรามาเข้าเรื่อง Algorithm ตัวแรกกันเลยค่ะ

Decision Tree

Decision tree อาจจะแปลตรงๆได้ว่า “ต้นไม้ตัดสินใจ” หรือเดาความหมายได้ว่า เป็นการตัดสินใจแบบใช้ต้นไม้ คือการแตกกิ่งออกไปเรื่อยๆ จนกลายเป็นใบ เหมือนกับที่แสดงในภาพด้านล่างนี้

ที่มา https://www.hackerearth.com/practice/machine-learning/machine-learning-algorithms/ml-decision-tree/tutorial/

จากแผนภาพด้านบน ส่วนประกอบของ decision tree นี้จะเริ่ม node ด้านบนสุด จะถูกเรียกว่า Root node เส้นที่ลากออกมาจากแต่ละ Node จะเรียกว่า Branch และจุดสิ้นสุดของ Tree นี้ก็คือ Leaf Node ที่เป็นผลลัพธ์ของการทำ Classification หรือ Class นั่นเอง ซึ่งจะเป็น Node ที่ไม่มี Branch ใดแตกออกไปเลย

ซึ่งลำดับของ Feature ที่นำมาใช้การตัดสินใจใน Node แต่ละตำแหน่งนั้นจะขึ้นอยู่กับความสัมพันธ์ของ Feature นั้นๆ กับ Class โดยในการเรียงลำดับจะใช้ค่า และ Information Gain (IG) มาคำนวณหาค่าความสัมพันธ์ โดย Feature ที่เป็น Root Node จะต้องมีค่า IG สูงที่สุด

แต่ก่อนที่เราจะมาหาค่า IG ขั้นตอนแรก เราจะต้องหาค่าที่เรียกว่า Entropy ก่อน Entropy ก็คือค่าที่แสดงถึงความไม่สะอาดของข้อมูล หรือความแตกต่างของข้อมูลโดยใช้สูตรนี้

และสูตรการหาค่า Information Gain (IG) จะเป็นสูตรนี้

โดยที่ Entropy(T) คือ Entropy รวมทั้งหมดของ data และ Entropy(T,X) คือ Entropy ของ Feature นั้น

หลังจากที่เราได้สูตรคำนวณค่า IG และ Entropy แล้วเราก็จะมาหา Root Node กันค่ะ

เริ่มแรกเลยเราก็ต้องหา Entropy รวมของข้อมูลก่อน เพื่อง่ายต่อการไปหาค่า IG ของแต่ละ Feature โดยเราจะยกตัวอย่างโดยใช้ข้อมูลที่อยู่ในรูปภาพด้านบนเพื่อจะหา Decision Tree ในการตัดสินใจว่าจะออกไปเล่นหรือไม่ (Play = Yes or No) แล้วเราจะได้ ค่า Entropy ดังนี้

จากนั้นก็เราก็จะหา Entropy ของแต่ละ Feature ได้เป็นแบบนี้

Feature = outlook

E(play,outlook) = P(sunny)E(yes,no)+ P(overcast)E(yes,no)+ P(rainy)E(yes,no)

*E(yes,no) ในที่นี้เฉพาะที่นับจากค่าของ outlook ค่านั้นเท่านั้น

จะได้ E(play,outlook) = (5/14)E(3,2)+(4/14)E(4,0)+(5/14)E(2,3) = 0.693

Feature = temperature

E(play,temperature) = P(hot)E(yes,no)+ P(mild)E(yes,no)+ P(cold)E(yes,no) = 0.895

Feature = Humidity

E(play,humidity) = P(high)E(yes,no)+ P(normal)E(yes,no)= 0.788

Feature = Windy

E(play,windy) = P(TRUE)E(yes,no)+ P(FALSE)E(yes,no) = 0.816

และเราจะหาค่า Information Gain (IG) ของแต่ละ Feature ได้ดังนี้

  • IG(play,outlook) = E(play)-E(play,outlook) = 0.94–0.693 = 0.247
  • IG(play,temp) = E(play)-E(play,temp) = 0.94–0.895 = 0.045
  • IG(play,humidity) = E(play)-E(play,humidity) = 0.94–0.788 = 0.152
  • IG(play,windy) = E(play)-E(play,outlook) = 0.94–0.817 = 0.123

จากค่า IG เราจะได้ Feature outlook เป็น Root Node ของ Decision Tree

จากนั้นเราจะหาว่า Internal Node สามารถแตก branch ออกไปได้อีกหรือไม่ โดยการหา Entropy ของละ Node ต่อไป

Node ที่มีค่า Entropy เท่ากับศูนย์ จะแตก branch ไปเป็น Leaf Node ได้เลย ส่วน Node อื่นๆที่มีค่า Entropy มากกว่าศูนย์ จะแตก branch ไปหา Node ถัดไป โดยขั้นตอนการหา Feature ที่จะเป็น Node ถัดไป ก็จะเหมือนเดิมเลยคือ หา Entropy ของแต่ละ Feature ที่เหลือใน Node เพื่อนำไปหา Information Gain ของแต่ละ Feature ที่เหลือต่อไป

พอเสร็จแล้วเราก็จะได้ Decision Tree หน้าตาเป็นแบบนี้

และการใช้งานตัว Decision Tree นี้ก็ง่ายๆเลย หากเรามี Data ชุดใหม่เข้ามาเป็นลักษณะนี้

เราก็จะสามารถตัดสินใจได้ว่าจะออกไปเล่นหรือไม่ คำตอบที่ได้จาก Decision Tree นี้คือ NO

สำหรับบทความนี้ หวังว่าผู้อ่านจะได้รับความรู้ความเข้าใจเกี่ยวกับ Decision Tree Algorithm และบทความครั้งหน้าเราจะมาพูดถึง Supervised Learning Algorithm ตัวต่อไปก็คือ Support Vector Machine และ K-Nearest Neighbors (KNN) กันค่ะ

Reference:

--

--