Machine Learning สำหรับผู้เริ่มต้น

เมื่อวานนี้ 20 /2/2016 มีโอกาสได้มาเรียน Machine Learning กับ ดร.กานต์ ที่ Geeky Base เป็นเวลาครึ่งวัน เนื่องจากไม่ได้ลงทะเบียนไว้ พอดีผ่านมาทำธุระแถวเกษตรพอดี เลยขอท่านอาจารย์มาขอความรู้ด้านนี้ไว้เนื่องจากกำลังสนใจอย่างมาก และถ้าได้รับคำชี้แนะจากคนที่มีประสบการณ์ก็จะได้ไม่หลงทาง สิ่งที่ได้รับจากการเรียนครึ่งวัน ขอสรุปคร่าวๆ ดังนี้

Machine Learning คืออะไร  ?

การนำประสบการณ์ หรือข้อมูล (E=>Experience) มาสอนให้ Machine เรียนรู้ในรูปแบบฟังก์ชั่นของ โมเดลในการวัดผลต่างๆ (T => Task) และทำตรวจสอบผลลัพธ์ Measurement (P) สรุปก็คือ จุดประสงค์ที่เราสอนคอมพิวเตอร์ให้ตัดสินใจแทนเรา ซึ่งก็ต้องป้อนข้อมูล E => โมเดลในการวัดผล T =>  ตรวจสอบผลลัพธ์ P

ทำไมต้องใช้ Machine Learning 

มนุษย์เรามีความสามารถในการตัดสินใจได้ไม่แน่นอนเหมือนเครื่องจักร อารมณ์มีผลต่อการตัดสินใจมากกว่าเหตุผล ดังนั้นในงานที่ต้องทำซ้ำๆเป็นประจำ หรือการตัดสินใจในสถานการณ์ต่างๆ การนำเครื่องมืออย่างคอมพิวเตอร์มาข่วยตัดสินใจก็จะช่วยให้ลด ความผิดพลาดของคนทำงาน  (Human Error) ได้

Machine Learning กับ Statistics กับ Data Mining

หลายคนที่คิดว่า 3 อย่างนี้เหมือนกัน อาจจะมีส่วนจริงและไม่จริง แต่ถ้าหากมองที่จุดประสงค์ของทั้งสามอย่างนี้ ไม่ได้มีจุดประสงค์เหมือนกันซะทีเดียว แต่ละตัวมีจุดประสงค์ ดังนี้

  • Machine Learning – นำข้อมูลดิบ หรือสถิติ มาเพื่อวิเคราะห์หาคำตอบความน่าจะเป็นเพื่อตัดสินใจกระทำบางอย่าง
  • Statistics – ผลลัพธ์ที่ผ่านการวิเคราะห์แปลผลมาจากกลุ่มข้อมูล เพื่อนำเสนอในรูปแบบต่างๆ เช่น ค่าเฉลี่ย Min Max ค่าเบี่ยงเบนมาตรฐาน อื่นๆ
  • Data Mining – การนำข้อมูลจำนวนมากมารวบรวม เพื่อ แบ่งกลุ่ม เรียงลำดับ แบ่งความสัมพันธ์ นำมาแสดงด้วยภาพกราฟฟืค เพื่อเป็นแหล่งรวบรวมคลังความรู้ของข้อมูลเพื่อใช้ในการค้นหา Knowledge Discovery in Databases สำหรับ Data Mining ก็เหมือนการทำเหมืองแร่ ที่เราสามารถนำมาสกัดเป็นทองแดง ทองคำ เหล็ก อะลูมิเนียม ถ้าเป็นข้อมูลก็คือเอาข้อมูลดิบมาแปรรูปให้มีความหมายและอ่านได้

แต่ว่ามีความเป็นไปได้ว่าทั้งสามเรื่องมีความสัมพันธ์กัน  จากรูปที่เข้าใจน่าจะแสดงความสัมพันธ์ได้ประมาณนี้

[img class=”aligncenter” src=”/wp-content/uploads/2016/02/ml.png”]

จุดเริ่มต้นของทุกอย่างก็คือต้องมีข้อมูล Data ก่อน การทำ Data Mining จำเป็นต้องมีข้อมูล  ส่วนการนำเสนอผลลัพธ์ในเชิงสถิติอาจจะใช้ข้อมูลจาก

ส่วน Machine Learning จะนำข้อมูลดิบ หรือข้อมูลที่มีการแปรผลแล้วไปใช้ในการต้ดสินใจเพื่อดำเนินการบางอย่างต่อไป

Programming กับ Machine Learning

การเขียนโปรแกรมเป็นการเขียนฟังก์ชั่นให้ทำงานได้ตาม Requirement ที่ได้รับมา ต่างจาก Machine Learning คือ

Machine Learning จะเป็นการเอาข้อมูลมาใส่ในฟังก์ชั่นหรือโมเดลเพื่อหาคำตอบ

Machine Learning นำไปประยุกต์ใช้ในงานอะไรบ้าง

  • Casino นำ Machine Learning ใช้กล้องแสกนดูลูกค้าใหม่ จับดูพฤติกรรมของลูกค้า หากเล่นเสียมาก ก็จะพาไปเลี่ยงข้าวเพื่อให้รู้สึกดีและกลับมาเล่นใหม่
  • Fast 7 -> God’s Eye
  • predpol.com ใช้วิเคราะห์แนวโน้มการเกิดอาชญกรรม

เครื่องมือในการช่วยวิเคราะห์และจำแนกข้อมูลแบบต่างๆ

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

  • Search Engine
  • Medical Diagnosis
  • Object Recognition
  • Stock Market Analysis
  • Credit Card Fraud Detection
  • Speech Recognition

โมเดลในการนำมาหาคำตอบของข้อมูลมีอะไรบ้าง

สำหรับโมเดลที่ใช้ใน Machine Learning มีมากมายหลายตัว ที่พอจับใจความได้ ก็จะมี (ท่านอาจารย์สอนสูตรคณิตศาสตร์กันเลยทำผมนี่หลุดไป ตกคณิตครับ)

  • – k-Nearest Neighbours
  • – Perceptron
  • – Naive Bayes
  • – Support Vector Machines

All models are wrong, but some are useful -> George E.P. Box

  • ไม่มีโมเดลใดถูกต้อง 100 % แต่ก็ใช้ประโยชน์ได้ ดีกว่าไม่เลย อย่างเช่น Google Map ก็ไม่ได้มี สเกลถูกต้อง 100 % แต่ก็มีข้อมูลมากพอที่เราจะเชื่อถือและใช้ประโยชน์ได้

ในระหว่างที่เรียนเนื่องจากผมเขียนโปรแกรมด้วย NodeJS เป็นหลัก ก็เลย Search npm ดูก็เจอหลายตัว อย่างเช่น https://www.npmjs.com/package/machine_learning ซึ่งโมเดลที่ได้รับความนิยมทั่วไปก็น่าจะมีหมด

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

Deep learning เป็นชื่อเรียกของการ learning อีกแบบนำวิเคราะห์ข้อมูลหลายๆ ลำดับขั้น

[img class=”aligncenter” src=”/wp-content/uploads/2016/02/maxresdefault.jpg”]