ฮั่นแน่!! ซื้อยอดฟอลมาใช่มั้ยละ ML ดูออกนะ 😏

Thanwarat Kheawdee
botnoi-classroom
Published in
4 min readDec 12, 2020

--

Team members:

Byte, Manon, Pao, Bankky, Gisaku & Team, Kam

1.Introduction

ช่วง work from home ที่ผ่านมา หลายท่านคงได้เห็นข่าวผ่านตากันมาบ้าง แค่ญาญ่าถ่ายรูปคู่กับต้นไม้ ราคาต้นไม้ก็ถึงกับพุ่งกระฉูด!! แน่นอนครับว่าบุคคลที่มีผู้ติดตามทั้งจากจอทีวีและทางโซเชียลมีเดียไปหยิบจับอะไร ก็ดูเหมือนจะกลายเป็นกระแสไปหมด จึงไม่แปลกที่บรรดาแบรนด์น้อยใหญ่ต่างแย่งกันเพื่อจะขอใช้พื้นที่จากเหล่าดาราหรือ social media influencer ในการสื่อสารหรือโฆษณากับกลุ่มลูกค้า ซึ่งแน่นอนว่าการใช้ Influencer ในปัจจุบันก็เป็นวิธีการทางการตลาดที่ได้รับความนิยมทวีคูณขึ้นเรื่อยๆ และเม็ดเงินไหลเข้าไปหมุนเวียนเพิ่มขึ้นเรื่อยๆเช่นกัน

2. Background

2.1 Social Media Influencer คือใคร?

ความหมายง่ายๆก็หมายถึงบุคคลหรือบัญชีบนโลกออนไลน์ที่มีผู้ติดตามจำนวนมากพอที่จะสร้างกระแสผลกระทบทางวัฒนธรรมและเศรษฐกิจได้ (โอ้โห ดูยิ่งใหญ่มากกก) ซึ่งแน่นอนว่าเดี๋ยวนี้แพลตฟอร์มโซเชียลมีเดียก็มีจำนวนมากมายนับไม่ถ้วน ไม่ว่าจะเป็น Facebook, YouTube, Twitter, TikTok, และที่เราจะโฟกัสมากสุดในโปรเจคนี้ก็คือ Instagram นั่นเอง

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

ให้เวลา 5 วินาที

4

3

2

1

.

เฉลยครับ Christiano Ronaldo ครับ ดาวยิงสัญชาติโปรตุเกสคนนี้มียอดผู้ติดตามไม่มากไม่น้อย อยู่ที่ประมาณ 244 ล้านบัญชีเท่านั้นเองครับ (เปรียบเทียบเล่นๆก็ 3 เท่าของประชากรไทยครับ)

Christiano Ronaldo

Source: https://en.as.com/en/2020/09/08/football/1599593733_593088.html

ในเมื่อมีผู้ติดตามหลักหลายร้อยล้าน ก็เป็นธรรมดาที่เหล่าบรรดาแบรนด์ต่างๆจะอยากจะใช้พื้นที่บนหน้าบัญชีนี้เพื่อโปรโมตสินค้าและบริการของตน แต่แน่นอนครับว่าของฟรีไม่มีในโลก ทีนี้ลองทายกันอีกสักทีครับ ว่าการโพสโฆษณาให้สินค้าสักโพสหนึ่ง ทุกท่านคิดว่าพี่โด้ของเราจะได้เงินเข้ากระเป๋าสักเท่าไหร่ (อย่าลืมนะครับว่าผู้ติดตามของพี่แกหลักร้อยล้านบัญชี)

.

.

.

ประมาณ 37 ล้านบาทต่อโพสครับ (อ้างอิงจาก goal.com) ใช่แล้วครับ แค่ขยับปลายนิ้วไปโพสสินค้าสักตัวนึก ก็ได้ตังค์มากพอที่จะถอยซูเปอร์คาร์สักคันหรือบ้านหรูๆสักหลังแล้วครับ ถ้าใครอยากจะเริ่มเอาจริงกับการเตะฟุตบอลและผันตัวเข้าวงการ ตัวเลขนี้น่าจะเป็นกำลังใจที่ดีเลยใช่มั้ยครับ 555

2.2 Fake account (บัญชีปลอม) คืออะไร?

อย่างที่ได้แนะนำไปว่าการจะเป็น influencer ที่เป็นที่นิยมได้นั้น ก็ต้องมีคนติดตามจำนวนมากๆ จำนวนผู้ติดตามยิ่งมาก การเคลื่อนไหวแต่ละทีก็มีผู้เห็นมาก (และเรียกราคาจากผู้มาขอซื้อพื้นที่โฆษณาได้มาก)

metrics ที่วัดความนิยมขั้นพื้นฐานก็เช่น ยอดคนติดตาม ยอดคนเข้าถึง ยอดไลค์/แชร์เฉลี่ยแต่ละโพส เพราะตัวเลขเหล่านี้แสดงถึงความเคลื่อนไหวและความกระตือรือล้นของผู้ติดตามบัญชีนั้นๆ

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

3. Motivation

แน่นอนว่าการที่ influencer มียอดผู้ติดตามสูง การที่บริษัทเข้าไปซื้อพื้นที่โฆษณาก็ต้องหวังให้มีผู้เห็นสินค้าหรือบริการสูงที่สุด โดยยอมแลกมากับการจ่ายราคาที่สูงตามไปด้วย แต่จะแน่ใจได้อย่างไรว่าตัวเลขผู้ติดตามที่สูงลิบนั้นมาจากยอดผู้ติดตามจริงๆ ดังนั้นหากมีเครื่องมือที่ช่วยตรวจสอบขั้นพื้นฐานได้ว่าผู้ติดตามในบัญชีเหล่านั้นเป็นบัญชีจริง หรือเป็น fake account ที่มาติดตามเพื่อเพิ่ม metrics ก็น่าจะช่วยบริษัทประหยัดทั้งงบประมาณและเวลา เพื่อท้ายที่สุดจะสามารถสื่อสารไปยังกลุ่มลูกค้าได้อย่างที่หวัง (ที่เป็นคนจริงๆนะไม่ใช่บอท ^^)

4. Objective

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

5. Machine Learning (P’Manon + Nut)

5.1 Acquiring Data

5.1.1 Source

ข้อมูลที่เราใช้ในการทำการศึกษาสัปดาห์นี้ เรายืมมาจาก Github ของ user ท่านหนึ่งที่ได้ทำการไปดึงข้อมูลจาก Instagram หลายๆรูปแบบรวมๆแล้ว เกินกว่าพันบัญชี จึงทำให้ประหยัดแรงในการเก็บข้อมูลไปได้เยอะครับ credit: GitHub — fcakyon/instafake-dataset: Dataset for Intagram Fake and Automated Account Detection

5.1.2 Feature description

ข้อมูลที่เราได้มาจะแบ่งเป็นบัญชีจริงจำนวน 994 บัญชี และบัญชีปลอม (Fake account) 200 บัญชี โดยประกอบไปด้วย Feature ที่เป็นข้อมูลพื้นฐานและถูกถูกแสดงอยู่ในหน้า Profile ของทุกๆบัญชี ซึ่งมีทั้งหมด 8 ตัวดังนี้

  1. userFollowerCount: จำนวนผู้ติดตาม
  2. userFollowingCount: จำนวนการติดตาม
  3. userBiographyLength: จำนวนตัวอักษรบนประวัติส่วนตัว (Biography)
  4. userMediaCount: จำนวนโพส
  5. userHasProfilPic: มีรูปโปรไฟล์หรือไม่
  6. userIsPrivate: ตั้งค่าบัญชีเป็นส่วนตัวหรือไม่
  7. usernameDigitCount: จำนวนตัวเลขในชื่อบัญชี
  8. usernameLength: ความยาวตัวอักษรของชื่อบัญชี

5.2 Data Exploration

5.2.1 Missing values and Data type

ความโชคดีของ dataset นี้คือข้อมูลที่ไปเก็บมา ไม่มี missing value ครับและทั้งหมดเป็นประเภทจำนวนเต็ม (integer) ทำให้ประหยัดแรงไปได้เยอะครับ ^^

5.2.2 Feature Correlation

จากนั้นเราลองทำ Correlation Matrix ดูครับ เพื่อดูความสัมพันธ์เบื้องต้นของ feature ต่อ feature และ feature ต่อ target ซึ่ง Correlation จะมีค่าตั้งแต่ -1 ถึง 1

การดู Correlation เป็นการดูอย่างคร่าวๆครับว่าสองสิ่งที่เรากำลังเปรียบเทียบกันมีความสัมพันธ์กันอย่างไร ถ้า feature คู่ไหนมีค่า Correlation มากกว่า 0.9 ซึ่งแสดงว่ามีความสัมพันธ์กันมาก สามารถ เลือก featureใดfeatureหนึ่งมาใช้ได้ และเป็นการตัด feature ให้เหลือน้อยแล้วจึงนำ feature ที่เหลือมาหา correlation กับ Target(isFake) เช่น correlation ของ userFollowingCount กับ target (isFake) มีค่า 0.49 => เข้าใกล้ 1 เราก็พอจะแปลความหมายได้ว่า ยิ่งจำนวนการไปติดตามบัญชีอื่นมาก ยิ่งมีโอกาสเป็นบัญชีปลอมมาก

5.3 Extracting Feature and Splitting Train-test dataset

เมื่อจัดการกับ feature ตามที่ต้องการแล้ว เราทำการแบ่งข้อมูลเป็น 2 ส่วน train dataset สำหรับการฝึกโมเดล และ test dataset ข้อมูลชุดใหม่ที่โมเดลไม่เคยเจอสำหรับไว้ทดสอบความถูกต้องของโมเดล โดยแบ่งเป็น Train set 80% และ Test set 20% และเนื่องจากข้อมูล ของ Target(isFake) เป็น int64 จึงต้องเปลี่ยนให้เป็น string ก่อน

5.4 Model Training

Machine Learning Algorithms ที่นำมาใช้ มี 4 algorithms ได้แก่

  • DicisionTree = เป็น model แบบ rule-base โดยอาศัย หลักการ if-else จากค่าของ feature แต่ละ feature โดยที่ไม่มีสมการความสัมพันธ์มากำกับ
  • Random Forest = ถูกพัฒนามาจาก Decision Tree โดยการทำ model Decision Tree หลายๆ model โดยแต่ละ model จะรับ Dataset ไม่เหมือนกัน แล้วทำการ vote output
  • Gaussian Naive Bayes = เป็นการ จำแนกโดยอาศัยหลักการความน่าจะเป็นมาช่วยแยกประเภทของตัวอย่างใหม่
  • Support Vector Machine = เป็นการจัดกลุ่มของข้อมูลโดยการแบ่ง Class ของข้อมูลออกจากกันซึ่งสามารถแบ่งด้วยสมการ Linear และ Non Linear

Cross Validation หรือ การตรวจสอบแบบไขว้ เนื่องจากการทดสอบข้อมูลเพียงครั้งเดียวอาจจะไม่ได้ยืนยันความถูกต้องได้ดีพอ จึงต้องมีการสุ่มสลับข้อมูลมาทำการทดสอบ หลายๆครั้งเพื่อยืนยันว่าข้อมูลของเรามีการกระจายตัวที่เหมาะสม และเพิ่มความแม่นยำของ model ที่สร้าง โดย โดยวิธีการที่นำมาใช้ในข้อมูลนี้คือ StratifiedKFlod ซึ่งมีข้อดีกว่า KFold แบบดั้งเดิม โดยเลือกข้อมูลนำมาทำ test data แบบสุ่ม และ shuffle ข้อมูล

ทำการ run ทดสอบ algorithms ทั้ง 4 ผ่าน StratifiedKFlod ได้ผลดังนี้

5.5 Evaluation

ผลที่ได้จากการ run จริง โดยทดสอบด้วย test dataset ที่ได้ทำการแยกไว้ในขั้นตอนก่อนหน้านี้

จากผลข้างต้น อาจจะยังตอบไม่ได้แน่ชัดว่า model ไหนดีที่สุด เนื้อจากข้อมูลที่นำมาใช้ทดสอบเป็นแบบ Imbalance จึงนำ model มา plot เพื่อหา (Area Under the Receiver Operating Charactteristics) ผลที่ได้คือ RFmodel มีพื้นที่ใต้กราฟ มากที่สุด

Confusion matrix

แต่กระนั้นก็ยังไม่มั่นใจ จึงทำการคำควนหาค่า Precision ซึ่ง Precision หมายถึงความแม่นยำ และหาโดยแยกทีละ Class

สรุป : ข้อมูลชุดนี้ ใช้ Algorithm Random Forest ทำนายได้แม่นยำที่สุด !!!

ผลของ RandomForest model (ของจริงดูได้จาก colab)

https://colab.research.google.com/drive/18joPV5ZJJYx4BLyZxEJR3TFrv2o08jsX?usp=sharing

5.6 Deployment

โดยเราได้นำโมเดลที่ทำการ export ออกมาไปฝากไว้บน Botnoi Open API ซึ่งทุกท่านสามารถเข้าไปทดลองเล่นหรือเรียกใช้งานได้ตามลิ้งค์นี้ https://openapi.botnoi.ai/dashboard/api/sa-ig-account-fake-or-real

6. Conclusion

Instagram ได้ถูกนำมาเป็นเครื่องมือสำคัญสำหรับแบรนด์ต่างๆในการสื่อสารและโฆษณากับกลุ่มลูกค้าผ่านกลุ่มที่เราเรียกว่า Influencer แต่ปัญหาคือแบรด์ต่างๆที่เข้าไปซื้อพื้นที่โฆษณาจะรู้ได้อย่างไรว่าสารที่ต้องการจะสื่อไปไปถึงยังบริโภคจริงๆ ไม่ใช่เหล่าบรรดาบัญชีปลอมที่ถูกสร้างขึ้นมาเพื่อเพิ่มยอดติดตามให้กับ Influencer

ดังนั้นทีมเราจึงสร้าง Model machine learning ขึ้นมาเพื่อตรวจจับบัญชีปลอมจาก Feature 8 ตัวที่สามารถเข้าถึงได้จากหน้าบัญชีที่เราต้องการตรวจสอบ โดยจากการทดสอบโมเดล 4 ชนิด Dicision Tree, Random Forest, Gaussian Naive Bayes และ Support vector machine ตัวที่ให้ผลลัพท์ออกมาดีที่สุดคือ Random Forest Classifier ซึ่งให้ความแม่นยำเฉลี่ยที่ 95% ในข้อมูล train และสูงถึง 98% สำหรับข้อมูล test และมีค่า precision ที่ 98% ซึ่งถือว่าความแม่นยำเป็นที่น่าพอใจอย่างมาก

โดยสรุปคือ Model ที่ทีมเราสร้างขึ้นมาตัวนี้น่าจะช่วยในการจำแนกว่าบัญชีที่กำลังตรวจสอบนั้นเป็นบัญชีที่ถูกใช้โดยคนจริงๆหรือเป็นบัญชีปลอม (Fake Account) เพียงแต่จุดอ่อนจะอยู่ที่เราจะต้องตรวจสอบทีละบัญชี ซึ่งในอนาคตหากมีการพัฒนาอัลกอริทึมในการดึงรายชื่อผู้ติดตามของ influencer และนำรายชื่อทั้งหมดมารันผ่าน model เพื่อตรวจสอบจำนวนผู้ติดตามปลอม ก็น่าจะทำให้การตรวจสอบทำได้ง่ายและรวดเร็วขึ้นไม่มากก็น้อย ทีนี้เราก็จะรู้ได้ทันทีว่า influencer คนนั้นสุดปังหรือสุดปลอมกันแน่!! (555+)

7. Reference

--

--