[CodeMania101] Predictive Modelling based on Small Data

ยุคนี้อะไรก็ Big Data ครับ สำหรับ Session โดย อ เอกสิทธิ์ พัชรวงศ์ศักดา แห่ง Data Cube ซึ่งเน้นไปในส่วนของ Data Mining ผมเข้าใจว่าเป็นส่วนหนึ่งของ Data Science ครับ (ก่อนอ่านต่อไป หากใครเข้า Session นี้กับผม ผมมีการจัดเรียงเนื้อหาใหม่ตามความเข้าใจผมนะครับ อาจจะมีการสลับลำดับ) ทุกอย่างเริ่มต้นที่ Data ซึ่งพอมันมีปริมาณมองพอ เรียกเป็น Big Data โดยดู 3V เดิม + 2V ใหม่ครับ โดยเจ้า 3V เดิม มี ดังนี้ ครับ

  • Volume : ข้อมูลมีปริมาณที่เยอะมาก
  • Variety : ข้อมูลมีความหลากหลาย ถ้าในยุคแรกเป็น Structure Data (RDBMS) ตอนนี้มีพวก Unstructure เข้ามาแจมแล้ว พวกรูปภาพ เสียง วิดีโอ หรือ NoSQL เป็นต้นครับ
  • Velocity : ข้อมูลมีการเปลี่ยนแปลงอย่างรวดเร็ว และมีนัยยะ

ส่วนอีก 2V ใหม่ (หลายคนไปอ่านอาจจะที่อื่น อาจจะมี V ที่ไม่ตรงกันครับ เข้าในว่ามีคนกำหนดไว้ จากหลายๆสำนักครับ)

  • Veracity : ข้อมูลเยอะ หลากหลายที่มา สิ่งที่ตามมา คือ คุณภาพครับ ดังนั้นที่มาของข้อมูลสำคัญมากครับ
  • Value : ข้อมูลที่เอามา ต้องมีคุณค่า

หลังจากรู้จาก 5V แล้ว ลองมาดูตัวอย่างกันครับว่าจริงๆแล้ว Big Data มี Application รอบตัวเราแล้วนะ

  • Waze นำทาง
  • Waymo (Google Self Drive Car)
  • Egg minder เป็น IOT บอกว่าไข่ ได้ซื้อมานาน หรือของขาดนะ
  • Amazon go ร้านค้าที่ไม่ต้องรอคิว
  • เทคโนโลยีในอนาคต ของ Lenovo น้อง Javis

หลังจากเรารู้เรื่อง Big Data แล้ว เรียกว่า Zoom และกันมาสนใจที Data กลุ่มหนึ่ง จากฐานข้อมูล(Database) มาสกัด(Extract) เปลี่ยนรูป(Transform) และ จัดเก็บ(Load) เข้าตัวคลังข้อมูล (Data Warehouse) ข้อมูลในนี้สามารถเอาไปใช้งานต่อได้ อาทิ เช่น

  • Business Intellgent ดูอดีต และปัจจุบันครับ
  • Data Mining ซึ่งมองอนาคต หากสิ่งที่เรายังไม่รู้ครับ โดยตัวมีรูปแบบหลัก ดังนี้ครับ
    - Association - หาความสัมพันธ์
    - Clustering - แบ่งกลุ่ม
    - Classification - จัดกลุ่ม
  • Business ควรนำ Analytics มาใช้ได้แล้ว เพราะ การแข่งขันสูงขึ้นครับ เราต้องนำข้อมูลมาทำนาย แนะนำอนาคตให้เราครับ Predictive Modeling

สำหรับ Predictive Modeling(ตัวอย่างเป็น Classification) มีขั้นตอนในการทำคร่าวๆ ดังนี้ครับ

  • เตรียม Data
  • สร้าง Model - Train Model ให้พร้อม
  • Test Model โดยมีวิธีการ 3 แบบ
    - Self Consistency เอาข้อมูล Train ไป
    - Split Test 70/30 ข้อมูลต้องเยอะ
    - Cross Validation - แบ่งข้อมูลหลายๆชุด แล้ว train
  • ตัวอย่างของ Classification  คือ การสร้าง Decision Tree จากข้อมูล ครับ

พอเราทำการ Predictive Modeling บางครัั้งจริงน่าจะส่วนใหญ่เลย พบว่าข้อมูลมันไม่สมดุลกัน (Unbalance Data) หลายคนอาจจะว่ามันไม่สมดุลอย่างไร ลองดูตัวอย่างกันครับ

  • เราจับการฉ้อโกง(fraud) ซึ่งปกติแล้ว 90% ปกติ(ไม่โกง) ส่วนอีก 10%(โกง)
    - เราเอาข้อมูลมาสร้าง Model อย่างไร ให้มันจับกรณีโกงให้ได้แม่นยำที่สุด และไม่โดยข้อมูล 90% ที่ไม่มีพฤติกรรมโกง มาเป็น Bias ครับ

จากตัวอย่างมีแนวคิดการแก้ไข เช่น

  • Sampling Approach (หากลุ่มตัวอย่าง)
    - Under-Sampling ดีงข้อมูลจากส่วนใหญ่(Majority Class) ถ้าเทียบกับตัวอย่าง เคส 90% ไม่มีโกง
    - Over-Sampling ตรงข้าม Under-Sampling พยายามให้ข้อมูลส่วนน้อย(Minority Class) กลุ่ม 10% ที่โกง ให้มีเพิ่มขึ้น โดยอาจจะเป็นตัวอย่างเพิ่ม หรือสร้างขึ้นมา
  • Cost-Sensitive Approach - ให้ Weight
    - Minority Class มีน้อยให้ Weight เยอะ
    - Majority Class มีมากให้ Weight น้อย

หลังจากรู้ตัวอย่างแล้ว มาดู Tools ซึ่ง อาจารย์มีการแนะนำ Rapidminer นะครับ มีลักษระการกำหนดลำดับเป็น Block เป็น Step ถ้าอันไหนมัน ซับซ้อนสามารถเขียน Python หรือ R เข้าไปเสริมได้ครับ โดยผมได้ลองภามเพิ่มดูช่วงท้ายพวกว่าตัว Rapidminer มีในส่วนของ Server ไม่มีได้ Client แต่มีราคาสูง ส่วนรุ่น Community มีข้อจำกัดของการใช้งาน Memory ครับ

สำหรับเรื่องอื่นของ CodeMania101 มาดูที่ Blog หลักได้ครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.