DSE Class#1 | Data Analytics By BotNoi (วิเคราะห์-แบ่งกลุ่มผู้สมัครแบบเท่ๆ)

Anu Wat
5 min readAug 9, 2020

--

สวัสดีครับบทความนี้จะเป็นสรุปในส่วนของเนื้อหา Data Analytics ในคอร์ส DSE By Botnoi สำหรับใครที่มาอ่านบทความนี้แล้วสงสัยว่าคอร์ส DSE คืออะไรผมได้เขียนแนะนำคอร์สเรียนเอาไว้แล้วใน → สามารถเข้าไปอ่านได้เลยครับ

วันนี้เราเรียนอะไรกันบ้าง

หลักๆ คือแบ่งออกเป็น 2 ส่วนนะครับ

  1. Introduction to Data Analytics (+ Data Science) ซึ่งส่วนนี้พี่ทอยจากเพจ DataRockie ได้อธิบายไว้ให้เห็นภาพได้แบบเข้าใจง่ายสุดๆ ซึ่งก็เข้าใจง่ายตามภาพที่พี่ทอยเตรียมมาเลยครับ

2. Live Coding ซึ่งเราจะทำการวิเคราะห์ข้อมูลในมุมมองต่างๆของผู้ที่สมัครเรียนคอร์ส DSE ตั้งแต่การเริ่มเก็บข้อมูลไปจนถึงการแบ่งกลุ่มนักเรียนออกมาตามคำตอบที่ได้จากแบบสอบถามด้วยวิธีการทำ K-means clustering

ทำความรู้จัก Data Analytics กันก่อน

Data Analytics คือ กระบวนการทางวิทยาศาสตร์และเทคโนโลยี สำหรับเปลี่ยนข้อมูลดิบเป็นการตัดสินใจทางธุรกิจ

ตามความหมายที่พี่ทอยได้สรุปมาให้ใน cheatsheet ที่ว่า

Data Analytics คือ กระบวนการทางวิทยาศาสตร์และเทคโนโลยี (scientific process and technology) สำหรับเปลี่ยนข้อมูลดิบเป็นการตัดสินใจทางธุรกิจ ด้วยคำว่า กระบวนการทางวิทยาศาสตร์ นั่นหมายความว่าจริงๆแล้วเราก็ได้ผ่านกระบวนการในการทำ Data Analytics กันมาบ้างแล้วตั้งแต่ชั้นประถมศึกษา มัธยม ถ้ายังจำกันได้บทเริ่มต้นของวิชาวิทยาศาสตร์ก็คือการเรียนรู้เรื่องกระบวนการทางวิทยาศาสตร์นั่นเองครับ

cheatsheet อ่านจบรู้เรื่องจากพี่ทอย DataRockie ครับ

โดยในบทเรียนนี้เราก็จะทำการวิเคราะห์ข้อมูลของผู้สมัครที่ได้สมัครเข้ามา โดยในการวิเคราะห์ข้อมูลใดๆก็ตาม เราก็จะต้องมีกระบวนการที่เป็นลำดับขั้นตอน มีกระบวนการที่ชัดเจนเพื่อทำการทดสอบสมมติฐานของเราที่มีต่อข้อมูลนั้นๆ นั่นเองครับ

กระบวนการทำ Data Analytic

เมื่อเราทราบถึงกระบวนการทำ Data Analytic แล้ว …. เราก็มาเริ่มกันเลยครับ

0. ตั้งจุดประสงค์ของการวิเคราะห์ข้อมูล

- เข้าใจคนที่เรียน จะได้สอนได้ตรงกับความต้องการ
- จัดแบ่งกลุ่มคนเรียน
- ดูเรื่องของการสมัครจะได้ปรับปรุงคราวหน้า

หลังจากที่เราตั้งจุดประสงค์ของการวิเคราะห์ข้อมูลแล้วขั้นตอนต่อไปเราก็จะต้องทำการเก็บรวบรวมข้อมูล

1. การเก็บข้อมูล/รวมรวมข้อมูลดิบ

ซึ่งในการเก็บรวมรวมข้อมูลก็มีได้หลายวิธีซึ่งแต่ละวิธีก็จะทำให้เราได้มาซึ่งข้อมูลที่ต้องการ เช่น ในบทเรียนนี้เราต้องการข้อมูลจากผู้สมัครเข้ามาเรียนคอร์ส DSE จึงทำการเก็บข้อมูลโดยให้ผู้สมัครกรอกแบบฟอร์มเข้ามาผ่าน google form ด้วยชุดคำถามที่ได้ออกแบบไว้นั่นเองครับ

ถึงตอนนี้เราก็ได้ข้อมูลของผู้สมัครทั้งข้อมูลที่ได้จากการกรอกแบบสอบถามและข้อมูลการชำระเงิน ซึ่งก็จะทำให้เรามี columns ใน Google Sheet ตามนี้เลยครับ

1. Timestamp เป็นข้อมูลวัน และ เวลาที่มีการกรอกแบบสอบถาม
2. สะดวกเรียนช่วงเวลาไหน ช่วงเวลาที่สะดวกเรียน
3. อายุ ช่วงอายุของผู้สมัคร
4. อาชีพ อาชีพของผู้สมัคร
5. สถานที่ทำงาน/เรียน บริษัท หรือ สถานศึกษา ของผู้สมัคร
6. สาขาที่เรียนจบ / กำลังศึกษา สาขาวิชาที่เรียนจบ หรือ สาชาวิชาที่กำลังศึกษาอยู่
7. มีพื้นฐานการเขียนโปรแกรมคอมพิวเตอร์หรือไม่ หากมีโปรดให้ข้อมูล อาทิ ภาษาที่ถนัด 8. ประสบการณ์ในการเขียน ความรู้ด้านการเขียนโปรแกรม
9. ได้ผ่านการเรียนคลาสอื่น ๆ ของ BOTNOI มาก่อนหรือไม่ ถ้าเคยเรียนคลาสไหนมา เคยผ่าน 10. การอบรมกับทาง BOTNOI มาก่อนหรือไม่
11. ทำไมถึงสนใจสมัครเรียน เหตุผลที่ผู้สมัครสนใจลงเรียนคตลาสนี้
12. ความคาดหวังจากการมาเรียน สิ่งที่ผู้สมัครคาดหวัง เมื่อเรียนจบ
13. กรุณาช่วยระบุว่าได้รับข่าวคลาสเรียนบอทน้อยจากไหน ช่องทางที่ผู้สมัครทราบข่าวเกี่ยวกับคลาสเรียน เช่น Line, Facebook หรือ Twitter เป็นต้น
14. ยืนยันลงทะเบียน ผู้สมัครได้ทำการยืนยันการลงทะเบียนหรือไม่
15. ชำระเงิน สถานะการชำระเงินของผู้สมัคร

2. การตั้งคำถาม ตั้งสมมติฐาน ตั้งเป้าหมายของการวิเคราะห์

หลังจากที่เรา ตั้งคำถาม ตั้งสมมติฐาน และตั้งเป้าหมาย ของการวิเคราะห์เสร็จแล้ว ในขั้นตอนต่อไป ถือเป็นขั้นตอนที่มีความสำคัญอย่างยิ่งคือการที่เราต้องทำการเตรียมข้อมูลของเราให้พร้อมสำหรับการ ตอบคำถาม ทดสอบสมมติฐาน และเป็นข้อมูลที่จะนำพาเราไปยังเป้าหมายที่เราตั้งไว้นั่นเองครับ

3. การสร้างฐานข้อมูลเพื่อการวิเคราะห์ (Data Mart)

เพื่อการวิเคราะห์ข้อมูล เราต้องมีการจัดข้อมูลให้เหมาะสมสำหรับการนำมาวิเคราะห์

ย้อนกลับไปในขั้นตอนของการเก็บรวบรวมข้อมูล ทำให้เราได้ข้อมูลดิบ (Raw Data) ซึ่งข้อมูลที่มีอยู่นั้นยังไม่สามารถมาตอบคำถาม สมมติฐาน และเป้าหมายที่เราได้ตั้งไว้ในขั้นตอนที่ 2 ซึ่งเราจำเป็นที่จะต้องทำการจัดการข้อมูลให้เหมาะสมสำหรับนำมาวิเคราะห์ข้อมูลครับ

ในขั้นตอนนี้เราจะจัดการกับ raw data แต่ละตัวที่เราเลือกมาครับซึ่งผมจะสรุปเทคนิคที่ใช้กันเพื่อให้ได้มาซึ่งข้อมูลแต่ละ feature เพื่อที่จะนำไปประกอบเป็น Data Mart ที่สมบูรณ์ครับ เริ่มกันเลยครับ

3.1 ข้อมูลอายุ

เนื่องจากแบบสอบถามในตรงนี้จะให้ผู้สมัครทำการเลือกช่วงอายุเป็น radio และสามารถใส่ free text ได้กรณีที่ไม่ได้อยู่ใน range ซึ่งเราก็จะพบว่ามีข้อมูลที่เป็น free text ออกมา 2 ค่าครับ คือ 9 และ 65 ปี เราจึงให้ค่าทั้ง 2 ไปอยู่ในกลุ่มที่เหมาะสม คือ 9 ขวบไปอยู่ในกลุ่ม <20 ปี และ 65ปี ไปอยู่ในกลุ่ม > 40 ปี

3.2 ข้อมูลเพศ

เมื่อพิจารณาแบบสอบถามแล้วพบว่าไม่ได้มีการกำหนดให้กรอกข้อมูลเพศเข้ามา แล้วเราจะทราบได้อย่างไรว่าใครเป็นผู้หญิง ผู้ชายล่ะ ??? ซึ่งเราก็ใช้กันสองวิธีครับ

วิธีแรกคือเรา assume โดยการดูคำพูดที่ใช้ในการตอบคำถาม ง่ายๆเลยครับ เช่น คำว่า[ครับ, ค่ะ ]ก็พอที่จะสามารถแบ่งแยกผู้หญิงผู้ชายได้ ***แต่วิธีนี้เราจะพบว่าไม่มีประสิทธิภาพมากนักเนื่องจากไม่ใช่ว่าทุกๆคนที่สมัครเข้ามาจะพิมพ์คำเหล่านี้เข้าไปในประโยค ดังนั้นหากใช้วิธีนี้เราก็จะไม่สามารถกำหนดเพศให้กับผู้สมัครได้ทุกคน

แล้วมีอะไรที่พอจะแบ่งผู้หญิง (นางสมพร) ผู้ชาย (นายสมศักดิ์) …………..ใช่ครับเราสามารถใช้ชื่อของผู้สมัครในการแบ่งเพศหญิงเพศชายได้ อาจจะไม่ได้ 100% แต่ก็ได้ในระดับหนึ่งซึ่งเทคนิคการประมวลผลข้อความ (NLP) ก็จะถูกนำเข้ามาช่วยในการคัดแยกตรงนี้ครับซึ่ง Botnoi เองก็มี API ตรงนี้ไว้ให้ได้ใช้บริการครับ

สำหรับใครที่ยังไม่เคยใช้ก็สามารถเข้าไปสมัครเพื่อใช้ API ต่างๆที่ทาง Botnoi ได้เตรียมไว้ได้ครับ เข้าไปตามนี้ได้เลยครับ ยิง request กันได้ฟรีๆ วันละ 500 request กันไปเลยครับ → https://openapi.botnoi.ai/

โอเค ถูกต้องครับ :)

สุดท้ายเราก็จะได้ข้อมูลเพศของผู้สมัคร

3.3 ข้อมูลการเขียนโปรแกรม

มีหลายขั้นตอนหน่อยนะครับ โดยท้ายที่สุดแล้วสิ่งที่เราต้องการก็คือการแบ่งว่าผู้สมัครแต่ละคนนั้นมี skill ด้าน programing หรือไม่ ถ้ามี มีด้านไหนบ้าง

  • เริ่มจากการที่เราแยกคำตอบที่ผู้ใช้ตอบมาเกี่ยวกับประสบกาณณ์ในการเขียนโปรแกรม โดยการเลือกมาแค่คำตอบที่เป็นภาษาอังกฤษ(ก็คือภาษา Programming นั่นเองครับ)
เราก็จะได้ List ของภาษา Programming ที่ผู้สมัครแต่ละคนตอบมาแล้วครับ
  • หลังจากนั้นเราก็จะทำการดูว่าผู้สมัครแต่ละคนนั้นเขียนภาษาอะไรกันบ้าง และการที่ผู้สมัครเขียนภาษาอะไรนั้นสามารถทำให้เราแบ่งกลุ่มของผู้สมัครได้ว่าอยู่ในสายงานด้านไหนกันบ้าง เช่น เขียน html, css, js , react ก็น่าจะทำด้าน Front-End เขียน java , python , go ก็น่าจะทำงานในฝั่ง Back-End เป็นต้นครับ หลังจากนั้นเราก็จะทำการกำหนดกลุ่มต่างๆ โดยใช้ภาษาโปรแกรมที่ผู้สมัครตอบมาเป็นตัวแบ่งครับ
  • ต่อไปเราก็จะทำการนับคะแนนของผู้สมัครครับว่าแต่ละคนนั้นตอบอะไรกันมาบ้าง เช่น ผมตอบไปว่า javascrip , react, go ก็จะได้คะแนนในส่วนของ Front-End ไป 2 คะแนน คะแนนในส่วน Back-End ไป 1 คะแนน data และ python ก็จะเป็น 0 เป็นต้นครับ
  • สุดท้ายเราก็จะนำข้อมูลที่ได้ไปทำการแบ่ง cluster ด้วย K-means ครับ

ถึงตรงนี้เราก็จะสามารถแบ่งความสามารถของผู้สมัครออกมาได้แล้วทั้งหมด 6 กลุ่ม คำถามก็คือแล้วแต่ละกลุ่มคือใคร ทำอะไรได้บ้าง อันนี้เราก็ต้องมาดูกันครับว่าเราจะตัดสินใจให้แต่ละกลุ่มนั้นเป็นอะไรโดยวิธีที่ใช้ก็คือการหาค่าเฉลี่ยแต่ละด้านของแต่ละกลุ่มที่ถูกแบ่งออกมาและจึงกำหนดให้ว่าแต่ละกลุ่มนั้นน่าจะเป็นคนกลุ่มใดนั่นเองครับ

skill programing ของผู้สมัครในแต่ละกลุ่ม

สรุปเรื่อง Programming

  • ▹ มีกลุ่มคนที่ไม่มีพื้นฐานการเขียนโปรแกรม
  • ▹ มีกลุ่มคนที่ไม่มีพื้นฐานการเขียนโปรแกรม
  • ▹ พอจะสรุปได้หรือเปล่าว่า python เป็นภาษายอดนิยมสำหรับคนที่สนใจ data science หรือเกิดจาก bias เพราะเราสอนโดยใช้ colab

3.4 ความคาดหวัง

ในการแบ่งกลุ่มของความคาดหวังเราจะใช้การเปลี่ยนข้อความออกมาเป็น vector ซึ่งก็จะใช้ Library botnoiw2v นะครับ และสุดท้ายเราก็จะทำการทำการแบ่ง cluster ด้วย K-means อีกเช่นเคยครับ

หลังจากแบ่งกลุ่มได้แล้วเราก็ต้องทำการกำหนดให้ว่าแต่ละกลุ่มที่เราแบ่งมานั้นคือมีกลุ่มคนประเภทไหนบ้างครับ

สรุปเรื่อง ความคาดหวัง

สามารถแบ่งความคาดหวังออกมาได้ 3 กลุ่ม

  • ▹กลุ่มที่อยากประยุกต์ใช้งาน คาดว่าน่าจะเป็น programmer หรืออยู่สาย data
  • ▹กลุ่มที่อยากฟังประสบการณ์ คาดว่าน่าจะเป็น data analyst/scientist ที่อยากฟังประสบการณ์เพื่อให้เก่งขึ้น
  • ▹กลุ่มที่อยากได้ concept คาดว่าน่าจะเป็นบุคคลทั่วไปที่สนใจ อาจจะเป็นนักศึกษา หรือผู้บริหาร ที่อยากเข้าใจว่า data science คืออะไร

3.5 ทำไมถึงมาเรียน

วิธีการในขั้นตอนนี้เหมือนกับเรื่องความคาดหวังเลยครับคือจะเปลี่ยนข้อความออกมาเป็น vector ซึ่งก็จะใช้ Library botnoiw2v และสุดท้ายเราก็จะทำการทำการแบ่ง cluster ด้วย K-means อีกเช่นเคยครับ

สรุปเรื่อง เหตุผลที่อยากเรียน

สามารถแบ่งเหตุผลที่อยากเรียน ออกมาได้ 3 กลุ่ม

  • ▹กลุ่มที่มีความมุ่งมั่น
  • ▹กลุ่มที่อยากจะเพิ่มความรู้
  • ▹กลุ่มที่สนใจ

3.6 สถานที่เรียน/ทำงาน

เนื่องจากตอนสมัครผู้กรอกได้กรอกข้อมูลในส่วนนี้มาอยู่แล้วเราจึงสามารถนำข้อมูลตรงนี้ไปใช้ได้เลยโดยจากการดูข้อมูลในเบื้องต้น ก็ทำให้เห็นว่าผู้สมัครส่วนใหญ่จะมาจากสถาบันการศึกษาและบริษัท เราจึงทำ Word Cloud ออกมาดูก็จะได้ภาพออกมาตามนี้เลยครับ ซึ่ง Word Cloud ก็สามารถสร้างภาพออกได้หลายรูปแบบนะครับสามารถเข้าไปอ่าน ลองเล่นกันได้ตามนี้เลยครับ → Click

สรุปเรื่อง สถานที่หน่วยงานที่มาเรียน

สามารถแบ่งสถานที่หน่วยงานที่มาเรียน ออกมาได้ 2 กลุ่มหลัก

  • ▹บริษัทองค์กร ที่มีหลากหลายภาคธุรกิจ
  • ▹มหาวิทยาลัย

3.7 อาชีพ

วิธีการในขั้นตอนนี้เหมือนกับวิธีการในการหาเหตุผลที่อยากเรียนเลยครับคือจะเปลี่ยนข้อความออกมาเป็น vector ซึ่งก็จะใช้ Library botnoiw2v และสุดท้ายเราก็จะทำการทำการแบ่ง cluster ด้วย K-means ครับ

สรุปเรื่อง อาชีพ

  • ▹การแบ่งกลุ่มอัตโนมัติยังไม่ดีนัก จะเห็นได้ว่ากลุ่มไปกองอยู่ที่ engineer กับ itanddata เป็นหลัก
  • ▹อาจจะต้องแบ่งกลุ่มให้เยอะกว่านี้ หรืออาจจะต้องใช้คนมาช่วยแบ่งกลุ่มอาชีพ และใช้ supervise learning

เส้นทางช่างยาวไกล …… ตอนนี้เราก็ได้เตรียมข้อมูลต่างๆตามที่เราต้องการแล้วนะครับ จะเห็นได้ว่าการเตรียมข้อมูลตรงนี้ค่อนข้างที่จะต้องใช้เวลาและมีหลายเทคนิคในการที่เราจะเตรียมข้อมูลต่างๆให้พร้อมสำหรับการนำไปวิเคราะห์ต่อไป ท้ายที่สุดตอนนี้เราก็นำข้อมูลทั้งหมดที่ผ่านการจัดการอย่างเหมาะสมแล้วมาทำการรวมเข้าด้วยกันกลายเป็น Data Mart ที่พร้อมสำหรับการหาคำตอบจากข้อมูลตามที่เราต้องการได้แล้วครับ

4. การหาคำตอบ

สรุป ความสำคัญของการสร้าง data mart

  • หากข้อมูลเรามีการอัพเดท เราก็สามารถวิเคราะห์ข้อมูล เทรนใหม่ ได้อย่างรวดเร็ว
  • สามารถไปสร้าง dashboard ที่เป็น real-time ก็ได้
  • หัวใจของ data analytic อยู่ที่ data mart ทำได้ครบถ้วน แค่ไหน

5. การจัดกลุ่มนักเรียน

กลับไปที่เป้าหมายที่เราได้ตั้งไว้ใน ขั้นตอนที่ 2 นะครับ เป้าหมายของเราก็เพื่อจัดกลุ่มย่อย 20 กรุ๊ป โดยในแต่ละกรุ๊ปจะมีต้องมีความเท่าเทียม นั่นคือมีความหลากหลายของคนในกลุ่ม เช่น มีโปรแกรมเมอร์ มี business มี marketing มีนักศึกษา มีคนทำงานโดยหลังจากที่เราได้ Data Mart มาแล้วต่อไปก็จะทำการแบ่งกลุ่มจากข้อมูลที่มีนะครับโดยจะแบ่งกลุ่มของผู้เรียนออกมา 20 กลุ่ม

จะทำการทำการแบ่ง cluster ด้วย K-means ออกมา 20 กลุ่มโดยเราสามารถดูได้ว่าแต่ละกลุ่มมีลักษณะเป็นอย่างไรบ้างจาก Heat Map ด้านล่างเลยครับ

ตัวเลขที่แสดงไม่ใช้ตัวเลข correlation นะครับเพราะหลายๆคนอาจจะเคยใช้ heatmap ในการดูค่า correlation กันมา แต่ตัวเลขดังกล่าวเป็นค่าเฉลี่ยของจำนวนคนในแต่ละกลุ่มเมื่อพิจารณาในด้านต่างๆ เช่น กลุ่มที่ 1 (แถวที่ 2) ก็จะมีลักษณะเด่นๆคือเป็นผู้ชาย ไม่มีพื้นฐาน Programming เหตุผลที่สมัครเรียนเพราะมีความสนใจใน Data Science เป็นต้นครับ

หลังจากนั้นเราก็จะนำข้อมูลตรงนี้ไปทำการแบ่งนักเรียนออกมาตามกลุ่มต่างๆ โดยแต่ละกลุ่มก็จะมีนักเรียนจากทั้ง 20 กลุ่มที่เราได้แบ่งไว้ตรงนี้นั่นเองครับ

ถามว่าผลลัพธ์จริงๆเป็นอย่างไรบ้าง อันนี้ผมขอยกตัวอย่างของกลุ่มที่ผมอยู่แล้วกันนะครับก็พบว่าในกลุ่มมีคนที่หลากหลายมากครับ ตั้งแต่ นักศึกษา , โปรแกรมเมอร์ , กัปตันการบิน, Data Scientist, Researcher, Project Manage, Business Analyst ซึ่งถือว่าหลากหลายและครบเครื่องพร้อมทำหรับการทำ Project มากครับ

Thanks for reading!

- Anu Wat -

--

--