เส้นทางสู่การเป็น Data Scientist ใน Botnoi AI and Data Scientist School

Ruxpol Thongma
botnoi-classroom
Published in
5 min readNov 10, 2019

ครบ 1 เดือนแล้วที่เราได้เดินทางกันมาครับ

สวัสดีคร้าบบบโผ้มมม ผมอาร์มนะครับ หนึ่งในนักเรียน Botnoi AI and Data Scientist School ครั้งนี้ก็เป็นคิวของผมที่จะได้เขียนบทความ เนื่องจากพี่วินน์ จะให้นักเรียนทุกคนช่วยเขียน Medium เพื่อเป็นการทบทวนความรู้และความเข้าใจในห้องเรียน และจะลดค่าเรียนให้ ฟรี 1ครั้ง สำหรับนักเรียนที่เขียนบทความ Medium
ในครั้งนี้ผมจึงขออนุญาตแชร์ประสบการณ์ที่เจอในห้องเรียน ตลอดระยะเวลา 1 เดือนแรกของเรา นักเรียน Botnoi

แนะนำตัวก่อนหน่อย ครับโผ้ม

เดิมทีผมจบป.ตรี ด้านวิศวกรรมเครื่องกลและทำงานสายนี้มาประมาณ 6 ปี ตอนนี้ทำงานด้านงานประเมินราคาก่อสร้างงานระบบ ในบริษัทก่อสร้างแห่งหนึ่งครับ และเมื่อปลายปี 2018 เริ่มสนใจที่จะ re-skill เนื่องจากในช่วงนั้น มี Buzzword เยอะมาก ไม่ว่าจะเป็น Big Data, Fintech, Digital Disruption, Blockchain, Bitcoin จึงตัดสินใจไปเรียนต่อปริญญาโท ด้านวิศวกรรมคอมพิวเตอร์และเทคโนโลยีการเงิน
ที่ ม.หอการค้าไทย ในระหว่างเรียนก็จะมี 2 วิชาที่ได้เรียนเกี่ยวกับ Data Science และ Machine Learning ก็เลยรู้สึกชอบ และก็มีเป้าหมายว่า “ภายในปี 2020 จะเป็น Data Scientist ให้ได้” จากนั้นก็เริ่มเรียนด้วยตนเองจากคอร์สออนไลน์ ต้องขอขอบคุณ Page : DataRockie ที่ปูพื้นฐาน การเขียน Python ในวันที่ผมไม่รู้อะไรเลย หลังจากนั้นก็ลองทำโจทย์ และบางวัน Passion ก็พ่ายแพ้ต่อความขี้เกียจในตัวเรา Hahaha จนเกือบลืมเป้าหมายที่วางไว้ จนมาวันหนึ่ง ก็ได้มาเจอกับ Botnoi AI and Data Scientist School
เอาหล่ะ เริ่มเห็นทางที่ความฝันจะเป็นจริงอีกครั้งหนึ่ง”

ขอเล่าจุดเริ่มต้นสั้นๆก่อนนะครับ

Botnoi AI and Data Scientist School เริ่มต้นจาก vision ของพี่วินน์ Dr. Winn Voravuthikunchai ที่ต้องการจะสร้างบุคลากรในสายงาน Data Scientist
ที่พร้อมใช้งาน เพื่อมาร่วมสร้างและทำ project ใหญ่ๆที่บริษัท Botnoi ร่วมกัน
ซึ่งสายงานนี้ ค่อนข้างขาดแคลนบุคลากร ฉะนั้น Dr.Winn จึงก่อตั้ง Botnoi AI and Data Scientist School และประกาศรับสมัครผู้สนใจมาเรียน แต่ปรากฏว่ามีผู้สนใจมาเรียนอย่างล้นหลาม จึงต้องคัดเลือกเพื่อให้เพียงพอกับที่นั่ง และวิทยากรหรืออาจารย์ประจำคลาสให้สามารถดูแลได้อย่างทั่วถึง

จุดเริ่มต้นของความเจ๋ง เริ่มตั้งแต่การคัดเลือกใบสมัครกันเลย

การใช้ศาสตร์ของ Data Science มาคัดเลือกใบสมัคร เพื่อนๆ ตามไปอ่านได้ที่
การใช้ Data scienceในการคัดเลือกผู้สมัครเรียน BOTNOI AI & DS classroom (HR ของบริษัทต่าง ๆ น่าจะเอาไปประยุกต์ใช้ได้นะครับ) นะครับ ในนั้น Dr.Winn ได้บอกถึงการใช้ feature ในการคัดเลือกสาวๆ มาเรียนด้วย เพื่อให้คลาสเรียนมีชีวิตชีวา ไม่เฉา (ผมหนิยิ้มกรุ้มกริ้ม มีกำลังใจมาเรียนเลย Haha) ซึ่งก็จริงครับในคลาสเราเรียนกันสนุกและมีชีวิตชีวามาก เพราะเราเรียนกันอย่างพี่น้อง

Intro มาค่อนข้างเยอะแล้ว ขอเริ่มเลยนะครับโผ้มมม

คลาสเรียนของเรา ในเดือนแรกจะมีให้ลงทะเบียนวิชา ตั้งแต่ระดับเริ่มต้นไปจนถึงระดับกลาง มีให้เรียนตั้งแต่วันจันทร์ ถึง วันศุกร์ ตั้งแต่เวลา 18:00–21:00 น. แถมยังมีระบบ Chatbot ในการลงทะเบียนและ payment ซึ่งเชื่อมโยงข้อมูลแบบ real-time ไปยัง google sheet ของ botnoiprogram เจ๋งมั้ยหละครับ

Google Sheet ตัวอย่างวิชาเรียน
Chatbot สำหรับลงทะเบียน

ปกติแล้วชั่วโมงแรก จะเป็นการสอนบรรยายทฤษฎีที่เกี่ยวข้อง แล้วพักเบรก (ผมชอบก็ตอนนี้หละครับ เพราะของกินเพียบ ขนมพร้อม นมพร้อม น้ำพร้อม) จากนั้นก็จะแบ่งนักเรียนออกเป็น 3 ทีม นักเรียนทุกคนจะได้ทำโจทย์ด้วยตนเอง และแต่ละทีมจะมีอาจารย์ที่เป็น Data Scientist ของ Botnoi คอยเป็น Mentor แล้วนำผลลัพธ์ที่ได้มาแข่งกัน ทีมไหนชนะก็จะออกมาอธิบายในตอน wrap up ว่าทำอย่างไร ถึงได้โมเดลที่มีค่าประสิทธิภาพที่สูงที่สุด (มีแต่คนแย่งกันอธิบายครับ Hahaha)

บรรยากาศในการเรียน

ระยะเวลา 1 เดือน เราเรียนอะไรไปแล้วบ้าง

Basic Python

- Hello, World!
- Variables and Types
- Lists
- Basic Operators
- String Formatting
- Basic String Operations
- Conditions
- Loops

run บน Jupyter Notebook หรือ Google Colab ตามสะดวกครับ

อ่านเพิ่มเติมได้ที่…BOTNOI Classroom — Python Basic

Basic Python Library

- pandas : ใช้จัดการกับข้อมูลประเภทต่างๆ ในรูปแบบของตาราง
- numpy : ใช้ในการคำนวนสูตรทางคณิตศาสตร์ต่างๆ
- matplotlip : ใช้ในการสร้างกราฟในรูปแบบต่างๆ

อ่านเพิ่มเติมได้ที่…BOTNOI Classroom — Pandas,Numpy
และ…Python for Data Science — Botnoi Classroom

Basic Python Library

Introduction Machine Learning

- Data science pipeline : คือขั้นตอนในการเริ่ม Project Data Science ตั้งแต่ต้นจนจบโครงการ
อ่านเพิ่มเติมได้ที่…Data science pipeline

- Supervised Learning : ได้ทำโจทย์การทำนายผู้รอดชีวิตในเรือไททานิค และโจทย์การจำแนกประเภทของเห็ด ซึ่งเป็น dataset จาก Kaggle โดยจะเริ่มทำด้วย baseline คือการใช้ feature ที่มีจาก dataset จนได้ค่าประสิทธิภาพ(Accuracy) ซึ่งครั้งนี้เองในคลาสได้ให้ เริ่มต้นใช้โมเดล GradientBoostingClassifier จากนั้นค่อยๆ ปรับแต่ง feature ที่ได้จากการวิเคราะห์แล้วทดลองไปเรื่อยๆ จนกว่าจะได้ค่าประสิทธิภาพที่เพิ่มขึ้นจนมากที่สุด ซึ่งพระเอกของขั้นตอนการเพิ่มค่าประสิทธิภาพ คือการทำ “Feature extraction” และพระเอกของการทำ feature extraction คือ เทคนิคการใช้ “Pandas Dataframe”
อ่านเพิ่มเติมได้ที่…BOTNOI classroom — Titanic dataset (pipeline)
และ…BOTNOI classroom-Titanic dataset (feature extraction)

- Unsupervised Learning : ได้ทำโจทย์การ Clustering หรือ การจัดกลุ่ม โดยใช้ Pokemon dataset จาก Kaggle เช่นเคย เราได้ลองใช้ K-Mean ในการทำ Clustering
แต่เนื่องจาก Pokemon dataset มี feature ที่เยอะจึงทำให้ ข้อมูลมีได้มีหลายมิติ
ไม่สามารถมองเห็นได้ จึงต้องทำการลดมิติของข้อมูลด้วย PCA
อ่านเพิ่มเติมได้ที่…Unsupervised Learning — Clustering and PCA, Pokemon Dataset — Botnoi Classroom
และ…BOTNOI classroom-Pokemon dataset (Clustering)

cluster-0.blogspot.com

Natural Language Processing (NLP)

NLP : คือการทำให้คอมพิวเตอร์เข้าใจภาษามนุษย์

- NLP01 : Text Classification ครั้งนี้เราได้ทำ workshop การแยกประเภทข้อความ จาก dataset ของ True Voice :
https://github.com/PyThaiNLP/truevoice-intent
โดยที่ dataset เดิมได้ตัดคำ(Tokenize) ด้วยโมดูลของ DeepCut แต่ใน Workshop เราได้ลองโมดูลตัดคำของ PythaiNLP engine : newmm ใช้ Bag of Word ในการ
represent ข้อความ และใช้เทคนิค N-Gram ในการลำดับคำ จากนั้นทำการ normalize vector ด้วย L2 normalize แล้วนำเข้าโมเดล LinearSVC ได้ค่าประสิทธิภาพถึง 90%
อ่านเพิ่มเติมได้ที่…Botnoi Classroom — มาทำความรู้จักกับ Natural Language Processing กันดีกว่า
และ…https://www.facebook.com/vwinnv/videos/10156251527107030/ โดยอาจารย์ก่อน Lead Data Scientist : Botnoi

- NLP02 : Text Classification ครั้งนี้ เราได้ทำ Workshop การ Classification tag ข่าว จาก จาก Dataset ข่าวของ ไทยรัฐ : https://github.com/nakhunchumpolsathien/thairath-228k
โดยใช้เทคนิค Word2Vec ซึ่งเป็นอีกวิธีหนึ่งในการ represent ข้อความ ครั้งนี้เราได้ทำไปจนถึงการ visualize คำที่มีค่าใกล้เคียงกัน บน TensorBoard(สวยงามมาก)
อ่านเพิ่มเติมได้ที่…https://colab.research.google.com/drive/1Kr3ufin9k2f14jvAqq8NbnpoXaeuO0ky
และ…https://colab.research.google.com/drive/1JVFhxUTqftOVguJ7YAUp6h2mQbHKMcah

Bag of Word
http://projector.tensorflow.org/

Web Scraping

Web Scraping คือการดูดข้อมูลมาจากหน้า Web page

- Request & Beautiful Soup : ใช้ library request ในการดึง HTML เข้ามาก่อน จากนั้นใช้ Beautiful Soup ดึง ข้อความหรือ object ที่สนใจออกมาจาก HTML โดยใช้
css selector แต่ข้อจำกัดของ Beautiful Soup คือดูดข้อมูลได้เฉพาะ web page ที่เป็น static web page เท่านั้น หาก web page ที่มี JavaScript ก็จะดูดข้อมูลออกมาไม่ได้ ครั้งนี้พี่วินน์ได้ให้การบ้าน ให้ไปลอง scrap website : pantip.com เพื่อดูดข้อมูลมาทำนาย tag ของหัวข้อกระทู้ หรือ text classification นั้นเอง

- Selenium : เป็น web driver เปรียบเสมือน browser จำลอง สามารถดูดข้อมูล
web page ที่มี JavaScript ได้ แต่ในคลาสจะเน้นไปที่ Beautiful Soup มากกว่า

จากทั้ง 2 วิธี ที่กล่าวมานี้ เราสามารถนำไปประยุกต์เข้ากับการทำ NLP โดยการดูดข้อความในปริมาณที่มากๆ เพื่อมาทำ text classification ต่อไปได้

อ่านเพิ่มเติมได้ที่…Web Scraping ฉบับคนไม่รู้ด้านนี้เลยก็สามารถทำได้ by Botnoi student

ตัวอย่างความหนุกหนาน…https://www.facebook.com/vwinnv/videos/10156254013597030/ โดยอาจารย์จิ๋ว Data Scientist : Botnoi แต่ฝีมือไม่จิ๋วนะครับ

Requests and Beautiful Soup
Selenium

Ensemble Method

Ensemble Method เป็น Model แรกของนักเรียน Botnoi หรือใน Day 1 เลยนั้นเอง ซึ่งจะอยู่โจทย์การทำนายผู้รอดในเรือ Titanic ในครั้งนี้ เราจะมาทำความรู้จักหลักการทำงานของ Ensemble Method

อ่านเพิ่มเติมได้ที่…Classroom — มาทำให้ผลลัพธ์ดีขึ้นด้วย Ensemble Method กันเถอะ!

Ensemble : GradientBooting

Basic API & Webservice

Flask and Heroku : คลาสนี้ นักเรียนจะได้เขียน API เป็นของตัวเอง ซึ่งเป็น function บวกและลบ เลข อย่างง่าย ด้วย Flask แล้วนำ API ไป Test ใน Postman จากนั้นก็สร้างโดเมน API เป็นของตัวเองด้วย Heroku แล้วส่งเข้าในไลน์กลุ่มนักเรียน Botnoi เพื่อให้อาจารย์และเพื่อนๆช่วยเช็ค API ที่เราสร้างมาว่าถูกต้องหรือไม่ ขอบอกว่าสนุกมากครับ

อ่านเพิ่มเติมได้ที่…การสร้าง API ด้วย Python
และ…มาใช้ Heroku เพื่อสร้างระบบกันเถอะ

Flask Postman Heroku

ขอสรุปนะคร้าบโผ้ม

การที่ได้มาเรียนที่ Botnoi การได้มาเจอกันตอนเย็นเกือบทุกวัน มันจะทำให้เรายังคงรักษา Passion ของเราเอาไว้ได้ แถมยังได้เจอกับ Data Scientist ตัวจริง เจอโจทย์จริง และในอุตสากรรมจริง คอยประกบและให้คำปรึกษาตลอดเวลา จนทำให้ผมรู้สึกว่า 1 เดือนที่ผ่านมานี้ผมทำอะไรไปได้เยอะเลย ได้สร้างโมเดลไปแล้ว 6 ถึง 10 โมเดล และค่าเรียนก็ไม่แพงเลยถ้าเทียบกับสิ่งที่ได้รับ เทียบกับการดูแลอย่างทั่วถึงจนกว่าทุกคนจะเข้าใจ
แต่ถ้าหากเพื่อนๆ มี Passion อย่างแรงกล้าและมั่นคง ก็อาจจะเรียนผ่านคอร์สออนไลน์เอาก็ได้ครับ

นี่ก็คือส่วนหนึ่งที่นักเรียน Botnoi AI and Data Scientist School ได้พบเจอ ได้เรียนรู้ และได้ปฏิบัติจริง มาตลอด 1 เดือนที่ผ่านมา ยังมีบางส่วนที่ยังไม่ได้พูดถึง คือการสร้าง Chatbot ด้วย Platform ของ Botnoi โดยมีให้ลงทะเบียนเรียนทุกวันอังคาร และเปิดสิทธิ์ให้คนที่เรียนได้ใช้ Platform ฟรี

ตัวอย่าง Code ในการทำ Workshop ในห้องเรียนบางส่วน ไปดูแล้วลองทำตามได้ที่ :
https://github.com/ruxpolth/Botnoi-AI-Data-science-classroom-lecture

ในเดือนถัดไปเราจะได้เริ่มเรียน Machine Learning 01 และ Computer Vision 01 ซึ่งน่าจะเข้มข้น และน่าสนใจมากๆ

หากใครสนใจอยากและอยากเรียนรู้เพิ่มเติม ด้าน AI และ Data science สามารถ join group Botnoi Classroom
หากสนใจ สามารถสมัคร โดยแอดไลน์ Botnoi DS Classroom คลิก -> https://line.me/R/ti/p/%40589mfmxq

กดปุ่มเมนู หรือพิมพ์ว่า ตารางเรียน จากนั้นให้กดตรงรายการแรก จะมีรายละเอียดออกมา จากนั้นให้กดลงทะเบียน แล้วชำระโดยสแกน QR code ผ่าน Mobile Banking ครับ
สถานที่เวลาเรียน : 253 Asoke เวลา 18.00–21.00 น.
สามารถดูตารางคลาสเรียน Botnoi ทั้งหมดจาก
https://docs.google.com/…/1wlBnbxLPSxo1HyjWiqsj9M8AFP…/edit…

--

--