Reasonable Data Science, EP I

Aekanun Thongtae
4 min readFeb 22, 2021

--

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

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

มักจะอยู่ใน 3 ประเด็นดังนี้

(1) Feature Enhancement:

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

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

(2) Features Selection:

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

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

(3) Algorithms Selection

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

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

ความต้องการทางธุรกิจซึ่งกำหนดไว้เป็นโจทย์ในการทดลอง คือ นักการตลาดต้องการทราบล่วงหน้าว่า ผู้เยี่ยมชมเว็บไซต์ e-Commerce รายได้มีโอกาสที่จะซื้อสินค้า เพื่อนำเสนอ campaign ทางด้านการตลาดที่จะช่วยให้เกิด up-selling/cross-selling ให้เหมาะกับลูกค้าเฉพาะรายต่อไป (Personalized Marketing)

ข้อมูลที่นำมาทำการทดลอง ได้รับข้อมูลดิบจาก 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 เป็นการสร้าง Feature ขึ้นมาใหม่จาก Feature เดิม โดยทั่วไปแล้ว ความจำเป็นในการทำ Feature Enhancement มักมาจากมี Feature เข้าสู่กระบวนการ train model น้อยเกินไป ยกตัวอย่างเช่น ข้อมูลที่ได้รับมามีเพียง Feature ที่เป็นวันเวลาในรูปแบบ timestamp และ Label ที่เป็นค่าการใช้พลังงาน (Power Consumption) เราอาจสร้าง Feature ของ Hour, Day/Night, Day of Week, Week of Month, Week of Year ขึ้นมาใช้เป็น Feature ที่น่าจะเป็นปัจจัยที่ส่งผลต่อค่าใช้การพลังงานขึ้นมาได้ แต่ในบางกรณีก็อาจมาจากสาเหตุที่ Feature ที่มีอยู่ไม่สามารถ Capture pattern ที่สำคัญได้ จึงต้องสร้างขึ้นมาใหม่จากการทำ Sequential Analysis เป็นต้น

การทำความเข้าใจเรื่อง 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

เทคนิคที่มีการนำใช้คัดเลือก Features เพื่อทำ Supervised Learning ที่นิยมใช้ในปัจจุบันมี 2 วิธีการ คือ Filter Method และ Wrapper Method

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

ข้อจำกัดในด้าน Computing Resource เป็นเหตุสำคัญที่ทำให้จำเป็นต้องมีการเลือกใช้ Algorithm เพื่อให้สามารถ train โมเดลได้สำเร็จในเวลาที่คาดหวังไว้ แต่ในปัจจุบันข้อจำกัดในด้านนี้มีแนวโน้มลดลงเรื่อยๆ ทั้งราคาที่ถูกลงของ Hardware และความสะดวกของการใช้ Cloud Computing ดังนั้นผู้เขียนจึงขอให้คำแนะนำว่าการเลือกใช้อัลกอริทึมจึงควรเลือกให้เหมาะสมกับคำตอบของโมเดลในเบื้องต้น

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

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

สรุป

งานเขียนนี้ได้ทำการทดลองเพื่อพิสูจน์ประเด็นคำถามต่างๆ ในเบื้องต้น ทั้งในกรณี Feature Enhancement ที่ช่วยสร้าง Feature ขึ้นมาใหม่จาก Feature เดิมที่ช่วยลดข้อจำกัด Feature ไม่เพียงพอต่อการ train โมเดล และเปิดโอกาสให้ได้รับโมเดลที่ดีขึ้น ส่วน Feature Selection with Filter Method ไม่ได้เป็นการรับประกันว่าจะได้โมเดลที่ดีเสมอไป และอาจต้องใช้ Wrapper Method ร่วมด้วยจนกว่าจะได้รับโมเดลที่ดี สุดท้าย Algorithm Selection ที่ควรเลือกให้เหมาะสมคำตอบที่ธุรกิจต้องการ

--

--

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.