Thursday, October 1, 2015

Wednesday, September 30, 2015

Highly recommended book ML ด้วย Python + Scikitlearn

หนังสือเล่มไหม่เพิ่งคลอดที่ในวงการ Datasci พูดถึงกันมากครับ

สำหรับผู้ที่สนใจ ML ด้วย Python + Scikitlearn เล่มนี้ถือเป็น Bible ได้เลยครับ



http://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/ref=sr_1_2?ie=UTF8&qid=1437754343&sr=8-2&keywords=python+machine+learning+essentials


ตัวอย่างการทำ Customer segmentation ด้วย R จาก สถาบัน INSEAD ครับ

ตัวอย่างการทำ Customer segmentation ด้วย R จาก สถาบัน INSEAD ครับ

http://inseaddataanalytics.github.io/INSEADAnalytics/Report_s45.html

Monday, September 14, 2015

แนะนำ Free-ebook เกี่ยวกับ Data-sci

ขอแนะนำ Free Ebooks 3 เล่ม ดังต่อไปนี้ครับ  ซึ่งทั้ง 3 เล่มนี้จะใช้ R programming language ในการสื่อ เป็นหลักครับ ผมคิดว่านัก Data-sci ทุกคนควรมีติดไว้นะครับ ซึ่งผู้แต่งได้อธิบายได้เข้าใจได้ง่าย และเอาไปปฎิบัติใช้จริงได้ครับ

ไว้ว่างๆ จะมาสรุปเนื้อหาแต่ละเล่มให้ครับ

Friday, September 11, 2015

Web Scraping

นอกเหนือความสามารถในด้านการประยุกข์ใช้ machine learning แล้ว ยังมีอีกหนึ่งมีความสามารถสำคัญไม่แพ้กัน นั่นก็คือ การเก็บข้อมูล (Data Collection) นักวิทย์ข้อมุลต้องสามารถดึงข้อมูลได้จากหลายทาง ไม่ว่าจะดึงจาก internal (ข้อมูลจากภายในองค์กร) หรือ external (จากภายนอกองค์กร) เพื่อให้ข้อมุลมีคุณภาพเพื่อที่จะสามารถใช้วิเคราะห์แก้ปัญหาได้ตรงจุดมากขึ้น ตัวอย่างข้างล่างเป็นแหล่งของข้อมูลที่ใช้ในการแก้ปัญหา

  • Database ตัวอย่างเช่น Hadoop, MangoDB (NOSQL) , RDBMS
  • Social Networking Data API เช่น Facebook , Google , Twitter API
  • ข้อมูลที่อยู่บน Website
ในบทความนี้ผมจะมาแนะนำ library ที่ช่วยให้เราเขียน script ดึงข้อมุลจากหน้า website หรือเรียกว่า Web Scraping ที่ชื่อว่า  Beautiful Soup  ใช้กับ Python  ซึ่งตัว library ช่วยให้เราดึงข้อมูลไม่ว่าจะอยู่ส่วนไหนของเว็ปไซต์ได้อย่างง่ายได้ เพียงผู้ใช้แค่ต้องรู้และเข้าใจโครงสร้างของ html 

ตัวอย่างกราฟด้านล่าง ผมได้ลองเขียน script ดึงข้อมุล กลุ่มความสามารถที่เป็นที่ต้องการสำหรับสายงาน DataSci ในเมืองไทย จากเวปจัดหางานชื่อดัง  ผลปรากฏว่าได้ดังนี้

นี่ก็เป็นตัวอย่างคร่าวๆ ในการนำ library ไปใช้งานดึงข้อมูลจากเว็ปไซต์ครับ

Monday, September 7, 2015

What to do next after applying machine learning?

เคยมั๊ย หลังจากที่ได้สร้าง model และมีความหวังลึกๆว่ามันต้อง perfect แน่ะ แต่แล้วพอได้ลองเทสกับ test data ผลปรากฏว่า performance ไม่ดีเอาเสียเลย (อาจทำเอาเสีย self)   ผมเจอบทความๆ นึงที่มีประโยนช์อย่างมากที่สามารถชี้แนะ (advise) ได้ว่า มีหลักการอะไรบ้างที่ต้องนำไปใช้และไปตรวจสอบเพื่อปรับปรุงประสิทธิภาพให้ดียิ่งขึ้น โดยเป็นเนื้อหาที่สอนใน machine learning ของ Andrew Ng จาก Stanford

สามารถอ่านบทความได้ที่ link

Ensemble method

วันนี้จะมาแนะนำเทคนิคของ advanced machine learning model ที่ช่วยทำให้ประสิทธิภาพการทำนายผล (prediction performance) ดียิ่งขึ้นไปอีก

Ensemble เป็นการสร้างหลายๆ model จาก data ชุดเดียวกัน แล้วนำผลลัพธ์ที่ได้จากหลายๆ model มารวมกัน(combined) อาจะเป็นด้วยวิธีหาค่าเฉลี่ย (averaging) หรือดูจากเสียงข้างมากเป็นหลัก (majority vote)

อัลกอริทึมที่พัฒนาบน concept ของ Ensemble และถูกใช้กันมาก มีดังนี้

1. Bagging Tree คำว่า  Bagging ย่อมาจาก Bootstrap Aggregation โดย bagging tree นี้ จะทำการสร้าง หลายๆ subset แบบสุ่มจาก train data  แล้วแต่ละชุดจะถูกเรียนรู้ด้วย Tree  ผลลัพธ์ที่ได้คือ จะได้ Tree ที่หลากหลาย เนื่องจากเรียนรู้จากชุดข้อมุลแบบสุ่ม (random subset)
ข้อดี 

  • ค่า variance จะลดลงทันที (Precision เพิ่มขึ้น) เนื่องจากค่าทำนายที่ได้จากแต่ละ Tree จะถูกเฉลี่ย  อาจสรุปได้ว่ายิ่งสร้าง Tree มาก  ค่า variance ก็ยิ่งลดลง 

ข้อเสีย

  • ยังคงมีค่า bias อยู่ ซึ่งแก้โดยเพิ่ม depth ของ Tree 


2. Random Forest  พูดง่ายคือ Bagging Tree + Random Attribute Subsets ซึ่งตอนสร้าง random subset แทนที่จะรวม attribute ทั้งหมดใน random subset ตัว attribute จะถูก Random ด้วย
ข้อดี

  • ลดค่า correlation ระหว่าง Tree ได้ เนื่องจาก function Random Attribute Subsets

ข้อเสีย เหมือนกับ Bagging Tree

3. Gradient Boosting Tree (GBT) จะแตกต่างกับสอง model ข้างบนตรงที่ การสร้างแต่ละ Tree จะเป็นแบบ Sequence โดย input แต่ละ Tree จะเป็น output จาก Tree ก่อนหน้า  โดย concept คือ GBT จะทำการสร้างแต่ละ Tree เพื่อลดค่า error ที่เกิดจาก Tree ก่อนหน้า โดยวิธี Gradient Descend

Y(actual) = Y(predict) + Error< - (สร้าง Tree เพื่อ predict Error)

แล้วนำผลลัพธ์ที่ได้มารวมกัน ก็จะทำให้ได้ค่าใกล้เคียงกับ Y(actual)

ข้อดี
  • bias และ variance ลดลง เนื่องจาก Error ถูกแก้ไข
  • แค่ depth ของ tree = 1  ก้เพียงพอที่จะได้ค่า performance ที่ดีขึ้นมาก เมื่อเทียบกับ Bagging Tree และ Random forest ที่ต้องเพิ่ม depth มากขึ้น เพื่อให้ได้ performance ที่ใกล้เคียง
ข้อเสีย
  • มีค่า parameter หลายตัวที่ต้อง tune เพื่อให้ได้ค่า performance ที่ดี และเลี่ยงการเกิด over-fitting