เมื่อวันเสาร์ อาทิตย์ที่ผ่านมา (20-21 สิงหาคม 2559) ผมได้ไปงานสัมมนา Young Data Scientist ครับ โดยงานนี้เป็น Course เริ่มต้นสำหรับผู้ที่สนใจในเรื่อง Data Science ครับ อ๋องานนี่จัดเป็นครั้งที่ 2 แล้วนะ สำหรับงานนี้จะเน้นในเรื่อง Python กับ Hadoop ครับ สำหรับผมที่เป็นสาย Developer อยู่แล้ว ขอเลือก Python ครับ (ตัว Hadoop เคยลอง Set up เล่นๆใน vm แล้ว แต่ถ้าในงานนี้เป็นการเล่นบน MS Azure Cloud ครับ) มาต่อที่ห้อง Python ดีกว่าครับ ห้องนี้สอนโดย ดร. กานต์ ครับ
Python for Young Data Scientist
* วันแรก
- Introduction to Python - รวมคำสั่งพื้นฐานที่จำเป็นสำหรับงานด้าน Data Science ครับ
- Library Pandas - สำหรับการจัดการข้อมูลดิบครับ และดูสถิติพื้นฐานครับ ผมมองว่าเป็นการทำ ETL + สถิติครับ
- แนะนำ Machine Learning
- Library scikit-learn - เป็น Library สำหรับเรียนรู้ Machine Learning โดยมีอัลกอริทึมสำเร็จรูปมาให้ใช้งานครับ
* วันที่สอง
- แสดงตัวอย่าง Python กับงานจริงครับ ผ่านตัวชุด DataSet ต่างๆ ครับ
- ลองใช้ Kaggle - เจ้าตัว Kaggle มีข้อมูลดิบมาให้ แต่เราต้องมาสร้าง และ Train Model ให้มันเก่งที่สูงครับ
- แนะนำ ใช้ Tools SourceTree เรียนรู้ Git กับ GitHub ครับ เวลาน้อยไปนิดนึง
สำหรับในส่วนของ Python ถ้าไม่ติดอะไร พยายามเขียน Blog ให้ได้มากที่สุดครับ เนื้อหามันเยอะจริงๆครับ อัดแน่น
Main Session(ห้องรวม)
วันที่สอง ช่วงบ่ายเป็นห้องรวมครับ โดยมี Speak 3 ท่าน ดังนี้ครัับ
* Real time Measurement with Big Data (คุณ Mahasak Pijittum จาก Tech@Agoda และ BigBear.io)
- อะไร คือ การ Measurement และทำเพื่ออะไร
- การให้ค่า กับสิ่งที่เราสนใจ สิ่งที่ต้องการจะวัด เพื่อต้องติดตาม และปรับปรุงผลใหีดีขึ้น
- การตั้ง Expectation ตั้งเป้า ทำไมผมไปนึกถึงพวกการประเมินเวลาในการสร้าง Software
- เช่น ใน Agoda ต้องเป้าในคนเข้าเว็บได้ภายใน 3 วินาที แต่เรารู้ได้ไงว่า ทำไมต้อง 3 วิ
- Big Data - ดูภาพนี้และกันครับ เข้าใจง่ายดี
- Log เป็น Big Data นะ มีคุณค่า มีประโยชน์มาก เพื่อติดตาม หรือสร้าง Value
- Big Data & Measurement - เกี่ยวกันอย่างไร วนกลับไปแล้วเราเก็บ Data ไปเพื่ออะไร ตอบปัญหาอะไร ?
- Use Case - มุมที่เราต้องการเก็บ Data เพิ่มมา Measurement เช่น Page Load ดูว่าใช้เวลาเท่าไหน ?
- มุมที่เราสนใจ เรียกว่า Matrix หรือตัวชี้วัด (Measurement) โดย Matrix ต้องมี
- ชื่อ เราจะวัดอะไร เช่น page load
- ค่าของ Measurement
- Tag เอามาจัดกลุ่ม ทำ Filter, Aggregate เช่น ตาม url หรือ ตามประเทศ เป็นต้น
- เอาไปใช้ทำอะไร เช่น หายอดเฉลี่ย Average
- Measurement เกิดจาก Business หรือสิ่งที่เกี่ยวข้องเป็นหลัก เพื่อให้กำไรอย่างยั่งยืน (ชอบคำนี้จาก Micro MBA 55)
- พอมีตัวชี้วัด (Measurement) ก็ต้องมีข้อมูล หรือ Data Model มาตอบสนอง
- Data Model เกิดจากสิ่งที่เราต้องการนำไปใช้
- ปรับเปลี่ยนได้ตามความเหมาะสม
- ตัวอย่าง เช่น อยากรู้ข้อมูลการเปิดหน้าเว็บ Page Load ต้องเก็บข้อมูล
- Value - เวลาที่ใช้
- Time Stamp - เวลาที่บันทึกไว้
- Label - เอาไว้ทำ Filter, Aggregate
- และเก็บค่าอื่นๆ ตามจำเป็นที่ Matrix ต้องการ
- Web Site Pipeline
- เราวาง Matrix ไว้ตรงไหนก็ได้ แต่ให้มันตอบโจทย์ โดยอาจจะวางใน
- URL Rewrite
- Dependency Injection Time - ถ้าไปเพิ่ม Depedency อีก มันส่งผลเยอะไหม
- View Controller
- Data Access - การต่อกับ database
- ตอนวัดผล - จัดให้ User มาทำ A|B Testing ได้นะ ดูจากแต่ละ Session ที่เข้ามา
- ระวัง Allocation Bias ในการจัดกลุ่ม User ที่มา Test
- เราวาง Matrix ไว้ตรงไหนก็ได้ แต่ให้มันตอบโจทย์ โดยอาจจะวางใน
- โครงสร้างของระบบใช้มาตอบโจทย์ในการ Measurement
- Raw Data - database, textfile และ logfile เป็นต้น
- HDFS - เอา Raw Data โดยมาเก็บ
- HIVE - Query ออกไป ได้ MetaStore
- Elastic Search - เอาผลลัพธ์ที่ได้จาก HIVE มาเก็บไว้
- KIBABA - Dashboard นำข้อมูลจาก Elastic Search (ติดต่อผ่าน REST) มา Visualize แสดงผล ให้ทีมงานที่เกี่ยวข้องสามารถนำไปประเมินวางแผนได้
- Business Dashboard - ผู้บริหารเห็นตัวเลข ภาพรวมชัดเจน
- Average VS Percentile - แนะนำให้ Percentile ในกรณีที่ไม่มั่นใจว่ามีข้อมู
ลหลงกลุ่ม Misleading หรือป่าว ?
- ERP ใช้ Big Data ได้นะ แต่เราจะได้ Matrix ตามที่ Vendor Design มาให้
- พอมีข้อมูลเยอะแล้ว เราต้องมาตีความวิเคราะห์
- พื้นฐานที่มีนอกจากความรู้ IT แล้ว ต้องมีด้านคณิตศาสตร์ และสถิติด้วย ถ้าคนเดียวทำไม่ได้ ก็สร้างทีมสิ ^_^
- Roll up & Aggregate
- Average - ค่าเฉลี่ย ระวังเรื่อง Misleading
- Sum - ผลรวมของ Product ในแต่ละ Sector
- Last - Product ไหนทีคนนึกถึง เป็นลำดับ จัดโปรโมชั่น ทำให้เห็นง่ายขึ้น
- Max - ยืนยันว้่า Product ที่ทำเป็นจุดแข็ง อาจจะจัด โปรโมชั่น รวมกับกลุ่ม Min และ Last
- Min - Product ที่ควรปรับปรุง
- Count - นับจำนวน
- ข้อมูลที่ Business ใช้กันส่วนในมองในแกนของเวลา (Timeshift)เป็
นหลัก ผลประกอบการปีก่อน กับปีนี้ หรือถ้าเอาใกล้ตัวก็น้ำหนักครับ - Granularity - แบ่งเวลาออกเป็นช่วงๆ (Clustering) เช่น ทุกๆ 5 นาที
- Data Point - ตัวแทนของข้อมูล ตาม Granularity ที่กำหนดไว้ โดยอาจจะเกิดจากการทำ K-Mean เป็นต้น ผมเข้าใจว่ามีหลายวิธีที่ใช้นะครับ
- Time Series - เกิดจาก Data Point หลายๆอันมาร้อยเรียงกัน (ที่ไม่เอาทุก Data Point เพราะ มันเยอะมากๆ ครับ)
- Temporal VS Time Series - ข้อมูลเปลี่ยนไปตาม
- Temporal - เก็บค่าค่าหนึ่งไว้ ตามเวลา
- Time Series - เก็บตามช่วงเวลา
- ผมเข้าใจว่า Agoda มองว่าราคาที่จองห้องมันเปลี่ยนตลอดเวลา คล้ายๆกับหุ้น
- ตัวอย่างอื่นๆ ที่นำไปใช้ได้
- งานด้าน Human Resource - สามารถเอาข้อมูลต่างๆ มา Integrate เพื่อใช้ในการวางแผน เพิ่ม Performanceไม่ใช่กำหนด KPI (คหสต. Site ที่ทำล่าสุดตั้งเป้าด้วย KPI จนมีพฤติกรรมแปลกๆ และส่งผลให้ภาพรวมเสีย) โดยข้อมูลที่เอามาใช้ได้
- ข้อมูลพื้นฐานพนักงาน การขาดลา มาสาย
- ข้อมูลการบันทึกเวลาทำ Timesheet
- ระบบ Ticket - JITA, Redmine
- Internet Log - ว่าแต่ละวันใช้งานอะไร เข้า Google, StackOverflow
- งานด้าน Operation มี Matrix วัดการทำงานของ Application ด้วย อย่าดูแต่ตัว Physical-Hardware อย่างเดียว ซึ่งพอเรามีข้อมูล มี Matrix จากระบบกลับไป เราสามารถทำอย่างอื่นได้ เช่น
- Audit Log
- Security Log
- Access Control Violation แนวโน้ม เช่น มี load เยอะเข้ามาเยอะ เราต้อง Scale ให้รองรับ หรือ ถ้าใช้น้อยปิดทิ่งประหยัดไฟล์ ลองดูตัวอย่างได้จากกข่าวนี้ Google ใช้ AI ช่วยจัดการระบบทำความเย็นให้เซิร์ฟเวอร์ ลดภาระค่าใช้จ่าย
- งานด้าน Human Resource - สามารถเอาข้อมูลต่างๆ มา Integrate เพื่อใช้ในการวางแผน เพิ่ม Performanceไม่ใช่กำหนด KPI (คหสต. Site ที่ทำล่าสุดตั้งเป้าด้วย KPI จนมีพฤติกรรมแปลกๆ และส่งผลให้ภาพรวมเสีย) โดยข้อมูลที่เอามาใช้ได้
- ถ้ามีผู้เชี่ยวชาญจากภายนอกมาช่วย - มาช่วยดูได้แค่ตอน Kick off ช่วยดูแล สอนให้คำแนะนำ จนถึงจุดหนึ่งที่ทีมงานต้งก้าวเดินเอง (ถ้าตามเทรนน่าจะเรียกว่า Coach) เพราะไม่มีใครรู้ธรรมชาติของข้อมูล และ Business ได้ดีเท่ากับทีมงานที่เข้ามาคุลกคลีอยู่กับมันครับ
- อนาคตเป็นยุคของ Data - Data Engineering, Data-Driven และทักษะด้านภาษาเป็นสิ่งที่จำเป็นมาก โดยเฉพาะภาษาอังกฤษ
* Q&A Machine Learning (อ.โกเมษ กับ อ.เรย์)
- Machine Learning มัน คือ สิ่งมีชีวิต ที่มีพฤิตกรรม มีความคิด ที่ตอนนี้ยังมีต้นแบบมาจากมนุษย แต่ในอนาคตมันอาจจะคิดล้ำไปกว่ามนุษย์ อย่าง Steven Hopkins กลัวว่า มนุษย์ควมคุมไม่ได้
- Q : Machine Learning สามารถตั้งคำถามเองได้ไหม
A : ตอนนี้ อ ยังไม่เจอครับ ส่วนใหญ่ในปัจจุบัน มนุษย์ เอา Machine Learning มาตอบปัญหาที่ซับซ้อนมากกว่า - Q : Alpha Go นอกจากเล่นหมากล้อมโก๊ะ แล้ว สามารถเอามาเล่นอย่างอื่นได้ไหม
A : Machine Learning เป็น Born to be คือ ทำงานได้เฉพาะทาง เช่น เอามาขับรถ จู่ๆจะเอาไปขับเครื่องบินเลยไม่ได้ เหมือนกันคนเนี่ยแหละ มันต้องฝึก ปล่อยไปให้ทำเลยันก็เสี่ยงสิ และต้องดูว่า Model ที่เคยทำมานั้นเหมาะสม หรือไม่ ถ้าไม่ใช่ ก็ต้องมีการปรับแต่ง Model แก้ยืนส์พันธุกรรม ให้เหมาะสม - Q : มีงานอะไร Machine Learning ทำไม่ได้
A : มีหลายอย่าง เช่น งานด้านจิตวิทยา ที่มันตีความยาก - Q : Machine Learning มาแทนมนุษย์ ได้ หรือไม่
A : ได้ ถ้ามนุษย์ไม่มีการปรับตัว หรือการเรียนรู้ ช้ากว่า Machine Learning แต่ตัว Machine มีจุดเด่น คือ เร็ว ทุนต่ำ และ ไม่มี Bias ในงานที่ถูกสร้างมาให้ทำ (Born to be) - Q : Machine กับ คน ใครเล่นหุ้นเก่งกว่า ?
A : Machine เก่งกว่า และ Machine มีแบบ Static มองว่าเป็นโปรแกรม มีสูตร มีเงื่อนไข เช่น สูตรคณิตศาสตร์ หรือ สูตร Finance แต่ Machine Learning มันจะสร้างกฏเอง ตามข้อมูลที่ระบบมันเรียนรู้ แค่ถ้าข้อมูลเปลี่ยนไป กฏ ก็เปลี่ยนไปทันที่ - Q : ถ้ามีงานที่เกี่ยวกับด้านโรงพยาบาล สามารถสร้าง Machine Learning ได้ไหม ?
A : ได้ แต่ต้องมี Domain Expert เข้ามาช่วยพวกหมอ เภสัช และทีมงานจัดการข้อมูลพร้อม ท้ายที่สุดศึกษาแล้วคุ้มค่ากับการลงทุนของธุรกิจครับ - สิ่งที่อาจารย์วิจัยอยู่ คือ การมอง Data Mining เป็นปัญหา สำหรับการทำ Machine Learning มันจะต่างกับมุมของด้านอื่นๆ ที่นำ Data Miningไปเป็น Solution ในการแก้ปัญหา
- งานในไทยตอนนี้ ยังเป็นงานด้าน Data Engineering มากกว่า Data Scientist
- ไม่มี Model ที่ครอบจักรวาล ไม่มีใครที่ทำได้ทุกอย่าง No Universal Module มีแต่ Born to be
- สำหรับผม อ. เรย์ คนนี้เด็ดมากครับ จบมาจากสายรัฐศาสตร์ และเปลี่ยนขั้วมาสาย Computer Science ครับ
* BIG Data & NLP กับภาษาไทย (ดร. ปรัชญา บุญขวัญ)
- Big Data มันมีมาตั้งแต่ยุค Analog แล้ว แต่มันมาพุ่งพวดเมื่อโลกเข้าสู่ยุค Digital ครับ
- เว็บเป็น Big Data นะ ถ้าลองแบ่งจากภาษาคนที่ใช้ (เดี่ยวบอกภาษา แล้วคนคอมเข้าใจเป็น PHP, Java 555) มีเยอะหลากหลายมาก โดยหลักก็เป็นภาษาอังกฤษ กับภาษาจีนครับ ส่วนภาษาไทยแม้ว่า % น้อย แต่ลองดูรายละเอียดมันเยอะมากครับ
- พวกเว็บเป็น Unstructured Data พอเอามาวิเคราห์ ทำ Analytics พบปัญหา
- ข้อมูลภาษาธรรมชาติ - ภาษาคน ต้งมีการตีความ เชื่อมโยง ใช้ Machine Learning
- มีข้อมูลน้อย - ไม่รู้จะเอาอะไรไป Train
- บางภาษาไม่มีตัวเขียน หรือมีเสียงพิเศษที่ไม่มีตัวเขียน - แล้วแทนค่าอย่างไรให้ Machine รู้จัก
- Language Barrier - การตีความสื่อสาร เช่น จากภาษา A ไปเป็น B หรือ ภาษา IT กับคนทั่วไป
- พอมีปัญหาแล้วมันเลยมีแขนงหนึ่งในด้าน Computer มาศึกษาเรื่องนี้เลย คือ ภาษาศาสตร์คอมพิวเตอร์(Computational linguistics) และ NLP(Natural Language Processing) เป็นสาขาย่อย นะครับ (อันนี้คิดว่าเข้าใจถูกนะ) โดยมีตัวอย่างของ NLP ดังนี้
- SIRI ของ Apple จากเสียง -> ภาษาเขียน -> ตีความหมาย -> ประมวลผล -> หาคำตอบ ส่งข้อมูลกลับ -> แปลงเป็นภาษาเขียน -> เปลี่ยนภาษาเขียนเป็นเสียง
- Google Translate - แปลงภาษา
- Google Search Engine - Information Retrieval + NLP
- Sentiment Analysis - ตีความคิดเห็นของลูกค้า เช่น ในเว็บ Pantip ระบบตีความว่า CP คือ Combat Power ของ Pokémon Go หรือ บริษัทในเครือเจริญโภคภัณฑ์ (CP)
- กลับมาที่ NLP ของภาษาไทย ทำไมถึงยาก
- การคิด วัฒนธรรม
- คนไทย ระบบความคิดแบบรวมศูนย์(คิดแบบก้นหอย) - ข้ออ้าง อ้างไปเรื่อยๆ วนเป็นก้นหอย แล้วค่อยเข้าประเด็น คิดแบบตะวันออก
- มีแบบพิเศษด้วยนะ พวกข่าว ไม่มีประเด็น มีแต่ข้ออ้างอ้อมๆ และตัวจบ เพราะอ้างตรงจะโดนกฏหมาย
- ต่างชาติ(ฝรั่ง) ระบบความคิดแบบปัจเจกนิยม(คิดตรง) - ประเด็น(Main Point) มีเหตุผลเสริม และสรุป คิดแบบตะวันตก
- คนไทย ระบบความคิดแบบรวมศูนย์(คิดแบบก้นหอย) - ข้ออ้าง อ้างไปเรื่อยๆ วนเป็นก้นหอย แล้วค่อยเข้าประเด็น คิดแบบตะวันออก
- ความกำกวม
- Simple & Complex = Simplex เรียบง่าย แต่ซับซ้อน
- High-context meaning - ความหมายแฝง รู้ความหมายเฉพาะกันในกลุ่ม ตัดโครงสร้างประโยคหมด เช่น A: พรุ่งนี้กินข้าวที่ไหนดี B: ที่เดิมเมื่อวาน (รู้กันเฉพาะกลุ่ม) มีการละสรรพนาม (Pro-Dropping) ด้วยนะ
- ความหมายเปลี่ยนไปตามสถานการณ์
- แล้วคอมตีความอย่างไร - Machine Learning เรียนนาน หรือใช้สถิติเข้ามาช่วย แต่จะได้ค่าประมาณ (Approximation)
- การตัดคำ - มีหลายแบบ และปัญหามันขัดกับสัญชาตญาณ (Counter-Intuitive)
- อิงตามคำมูล - ปัญหา มีคำที่ขอบเขตซ้อนกัน เช่น
- ดอกไม้ แต่ระบบแยก ดอก + ไม้
- อิงตามคำมูลที่รวมกันแน่น - ปัญหา รู้ได้ไงว่ารวมกันแน่น เช่น
- ฐานข้อมูลมีคำว่า ดอกไม้ แ้วพอมีคำว่าเข้ามา ดอกจิ ระบบไม่รู้เลยแยกคำเป็น ดอก + จิ เพราะ ข้อมูล จำนน ความถี่ไม่พอ
- อิงตามคำประสม - ปัญหา เมื่อไหร่ความหมายเปลี่ยน เป็นคำมูลที่รวมกันแน่น หรือ คำประสม
- ดอกไม้ - คำว่า ดอก และ ไม้ ก็มีความหมาย รู้ได้ไงว่าต้อง ดอกไม้ หรือ ดอก + ไม้
- อิงตามความหมาย - ปัญหา เอาความหมายไหนยึด ถ้าภาษาอังกฤษไม่ตอบโจทย์
- ฐานข้อมูลมี "Exercise" พอเจอคำ การออกกำลังกาย ระบบตีความว่า Exercise แล้วถ้ามีคำอื่นเข้ามา ? หรือเปลี่ยนภาษาหละ ?
- อิงตามคำมูล - ปัญหา มีคำที่ขอบเขตซ้อนกัน เช่น
- ระบบตีความความหมายคำได้อย่างไร ผมเข้าใจว่าแปลงให้เป็นตัวเลข หรือ สมการคณิตศาสตร์เข้าไปนะครับ น่าจะใช้ Calculus (ผมไม่เก่ง Math)
- คำใหม่ๆ เกิดขึ้นทุกวันในโลกออนไลน์ เช่น เมพ = เทพ หรือ นก = หลุดมือไป (เห็นในทวิตเตอร์เยอะมาก อ่านไปงงไป)
- Sentiment Analysis - รู้ได้ไงว่า ประโยคนี้ ย่อหน้านี้เป็นบวก หรือ ลบ หรือ ประชด วิเคราะห์ขั่ว(Polarity) และอารมณ์ (Emotional)
- สรุปภาษาไทยมีอะไรที่น่าสนใจ
- ระดับคำ - หน่วยเล็กที่สุด แต่ยังไม่มี Pattern ในการตัดคำที่แน่นอน
- ระดับไวยากรณ์ - ส่วนของประโยตที่ละไป, คำมูล หรือคำประสม
- ระดับความหมาย - ตีความอย่างไร มัน คือ อะไร
- ระดับปริจเฉท (ไม่รู้ว่าฟังมาถูก หรือป่าวนะ) - สรุปความ
- ระดับวัจนปฏิบัติ - หาความหมายแฝง ตามสถานการณ์
- Tools
- Sentiment Analysis จาก #HashTag - http://pop.ssense.in.th/
- ICU แบ่งคำภาษาไทยของ IBM รองรับภาษาไทย มี API ครอบของ Python ด้วย PyICU ดูตามพจนานุกรมของราชบัณฑิต
- แบ่งคำภาษาไทยของ NECTEC - SWATH, LexTo (สองอันนี้ใช้ Longest Matching) และ TLex (ใช้ Machine Learning)
- NLTK เป็น Tools kits ของ Python มีฐานข้อมูลให้ด้วย ยกเว้นภาษาไทย แต่ NECTEC มีทำไว้นะ
- การคิด วัฒนธรรม
สำหรับผม การตัดสินใจมางานวันนี้ได้ประโยชน์มากครับ ได้ทวน Python ที่ได้โยนทิ้งไปหลังทำ Senior Project จบ 555 และได้รู้ Tools แนวคิดใหม่ๆครับ เปิดโลกครับ แต่ผมยังขาดพื้นฐานที่สำคัญเลยคณิตศาสตร์, สถิติ และการแสดงผลข้อมูล(Data Visualization) ทำให้อาจจะงง ในบ้างเรื่องไปครับ และจบไปของฝากด้วยคำนี้ครับ ไม่รู้มีใครใช้ไปยัง
BIG Data, Data is all around.
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.