ภาพบรรยากาศการอบรมเชิงปฏิบัติการ Practical Data Mining with RapidMiner Studio 6 รุ่นที่ 1

ผ่านไปแล้วกับการอบรม Practical Data Mining with RapidMiner Studio 6 รุ่นที่ 1 ซึ่งมีผู้สนใจเข้าร่วมอบรมเป็นจำนวนมาก และเป็นคอร์สที่ใหญ่ที่สุดที่ทางเราเคยจัดอบรมมา ทางเราขอขอบพระคุณทุกท่านที่ได้สละเวลามาเข้าร่วมอบรมในครั้งนี้ และหวังเป็นอย่างยื่งว่าท่านจะชอบซอฟต์แวร์ RapidMiner Studio 6 มากขึ้น ^^

IMG_6074

IMG_8435 IMG_8457 IMG_6065 IMG_6006

 

ชมภาพบรรยากาศทั้งหมดได้ที่ Facebook ของ DataCube

Data Mining for Statisticians (vdo)

ขอแนะนำวิดีโอเรื่อง Data Mining for Statisticians แบ่งเป็นตอนสั้นๆ ตอนละประมาณ 20 นาทีซึ่งประกอบด้วย 6 ตอนดังนี้

 

ภาพบรรยากาศการอบรมเชิงปฏิบัติการพัฒนา WEB APPLICATION ด้วย WEKA และ PHP รุ่นที่ 2

ภาพบรรยากาศการอบรม Web Application Development using Weka and PHP รุ่นที่ 2 ซึ่งยังคงได้รับการตอบรับที่ดีเหมือนเช่นเคย ทีมงาน data cube ขอขอบคุณผู้เข้าร่วมอบรมทุกท่านที่ให้ความไว้วางใจและมาอบรมกับทางเราครับ ทางเราจะปรับปรุงมาตรฐานให้ดีขึ้นไปอีกครับ ^^

IMG_7316 IMG_7195 IMG_7194  IMG_7217 IMG_7211

ดูภาพบรรยากาศทั้งหมดได้ที่นี่

ดาวน์โหลดฟรีหนังสือ Social Media Mining An Introduction

9781107018853ดาวน์โหลดฟรีหนังสือ Social Media Mining An Introduction มีหัวข้อต่างๆ ดังนี้

หรือดาวน์โหลดหนังสือทั้งเล่มได้ฟรีที่ http://dmml.asu.edu/smm/SMM.pdf

แจกฟรี The Data Analytics Handbook

นักศึกษาจากมหาวิทยาลัย Berkeley ทำการสัมภาษณ์ data scientist จากบริษัทชั้นนำต่างๆ เช่น Facebook, LinkedIn, Yelp โดยแบ่งเป็น 2 เล่ม คือ

  • The Data Analytics Handbook (Data Analysts + Data Scientists)
  • The Data Analytics Handbook (CEO + Managers)

สามารถดาวน์โหลดได้ฟรีจาก http://www.analyticshandbook.com

nz6w74rvoldjjkhenwto

ขั้นตอนการหากฏความสัมพันธ์ (Association Rules)

[บทความนี้เป็นเนื้อหาบางส่วนจากหนังสือ An Introduction to Data Mining Techniques (ฉบับภาษาไทย]

ในการหากฏความสัมพันธ์นี้มีอยู่หลายวิธี แต่สำหรับบทความนี้จะแสดงการหากฏความสัมพันธ์ด้วยวิธี Apriori ซึ่งจะมีอยู่ 2 ขั้นตอนใหญ่ๆ คือ

  1. การหา frequent itemset เป็นการหารูปแบบของข้อมูลที่เกิดขึ้นร่วมกันบ่อยๆ ในฐานข้อมูล  หรือ มากกว่าค่า minimum support ที่ผู้ใช้กำหนด ในขั้นตอนนี้จะแบ่งได้อีกเป็น 2 ขั้นตอนย่อย คือ
    • การสร้างรูปแบบของ itemset  (join) จะใช้รูปแบบของ itemset ที่มีค่ามากกว่า minimum support มาทำการสร้างรูปแบบของ itemset ที่มีขนาดยาวมากขึ้นทีละหนึ่งขั้นไปเรื่อยๆ
    • การนับค่า support (count) หลังจากที่สร้างรูปแบบของ itemset ได้แล้ว ขั้นถัดมาจะทำการคำนวณค่า support ที่เกิดขึ้น โดยที่ support คือจำนวนเปอร์เซ็นต์ที่พบ itemset ในฐานข้อมูล
  2. การสร้าง association rule หลังจากที่หา frequent itemset ได้แล้วจะนำรูปแบบที่หาได้มาสร้างเป็นกฏความสัมพันธ์โดย เช่น Apple => Cereal หมายความว่าเมื่อลูกค้าซื้อ Apple แล้วลูกค่าจะซื้อ Cereal ร่วมไปด้วย

ในบทความนี้จะใช้ตัวอย่างข้อมูลที่แสดงในรูปที่ 1 ซึ่งเรียกว่า transaction database ในฐานข้อมูลนี้จะประกอบด้วย 4 transaction และมีสินค้าที่ลูกค้าซื้อทั้งหมด 5 ประเภทคือ Apple, Beer, Cereal, Diapers และ Eggs

transaction_database

รูปที่ 1 แสดง transaction database ที่จะใช้หากฏความสัมพันธ์

ในบทความนี้จะแสดงตัวอย่างการหากฏความสัมพันธ์โดยกำหนดค่า minimum support ไว้ที่ 50% นั่นคือ สินค้าที่มีการซื้อมากกว่าหรือเท่ากับ 50% จะถือว่าเป็น frequent itemset ขั้นตอนการทำงานมีดังต่อไปนี้
Continue reading

โมเดล Naive Bayes และการแปลความหมาย

หลังจากบทความที่แล้วผมได้อธิบายการสร้างโมเดล Decision Tree ไปแล้ว ในวันนี้ขออธิบายวิธีการทำ classification อีกเทคนิคหนึ่งที่ได้รับความนิยมก็คือวิธี Naive Bayes หลักการของวิธีการนี้จะใช้การคำนวณความน่าจะเป็น ก่อนอื่นขอทบทวนความน่าจะเป็นที่เรียกว่า conditional proabability เสียก่อน ดังแสดงในสมการด้านล่าง

Screen Shot 2557-03-18 at 9.21.18 AM

  • P(A|B) คือ ค่า conditional probability หรือค่าความน่าจะเป็นที่เกิดเหตุการณ์ B ขึ้นก่อนและจะมีเหตุการณ์ A ตามมา
  • P(AB) คือ ค่า joint probability หรือค่าความน่าจะเป็นที่เหตุการณ์ A และเหตุการณ์ B เกิดขึ้นร่วมกัน
  • P(B) คือ ค่าความน่าจะเป็นที่เหตุการณ์ B เกิดขึ้น

ในลักษณะเดียวกันเราจะเขียน P(B|A) หรือค่าความน่าจะเป็นที่เหตุการณ์ A เกิดขึ้นก่อนและเหตุการณ์ B เกิดขึ้นตามมาทีหลังได้เป็น

Screen Shot 2557-03-18 at 9.25.42 AM

Continue reading

ขั้นตอนการสร้างโมเดล Decision Tree

[บทความนี้เป็นเนื้อหาบางส่วนจากหนังสือ An Introduction to Data Mining Techniques (ฉบับภาษาไทย]
เทคนิค Decision Tree เป็นเทคนิคหนึ่งที่ได้รับความนิยมในการนำมาประยุกต์ใชัในงานด้าน data mining วันนี้ผมจะแนะนำการสร้างโมเดล decision tree แบบง่ายๆ ก่อนอื่นเราจะใช้ข้อมูลในตารางที่ 1 ซึ่งเป็นข้อมูลที่เก็บสภาพภูมิอากาศ 14 วันย้อนหลังเพื่อดูว่าจะมีการจัดแข่งขันกีฬาหรือไม่

ตารางที่ 1 แสดงข้อมูล weather

Nooutlooktemperaturehumiditywindyplay
1sunnyhothighFALSEno
2sunnyhothighTRUEno
3overcasthothighFALSEyes
4rainymildhighFALSEyes
5rainycoolnormalFALSEyes
6rainycoolnormalTRUEno
7overcastcoolnormalTRUEyes
8sunnymildhighFALSEno
9sunnymildnormalFALSEyes
10rainymildnormalFALSEyes
11sunnymildnormalTRUEyes
12overcastmildhighTRUEyes
13overcasthotnormalFALSEyes
14rainymildhighTRUEno

จากข้อมูลในตารางที่ 1 ประกอบด้วย 5 แอตทริบิวต์ คือ

  • outlook แสดงสภาพภูมิอากาศ ประกอบด้วย 3 ค่า คือ sunny, overcast, rainny
  • temperature แสดงอุณหภูมิ ประกอบด้วย 3 ค่า คือ hot, mild, cool
  • humidity แสดงค่าความชื้นในอากาศ ประกอบด้วย 2 ค่า คือ high, normal
  • windy แสดงว่าเป็นวันที่ลมแรงหรือไม่ ประกอบด้วย 2 ค่า คือ TRUE, FALSE
  • play แสดงการจัดแข่งขันกีฬา ซึ่งเป็นคลาส ประกอบด้วย 2 ค่า คือ yes, no

การสร้างโมเดล decision tree จะทำการคัดเลือกแอตทริบิวต์ที่มีความสัมพันธ์กับคลาสมากที่สุดขึ้นมาเป็นโหนดบนสุดของ tree (root node) หลังจากนั้นก็จะหาแอตทริบิวต์ถัดไปเรื่อยๆ ในการหาความสัมพันธ์ของแอตทริบิวต์นี้จะใช้ตัววัด ที่เรียกว่า Information Gain (IG) ค่านี้คำนวณได้จากสมการดังนี้

IG (parent, child) =  entropy(parent) – [p(c1) × entropy(c1) + p(c2) × entropy(c2) + …]

โดยที่ entropy(c1) = -p(c1) log p(c1) และ p(c1) คือ ค่าความน่าจะเป็นของ c1

ต่อไปเราจะลองคำนวณค่าแต่ละแอตทริบิวต์เทียบกับคลาสเพื่อหาแอตทริบิวต์ที่มีค่า IG มากที่สุดมาเป็น root ของ decision tree ดังนี้ครับ

1. คำนวณค่า IG ของแอตทริบิวต์ outlook เพื่อให้ดูง่ายขึ้นผมจะแสดงให้เป็นภาพดังในรูปที่ 1

Screen Shot 2557-03-17 at 7.10.21 AM

รูปที่ 1 แสดงค่าความน่าจะเป็นเมื่อใช้แอตทริบิวต์ outlook

จากรูปที่ 1 สามารถคำนวณค่า IG ได้ดังนี้
entropy (parent) = -p() × logp() – p() × logp()
= -[0.64 × log2(0.64) + 0.36 × log2(0.36)]
= -[0.64 × -0.64 + 0.36 × -1.47]
= 0.94
Continue reading

ดาวน์โหลดฟรี An Introduction to Statistical Learning with Applications in R

ISLR Coverผมเคยได้รับคำแนะนำให้อ่านหนังสือ The Elements of Statistical Learning ที่เขียนโดย Hastie, Tibshirani และ Friedman ซึ่งเป็นหนังสือในตำนานที่เยี่ยมยอดเล่มหนึ่งเลยทีเดียว แต่ว่าหนังสือเล่มนี้ก็อ่านค่อนข้างยากเพราะมีการใช้สมการทางคณิตศาสตร์ในการอธิบาย ถ้าใครเคยติดปัญหาเหมือนผมหรือติดใจหนังสือ ESL วันนี้ผมแนะนำหนังสือเรื่อง An Introduction to Statistical Learning with Applications in R ซึ่งเขียนโดยทีมเดิมแต่ปรับเนื้อหาให้อ่านได้ง่ายขึ้น มีคำอธิบายมากขึ้นและมีวิธีการใช้งานจริงด้วยภาษา R

 

หนังสือทั้งสองเล่มนี้สามารถดาวน์โหลดได้ฟรีตาม link ด้านล่างนี้ครับ

สำหรับท่านที่สนใจหนังสือทาง data mining เล่มอื่นๆ ลองดูที่ Our Experience ครับ ผม list หนังสือที่เคยอ่านและอยากแนะนำไว้แล้วครับ ^^

เทคนิค Support Vector Machine (SVM) และซอฟต์แวร์ HR-SVM

หลังจากบทความที่แล้วผมได้พูดถึงการแปลความหมายของโมเดล Neural Network ใน Weka กันไปแล้ว วันนี้จะแนะนำให้รู้จักเทคนิค Support Vector Machine หรือเรียกสั้นๆ ว่า SVM ซึ่งเป็นโมเดลที่ใช้การคำนวณทางคณิตศาสตร์ซึ่งจัดอยู่ในกลุ่มเดียวกับ Neural Network แต่ SVM มีข้อดีกว่าตรงที่ไม่ค่อยเกิดปัญหา overfitting มากเหมือนกับ Neural Network

Note Overfitting คือการที่โมเดลจดจำรูปแบบของข้อมูล training มากเกินไปจนไม่สามารถทำนายข้อมูล unseen data ได้เพื่อให้เข้าใจง่ายขึ้นลองคิดตามสถานการณ์นี้ครับ สมมุติว่านิสิตคนหนึ่งเตรียมตัวที่จะสอบวิชาภาษาอังกฤษซึ่งโดยปกติแล้วการสอบในแต่ละปีจะมีคำถามที่คล้ายๆ เดิมดังนั้นนิสิตคนนี้จึงได้นำข้อสอบในปีก่อนหน้ามาอ่านเพื่อจดจำคำถามและคำตอบและเนื่องจากนิสิตคนนี้ความจำดีเลิศสามารถจดจำคำถามและจำตอบได้หมดทุกข้อ แต่เมื่อถึงเวลาไปสอบจริงๆ แล้วอาจารย์เปลี่ยนคำถามในข้อสอบใหม่หมดจนไม่มีข้อใดเหมือนเดิมเลย ทำให้นิสิตคนนี้ทำข้อสอบได้คะแนนที่ตำ่มากเพราะพยามแต่จะจำคำถามและคำตอบของข้อสอบปีก่อนๆ ลักษณะแบบนี้เป็นตัวอย่างของ overfitting ครับ ^^

แต่ว่าการทำงานทางทฤษฎีของ SVM ค่อนข้างเข้าใจยากพอสมควร ดังนั้นวันนี้ผมขออธิบาย concept คร่าวๆ ของ SVM ให้ดูครับ สมมุติว่าข้อมูล training ของเราแสดงความสัมพันธ์ระหว่างอายุและรายได้ และมีคลาสเป็น 2 คลาสคือ คลาส A และ คลาส B เมื่อเราเอาข้อมูลมาทำการ plot ลงไปในกราฟ 2 มิติ ดังแสดงในรูปที่ 1 ซึ่งแกน x แสดงค่ารายได้ และแกน y แสดงค่าอายุ และสีแสดงค่าคลาส

scatter_plot
รูปที่ 1 แสดงการกระจายข้อมูล

จากการกระจายตัวของข้อมูลในรูปที่ 1 จะเห็นว่าสามารถแบ่งแยกออกเป็น 2 กลุ่มได้อย่างชัดเจน ซึ่งโดยปกติแล้วเราจะใช้ linear model (หรือสมการเส้นตรง) เพื่อทำการแบ่งข้อมูลออกเป็น 2 คลาส ทว่า linear model นี้สามารถเป็นไปได้หลากหลายเส้นดังในรูปที่ 2

linear model รูปที่ 2 แสดง linear model ต่างๆ ที่สามารถแบ่งข้อมูลออกเป็น 2 กลุ่มได้

คำถามก็คือแล้วเราจะเลือกโมเดลไหนดี ? คำตอบคือเราควรจะเลือกโมเดลที่ไม่ overfitting หรือโมเดลที่ไม่จำรูปแบบของข้อมูล training มากเกินไป จากตัวอย่างจะเห็นว่าโมเดลที่ 1 และโมเดลที่ 3 จะมีจุดหนึ่งที่ linear model อยู่ใกล้กับข้อมูลแต่ละคลาสมากเกินไป นั่นคือ ถ้ามีข้อมูลใหม่ที่อยู่ห่างออกไปสักเล็กน้อยก็จะทำนายผิดไปพลาดไป ดังนั้นในตัวอย่างนี้จึงควรจะเลือกโมเดลที่ 2  (เส้นสีแดง) และนั่นคือหลักการของ SVM ที่เลือก linear model ที่มีระยะห่างระหว่าง 2 คลาสห่างกันมากที่สุด ดังแสดงในรูปที่ 3

Screen Shot 2557-03-13 at 10.43.44 AM                 รูปที่ 3 แสดงโมเดล SVM ที่แบ่งข้อมูลออกเป็น 2 กลุ่มได้

ข้อดีอีกอย่างของวิธีการ SVM คือการมี kernel function ที่สามารถเปลี่ยนข้อมูลที่มีมิติ (dimension) ที่ต่ำกว่าให้มีมีติสูงขึ้นเพื่อให้การแบ่งข้อมูลแบบ linear model ได้ ดังแสดงตัวอย่างในรูปที่ 4

kernel svm
รูปที่ 4 แสดงการแปลงข้อมูลด้วย Kernel function

จากข้อมูลในรูปที่ 4 (a) จะเห็นว่ามีข้อมูลอยู่ 2 คลาส คือ คลาส A และ B ซึ่งมีเพียง 1 มิติ เราสามารถสร้างโมเดลที่เป็นรูปแบบของกฏเพื่อแบ่งแยกข้อมูลออกเป็น 2 คลาสได้ เช่น

  • ถ้าค่า X < 0.5 หรือ X > 2.5 แล้วจะทำนายว่าเป็นคลาส B
  • ถ้าค่า X อยู่ในช่วง [0.5-2.5] แล้วจะทำนายว่าเป็นคลาส A

ที่เป็นเช่นนี้เนื่องจากข้อมูลใน training ของเราแสดงแค่นั้น แต่เหมือนเดิมครับโมเดลที่สร้างนี้อาจจะ overfit ได้ถ้าจริงๆ แล้วข้อมูลที่มีค่า X = -1 ก็เป็นคลาส A แต่โมเดลเราจะทำนายผิดทันที

ดังนั้นถ้าเราใช้ kernel function เพื่อเพิ่มแอตทริบิวต์ขึ้นมาเป็น X2 = X2 ซึ่งแสดงการกระจายตัวของข้อมูลในรูปที่ 4 (b) และมีโมเดล SVM ทำการแบ่งข้อมูลออกเป็น 2 คลาสโดยการใช้เส้นตรงเพียงเส้นเดียว

ทั้งหมดนี้คือ concept ของ SVM ซึ่งอย่างที่ผมบอกตั้งแต่ตอนแรกว่าทฤษฏีในการสร้างโมเดลนั้นยุ่งยากมากทีเดียว จึงได้มีผู้พัฒนาซอฟต์แวร์ที่ช่วยให้สามารถสร้างโมเดล SVM ได้อย่างง่ายๆ ขึ้นมา เช่น SVMlight หรือ libsvm ซึ่งทำงานได้ดี แต่ในวันนี้ผมขอแนะนำซอฟต์แวร์อีกตัวหนึ่งชื่อว่า HR-SVM ซึ่งพัฒนาโดยทีมงานคนไทยนำทีมโดย ดร. พีรพล เวทีกูล อาจารย์จากคณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ซอฟต์แวร์ตัวนี้สามารถทำงานได้ทั้งในระบบปฏิบัติการ Windows, Linux และ Mac OS X โดยซอฟต์แวร์นี้สามารถสร้างโมเดล SVM

  • สำหรับ classify ข้อมูล 2 คลาสหรือมากกว่า (multiclass)
  • สำหรับ classify ข้อมูลประเภท multi-label หรือการที่ข้อมูล 1 ตัวมีได้มากกว่า 1 คลาสคำตอบ เช่น ข่าวหนึ่งอาจจะเป็นข่าวกีฬาและบันเทิงไปพร้อมกัน
  • สำหรับ classify ข้อมูลประเภท hierarchical multi-label คือ ข้อมูลที่มีหลายลาเบล และมีการเรียงตัวเป็นชั้น

ข้อแตกต่างระหว่างซอฟต์แวร์ HR-SVM และซอฟต์แวร์อื่นๆ แสดงดังในตารางที่ 1

ตารางที่ 1 เปรียบเทียบ feature ของซอฟต์แวร์ที่ใช้สร้างโมเดล SVM

FunctionalitySVMlightSVMTorchLIBSVMHR-SVM
Binary ClassificationXXXX
Multiclass Classification-XXX
Feature Selection--XX
Multi-Label Classification--XX
Imbalanced Data Handling---X
Hierarchical Multi-Label Classification---X
Propagated Error Handling---X

สำหรับท่านที่สนใจการใช้งานติดตาม VDO การใช้งานได้ที่ เว็บไซต์ https://sites.google.com/site/hrsvmproject/

สำหรับท่านที่สนใจการใช้งาน SVM ใน RapidMiner Studio 6 สามารถดูได้จากบทความ “การหา optimize parameter สำหรับ libsvm ด้วย RapidMiner Studio 6” ครับ

เอกสารอ้างอิง