เริ่มเรียน Machine Learning 0–100 (Introduction)

Mr.P L
mmp-li
Published in
5 min readAug 11, 2018

Machine Learning ไม่ยากเหมือนที่คิด แต่ยากกว่าที่คิด….

About Machine Learning

วันนี้จะมาพูดถึงเรื่องที่กำลังร้อนแรงในขณะนี้ (ซึ่งผมก็ตามเทรนนี้ด้วย)นั้นคือ

Machine Learning — Deep Learning — Artificial Intelligence

ซึ่งศาสตร์เหล่านี้กำลังโด่งดังอยู่ยกตัวอย่างเช่น

Dota 2 OpenAI VS Human

รถยนต์โดย tesla

และได้มีอาชีพที่กำลังร้อนแรงมากๆในตอนนี้คือ Data Science (นักวิทยาศาสตร์ข้อมูล) แต่สายงานของ Data Science เนี่ยมันกว้างมาก(ก ไก่ อีก10ตัว) และยังเกี่ยวเนื่องกับงานอื่นๆอีกเช่น Data engineer , Data Analysis , Researcher เราจึงยกตัวอย่างคลิปที่อธิบาย Data science ออกมาได้ดีที่สุดนั้นคือคลิปนี้

ในวิดีโอจะพูดถึงว่า Data sci ความจริงแล้วคืออะไรและทำอะไรกันแน่ ? ในวิดีโอนี้จะเห็นได้ว่า

Data sci ในบริษัทเล็กๆ วิเคราะห์ทุกอย่าง ให้บริษัทเติบโตขึ้น (ในไทยส่วนมากเป็นแบบนี้)

Data sci ในบริษัทกลางๆ วิเคราะห์ข้อมูล สร้าง Model มาตอบโจทย์ลูกค้า

Data sci ในบริษัทใหญ่ๆ ทำงานวิจัย (งานวิจัย ป.เอก ป.โท งานวิจัยสำหรับบริษัท)

ถ้าให้สิ่งที่เกี่ยวกับ Data Sci เป็นปิรามิด Machine Learning จะอยู่กลางๆค่อนไปทางด้านบน เพราะมันจะไม่ค่อยเกี่ยวกับ Deep Learning ไม่ค่อยเกี่ยวกับ Analysis หรือ Visualization แต่ทั้ง 3 อย่างจะเกี่ยวกันและต่อยอดกันได้ (ถ้าคุณสนใจนะ)

แต่สำหรับคอร์สนี้เน้นไปที่ Machine Learning อย่างเดียวเท่านั้น (OpenAI ไม่เกี่ยวแน่นอนจ้า) จะเน้นไปที่การคาดเดา ทายผล ทำนาย คำนวณ

ไม่มีการสร้างไอ้หมอนี้แน่นอนจ้าาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาา

Requirement สำหรับการเรียน Machine Learning :

  1. ความรู้ภาษา Python เข้าใจพื้นฐานและสามารถใช้ฟังก์ชั่นเบื้องต้นได้
  2. Anacoda เพื่อใช้งาน library พื้นฐานของ Machine Learning เช่น Numpy, sklearn, pandas

3. สามารถใช้งาน Jupyter Notebook เป็น

Vscode ก็สามารถใช้แทนได้ แต่ jupyter เอาไปขึ้น github แล้วจะสวยกว่า

4. ความรู้พื้นฐานด้านคณิตศาสตร์ สถิติ (ความน่าจะเป็น บวก ลบ คูณหาร ดูสมการ)

สิ่งที่ควรรู้ก่อนอ่านบทความนี้

  • บทนี้ไม่ใช่บทความที่เมื่ออ่านจนครบแล้วจะเป็น Data Scientist (DS)/Machine Learning Engineering ได้ ผู้อ่านยังต้องเรียนรู้จากคอร์สอื่นๆหรือลงมือปฏิบัติ
  • หากท่านหวังจะหาคอร์สที่สอนจบแล้วเป็น DS ได้ แนะนำที่ Coursera ครับ
  • บทนี้ถูกเขียนเมื่อปี 2018–19 เป็นเทคนิคพื้นฐานเมื่อหลายปีที่แล้ว ซึ่งในปัจจุบันเราอาจจะเรียนของพวกนี้เพื่อเข้าใจพื้นฐานก่อนก็ได้ (แต่บางครั้งของพื้นฐานก็ทำงานได้ดีเหมือนกัน)

บทความแนะนำ Model Machine Learning แบบต่อเนื่อง 11 บทความ !

สรุป Machine Learning จากคอร์สชื่อดังต่างๆ

Deep Learning

การทดลองแบบสนุกสนานเกี่ยวกับ Machine Learning

บทความจากเวลาว่างอันน้อยนิด

Machine Learning Introduction :

Machine Learning คืออะไร ?

Machine Learning หรือที่แปลเป็นไทยง่ายๆ “การเรียนรู้ของเครื่องจักร” โดยเครื่องจักรในที่นี้หมายถึง “Program Computer” นั้นเอง โดยโปรแกรมของเราจะทำงานโดยอัตโนมัติตามที่เราโปรแกรมไว้ โดยเราต้องเลือกอัลกอริทึมให้คอมได้เรียนรู้โดยแต่ละอันจะมีข้อดี ข้อเสีย แตกต่างกัน ใช้งานต่างกันและผลลัพธ์ต่างกัน

เปรียบเทียบระหว่าง โปรแกรมมิ่ง กับ Machine Learning

โดยปกติถ้าเราจะทำโปรแกรมอะไรสักอย่าง เช่น คำนวณจำนวนประชากันในอีก 5 ปี เราอาจจะเขียนสมการด้วยตัวเอง จากนั้นก็ใส่ input แล้วคำนวณผลลัพธ์ออกมาตามสมการที่เราเขียนไว้ก็จะได้ประชากรในอีก 5 ปีข้างหน้า แต่ถ้าจะหาประชาในอีก 10 ปีละ ? เราก็อาจต้องเขียนสมการใหม่เพื่อให้เหมาะสมและคำนวณได้ถูกต้อง

แล้วถ้าเป็น Machine Learning ละ ?

เราใส่ input (จำนวนประชากร 15 ปีที่ผ่านมา) และ output ว่าเพิ่มขึ้นกี่เปอร์เซ็น เจ้า computer ของเราก็จะมีอัลกอริทึมในการคิดสมการขึ้นมาเพื่อหาต่ออีกว่าในอีก 30 ปีประชากรจะเป็นเท่าไหร่ และอีก 50 ปีจะเป็นเท่าไหร่ โดยที่เราไม่ต้องคำนวณใหม่ในทุกๆครั้งที่โจทย์มีการเพิ่มขึ้นหรือลดลง

Machine Learning จะมีคำศัพท์วิชาการที่คุณต้องเข้าใจอยู่(ไม่)นิดหน่อย

Work flow ของ Machine Learning แบบ Supervised

Training Set : ชุดข้อมูลฝึก เป็นชุดข้อมูลสำหรับฝึกฝนโมเดล Machine Learning โดยจะฝึกให้ผลลัพธ์ออกมาเป็นไปตามชุดข้อมูลต้นฉบับ “หากข้อมูลภายในชุดข้อมูลฝึกมีค่าผิดหรือค่าที่ไม่ถูกต้อง ผลลัพธ์ที่ออกมาก็จะผิด” ยกตัวอย่างเช่น ข้อมูลคนไข้ (น้ำหนัก,ส่วนสูง,ความดัน), ข้อมูลคนที่ชื้อของผ่าน Lazada (เพศ,อายุ,อาชีพ,ความสนใจพิเศษ)

Test Set : ชุดข้อมูลเอาไว้ทดสอบ โดย Test Set ไม่ควรเอาไปใช้ร่วมกับ Training Set เพราะถ้าทำแบบนั้น มันคือการเอาเฉลยของข้อสอบมาให้อ่านแล้วจากนั้นจึงให้ทำข้อสอบก็จะเกิดในเรื่องของ Model Over fitting กับข้อมูลชุดนั้นๆด้วย (สามารถอ่านเพิ่มได้ที่บทความด้านล่าง)

Label,Non Label หรือ Class : เป็นตัวบ่งบอกว่าข้อมูลที่ให้ฝึกเป็นอะไร โดยแบบ Label จะใช้กับ Machine Learinig แบบมีผู้ช่วยสอน (Supervised) และ Non Label ใช้กับแบบไม่มีผู้ช่วยสอน (Unsupervised) เช่น ข้อมูลของคนไข้โดยมี Label/Class บอกว่าคนไข้คนนี้ป่วยหรือไม่ , ข้อมูลคนที่ชื้อของผ่าน Lazada โดย Label/Class บอกว่าเขาชื้อของใช้หรือของกิน

Feature : ภายในชุดข้อมูลฝึก/ทดสอบจะมีลักษณะเด่นที่ปรากฏอยู่ภายในข้อมูล เช่น ข้อมูลคนไข้ที่ป่วยเป็นไข้หวัดใหญ่ โดยลักษณะสำคัญคือ ไข้ขึ้นสูงกว่า 35 องศา , คนที่ชื้อของผ่าน Lazada โดยเขาชื้อของใช้ โดยลักษณะสำคัญคือ ของชิ้นที่ชื้อกำลังลดราคา ซึ่งภายในข้อมูลก็จะมีข้อมูลที่ไม่สำคัญอยู่ด้วย เราจะต้องคัดออกไปจากข้อมูลของเรา เหลือไว้เฉพาะอันที่ส่งผลข้อมูลจริงๆเท่านั้น

Machine Learning Algorithm / Machine Learning Model : จุดสำคัญสำหรับบทความ Machine Learning นี้ก็คือ ML Model โดยเจ้าตัว ML Model จะเป็นการนำ

ชุดข้อมูลฝึกฝน (Training Set) ที่ข้างในมีการระบุ Class (Label or Non Label) โดยจะต้องเลือกลักษณะเด่น (Feature) ของข้อมูลนั้นมาก่อนแล้ว

จากนั้นเอาข้อมูลเหล่านั้นมาคำนวณผ่านหลักคณิตศาสตร์และสถิติขึ้นอยู่โมเดลที่เราเลือกโดยขั้นตอนนี้เราเรียกว่าการฝึกฝนโมเดล (Train Model) โดยเมื่อฝึกฝนเสร็จเราก็จะโมเดลที่สามารถทำนาย Class/Label จาก input ออกมาได้นั้นเอง

โดย Machine Learning ถูกแบ่งออกเป็น 2 ประเภท คือ 1.Supuervised Learning 2.Unsupervised Learning ข้างในก็จะมีโมเดลต่างๆอีกมากมายให้เราเลือกใช้

Predict Model : หลังจากได้ ML Model มาแล้ว เรานำเอาโมเดลไปใช้งานโดยการป้อน input ให้โมเดลนั้นๆแล้วตัวโมเดลจะให้คำตอบ (Class/Label) โดยอ้างอิงจาก Train Set ของเรานั้นเอง โดยเราหวังว่า ผลลัพธ์ที่ออกมาจะเป็นไปตามที่เราคาดหวังไว้

Expected Label or Value : หลังจากได้ Output ของการทำนาย โดยเราหวังว่ามันจะออกมาถูก โดยบางครั้งเราสามารถมองเห็นผลลัพธ์ด้วยตาเปล่า เช่น ทำนายว่าเลขนี้คือเลขอะไร เวลาที่ได้คำตอบจากโมเดล เราก็สามารถตรวจได้ด้วตาเปล่าเลย แต่บางอย่างเราไม่สามารถทำการตรวจสอบผลลัพธ์ด้วยตาเปล่าหรือคำตอบนั้นมีจำนวนมาก ทำให้เราต้องมีการทดสอบขึ้นมา โดยเรียกว่า การประเมินโมเดล (E-Test/Evaluate) โดยเอา Output มาเทียบกับเฉลยที่เรามี หรือ Good global โดยค่าใช้ตรวจสอบก็มีหลากหลายเช่น ACC , F1Score , Confusion matrix

Machine Learning มีกี่ประเภท ?

จะมีอยู่ 2 แบบใหญ่ๆคือ

  • แบบมีผู้ช่วยสอน (Supervised)
  • แบบไม่มีผู้ช่วยสอน (Unsupervised)
Machine Learning Type

แบบที่ 1 แบบมีผู้ช่วยสอน (Supervised)

แบบ Supervised

โดยในแบบนี้ เราจะมีสิ่งที่เรียกว่า เฉลย (Label/Class) หน้าที่ของมันคือจำแนกประเภทของข้อมูลนั้นๆ (Category) หรือบ่งบอกถึงปริมาณก็ได้ โดยสามารถแบ่งออกมาได้อีก 2 ประเภทคือ

  • Classification หรือ การจำแนกประเภท
  • Regression หรือ การวิเคราะห์การถดถอย

Classification หรือ การจำแนกประเภท

เป็นการจำแนกข้อมูลออกเป็นประเภทต่างๆ ตามที่ Label ได้กำหนดไว้ โดย Machine Learning ประเภท Classification จะให้คำตอบเป็น Label / Class เท่านั้น ไม่สามารถให้คำตอบที่นอกเหนือจาก Label ในชุดฝึกฝน หรือออกมาเป็นตัวเลขที่ผ่านการคำนวณได้นั้นเอง โดย ML Model สำหรับงาน Classification ที่เด่นๆได้แก่ KNN, SVM, Logistic Regression, Decision Tree เป็นต้น

Classification Example :

การแยกคนออกเป็น 2 เพศได้แก่ ผู้ชายและผู้หญิง โดย Classification จะสามารถแยกผู้ชายออกจากผู้หญิงได้ โดยอาจจะดูจากลักษณะเด่นในข้อมูลของคนเช่น

  • ถ้าส่วนสูงมากกว่า 170 และ มวลกล้ามเนื้อมากกว่า 33.4–39.4% ให้เป็นผู้ชาย
  • ถ้าส่วนสูงน้อยกว่า 170 และ มวลกล้ามเนื้อน้อยกว่า 33.4–39.4% ให้เป็นผู้หญิง
https://towardsdatascience.com/machine-learning-classifiers-a5cc4e1b0623

แต่การทำ Classification ก็อาจจะไม่ถูกต้องเสมอไป บางครั้งเราอาจทำนายผิดให้ผู้ชายกลายเป็นผู้หญิงก็เป็นได้ เพราะฉนั้นทุกๆครั้งที่เราทำ Classification เราต้องทำการประเมินโมเดลเสมอ !

Regression หรือ การวิเคราะห์การถดถอย

คือการนำ input เข้าไปฝึกฝนและให้คำตอบออกมาเป็นตัวเลขเท่านั้น คำตอบไม่สามารถออกมาเป็น Label/Class ได้ โดย ML Model สำหรับงาน Regression ที่เด่นๆได้แก่ Linear Regression, Ridge Regression, Lasso, Elastic Net, SGD

ซึ่งก็มีบทความขยายความเรื่อง Regression ให้เรียบร้อยแล้ว คลิกอ่านได้เลยครับ

Regression Example :

การคำนวณว่าจำนวนประชากร X คน จะมีกำไรประมาณเท่าไหร่ โดยให้แกน X เป็นข้อมูลตั้งต้น ส่วน Y คือคำตอบที่เราต้องการ โดยที่ กากบาท (x) บนกราฟคือเฉลยที่เรามีระหว่างแกน X และ Y (ความสัมพันธ์ระหว่างจำนวนประชากรกับกำไรที่เกิดขึ้น) โดยเป้าหมายหลักของ Regression คือการ “สร้างเส้นสีฟ้า” โดยจะเป็นเส้นตรงหรือโค้งก็ได้แล้วแต่ความเหมาะสม โดยเราสามารถหาคำตอบของ Y ได้ด้วยเส้นสีฟ้านั้นเองโดยการลากแกน X ไปที่เส้นสีฟ้าและลากไปที่แกน Y ก็จะได้คำตอบนั้นเอง

ข้อเสียแบบนี้คือ

  • จะต้องอาศัยคนเฉลยข้อมูลให้ก่อนแล้ว หากใส่เฉลยผิด ก็มีโอกาสที่จะทำนายผิด
  • การประเมินโมเดล Regression ต้องใช้ความเข้าใจพอตัว

แบบที่ 2 แบบไม่มีผู้ช่วยสอน (Unsupervised)

จำแนกประเภทของข้อมูล โดยไม่ต้องมี Label data

Unsupervised จะต่างจาก Supervised โดยสิ้นเชิงโดยวิธีนี้จะเน้นไปที่การวิเคราะห์ข้อมูล (Analysist) สะมากกว่า เช่นการหา pattern ของข้อมูลเพื่อทำการจัดกลุ่มของของมูล (Clustering) หรือจะเป็นการลดมิติของข้อมูล (Dimension Reduction) เพื่อหา Feature ของข้อมูล

สรุป

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

บทความถัดไป :

K-NN กับ Sklearn : Machine Learning 101

Work flow แบบอธิบายละเอียด

Github : https://github.com/peeratpop/Machine_Learning_101

Medium : https://medium.com/@pingloaf

Linkedin : https://www.linkedin.com/in/peerat-limkonchotiwat/

--

--

Mr.P L
mmp-li
Editor for

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST