Data science pipeline

Dr. Winn Voravuthikunchai
botnoi-classroom
Published in
3 min readOct 8, 2019
Titanic problem

เปิดเรียนคลาสแรกของทั้งสองกรุ๊ป โดยรวมผมว่าก็โอเคนะครับ แล้วคิดว่าน่าจะดีขึ้นกว่านี้ พอทุก ๆ คนเริ่มที่จะใช้เครื่องมือได้ เริ่มที่จะสนิทกัน สอนกัน แชร์กัน

Passion

คลาสเริ่ม 6 โมงเย็น สิ่งที่ประทับใจก็คือทุกคนมากันตรงเวลามาก มีบางคนมาตั้งแต่ 5 โมงเย็น ทำให้พอ 6 โมงตรงก็เริ่มจับไมค์สอนได้ทันที เนื่องจากเป็นคลาสแรก ผมก็เลยต้องขอเวลาบิ้วหน่อย ทุกคนมี passion อยู่แล้ว แต่อยากจะบิ้วขึ้นไปอีก เพราะผมคิดว่า สิ่งสำคัญที่สุดในการเรียนอะไรซักอย่างคือ passion ถ้ามี passion ก็จะมีชัยไปกว่าครึ่งนะ ก็เอางาน AI ที่ทีมกำลังทำ กับเล่าประสบการณ์เกี่ยวกับ Data science ที่เคยทำมา

Class A
Class B

Methodology

โจทย์ของทีมบอทน้อยคือจะสร้างกองทัพ Data scientist ยังไงให้ได้อย่างเร็วที่สุด ถ้าเป็นไปได้อยากจะได้ภายใน 6 เดือน แล้วจะทำยังไงดี หลักสูตรที่ร่างมาตอนแรก ที่มี Python for data science, machine learning, data science เป็นขั้นเป็นตอน หลาย ๆ คนที่สมัครเข้ามาก็คงจะได้เห็น ปรากฎว่าต้องใช้เวลาเรียนยาวถึง 2 ปี คิดว่าคงไม่เวริ์ค พวกเราก็อยากได้ทีมเพิ่มมาช่วยบริษัทเร็ว ๆ คนเรียนก็คงอยากรีบเรียนให้จบไว ๆ ก็เลยเปลี่ยนวิธีเรียนกระทันหัน

ในแต่ละคลาสเราจะจัด Data scientist ของทีมบอทน้อยมาคลาสละ 3 คน มาสอนแบบประกบ ถ้าใครติดโค้ดส่วนไหนจะได้ทั่วถึง และเราจะเปลี่ยนเป็น workshop based แทน lecture based คือทุกคลาสที่มาเรียนก็จะสร้าง model หนึ่ง model เพื่อทำนายอะไรบางอย่าง แล้วเซท theme ตามสัปดาห์ สอนทฤษฎีซัก 45–60 นาที แล้วก็ breakout เป็นทีมย่อย 3 ทีม แล้วมาแข่งกันสร้าง model ก็สนุกดีนะวันนี้ลองสร้างโมเดลทำนายว่าใครจะรอดจากเรือ Titanic ก็ลุ้น ๆ ผมก็แอบลุ้นว่าทีมผมจะชนะหรือแพ้ทีมของน้อง Data scientist อีกสองคน ก็ปรากฏว่าเสมอกัน :)

ในแต่ละสัปดาห์เราก็จะเปลี่ยนจุดโฟกัส อย่างสัปดาห์แรกก็คือจะพูดถึง Data science pipeline สัปดาห์ถัดไปอาจจะโฟกัสเรื่อง Feature extraction ถัดไปอาจจะเป็น ML algorithm แต่ว่าทุก ๆ คลาสก็จะได้สร้างโมเดลกัน เพราะงั้นภายใน 6 เดือนเราก็น่าจะได้สร้างทั้งหมดประมาณ 25 model ก็น่าจะพอมีประสบการณ์พอสมควร แน่นอนรายละเอียดอย่างเช่น ภาษา Python ก็เป็นเรื่องที่ทุกคนจะต้องไปศึกษาหาความรู้เพิ่มเติมเอาเอง ทีมบอทน้อยก็จะได้สอนเน้น ๆ ในสิ่งที่หาเรียนที่อื่นไม่ได้ อย่าง Python ก็อ่านในเวปก็ได้ หรือมีคอร์สออนไลน์

สิ่งที่สำคัญที่สุดอีกอย่างรองจาก passion คือความสามารถที่จะเรียนรู้ได้เอง self-learn ความรู้มีมากมายในอินเตอร์เน็ต มี lecture ดี ๆ จาก Stanford จาก MIT มี blog ต่าง ๆ มี github แล้วเทคโนโลยีก็อัพเดทตลอดเวลา เพราะฉะนั้นจำเป็นมากครับเรื่องนี้

เอาหล่ะครับ ทีนี้มาเข้าสู่เนื้อหาในสัปดาห์แรก นั่นก็คือ Data science pipeline หรือกระบวนการตั้งแต่ต้นจนจบ ซึ่งก็มีดังนี้

Data science pipeline

a. Get problem ตั้งปัญหา ตรงนี้เราจะได้โจทย์จากทางธุรกิจ เช่น ที่ผมเคยไปรับงาน consult ให้กับลูกค้ารายนึง เค้าบอกผมว่า เค้าอยากจะลดอุบัติเหตุจากการขนส่ง ทีนี้เราในฐานะ Data scientist ก็ต้องแปลงโจทย์ทางธุรกิจให้เป็นโจทย์ในการสร้าง model ทำนาย นั่นก็คือ เราจะสร้างระบบทำนายถึงความเสี่ยงของการอุบัติเหตุ เพราะถ้ารู้ว่าการส่งของครั้งไหนมีความเสี่ยงเราก็อาจจะหลีกเลี่ยงไม่ส่งสินค้า หรือไม่ก็เอาคนขับเทพ ๆ มาขับแทน หรือไม่ก็จัดเทรนนิ่ง หรือเพิ่มกฏต่าง ๆ พูดง่าย ๆ คือถ้าทำนายเหตุการณ์ได้ และพอจะรู้สาเหต ุเราก็จะแก้ปัญหาได้

b. Data collection เก็บข้อมูล หลังจากตั้งปัญหาได้แล้ว เราก็ต้องคิดว่าข้อมูลอะไรบ้างที่เกี่ยวข้อง การจะเกิดอุบัติเหตุก็น่าจะมีเรื่องของ คนขับ สภาพถนน สภาพอากาศ รถที่ใช้ เป็นต้น แล้วคนขับก็จะมีข้อมูลเช่น อายุ สภาพสายตา กินเหล้าหรือไม่ ชั่วโมงบินการขับ ชั่วโมงการเข้าอบรม ส่วนสภาพถนนก็อาจจะเป็นความเร็วเฉลี่ยของรถที่วิ่งบนเส้นทางนี้ อาจจะเป็นสภาพถนนว่าดีหรือไม่ดี อาจจะเป็นจำนวนอบัติเหตุที่เกิดขึ้นบนถนนเส้นนี้ในรอบเดือน สภาพอากาศ และรถ ก็คิดถึงข้อมูลในทำนองเดียวกัน

c. Data cleaning แน่นอนว่าข้อมูลที่ได้มาก็จะมีความผิดพลาดที่อาจจะเกิดจากระบบตอนเก็บ ความผิดพลาดก็อาจจะเป็นไปได้ว่าข้อมูลหายไปไม่ได้กรอก หรือ sensor เสียชั่วขณะ หรือเจ้าหน้าที่คีย์ข้อมูลพลาด ถ้าข้อมูลหายไปเราก็มีวิธีต่าง ๆ ที่จะเติมข้อมูลที่หายไป

d. Feature extraction คือการแปลงข้อมูลให้เป็นรูปแบบที่สามารถป้อนเข้าโมเดลได้ ซึ่งยกตัวอย่างว่า เราไม่สามารถเอาข้อความป้อนเข้าเพื่อสอนโมเดลโดยตรง โมเดลจะรับแต่ตัวเลข เพราะฉะนั้นคือมีข้อมูลว่าถนนเป็นยางมะตอย หรือเป็นคอนกรีต เราก็จะต้องแปลงให้เป็นตัวเลขเสียก่อน

e. Model training พอได้ feature แล้วก็สามารถเทรนโมเดลได้ โดยป้อน feature ควบคู่กับคำตอบ ของมัน เช่น นาย A ประสบการณ์ขับรถ 10 ปี ไม่กินเหล้า เส้นทางที่ขับดี ฝนไม่ตก และส่งของปลอดภัยไม่เกิดอุบัติเหตุ จากนั้นเราก็ train model ใช้ SVM หรือจะ Decision Tree หรือจะ Deep Learning ก็แล้วแต่

f. วัดผลความแม่นยำของ Model ปกติเวลาเราจะสร้างโมเดล เราจะมีข้อมูลที่มีคำตอบอยู่แล้ว ในทีนี้คือ การวิ่งเที่ยวนี้ feature อย่างนี้ ไม่เกิดอุบัติเหตุ แล้วก็มีหลาย ๆ เที่ยวเก็บสะสมมาเป็นปี นี่ก็คือข้อมูลในอดีตที่มีคำตอบอยู่แล้ว ขั้นตอนต่อไปคือให้แบ่ง Data ออกเป็น 3 ส่วน Train, Validate, Test เราก็สร้างโมเดลจาก Training data จากนั้นเราก็วัดผลเป็น Validation data ดูว่าทำนายแม่นมั้ย แล้วเราก็ลองเปลี่ยนอัลกอริทึ่ม เปลี่ยน hyper-parameter หรือสร้าง feature เพิ่ม หรือ format ข้อมูลแบบต่าง ๆ พอปรับเปลี่ยนทดสอบกับ Validate data เรียบร้อย เราก็มาวัดผลกับ Test data แล้วก็ถึงจะ deploy production

และนี่ก็คือ pipeline แบบคร่าว ๆ ของงาน Data science เป็นสิ่งที่อยากให้ทุกคนได้ในอาทิตย์แรกของ Botnoi classroom ครับ ซึ่งพวกเราก็ได้สร้างโมเดล ทำนายเพศ กับโมเดลทำนายว่าใครรอดชีวิตจากเรือ Titanic ครับ

ซึ่งคลาสถัด ๆ ไปเราก็เจาะลึกไปในแต่ละหัวข้อ ของ pipeline และจะอัพเดทให้ทุกท่านฟังกันนะครับ

Source code และ Data ที่พวกเราสร้างโมเดลต่าง ๆ ก็จะอยู่ใน Google Drive (คลิก) สามารถเข้าไปดูได้ครับ

--

--

Dr. Winn Voravuthikunchai
botnoi-classroom

obtained his PhD in AI from Caen University, France. He was Chief Data Scientist at Telenor. Currently, he is Founder & CEO of Botnoi Group, and LINE API Expert