Machine Learning R

สร้าง 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) เรียกว่า Supervised Learning อย่างที่ชื่อบอกเลย supervise (v.) คือการเรียนรู้แบบ observe มองดูและทำตาม อย่างมีชั้นเชิง!

ตัวอย่างวันนี้เราจะสอนคอมพิวเตอร์ว่าผู้รอดชีวิตบนเรือ titanic หน้าตาเป็นยังไง? เช่น เป็นเพศหญิงหรือเพศชาย, เป็นผู้โดยสาร class ไหน รวยหรือจน? พอคอมพิวเตอร์เรียนรู้ pattern พวกนี้แล้วมันก็จะสามารถทำนายผู้รอดชีวิตได้ถูกต้องมากขึ้น ก่อนจะไปที่ case study มาทำความเข้าใจ ML workflow กันก่อน

ML Workflow

เวลาเราสร้างโมเดล (DS เรียกว่าการเทรนโมเดล) ขั้นตอนการเทรนจะแบ่งเป็น 4 ขั้นตอน คลิกที่กล่องด้านล่างเพื่ออ่านรายละเอียดในแต่ละ step

Alright Friends! ตอนนี้ทุกคนน่าจะเข้าใจขั้นตอนการสร้างโมเดลคร่าวๆแล้ว ถัดไปมาลองเขียนโค้ดกันบ้าง tutorial นี้แอดใช้ R (อีกแล้ว 555+) สำหรับเพื่อนๆที่ยังเขียน R ไม่เป็น ก็สามารถทำตาม tutorial นี้ได้ ดาวน์โหลดและติดตั้งโปรแกรม R และ RStudio ก่อน

Getting Started

เรียนการเขียนโปรแกรม R สำหรับผู้เริ่มต้น 15 วีดีโอ full HD ความยาว 2 ชั่วโมง ฟรี

Data Files

tutorial นี้แอดทำความสะอาดข้อมูลและแบ่ง data ให้เรียบร้อยแล้ว ในชีวิตจริงขั้นตอนการ prepare data ใช้เวลาเยอะมาก (tutorial นี้เราจะข้ามไปที่ step 2-3 ของ ML workflow เลย)

ดาวน์ข้อมูล train และ test csv ได้ที่นี่

เปิดดูข้อมูลด้วยโปรแกรม Excel ตัวแปรที่เราต้องการทำนายคือ Survived (target หรือ label) ส่วนตัวแปร Pclass, Sex, Age, SibSp, Parch คือตัวแปรต้น (ML เรียกว่า features)

อ่านรายละเอียดของตัวแปรแต่ละตัวได้ที่ Kaggle

เราสามารถโหลด csv file เข้าสู่ RStudio ด้วยฟังชั่น read.csv() ในวงเล็บคือ path ที่เราเซฟข้อมูลไว้

titanic_train <- read.csv("C:/Users/Desktop/titanic_train.csv")
titanic_test <- read.csv("C:/Users/Desktop/titanic_test.csv")

To do – เราสามารถเรียกดู 6 แถวแรกของ titanic_train ใน console ด้วยฟังชั่น head(titanic_train) ก่อนที่จะเริ่มเทรนโมเดล เราต้องเปลี่ยน data type ของตัวแปร Survived ให้เป็น factor ด้วยโค้ดนี้

titanic_train$Survived <- as.factor(titanic_train$Survived)
titanic_test$Survived <- as.factor(titanic_test$Survived)

Train Model

Algorithm ที่เราจะเทรนด้วยกันวันนี้คือ Decision Tree เป็น ML algorithm แบบ tree-based นิยมใช้กับปัญหา classification เช่น ทำนายว่าผู้โดยสารคนไหนจะรอดจาก titanic บ้าง? โดยที่ 1=yes และ 0=no

copy โค้ดนี้ลงใน RStudio Console เพื่อติดตั้ง package decision tree (ชื่อว่า rpart และ rpart.plot)

install.packages(c("rpart", "rpart.plot"))
library(rpart)
library(rpart.plot)

เทรน decision tree ด้วยฟังชั่น rpart() เขียนโค้ดแค่บรรทัดเดียวก็เสร็จแล้ว!! parameters ต่างๆของโมเดลที่สร้างอยู่ใน object ชื่อว่า tree_fit อย่าลืมว่าตอนเราเทรนโมเดลเราใช้ data = titanic_train

tree_fit <- rpart(Survived ~ ., data = titanic_train)

Score Model

ลองใช้โมเดล tree_fit ที่เราสร้างขึ้นมาทำนายข้อมูล testing set ใน R สามารถทำขั้นตอนนี้ได้ง่ายๆด้วยฟังชั่น predict() กำหนด data = titanic_test

เสร็จแล้วเราสามารถคำนวณ test accuracy ด้วยโค้ดไลน์ที่สองด้านล่าง เพื่อนๆที่ทำตาม tutorial น่าจะได้ accuracy ไม่ต่ำกว่า 90% ทุกคน – Well done!

p <- predict(tree_fit, newdata = titanic_test, type = "class")
mean(p == titanic_test$Survived)

Visualize Model

เราสามารถ plot tree ของเราด้วยฟังชั่น rpart.plot(tree_fit)

rpart.plot(tree_fit)
หน้าตาของ decision tree ที่ใช้ทำนาย Survived ใน titanic dataset

You Make Me Proud!

ยินดีด้วยสำหรับทุกคนที่ทำตาม tutorial มาจนถึง section นี้ ตอนนี้ทุกคนได้เห็นขั้นตอนการสร้าง ML model แบบที่ data scientist ทำกันอยู่ทุกวันนี้แล้ว

  • ML workflow มีทั้งหมด 4 ขั้นตอน prepare → train → score → deploy
  • Supervised Learning คือการสอนคอมพิวเตอร์ด้วยการแสดงตัวอย่างให้มันดูเยอะๆ (show me a lot of training data!) แล้วทดสอบความรู้มันด้วย test data
  • Algorithms มีให้เลือกหลายแบบ ตัวอย่างวันนี้ใช้ decision tree สำหรับ classification problem
  • วันนี้เราเขียนโค้ดแค่ 11 lines เอง Machine Learning ไม่ได้ยากอย่างที่หลายคนคิด 😛

Ready for More?

อ่านบทความ Random Forest ของเราต่อได้เลย

Online School

เข้าสู่คอร์สเรียน Intro to R เรียนฟรีสองชั่วโมง

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.