วันพุธที่ 28 ตุลาคม พ.ศ. 2558

Machine Learning with R part VII (The quality of a regression)

การหาคุณภาพของการทำ Regression เราจะมาดูว่า Model ที่ได้มาใน ตอนที่2 มีคุณภาพแค่ไหน โดยใช้สูตร Root Mean Square Error (RMSE) 


โดย yi คือค่าที่ถูกต้อง และ y^i (y ใส่หมวกในสูตร) คือค่าผลลัพธ์ที่ได้จาก Model



ใช้ Data Set ชื่อ Wage จาก package ชื่อ ISLR 
ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้ครับ



สร้างความสัมพันธ์เชิงเส้นระหว่างอายุกับรายได้ โดยใช้คำสั่ง lm() สำหรับสร้าง linear regression model  และเก็บค่าไว้ในตัวแปล lm_wage

และใช้ model ที่ได้มาใส่ฟังก์ชัน predict() เพื่อหาค่ารายได้ทุกค่าที่ได้จาก  model เก็บในตัวแปร pred



คิดค่า RMSE โดยใช้ค่า pred เป็น y ใส่หมวก เปรียบเทียบกับ Wage$wage



ค่า RMSE จะสามารถใช้เทียบประสิทธิภาพระหว่าง model ซึ่ง model ไหนมีค่าน้อยกว่าแสดงว่าดีกว่า

Machine Learning with R part VI (The Confusion Matrix)

Confusion Matrix เป็นตารางที่เปรียบเทียบผลลัพธ์ซึ่งได้จากการทำ Clustering และผลลัพธ์ที่ถูกต้อง




ซึ่งจะถูกแบ่งออกเป็น 4 ส่วน ได้แก่

1.True Positives (TP) คือ ผลลัพธ์จาก Clustering เป็น Positive ถูกต้องตามที่ต้องการ
2.False Positives (FP) คือ ผลลัพธ์จาก Clustering เป็น Positive จริงๆ ควรเป็น Negative
3.False Negatives (FN) คือ ผลลัพธ์จาก Clustering เป็น Negative จริงๆ ควรเป็น Positive
4.True Negatives (TN) คือ ผลลัพธ์จาก Clustering เป็น Negative ถูกต้องตามที่ต้องการ

สามารถมาคิดค่าความแม่นยำ (Accuracy) ของการทำ Clustering


ความเที่ยงตรง (Precision) และค่า Recall 




วันอังคารที่ 27 ตุลาคม พ.ศ. 2558

Machine Learning with R part V (Clustering: Separating the iris species)

Clustering เป็นการแบ่งกลุ่ม objects โดยไม่มีความรู้มาก่อน (without any prior knowledge of what these groups could or should look like)

ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้ครับ

ในที่นี้เราจะแบ่งกลุ่มดอก iris โดยใน Data Set ของ iris จะมี species บอกอยู่แล้วว่าดอกไหน species อะไร เรามาดูกันดีกว่าว่าการทำ Clustering โดยใช้เทคนิค K-Means จะออกมาถูกต้องแค่ไหน



เริ่มต้นจะต้องทำการ set.seed(1) ก่อน เพื่อจะทำให้ Cluster แต่ละครั้งได้ค่าเหมือนกัน ถ้าไม่มีคำสั่งนี้ Cluster แต่ละครั้งจะได้ผลลัพธ์ออกมาแตกต่างกัน (ทำให้ random เลขแต่ละครั้งเหมือนกันถ้า set ไว้)

นำข้อมูล iris ตัด Column ชื่อ Species ซึ่งเป็น Column ที่ 5 ออกไปแล้วเก็บไว้ในตัวแปร my_iris
เก็บข้อมูล Species ไว้ในตัวแปร species



ทำการ Clustering โดยใช้ฟังก์ชัน kmeans โดยเลือก Clustering เป็น 3 กลุ่ม เก็บผลลัพธ์ในตัวแปร kmeans_iris

เปรียบเทียบผลลัพธ์ที่ได้จาก Clustering ด้วย kmeans กับ species ที่ถูกต้อง ด้วยคำสั่ง table()

ผลลัพธ์ออกมาส่วนใหญ่ถูกต้องมีเพียง 16 ดอกที่แบ่งกลุ่มผิด (เลข 2 กับ 14 ในตาราง)



Plot Graph โดยแกน x และ y เป็นความกว้างและยาวของกลีบดอก จากตาราง my_iris และให้สีตามที่ได้จาก Clustering ด้วย kmeans






Machine Learning with R part IV (Regression: Linkedin views for the next 3 days)

ในตอนที่สาม เราสามารถ Predict รายได้ จากอายุ ซึ่งเราสนใจหารายได้จากอายุเพียงแค่ค่าเดียว

ซึ่งจริงๆ แล้ว R สามารถ Predict ค่าได้อย่างต่อเนื่อง ในตอนนี้ เราจะทำการ Predict ค่า view ในอนาคตสามวันต่อจากค่า view ในอดีต 21 วัน

ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้ครับ



เริ่มต้นสร้างตัวแปลวันโดยคำสั่ง days = 1:21 เป็น Vector ที่มีตัวเลข 1 ถึง 21
ตัวแปล linkedin เป็น Vector ที่มีค่า view วันที่ 1 ถึงวันที่ 21



สร้าง Linear Model ซึ่งเป็นความสัมพันธ์ระหว่าง days และ linkedin ด้วยคำสั่ง lm() จากนั้นเก็บค่าไว้ใน linkedin_lm

สร้างตัวแปล future_day ซึ่งเป็น Data Frame เพื่อ Predict ยอด view ในวันที่ 22 ถึงวันที่ 24

ทำการ Predict โดยใส่ model และ future_day เก็บค่าไว้ใน linkedin_pred



Plot Graph แสดงวันที่ 1 ถึง 21 และวันที่ 22 ถึง 24 ที่ได้ Predict ให้เป็นสีเขียว




Machine Learning with R part III (Classification: Filtering spam)

Filter spam ใน Email แบบง่ายๆ โดย Classifier ที่ให้ค่าผลลัพธ์เป็น Vector

Data Set ที่ใช้จะอยู่ใน Link นี้ ซึ่งจะเป็นไฟล์ CSV

ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้เช่นเคยครับ :D

เราสามารถใช้คำสั่ง emails = read.csv("emails_small.csv") เพื่ออ่าน Data Set ให้เข้ามาอยู่ในตัวแปล emails




สร้าง spam_classifier สำหรับแบ่งกลุ่ม emails โดยใช้ข้อมูลใน Column ชื่อ avg_capital_seq ซึ่งก็คือค่าเฉลี่ยจำนวนอักษรตัวใหญ่ที่เรียงต่อกัน (average amount of sequential capital letters) เพื่อตรวจสอบ spam จากนั้นเก็บผลลัพธ์ในตัวแปร spam_pred



ตรวจสอบความถูกต้องโดยเปรียบเทียบกับคำตอบใน Column ชื่อ spam




Machine Learning with R part II (Basic Prediction)

มาทำ Prediction แบบง่ายๆ กันเถอะ ในตอนที่สองเราจะใช้ข้อมูลจาก ISLR ซึ่งรวมรวม Data Set พื้นฐานไว้ให้

ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้ครับ

วิธีลง ISLR สามารถทำได้โดคำสั่ง install.packages("ISLR")



เวลาใช้งานเราจะต้องใช้คำสั่ง library(ISLR) ก่อนถึงจะสามารถใช้งาน Data Set ใน ISLR
ในที่นี้จะใช้ Data Set ชื่อ Wage ซึ่งเป็นข้อมูลรายได้ของคนงาน 3000 คนใน Atlantic กลาง



ในที่นี้เราจะทำความสัมพันธ์เชิงเส้นโดยสนใจระหว่างอายุกับรายได้ โดยใช้คำสั่ง lm() สำหรับสร้าง linear regression model  และเก็บค่าไว้ในตัวแปล lm_wage จากนั้นสร้าง Data Frame สำหรับหาค่าอายุที่ต้องการ เพื่อทำนายรายได้ ในตัวแปลชื่อ unseen ในที่นี้เราอยากรู้ว่าถ้าคนอายุ 60 จะมีรายได้เท่าไหร จากนั้นนำค่า model และ unseen ไปใส่ฟังก์ชัน predict() เพื่อหาค่ารายได้



Machine Learning with R part I



 ห่างหายไปนานสำหรับการเขียนบล๊อก วันนี้ผมกำลังเรียนรู้การใช้ภาษา R สำหรับทำ Machine Learning จากเว็บ DataCamp มาเรียนด้วยกันนะครับ :D

ปล. ถ้ารูปเล็กเกินไปก็คลิ๊กที่รูปเพื่อขยายได้ครับ

เริ่มแรกเราจะใช้ Data Set ของดอก Iris

โดยเราสามารถพิมพ์ iris เข้าไปได้โดยตรงเลยครับ


เราสามารถใช้คำสั่ง  str(iris) หรือ dim(iris) เพื่อดูรายละเอียดข้อมูลของ Data Set



ดูหัวและหางของข้อมูล ด้วยคำสั่ง head(iris) และ tail(iris)


ดูสรุปข้อมูลด้วยคำสั่ง  summary(iris)