Reasonable Data Science, EP I

การทำงาน Data Science Project นั้น มักเกิดคำถามระหว่างการทำงานที่ตัวเราเองก็อาจยังคงแคลงใจอยู่ว่า แนวคิด ทฤษฎี หลักการ ที่เคยได้ฟังมา อ่านมา หรือเห็นเค้านิยมทำกันนั้น จำเป็นต้องทำในทุกกรณีหรือไม่ กรณีไหนควรเลือกทำอย่างใด และอะไรคือผลที่ตามมา งานเขียนนี้จึงหยิบยกประเด็นคำถาม​ที่ผู้เขียนพบเจอบ่อยๆ จากการทำงาน และได้เคยทำการค้นคว้า ทำการทดลอง เพื่อหาคำตอบในเชิงเหตุและผลว่า เหตุใดจึงต้องทำสิ่งนี้ ทำหรือไม่ทำมีความแตกต่างกันหรือไม่อย่างไร อีกทั้งให้คำแนะนำทางเลือกอื่นๆ ที่เป็นไปได้ตามหลักการของ Data Science โดยมีการยกตัวอย่างในเรื่อง Prediction of Customer Behavior ประกอบความเข้าใจ

ประเด็นคำถามที่มักถูกถามบ่อยใน Data Science Projects

(1) Feature Enhancement:

“มีแต่วันและเวลามาให้เป็น Feature แล้วจะ trainโมเดลได้อย่างไร”

“ทำไมต้องสร้าง Feature ขึ้นมาใหม่”

(2) Features Selection:

“ที่ถูก คือ ต้องทำ Feature Selection ก่อน train โมเดล… เอ …จริงหรือ?”

“เลือก Feature ก่อน train โมเดล เป็นการรับประกันว่าจะได้โมเดลที่ดีเสมอ จริงหรือไม่”

(3) Algorithms Selection

“ต้องใช้ Deep Learning หรือ Artificial Neural Network สิ จึงจะดี”

สภาพแวดล้อมและข้อกำหนดพื้นฐานในการทดลองของงานเขียนนี้

ข้อมูลที่นำมาทำการทดลอง ได้รับข้อมูลดิบจาก Google Analytics ซึ่งได้จากการ Track ความเคลื่อนไหวของผู้เยี่ยมชมเว็บไซต์ทั้งในมิติของเวลา เนื้อหาที่เข้าชม อื่นๆ จำนวน 11,374,979 รายการ นำมาผ่านการทำ Data Cleansing & Transformation แล้ว คงเหลือเข้าสู่การสร้างโมเดลและประเมินโมเดล จำนวน 281,989 รายการ

การเลือก Features เข้าสู่กระบวนการ train โมเดล ใช้การพิจารณาค่า Pearsons Correlation ซึ่งเป็นการทดสอบความสัมพันธ์ระหว่าง Feature และ Label หากค่า Pearson Corr. มากกว่าหรือเท่ากับ 0.2 แต่น้อยกว่า 0.3 กำหนดให้อยู่ในระดับ “Weak Correlation” แต่หากมีค่าตั้งแต่ 0.3 ขึ้นไป กำหนดให้อยู่ในระดับ “Higher Weak Correlation”

การ train โมเดลใช้ Supervised Learning Algorithmsโดยทั่วไป เช่น Decision Tree, Logistic Regression เป็นต้น

ค่า Accuracy ของโมเดลตลอดการทดลองทั้งหมดนี้อยู่ในช่วง 73–90% และค่า Recall คือ สัดส่วนของจำนวนผู้ซื้อสินค้าที่โมเดลคาดการณ์ได้ถูกต้อง ต่อจำนวนผู้ซื้อสินค้าทั้งหมด (True Positive/Actual Positive) ในงานเขียนนี้หากค่า Recall ของโมเดลสูงกว่า 0.8 จะจัดว่าเป็นโมเดลที่ดี

Feature Enhancement

การทำความเข้าใจเรื่อง Feature Enhancement ด้วย Sequential Analysis

ข้อมูลในการทดลอง มีลักษณะคล้ายกับรูปที่ 1 คือ คุณ John มีการ Access ไป 3 Web pages คือ เพจหน้า A, B แล้วกลับมาหน้า A เลือกดูสินค้า C, D แล้วกลับมาดู C อีก โดยในแต่ละเพจใช้เวลานาน 33 วินาที 7 วินาที และ 3 วินาที ตามลำดับ สุดท้าย คุณ John ตัดสินใจซื้อสินค้า (Y) ส่วนคุณ Sara มีการ Access ไป 2 Web pages ก่อนที่จะออกไปจาก Website โดยที่ไม่มีการซื้อสินค้า (N) เพจที่เข้าถึงประกอบด้วย เพจหน้า B ใช้เวลา 3 วินาที และเพจหน้า A ใช้เวลา 2 วินาที

รูปที่ 1 คือ ตัวอย่างข้อมูลเดิมก่อนทำ Feature Enhancement
รูปที่ 2 คือ ผลจากการทำ Feature Enhancement บนข้อมูลตามรูปที่ 1 ด้วยวิธี Sequential Analysis

เหตุที่ต้องทำ Feature Enhancement ด้วย Sequential Analysis

การทดลองนี้ใช้ Supervised Learning ในการสร้าง model ซึ่งหลักการโดยทั่วไปแล้ว Supervised Learning คือ การสอน machine learning ให้รู้จักและจดจำความสัมพันธ์ระหว่าง features กับ label ที่เกิดขึ้นซ้ำๆ ซึ่งประเด็นเรื่อง Spurious Patterns อาจเกิดขึ้นได้กับข้อมูลที่มีลักษณะเป็น Time-series ยกตัวอย่างเช่น pattern: B, D => Y ซึ่งหมายความว่า ลูกค้ามาที่ page:B และเลือกดูสินค้า D แล้วเกิดการซื้อ และ pattern: B, D => N ซึ่งหมายความว่า ลูกค้ามาที่page: B และเลือกดูสินค้า D แต่กลับไม่เกิดการซื้อ จะเห็นว่าทั้งสอง pattern นี้มีความขัดแย้งกันเอง และแท้จริงแล้วทั้งการเข้ามาที่ page: B และดูสินค้า D ไม่ใช่เป็นเหตุที่ทำให้เกิดผลคือการซื้อหรือไม่ซื้อสินค้า ในรายละเอียดแล้วอาจมีสิ่งอื่นๆ ที่ dominate ความสัมพันธ์ของ B,D => Y/N ที่เรายังไม่เห็นจากข้อมูล ความขัดแย้งกันเองและการ dominate ลักษณะนี้ คือ ตัวอย่างหนึ่งของ Spurious Patterns หาก Supervised Learning รู้จำ pattern เหล่านี้ไปมากๆ ก็อาจให้ผลลัพธ์เป็น model ที่ไม่ดีได้

ผลจากการทำ Feature Enhancement ด้วย Sequential Analysis

(1) ลดการเกิด Spurious Pattern ด้วยการทำ Feature Enhancement ในงานเขียนนี้มีลักษณะคล้ายกับรูปที่ 2 ที่มีการสร้าง Feature ใหม่ขึ้นมา 3 ตัว คือ Sequence of Accessed Page, Sequence of Viewed Product และ Duration in Second ซึ่งช่วยลดการเกิด Spurious Patterns ลงได้ สังเกตได้ว่า pattern ของการซื้อ คือ (A,B,A), (C,D,C) => Y ไม่ขัดแย้งและแตกต่างจาก pattern ของการไม่ซื้อ คือ (B,A), (D,C) => N อย่างชัดเจน

(2) ได้รับโมเดลที่ดีขึ้น ในงานเขียนนี้มีการสร้าง Feature ตัวหนึ่งคือ Sequence of Hit Action Type ที่ใช้ระบุว่าผู้เข้าเยี่ยมชมเว็บไซต์แต่ละราย (และในแต่ละคราว) มี Hit Action Type ตามลำดับอย่างไร เช่น 0,2,1,3,0,4,0 คือ การที่ผู้เข้าเยี่ยมชมเว็บไซต์เข้ามาแล้วมีการ click ดู product detail ของสินค้าตัวหนึ่ง แล้วตามด้วย click ที่รายชื่อ product ทั้งหมด จากนั้นก็เลือกสินค้าลงตะกร้าสินค้า แล้วก็หยิบสินค้านั้นออก สุดท้ายจบที่ไม่มีการซื้ออะไรเกิดขึ้นเลย เป็นต้น จากการทดลองพบว่า การ train โมเดลด้วย Features ที่มี Sequence of Hit Action Type ได้รับโมเดลที่มีค่า Recall ดีกว่าการ train ด้วย Features ที่ไม่มี Sequence of Hit Action Type ในทุกกรณี ตามรูปที่ 3 และรูปที่ 4

รูปที่ 3 ผลการประเมินโมเดลที่ได้รับมาจาก train ด้วย Feature ที่มีการทำ Sequential Analysis
รูปที่ 4 ผลการประเมินโมเดลที่ได้รับมาจาก train ด้วย Feature ที่ไม่มีการทำ Sequential Analysis

Feature Selection

Filter Method เป็นการคัดเลือก Features ก่อนนำ Features เข้าสู่กระบวนการ Training แตกต่างจาก Wrapper Method ที่ไม่ได้มีการเลือก Features ก่อน แต่เป็นการนำ Features ทั้งหมดหรือบางส่วนไป train โมเดล แล้วดูว่าการหยิบเอาบาง Features ออก หรือเลือกบาง Features เข้าสู่การ retrain กระทบต่อผลการประเมินโมเดลอย่างไร

การทดลองในงานเขียนนี้ใช้ทั้ง Filter Method และ Wrapper Method เพื่อทราบข้อเท็จจริง 2 อย่างนี้ คือ (1) Filter Method ใช้ได้ผลจริงในทุกกรณีหรือไม่ (2) Wrapper Method ที่มีประสิทธิภาพควรเป็นอย่างไร

รูปที่ 5 คือ การทำ Feature Selection ในแบบ Filter Method ด้วยใช้ค่า Pearson Correlation

การทำ Filter Method

เหตุที่ต้องทำ Feature Selection ด้วยใช้ค่า Pearson Correlation เนื่องจาก มี Numeric Features อยู่ 5 ตัว คือ hitNumber, hitHour, hitMin, timeMicroSec, timeOnSite ดังนั้นเพื่อจะเลือกเฉพาะ Feature ซึ่งเป็นปัจจัยที่ส่งผลต่อ Label คือ last_Action_type จึงมีการเลือก Numeric Features ก่อนเข้าสู่กระบวนการ train โมเดล และเชื่อว่าหากมี Feature ที่ไม่ใช่ปัจจัยเข้าสู่กระบวนการ train แล้วจะทำให้ได้รับโมเดลที่ไม่ดี

ผลของจากการทำ Feature Selection ด้วยใช้ค่า Pearson Correlation ตามรูปที่ 5 พบว่า กรณี Logistic Regression ค่า Recall ของโมเดลที่ถูกสร้างขึ้นมาจาก Feature ที่ผ่านการทำ Feature Selection แล้วแทบจะไม่มีความต่างจากค่า Recall ของโมเดลที่ไม่มีการทำ Feature Selection เลย (ทุก Numeric Features ถูกนำมา train โมเดลทั้งหมด) อีกทั้งพบว่ากรณี Decision Tree ค่า Recall ของโมเดลเท่ากับ 0 ในทุกกรณีทั้งในกรณีที่นำ Numeric Features ทั้งหมดไป train (สีเทา) และมีการเลือกเฉพาะบาง Features ไป train (สีฟ้า และสีน้ำเงิน) ด้วยเหตุนี้ Filter Method จึงไม่ใช่วิธีการทำ Feature Selection ที่เหมาะสมในทุกกรณี และอาจทำให้สูญเสีย Feature ที่เป็นปัจจัยที่แท้จริงไปก่อนที่จะได้ทดลองสร้างโมเดลอีกด้วย

ข้อเท็จจริงอีกด้านหนึ่งที่ควรทราบ คือแทบเป็นไปไม่ได้เลยที่ทำ Filter Method แล้วจะไม่มีการ retrain อีก ในหลายๆ กรณีความสำเร็จจากการ train โมเดลเกิดขึ้นจากทดลองซ้ำแล้วซ้ำเล่าจนได้ผลที่น่าพอใจจากนั้นจึงจะมาดูว่าความสำเร็จนั้นเป็นผลมาจากสิ่งใด กลายเป็นว่าแท้จริงแล้ว เหตุมาทีหลังผล ดังนั้นแล้วในการทำงานจริง เราไม่ควรยึดมั่นที่จะต้องพยายามคัดเลือก Features ที่ดีที่สุดก่อนการ train โมเดล เพราะคำตอบว่า Features ไหนดีที่สุด อาจเกิดจากประสบการณ์ในการคัดเลือกและ retrain ซ้ำหลายๆ รอบแล้วในแบบ Wrapper Method ก็ได้

ข้อสังเกตคือ การทดลองนี้มุ่งเฉพาะ Numerical Feature และการสรุปผลก็อยู่ในขอบเขตของ Numerical Feature ดังนั้นหากไม่ใช่ Numeric Feature แล้ว Pearson Correlation อาจไม่ได้ทางเลือกที่เหมาะสม และข้อสรุปอาจเปลี่ยนแปลงไปได้

Algorithms Selection

รูปที่ 6 คือ คำตอบของโมเดลซึ่งแสดงอยู่ในกรอบสีเหลี่ยมสีต่างๆ กับ อัลกอริทึมที่ใช้สร้างโมเดล

ยกตัวอย่างกรณีในงานเขียนนี้ ธุรกิจต้องการทราบล่วงหน้าว่าผู้เข้าชมเว็บไซต์แต่ละรายอยู่ในประเภทใดระหว่าง Buyer หรือ Only Visitor (not Buy) ด้วยเหตุนี้ คำตอบที่คาดหวังจากโมเดลจึงเป็นเป็นการ “ฟันธง” ที่ต้องใช้ Supervised Learning โดยมี Label ที่ใช้ในการ train โมเดล และโมเดลที่ได้รับควรมีความสามารถในการจัดจำแนกประเภทผู้เข้าชมเว็บไซต์ (Classify) อัลกอริทึมที่ให้คำตอบเช่นนี้ อาทิเช่น Decision Tree, Random Forest Classifier เป็นต้น

สรุป

--

--

Experienced Senior Big Data & Data Science Consultant with a history of working in many enterprises and various domains . Skilled in Apache Spark, and Hadoop.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Aekanun Thongtae

Aekanun Thongtae

Experienced Senior Big Data & Data Science Consultant with a history of working in many enterprises and various domains . Skilled in Apache Spark, and Hadoop.