เริ่มเรียน Machine Learning 0–100 (Introduction)
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 :
- ความรู้ภาษา Python เข้าใจพื้นฐานและสามารถใช้ฟังก์ชั่นเบื้องต้นได้
- 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 บทความ !
- Introduction (Updated)
- Supervised Classification(k-NN+IRIS) (Updated)
- Under Fitting / Over Fitting ปัญหาที่มองไม่เห็นแต่สัมผัสได้ว่ามี….. (Updated)
- Evaluate Model นั้นสำคัญอย่างไร (Updated)
- Linear/Poly Regression + GDPทำนายอนาคต GDP ประเทศไทย (Updated)
- Gradient Descent คีย์เวิร์ดที่ Data Science ต้องรู้จัก (Updated)
- Logistic Regression ทำนายผู้รอดชีวิตบนเรือไททานิค (Updated)
- SVM อดีตเคยหอมหวานปัจจุบันแอบเซง (Updated)
- Decision tree ใครเป็นเบาหวานอธิบายง๊ายง่าย (Updated)
- Random Forest ทำนายว่าจักรยานจะขายได้ก็ต่อเมื่อ…. (Updated)
- NLP(Natural Language Processing) ศาสตร์(ไม่)ใหม่ ศาสตร์แห่งเจได: แยกประเภทอีเมลล์ด้วยพลังฟอร์ซ (Updated)
สรุป Machine Learning จากคอร์สชื่อดังต่างๆ
- จัดการกับข้อมูลไปจนถึงสร้างโมเดล ML มีขั้นตอนอะไรบ้าง ?
- Data Preprocessing นั้นสำคัญอย่างไร ? แล้วจะทำเมื่อไหร่ ?
- Time Series Data ง่ายๆด้วย Machine Learning
- Clean vs Unclean Data : แล้วคุณจะเข้าใจว่าทำไมต้อง Clean Data
Deep Learning
- Deep Learning แบบสามัญชน ทั้งหมด 5 parts
การทดลองแบบสนุกสนานเกี่ยวกับ Machine Learning
- ลองเล่นๆ : แยก SMS ขยะด้วย Naive Bayes VS Neural Network (ML สู้ NN ไม่ได้จริงเหรอ ?)
- ลดมิติข้อมูลเพื่อทำ Recommender System By Unsupervised Learning
- ลองเล่นๆ : Tensorflow 2.0 กับ MNIST dataset ( tf 2.0 แล้วใช้ง่ายจริงๆเหรอ ? )
บทความจากเวลาว่างอันน้อยนิด
- Misspelling Oblivious (word) Embeddings | อีกหนึ่งขั้นของ FastText
- SEA Machine Learning School 2019 (Indonesia) เรียน ML ทั้งที ต้องไปเรียนที่อินโด
Machine Learning Introduction :
Machine Learning คืออะไร ?
Machine Learning หรือที่แปลเป็นไทยง่ายๆ “การเรียนรู้ของเครื่องจักร” โดยเครื่องจักรในที่นี้หมายถึง “Program Computer” นั้นเอง โดยโปรแกรมของเราจะทำงานโดยอัตโนมัติตามที่เราโปรแกรมไว้ โดยเราต้องเลือกอัลกอริทึมให้คอมได้เรียนรู้โดยแต่ละอันจะมีข้อดี ข้อเสีย แตกต่างกัน ใช้งานต่างกันและผลลัพธ์ต่างกัน
โดยปกติถ้าเราจะทำโปรแกรมอะไรสักอย่าง เช่น คำนวณจำนวนประชากันในอีก 5 ปี เราอาจจะเขียนสมการด้วยตัวเอง จากนั้นก็ใส่ input แล้วคำนวณผลลัพธ์ออกมาตามสมการที่เราเขียนไว้ก็จะได้ประชากรในอีก 5 ปีข้างหน้า แต่ถ้าจะหาประชาในอีก 10 ปีละ ? เราก็อาจต้องเขียนสมการใหม่เพื่อให้เหมาะสมและคำนวณได้ถูกต้อง
แล้วถ้าเป็น Machine Learning ละ ?
เราใส่ input (จำนวนประชากร 15 ปีที่ผ่านมา) และ output ว่าเพิ่มขึ้นกี่เปอร์เซ็น เจ้า computer ของเราก็จะมีอัลกอริทึมในการคิดสมการขึ้นมาเพื่อหาต่ออีกว่าในอีก 30 ปีประชากรจะเป็นเท่าไหร่ และอีก 50 ปีจะเป็นเท่าไหร่ โดยที่เราไม่ต้องคำนวณใหม่ในทุกๆครั้งที่โจทย์มีการเพิ่มขึ้นหรือลดลง
Machine Learning จะมีคำศัพท์วิชาการที่คุณต้องเข้าใจอยู่(ไม่)นิดหน่อย
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)
แบบที่ 1 แบบมีผู้ช่วยสอน (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% ให้เป็นผู้หญิง
แต่การทำ 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)
Unsupervised จะต่างจาก Supervised โดยสิ้นเชิงโดยวิธีนี้จะเน้นไปที่การวิเคราะห์ข้อมูล (Analysist) สะมากกว่า เช่นการหา pattern ของข้อมูลเพื่อทำการจัดกลุ่มของของมูล (Clustering) หรือจะเป็นการลดมิติของข้อมูล (Dimension Reduction) เพื่อหา Feature ของข้อมูล
สรุป
สำหรับบทความนี้ก็จบเพียงเท่านี้ครับ เป็นการรู้จักคำศัพท์ที่ใช้ในงาน Data sci และสอนเกี่ยวกับประเภทต่างๆ ในบทความหน้า ผมจะพูดคำศัพท์เทคนิคโดยไม่มีการขยายความเหมือนรอบนี้แล้วเพื่อความรวบรัดในการเขียนหากใครจำไม่ได้ก็ลองย้อนกลับมาดูก็ได้ครับ ส่วนบทความถัดไปเป็นการทำ Machine Learning แบบง่ายๆด้วย KNN โดยยังไม่ซับซ้อนมากนั้นเอง
บทความถัดไป :
K-NN กับ Sklearn : Machine Learning 101
Github : https://github.com/peeratpop/Machine_Learning_101
Medium : https://medium.com/@pingloaf
Linkedin : https://www.linkedin.com/in/peerat-limkonchotiwat/