อธิบาย K-Fold Cross Validation พร้อมโค้ดตัวอย่างใน R

เทคนิคที่เรียกว่าเป็น Golden Standard สำหรับการสร้างและทดสอบ Machine Learning Model คือ “K-Fold Cross Validation” หรือเรียกสั้นๆว่า k-fold cv เป็นหนึ่งในเทคนิคการทำ Resampling ไอเดียของ k-fold cv คือการแบ่งข้อมูลเป็น k ส่วนเท่าๆกันเพื่อสร้างและทดสอบโมเดล (train + validate) คำนวณค่าเฉลี่ย accuracy หรือ error (i.e. model performance) ก่อนที่จะนำโมเดลไปใช้ทำนายข้อมูล test set รูปด้านล่างแสดงการแบ่งข้อมูลเป็น 5 folds เท่าๆกัน โดยการแบ่งข้อมูลต้องเป็นไปอย่าง random ทำไมต้อง random? เพราะ randomness จะช่วยให้ข้อมูลในแต่ละ fold มีการกระจายตัวใกล้เคียงกัน ช่วยลด bias เวลาที่เราสร้างและทดสอบโมเดล จำนวน k ที่นิยมใช้กันในทางปฏิบัติมีสองค่าคือ k=5…

Read More

ไกลแค่ไหนคือใกล้กับการวัดระยะแบบ Euclidean Distance

บทความนี้มาเรียนวิธีการคำนวนระยะทาง i.e. distance ง่ายๆระหว่างสอง data points โดยตัวที่เราจะสอนวันนี้ชื่อว่า Euclidean distance สูตรการวัดระยะยอดนิยมในงาน data science – Enough talk! Let’s do it. Euclidean Distance สมมติเรามี data points 2 จุด (20, 75) และ (30, 50) จงหาระยะห่างของสองจุดนี้ ถ้ายังจำได้สมัยประถม (แอดค่อนข้างมั่นใจว่าเรียนกันตั้งแต่ ป.6 555+) วิธีการหาระยะห่างในรูปด้านล่างใช้หลักพีทาโกรัส (Pythagorean theorem): a2 + b2 = c2 Euclidean distance (d) หรือ c ในรูปขวาด้านบนสามารถคำนวณได้ง่ายๆตามหลัก Pythagoras สาเหตุที่เราต้องถอดราก (square root) เพราะตอนแรกพีทาโกรัสไปยกกำลังสองด้าน a…

Read More

รู้จักกับ caret – ML Lib ที่ทรงพลังที่สุดของภาษา R

บทความนี้แอดเขียนอธิบาย interface การสร้าง machine learning โมเดลใน R ด้วย package caret (ย่อมาจาก Classification And REgression Training) ส่วนตัวแอดใช้ caret เป็นประจำใน workflow สร้างโมเดลได้มากกว่า 200+ โมเดลแบบ supervised learning ทรงพลัง มีฟังชั่นในการเตรียมข้อมูล, resampling, metrics ครบครัน และเหตุผลสำคัญที่สุดคือ caret มันเขียนง่ายมากจริงๆ (เทียบกับ framework อื่นๆ) เปิด RStudio ขึ้นมาแล้วติดตั้ง package ด้วยโค้ดด้านล่าง เราใช้ library mlbench ด้วยเพื่อโหลด example dataset สำหรับบทความนี้ dataset ที่เราจะใช้ในบทความนี้ชื่อว่า PimaIndiansDiabetes โดย target ที่เราต้องการทำนายคือคอลัมน์ diabetes (pos/…

Read More

อธิบาย Logistic Regression พร้อมโค้ดตัวอย่างใน R

Tutorial วันนี้เรามาอธิบาย concept ของ Logistic Regression เบื้องต้น พร้อมโค้ดตัวอย่างใน R สำหรับสร้างและทดสอบโมเดล – Case Study ทำนายการเกิดมะเร็งเต้านม (Breast Cancer Dataset) When to use? เรานิยมใช้ Logistic Regression กับปัญหา Binary Classification i.e. ทำนาย target variable ที่มีสอง classes และใช้ค่า % accuracy สำหรับวัดผลโมเดลเบื้องต้น ด้านล่างเป็นตัวอย่าง use cases ในชีวิตจริง Churn prediction – ทำนายว่าลูกค้าจะเลิกใช้บริการหรือเปล่า (yes/ no) Repeated purchase prediction – ทำนายว่าลูกค้าจะกลับมาซื้อสินค้าหรือเปล่า (yes/ no) Disease detection…

Read More

ทำนายราคาบ้าน Boston ด้วย Linear Regression

บทความที่แล้วเราเขียนอธิบายขั้นตอนการสร้าง ML model ใน 4 ขั้นตอน และสอนเขียนโค้ด R สำหรับแก้ปัญหา Binary Classification (Titanic) วันนี้เราจะมาลองเขียน ML แก้ปัญหา Regression กันบ้าง Regression Problem แอดดาวน์โหลด dataset มาจาก Kaggle ชื่อว่า Boston (Housing Values in Suburbs of Boston) มีตัวแปรทั้งหมด 14 ตัว โดย target ที่เราต้องการทำนายคือ medv หรือราคาบ้านเฉลี่ยหน่วยเป็น $1000 ML เรียกปัญหานี้ว่า Regression เพราะ target ที่เราต้องการทำนายเป็นตัวเลขแบบ numeric/ continuous และ algorithm ที่เราจะสอนวันนี้คือ Linear Regression (อ่านบทความอธิบายเรื่อง LR…

Read More

สร้าง Decision Tree ทำนายผู้รอดชีวิตบนเรือ Titanic ด้วย R

Machine Learning คืออะไร? แล้วเราจะสร้างโมเดลทำนายผู้รอดชีวิตบนเรื่อง titanic ได้ยังไง? หาคำตอบทั้งหมดได้ในบทความนี้ Hi ML Machine Learning คือการที่คอมพิวเตอร์สามารถเรียนรู้ pattern ต่างๆด้วยตัวเองโดยที่มนุษย์ไม่ต้องเขียนโปรแกรมสั่งมันเลยว่าต้องทำอะไรยังไงบ้าง? (learn without being explicitly programmed) วิธีการสอนคอมพิวเตอร์ก็แค่ให้มันเห็นตัวอย่างเยอะๆ (giving it a lot of examples/ data) แล้วคอมพิวเตอร์จะเริ่มเรียนรู้จาก data ที่เราป้อนให้กับมัน ถ้าเทียบกับการเรียนรู้ของมนุษย์ data = human experience ถ้าอยากสอนให้มันรู้จักสตรอเบอร์รี่ → ให้มันเห็นสตรอเบอร์รี่เยอะๆ ถ้าอยากสอนให้มันรู้จักส้ม → ให้มันเห็นส้มเยอะๆ คอมพิวเตอร์จะเริ่มเรียนรู้ pattern (หรือที่เราเรียกว่า feature) ของวัตถุต่างๆ แล้วจะเริ่มทำนายได้ถูกต้องมากขึ้นตามประสบการณ์หรือปริมาณ data ที่มันได้รับ การสอนคอมพิวเตอร์แบบให้มันเห็นตัวอย่างเยอะๆ (a lot of examples) เรียกว่า…

Read More