Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
เขียนโค๊ดกับมากะปิ
•
ติดตาม
22 ธ.ค. 2021 เวลา 11:00 • การศึกษา
Machine Hee-hee 101 EP3
Decision Tree EP 0
สวัสดีครับ จากบทความที่แล้วเราได้พูดถึง ภาพรวมการทำงานของ Machine Learning , ความหมายของข้อมูลและผลลัพธ์
ก่อนหน้านี้ผมบอกว่าบทความนี้ ผมจะยกตัวอย่างประเภทของ feature ซึ่งเอาจริง ๆ ผมคิดว่า ถ้าผู้อ่านเห็นการทำงานจริงคงจะเข้าใจภาพรวมมากขึ้น
ดังนั้นผมจะข้ามไปก่อนแล้วจะกลับมาพูดถึงทีหลังนะครับ สำหรับคนที่ไม่ได้อ่านบทความก่อนหน้านี้สามารถอ่านบทความนี้ต่อได้เลยครับ แต่อาจจะไม่เข้าใจคำศัพท์บางคำนะครับ
หากเกิดไม่เข้าใจคำศัพท์บางคำที่ผมเขียนลงไป ลองกลับไปอ่านบทความเก่าได้นะครับ และเพื่อไม่ให้เป็นการเสียเวลาเราเริ่มกันเลยครับ
แล้ววันนี้เราจะพูดถึงเรื่องอะไรกัน ? (ง︡'-'︠)ง
วันนี้ผมจะพูดถึง algorithm ที่ใช้ในการซ้อม (Train) ของข้อมูล
ถ้าเปรียบเทียบก็คือการเลือกวิธีสอนให้กับคอมพิวเตอร์ครับ
จากที่ผมกล่าวไปใน EP.1 ว่า "การเรียน Machine Learning คือการเรียนรู้ข้อมูลและalgorithm" และในซีรี่ย์นี้เราจะเรียนในส่วนของ algorithm เป็นหลักครับ
ใน Machine Learning มี algorithm มากมายให้เลือกใช้ครับ โดยที่ Deep learning ซึ่งเป็นที่นิยมในปัจจุบันก็เป็นหนึ่งในนั้น
แต่วันนี้เราไม่ได้เรียน Deep Learning หรอกครับ (อยู่บนท้ายเลยครับ) ฮ่า ๆ (─‿‿─)
วันนี้เราจะมาพูดถึง algorithm ที่มีชื่อว่า Decision Tree ครับ ถ้าใครเรียนในสาขาคอมพิวเตอร์ก็จะเข้าใจเนื้อหานี้ได้ไม่ยาก สำหรับคนที่ไม่ได้เรียนสาขาดังกล่าวหรือไม่เคยได้ยินก็ไม่ต้องตกใจครับ เพราะมันไม่ได้ยากอย่างที่คิด
What is Decision Tree ?
Decision Tree เป็น algorithm ที่ใช้ใน Machine Learning แบบหนึ่ง
มีลักษณะการทำงานเหมือนต้นไม้ (กลับหัว) โดยจะแบ่งส่วนดังนี้
●
Block ที่อยู่บนสุดจะเรียกว่า "ราก" (Root)
●
"กิ่ง" (Path) จะเป็นตัวเชื่อมระหว่าง Block
●
Block ที่ไม่ได้เชื่อมกับ Block ต่อกับ Block อื่น (ไม่ใช่การถูกเชื่อม) จะเรียกว่า "ใบ" (Leaf)
Tree นั้นจะมีหลายประเภท แต่ผมจะขอพูดในภาพรวม
ดังนั้น ก่อนที่เราจะเข้าไปลึกในเรื่อง Decision Tree มากกว่านี้ ผมจะขอพูดในส่วนของ Tree ก่อนเพื่อให้ทุกคนเข้าใจมากขึ้นครับ
Tree
https://www.tutorialspoint.com/data_structures_algorithms/tree_data_structure.htm
อย่างที่ผมกล่าวไปข้างต้นว่า Block ที่อยู่บนสุดเรียกว่า "ราก" โดย "ราก" จะมีได้แค่อันเดียวเท่านั้น
"ราก" สามารถแบ่งออกไปได้อีก (B และ C) และจะต้องมี "กิ่ง" เป็นตัวเชื่อมระหว่าง Block
B และ C จะถูกเรียกว่า "Parent node" ก็ต่อเมื่อมี Block ที่เชื่อมด้วยกับตัวเองอยู่ (มีกิ่งเชื่อมอยู่ข้างล่าง)
ในที่นี้อยากให้สักเกตุที่ C เราสามารถพูดได้ว่า C เป็น Parent node ของ F และ G
รวมถึงเราสามารถพูดได้ว่า F และ G เป็น Child node ของ C
F และ G ไม่มี Node ที่เชื่อมอยู่ข้างล่างเราจะเรียกมันว่า Leaf node หรือ ใบ
การไล่เรียงลำดับของ Tree จะขึ้นอยู่กับประเภทของ Tree โดยบางประเภทต้องคำนึงถึงลำดับความสำคัญด้วย ยกตัวอย่างเช่น F และ G ไม่สามารถสลับตำแหน่งกันได้
ซึ่งในจุดนี้มันเกินจากบทความนี้ (ผู้อ่านสามารถหาความรู้เพิ่มเติมในวิชา Data Structures and Algorithms) แต่ผมอยากให้จำไว้ว่ามันไล่จาก "ราก" ลง "ใบ"
เรามาพูดถึงเรื่อง Decision Tree ต่อ
ตามหลักการนั้นคล้ายกับ Tree ที่กล่าวไปข้างต้น แต่ความหล่อเท่ของมันอยู่ตรงที่ Block จะเป็น feature ที่เราเลือกมา และ feature นี้จะเป็นตัวที่สามารถทำนายผลลัพธ์ออกมาได้
ข้างใน Block จะมีเงื่อนไขของ feature และ return ค่าออกมา และจะผ่านไปยัง Block ถัดไปโดยมี "กิ่ง" เชื่อมอยู่ ซึ่งกิ่งนี้จะเหมือนเป็น "กฎ"
นอกจากกิ่งจะเป็นตัวเชื่อมแล้วมันยังมีความหมาย "และ" ในตัวมันเองด้วย
หมายความว่ายังไง ?
ยกตัวอย่างเช่น feature ของ "ราก" เป็นความสูง หากความสูงน้อยกว่า 180 จะ return เป็น "เตี้ย" ถ้ามากกว่าหรือเท่ากับ 180 จะเป็น "สูง"
แปลว่า "ราก" จะมีกิ่งแตกออกเป็น 2 กิ่ง และมี Block ที่เชื่อมอยู่กับ รากอีก 2 Block ซึ่งผมขอเรียกว่า "Block A" และ "B"
A จะเก็บ feature ความ "เ ก เ ร " ซึ่งผลลัพธ์จะออกมาเป็น "เกเร" เมื่อข้อมูลเป็น "ใช่" และ "ไม่เกเร" ก็ต่อเมื่อข้อมูลเป็น "ไม่" และ A จะมีกิ่งที่เชื่อมเป็นกฎที่มีผลลัพธ์ออกมาเป็น "เตี้ย" และ ให้ Block ที่เชื่อมกับ A เป็น "ใบ" C ซึ่งมีค่าเป็น "คนชอบไมเคิล"
สมมุติเรามีข้อมูลความสูงเป็น 160 และ ความ เ ก เ ร เป็น "ใช่" เราจะได้ข้อสรุปดังนี้
คน "เตี้ย" และ "เกเร เป็น "คนชอบไมเคิล" หมายความว่า "คนชอบไมเคิล" เป็น label หรือผลลัพธ์นั้นเอง
กราฟต้นไม้จากตัวอย่างข้างต้น
ดังนั้นเราสามารถสรุปได้ 3 ข้อดังนี้
1.
Block เป็น feature ซึ่งสามารถจำแนก label ได้
2.
กิ่ง (path) เป็นกฎที่เชื่อมกันและมีความหมายต่อเนื่อง
3.
ใบ (leaf) เป็นผลลัพธ์
Note ต้นไม้ที่ดีที่สุดคือต้นไม้ที่เล็ก (กิ่ง และ Block น้อย)
การที่ต้นไม้เล็กจะเป็นการลด Overfitting
Overfitting คืออะไร?
ให้สมมุติว่า เรา fit ความหมายมากเกินไป อย่างตัวอย่างก่อนหน้าที่ทุกอย่างเชื่อมด้วย "และ" เราจะสามารถเขียนมันได้ว่า
"XXX" และ "XXX" และ "XXX" .... และ "XXX" เป็น "ผลลัพธ์" ตัว "และ" จะมากขึ้นตามความลึกของต้นไม้
ซึ่งยิ่งมีมากขึ้นการได้มาของผลลัพธ์จะมีความเป๊ะมากขึ้น (ไม่สามารถหย่อนได้) ซึ่งมันดีต่อข้อมูลที่เรานำมา Train แต่ไม่ดีกับข้อมูลที่ไม่ได้อยู่ใน Train
หมายความว่า "ข้อมูลที่ใช้ในการซ้อมจะมีความถูกต้องสูงแต่พอเราเอาไป Test แล้วความถูกต้องนั้นต่ำ"
ตอนนี้เราเห็นกลไกที่สำคัญของ Decision Tree แล้วนะครับ เรารู้แล้วว่าการไล่ลงจะตามเงื่อนไขที่ผลลัพธ์ที่ออกมาจาก feature ที่จำแนก label ได้
ดังนั้น คำถามอยู่ที่ว่า เราจะเลือก feature ไหนมาเป็นเงื่อนไข ?
เห็นไหมครับว่ามันน่าสนใจมาก ๆ ทำยังไงถึงเลือกได้ และ เลือกยังไง ติดตามกันในบทความหน้านะครับ ฮ่า ๆ (>‿◠)✌
คราวหน้าผมจะพูดถึงการเลือก feature ที่เป็นหัวใจสำคัญของเรื่องนี้เลย และ ครั้งหน้าเตรียม ปากกา กระดาษ และ เครื่องคิดเลขด้วยนะครับ เราต้องใช้ในการคำนวณแน่นอน
สำหรับวันนี้ ขอบคุณที่สละเวลาอ่านจนจบนะครับ สามารถติดตามพูดคุยหรือสอบถามได้ทาง Facebook นะครับ สวัสดีครับ
เยี่ยมชม
facebook.com
登录 Facebook
登录 Facebook,与好友、家人和认识的人分享和建立联系。
ความรู้
คอมพิวเตอร์
การศึกษา
บันทึก
1
ดูเพิ่มเติมในซีรีส์
Machine Learning Hee-Hee 101
1
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2025 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย