หนังสือเล่มไหม่เพิ่งคลอดที่ในวงการ 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
Wednesday, September 30, 2015
ตัวอย่างการทำ Customer segmentation ด้วย R จาก สถาบัน INSEAD ครับ
ตัวอย่างการทำ Customer segmentation ด้วย R จาก สถาบัน INSEAD ครับ
http://inseaddataanalytics.github.io/INSEADAnalytics/Report_s45.html
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
สามารถอ่านบทความได้ที่ 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)
ข้อดี
ข้อเสีย
2. Random Forest พูดง่ายคือ Bagging Tree + Random Attribute Subsets ซึ่งตอนสร้าง random subset แทนที่จะรวม attribute ทั้งหมดใน random subset ตัว attribute จะถูก Random ด้วย
ข้อดี
ข้อเสีย เหมือนกับ Bagging Tree
3. Gradient Boosting Tree (GBT) จะแตกต่างกับสอง model ข้างบนตรงที่ การสร้างแต่ละ Tree จะเป็นแบบ Sequence โดย input แต่ละ Tree จะเป็น output จาก Tree ก่อนหน้า โดย concept คือ GBT จะทำการสร้างแต่ละ Tree เพื่อลดค่า error ที่เกิดจาก Tree ก่อนหน้า โดยวิธี Gradient Descend
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
Saturday, September 5, 2015
5 สิ่งด้าน Analytic ที่ต้องสร้างสมดุล
เวลานักวิทยาศาสตร์ข้อมูลได้เลือกใช้อัลกอรึทึมในการแก้ปัญหา ต่างก็หวังว่าจะได้ผลลัพธ์ที่น่าอัศจรรย์ แต่บ่อยครั้งไม่เป็นไปอย่างที่คาดหวังไว้เนื่องจากมีหลายข้อจำกัดหรือหลายปัจจัย ดังนั้น มันเป็นเรื่องที่สำคัญมากที่ต้ององค์กรต้องเข้าใจถึงข้อจำกัดเหล่านี้ในขั้นตอนสร้างระบบวิเคราะห์ขั้นสูง โดยเฉพาะอย่างยิ่งปัญหาในโลกธุรกิจริงที่ต้องประสบเจอ คือ
1. Data Complexity หลังจากได้รวบรวมข้อมูลแล้ว สิ่งแรกที่ต้องทำคือ ต้องทำความเข้าใจข้อมูลให้ได้มากที่สุดเท่าที่จะทำได้ ตรวจสอบทุกๆมิติให้รอบด้าน เช่น shape , data type , missing value รวมไปถึงการตรวจว่าข้อมูลที่ได้มาสามารถเชื่อมโยงกันกับสิ่งที่เรากำลังแก้ปัญหาได้หรือไม่
2. Speed เวลาที่ใช้ในการสร้างผลลัพธ์ที่ได้จากระบบ บางธุรกิจต้องการให้ระบบทำการสร้างผลลัพธ์หรือการทำนายทุกๆ 15 นาที แต่ตัวระบบเองใช้เวลาเป็นชั่วโมงในการดำเนินการ ซึ่งก็ไม่ตอบโจทย์ธุรกิจ ความเห็นส่วนตัว อาจแก้โดยหาอัลกอรึทึมที่ใช้เวลาน้อยลงในการประมวลผล หรือ Simple model แต่ก็แลกมาด้วย accuracy ที่ลดลง หรือหา Big data processing solution เช่น Spark มาช่วยเพื่อให้ลดระยะเวลาได้มากขึ้น
3. Analytic Complexity ถูกวัดด้วยความซับซ้อนของตัวอัลกอรึทึมเองและทรัพยากรที่ใช้ในการลงมือทำ บางอุตสาหกรรมนั้นต้องการลดความความซับซ้อนเพื่อให้ที่มาของผลลัพธ์นั้นถูกอธิบาย(Interpretation)ใด้ง่าย เนื่องจากผู้บริหารหรือองค์กรต้องการเข้าใจปัจจัยต่างๆที่ส่งผลต่อผลลัพธ์ในการดำเนินธุรกิจ ซึ่งการลดความซับซ้อนลงนั้นทางนักวิทย์ศาตรย์ข้อมูลก็โดนลดความสามารถในการสร้าง model ที่ดีที่สุดไปได้
4. Accuracy and Precision หลายคนยังคงสับสนกับความหมายคำว่า ถูกต้อง และ แม่นยำ ซึ่งในงานด้านวิเคราะห์ข้อมูลจะพูดถึงสองสิ่งนี้อย่างมาก ถ้าให้อธิบายเข้าใจง่าย ขอแสดงด้วยรูปภาพดังนี้
5. Data Size นักวิทย์ข้อมูลมอง Data size เป็นแบบ จำนวนแถว(observation) กับ จำนวนคอลัมน์(attribute(s) of an observation) ในการทำงาน ยังมีองค์กรอีกมากที่ขาดความเข้าใจที่ว่าข้อมุลยิ่งมาก ย่อมสร้าง output ได้ถูกต้องมากขึ้น แต่อย่างไรก็ตาม จุดที่ต้องพิจารณาเวลาจะใช้ข้อมูลขนาดใหญ่ในการวิเคราะห์นั้นก็คือ Tool เรามีพร้อมหรือไม่ และความสามารถของเรา (Capability)
5 ข้อข้างต้น คือ สิ่งที่ต้องสร้างสมดุลให้ดี และใช้พิจารณาเวลาสร้างโปรเจคด้านงานวิเคราะห์ขั้นสูง
บทแปลจาก link
Wednesday, September 2, 2015
7 ประเภทของ Regression เทคนิค ที่นักวิทยาศาตร์ข้อมูลควรรู้
ผมได้เจอบทความของ blog นึง เขียนเกี่ยวกับ Regression 7 รูปแบบ ที่ควรทราบ ได้สรุปไว้ค่อนข้างหน้าสนใจ ซึ่ง Modern Regression เทคนิคที่ควรรู้และนิยมใช้กันมากในเชิงปฏิบัติ ก็คือ
1. Forward Step-wise regression - จะทำการเลือก Feature ให้โดยอัติโนมัติโดยดูจากค่า measure AIC, BIC ในการเลือก set of feature ซึ่งเหมาะกับ high-dimensional data
2. Ridge Regression - เป็นการ penalize ค่า coefficient เพื่อลดผลกระทบที่เกิดจาก multicollinearity (ตัว predictors , independent vars มีความสัมพันธ์ในทางเดียวกันอย่างมาก) และ high-dimensional data
3. Lasso regression - จะเหมือนกัน Ridge regression แต่ norm ที่ใช้จะเป็น L1 ทำให้ค่า coefficient นั้นมีโอกาสเป็น 0 ได้ ซึ่งนำไปสู่เทคนิคที่เรียกว่า feature selection
ดูบทความเต็มได้ที่ link
1. Forward Step-wise regression - จะทำการเลือก Feature ให้โดยอัติโนมัติโดยดูจากค่า measure AIC, BIC ในการเลือก set of feature ซึ่งเหมาะกับ high-dimensional data
2. Ridge Regression - เป็นการ penalize ค่า coefficient เพื่อลดผลกระทบที่เกิดจาก multicollinearity (ตัว predictors , independent vars มีความสัมพันธ์ในทางเดียวกันอย่างมาก) และ high-dimensional data
3. Lasso regression - จะเหมือนกัน Ridge regression แต่ norm ที่ใช้จะเป็น L1 ทำให้ค่า coefficient นั้นมีโอกาสเป็น 0 ได้ ซึ่งนำไปสู่เทคนิคที่เรียกว่า feature selection
ดูบทความเต็มได้ที่ link
Subscribe to:
Posts (Atom)