การทำนายพฤติกรรมการซื้อสินค้าบน Social Media

“Logistic Regression — การถดถอยโลจิสติกสร้างผลลัพธ์ในรูปแบบไบนารีซึ่งใช้ในการทำนายผลลัพธ์ของตัวแปรตามหมวดหมู่ มีการใช้กันอย่างแพร่หลายมากที่สุดเมื่อตัวแปรตามเป็นไบนารีเช่นจำนวนประเภทที่มีอยู่คือสองประเภทเช่นผลลัพธ์ตามปกติของการถดถอยโลจิสติกคือ: ใช่และไม่ จริงและเท็จ สูงและต่ำ ผ่านและล้มเหลว”

https://www.kaggle.com/rakeshrau/social-network-ads/version/1

บริษัทต้องการออกสินค้าตัวใหม่ จากข้อมูลก่อนหน้านี้เกี่ยวกับยอดขายเกม ใหม่ที่ต้องการ ต้องการคาดเดาประเภทของผู้ที่อาจสนใจซื้อเกม แบบนี้ โดยเดาจาก ข้อมูลเก่าๆ ของกลุ่มลูกค้าบน Social media ที่ซื้อสินค้าจากบริษัทของตน

จากข้อมูลประกอบด้วย User ID,เพศ(Gender)mอายุ(Age),เงินเดือนโดยประมาณ(EstimatedSalary), และ Purchased (ซื้อ) เป็นคอลัมน์ เมื่อเรานำเข้าข้อมูลใน pandas แล้วจะมีลักษณะเช่นนี้

ขั้นตอนที่ 1: โหลดไฟล์ข้อมูล CSV ชื่อ Social_Network_Ads.csv เข้า ตาราง (DataFrame) ที่แบ่งข้อมูลตามแถวและคอลัมน์ จากนั้น เลือกเฉพาะ คอลัมน์ 2 และ 3 คือ Age และ matedSalary ด้วยคำสั่ง X = df.iloc[:, [2, 3]].values เข้ามาตัวแปร X

และ เลือกเฉพาะ คอลัมน์ 4 (Purchased) เข้ามาตัวแปร Y

จะเห็นได้ว่า

• ตัวแปรอิสระ คือ Age(อายุ), Estimated Salary (เงินเดือนที่คาดหวัง) และ

• ตัวแปรตามคือ Purchase (ซื้อ)

ด้วยตัวแปรตามคือ Purchase (ซื้อ) มีเพียงสองค่า คือ 0(ไม่ซื้อ) และ 1(ซื้อ) เราจะใช้ อัลกอริทึมการถดถอยโลจิสติกเพื่อทำนาย พฤติกรรมการซื้อ โดยใช้ข้อมูลที่มีอยู่

ขั้นตอนที่ 2: ในการสร้างโมเดลเพื่อพยากรณ์ จะทำการรวบรวมข้อมูลและนำข้อมูลเหล่านั้นมาแบ่งออกเป็น 2 ส่วน คือ 1) ข้อมูลที่ใช้สำหรับการสอน (Train) หมายถึง การนำข้อมูลไปสร้างสมการเพื่ออธิบายรูปแบบข้อมูลนั้น ๆ เรียกสมการที่สร้างขึ้นว่า โมเดลสำหรับแทนข้อมูลกลุ่มนี้ 2) ข้อมูลที่ใช้สำหรับการทดสอบ (Test) หมายถึง การนำข้อมูลเพื่อป้อนให้กับสมการหรือโมเดลทางคณิตศาสตร์ เพื่อคำนวณหาประสิทธิภาพของการพยากรณ์ ในหัวข้อนี้เป็นการศึกษาใช้งานไลบรารี่ Pandas ซึ่งทำงานร่วมกับภาษาไพธอนและได้รับความนิยมในการจัดการข้อมูล อาทิ การเพิ่ม ลบ แก้ไข กรอง และแบ่งข้อมูลสำหรับการ Train และ Test ได้อย่างสะดวก รวดเร็ว และมีประสิทธิภาพ

แสดงจำนวนข้อมูลภายในตัวแปร train และ test ด้วยคำสั่ง len() โดย 75% ของข้อมูลทั้งหมด 400 เรคคอร์ด มีค่าเท่ากับ 300 ดังนั้น ข้อมูลที่ใช้สอนมีจำนวน 300 แถวและข้อมูลที่ใช้ทดสอบมี 100 แถว ตามลำดับ

ขั้นตอนที่ 3: เพื่อให้อยู่ใน interval หรือ ช่วงเดียวกัน คือ 3.1) สร้าง parameter ที่ใช้ในการแปลงข้อมูล (Transformer)ซึ่งในที่นี่ใช้ค่า Mean และ Standard deviation
แล้ว 3.2) นำ Transformer ชุดนี้ไปแปลง X_train(Training Data ) ได้เป็น X_train_scaled จากนั้น 3.3) นำ Transformer ชุดนี้ไปแปลง X_test (Test Data ) ได้เป็น X_test_scaled หลังจากทำการแปลงข้อมูลให้อยู่ในช่วงเดียวกันแล้วจึงค่อยนำไปใช้สร้าง Model ต่อได้

ขั้นตอนที่ 4: ทดสอบใช้แบบจำลองกับชุดข้อมูลที่ใช้ Test ด้วย คำสั่ง y_pred = classifier.predict(X_test) เพื่อ ประเมินประสิทธิภาพโมเดล โดยแสดงค่าการจำแนกข้อมูลของแบบจำลอง (Confusion Matrix), คำนวณค่าประสิทธิภาพต่างๆ ของโมเดล

จาก Matrix เราสามารถคำนวณ ได้ดังต่อไปนี้

Accuracy = (TP+TN)/(TP+FP+FN+TN)

= 65 + 24/(65 +3+ 8 + 24)

= 89%

ซึ่งหาคำนวณ โดย sklearn ก็ตรงกัน ดังรูปต่อไปนี้

ขั้นตอนที่ 5: ทดลอง เปรียบเทียบ ค่าที่ทำนาย กับค่าจริง

--

--

รศ. ดร. เชฏฐเนติ ศรีสอ้าน
รศ. ดร. เชฏฐเนติ ศรีสอ้าน

Written by รศ. ดร. เชฏฐเนติ ศรีสอ้าน

รองอธิการบดีฝ่ายเทคโนโลยี มหาวิทยาลัยรังสิต

No responses yet