Data

BigQuery ML ทำนายความปังของโพสต์ง่าย ๆ ด้วย SQL Query

เมื่อคืนนี้ Google ได้เปิดตัวฟีเจอร์ใหม่ BigQuery ML ที่จะช่วยให้ Data Scientist/Analyst สามารถสร้างโมเดล Machine Learning บนข้อมูลขนาดใหญ่ใน Google BigQuery ได้ง่าย ๆ ผ่าน SQL query ใครที่ใช้ BigQuery วิเคราะห์ข้อมูลอยู่แล้วก็จะสามารถนำ Machine Learning เข้ามาใช้ทำความเข้าใจและหา Insights จากข้อมูลได้มากขึ้น นับเป็นอีกก้าวหนึ่งของ Google ที่พยายามจะช่วยให้ทุกคนเข้าถึงเทคโนโลยี AI ได้

ฟีเจอร์ตื่นเต้นขนาดนี้ วันนี้เลยขอโอกาสลองเล่นดูสักหน่อย ว่าใช้งานยากง่ายแค่ไหน และผลลัพธ์ที่ได้ออกมาเป็นอย่างไร เราจะใช้ข้อมูลโพสต์จาก Skooldio Facebook Page มาทำ Logistic regression ดูว่าปัจจัยอะไรที่มีความสัมพันธ์กับความปังของโพสต์ โดยนิยามของความ “ปัง” คือ ได้รับอย่างน้อย 50 reactions (ครับ เพจเล็กๆ 50 ก็ปังละครับ 555)

Fit a Model

การสร้างโมเดลก็สามารถทำได้ไม่อยาก เพียงแค่เรียก CREATE MODEL และกำหนด OPTIONS ระบุประเภทของโมเดล, Learning Rate, Regularization ฯลฯ​ ดูรายละเอียดเพิ่มเติมได้ที่นี่

ความสะดวกอย่างหนึ่งของการสร้างโมเดลผ่าน SQL Query คือ เราสามารถทำ Data Transformation ไปได้ด้วยในคำสั่งเดียวกัน อย่างในตัวอย่างนี้ เราได้มีการสร้าง Features ขึ้นมาหลาย ๆ อัน

  • จากข้อมูล created_time เราสร้างตัวแปร day กับ time สำหรับวันที่โพสต์ (อาทิตย์, จันทร์, อังคาร, …) และ เวลาที่โพสต์ (AM หรือ PM)
  • สำหรับโพสต์ที่มีลิงก์ เราสร้าง dummy variables เพื่อดูว่าเป็นลิงก์ไปที่ Medium (บทความ), Harvard Business Review, Skooldio (ขายของ!), Facebook (Shared Content), หรือ Youtube (วีดีโอ)
  • จากข้อความในโพสต์ message เราใช้ Regular Expression ในการหา Keyword เพื่อเดา (ขอย้ำว่าเดา!) ว่าเป็นโพสต์เกี่ยวกับ Data (ข้อมูล, Machine Learning, AI) หรือ Design (Design Thinking, UX/UI)

ลองดูโค้ดเต็ม ๆ กัน โดยในการเทรนโมเดล เราจะใช้ข้อมูลโพสต์ก่อนมิถุนายน 2018

พอรันโมเดลเสร็จ ก็จะมีสถิติจากการเทรนโมเดลออกมาให้เราดู

มาถึงขั้นตอนที่ทุกคนรอคอย ตกลงปัจจัยไหนบ้างที่ Predictive กับความปังของโพสต์ เราสามารถเรียกดู Coefficient ของแต่ละตัวแปรได้ง่ายมาก SELECT * FROM skooldio.popularity แค่นี้!

โพสต์ที่เป็น Link ดูเหมือนจะปังน้อยที่สุด (ติดลบเยอะสุด) ในขณะที่โพสต์ที่เป็น Status ดูเหมือนจะปังมากที่สุด เนื่องจาก weight เป็นบวกอยู่อันเดียว แต่จริง ๆ แล้วเป็น Estimate ที่เชื่อถือไม่ค่อยได้เท่าไหร่ เพราะที่ผ่านมาโพสต์ที่เป็น Status Update ในเพจมีเพียงแค่ 2 โพสต์เท่านั้น 😅 ในส่วนของ promotion_status จะเห็นได้ว่าโพสต์ที่มีสถานะเป็น Extendable นั้น มีค่า weight ที่สูงมาก เนื่องจากเป็นสถานะที่บ่งบอกว่า เราเคย boost โพสต์นี้ไปแล้ว เลยได้ reactions มาเยอะ

ตัวแปร created_time มี weight เป็นบวก ซึ่งแปลว่าโพสต์ยิ่งใหม่เท่าไหร่ (created_time มีค่ามาก) ยิ่งมีโอกาสได้รับ reactions มากขึ้นเท่านั้น ซึ่งเป็นตามที่คาดไว้ เพราะเพจมีคนมา follow มากขึ้นเรื่อย ๆ ทำให้โพสต์ใหม่ ๆ ได้ reach ที่สูงขึ้น นอกจากนี้โพสต์วันเสาร์ (day 7) – อาทิตย์ (day 1) และโพสต์ในช่วงเช้า (AM) มักจะปังกว่า

ในส่วนของลิงก์ โพสต์บทความ Medium ดูปังพอสมควร ทุกคนดูจะชอบ Original Content (เลยต้องรีบมานั่งเขียน blog เลย 😂) ในขณะที่โพสต์ลิงก์ไปเว็บไซต์ Skooldio ก็ค่อนข้างปัง หลัก ๆ เพราะเป็นโพสต์แนะนำคอร์สฟรีไปซะเยอะ

สุดท้ายโพสต์ที่เกี่ยวกับ Data และ Design ซึ่งเป็นสองศาสตร์ที่ Skooldio ค่อนข้างให้ความสำคัญ ก็ได้ค่า weight เป็นบวกกันทั้งคู่ น่าจะเป็นเพราะเป็นหัวข้อที่ลูกเพจของเราส่วนใหญ่ให้ความสนใจ

Evaluate the Model

การทำ Evaluation ก็ง่ายนิดเดียว เพียงแค่เรียกคำสั่ง ML.EVALUATE และระบุชื่อโมเดล พร้อมทั้งข้อมูลที่อยากใช้ในการทดสอบ ซึ่งในที่นี่ เราใช้ข้อมูลโพสต์ตั้งแต่มิถุนายน 2018

สถิติที่รายงานออกมาก็มีครบเลย ตั้งแต่ Precision/Recall ไปจนถึง F1 Score และ AUC สำหรับโมเดลลวก ๆ ของเรา ก็พอถูไถอยู่ 🤓

Make Predictions

สุดท้าย ถ้าเราอยากจะทำนายค่าสำหรับข้อมูลใหม่ เราก็สามารถใช้คำสั่ง ML.PREDICT ในการทำนายค่าได้เลย

สำหรับ Logistic regression ผลลัพธ์ก็จะแสดงทั้ง Predicted Label และ Predicted Probability ของแต่ละคลาส

ใครที่สนใจอยากไปลองเล่นด้วยตนเอง สามารถทำตาม tutorial นี้ได้เลย!

Ta Virot Chiraphadhanakul
Google Developer Expert in Machine Learning. A data nerd. A design geek. A changemaker.  —  Chula Intania 87, MIT Alum, Ex-Facebooker

    You may also like

    Web Scraping คืออะไร?
    Data

    Web Scraping คืออะไร? ไม่เก่งเขียน Code สามารถทำได้ไหม?

    ในปัจจุบันที่โลกก้าวสู่ยุค Digital และมีความเติบโตของจำนวนผู้ใช้อินเตอร์เน็ตจำนวนมาก ไม่ว่าจะเป็น การค้นหาข้อมูลข่าวสาร, ซื้อขายสินค้า หรือเป็นแหล่งชุมชน Community และอื่นๆ อีกมากมายอยู่บนเว็บไซต์ กลายเป็นแหล่งข้อมูล (Data Source) ชั้นดี สำหรับธุรกิจต่างๆ ...
    แนะนำเครื่องมือดึงข้อมูลฟรี Webscraper.io
    Data

    แนะนำเครื่องมือดึงข้อมูลจากเว็บไซต์ฟรี !! WebScraper.io

    ปัจจุบัน ‘เว็บไซต์’ ถือว่าเป็นแหล่งข้อมูลชั้นดี (Data source) และมีบทบาทความสำคัญในการขับเคลื่อนธุรกิจทุกระดับไม่ว่าจะเป็นธุรกิจขนาดเล็กหรือขนาดใหญ่ แต่การดึงข้อมูลบนเว็บไซต์ (Web Scraping) อาจจะฟังดูเป็นเรื่องไกลตัวสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ที่สามารถเขียนโค้ดโปรแกรมดึงข้อมูลออกมาใช้งานได้ 😎 จะดีกว่ามั้ย!? ถ้าคุณสามารถใช้เครื่องมือดึงข้อมูลที่สนใจบนเว็บไซต์ได้ด้วยตัวเอง ถึงแม้ว่าคุณอาจจะเขียนโปรแกรมไม่เก่งก็สามารถทำได้ ฟรี ...

    More in:Data

    Data

    Apache Airflow คืออะไร แล้วทำไมองค์กรชั้นนำส่วนใหญ่ถึงเลือกใช้

    Apache Airflow คือ 1 ใน Workflow Management ที่ได้รับความนิยม และองค์กรชั้นนำระดับโลกหลายๆ องค์กรเลือกใช้ โดยเฉพาะอย่างยิ่งในการสร้าง Data Pipelines เพื่อจัดการกับข้อมูลจำนวนมหาศาล ส่วนหนึ่งเพราะองค์กรต่าง ...
    Performance Marketing คืออะไร Business

    Performance Marketing คืออะไร? รู้จักวิธีการทำการตลาดแบบวัดผลได้

    ถ้าให้คุณจ่ายเงินเกินสิ่งที่ได้รับ หรือจ่ายไปโดยไม่รู้ด้วยซ้ำว่าได้ผลหรือเปล่า คุณจะยอมไหม? แน่นอนว่าคุณคงไม่แฮปปี้ แต่นี่แหละคือ ‘วิธีทำการตลาด’ ที่หลาย ๆ บริษัทกำลังทำอยู่ แล้วจะดีแค่ไหน หากเราสามารถเลือกใช้เงินเฉพาะกับผลลัพธ์ที่เราได้รับเท่านั้น ซึ่งทั้งหมดนี้คืองาน Performance Marketing การทำธุรกิจเปลี่ยนไปอย่างรวดเร็วตั้งแต่อินเตอร์เน็ตเข้ามามีบทบาทกับพฤติกรรมของมนุษย์ ...
    data-driven-with-moneyball-theory Data

    MoneyBall Theory ถอดบทเรียนชัยชนะแห่งศตวรรษด้วย Data

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

    สร้าง Profile สาย Data ยังไงดี เมื่อบริษัทไม่ได้มองหาแค่คนมีสกิล?

    อยากทำงานสายงาน Data Analyst แต่ไม่มีประสบการณ์ จะเก็บโปรไฟล์ยังไงดี? หลายคนที่กำลังเรียน หรือกำลังสนใจจะเรียน Data Analytics อาจมีความกังวล เพราะแม้เราจะมีสกิลครบตามตำแหน่งงาน (SQL, Spreadsheets, Business Intelligence ...

    Comments are closed.