การสร้างระบบแนะนำ (Recommendation System) ด้วย Python
ระบบแนะนำ (Recommendation System) เป็นหนึ่งในเทคโนโลยีที่สำคัญที่ใช้ในการให้คำแนะนำเกี่ยวกับสินค้าหรือบริการที่น่าจะสนใจแก่ผู้ใช้ เช่น ระบบแนะนำสินค้าของ Amazon, ระบบแนะนำหนังใน Netflix, หรือแม้แต่การแนะนำเพลงใน Spotify
ในการสร้างระบบแนะนำที่ง่ายที่สุด เราสามารถใช้ Collaborative Filtering ซึ่งสามารถแบ่งออกเป็น 2 ประเภทหลักๆ คือ:
- User-based Collaborative Filtering: การแนะนำสิ่งที่ผู้ใช้อื่น ๆ ที่มีความชอบคล้ายกันได้เลือก
- Item-based Collaborative Filtering: การแนะนำสิ่งที่คล้ายกับสิ่งที่ผู้ใช้ได้เลือกในอดีต
ในบทความนี้เราจะมาทำความเข้าใจการสร้าง Item-based Collaborative Filtering โดยใช้ข้อมูลจากการซื้อสินค้าของผู้ใช้ เพื่อแนะนำสินค้าที่คล้ายคลึงกัน
ขั้นตอนที่ 1: เตรียมข้อมูล
สำหรับตัวอย่างนี้ เราจะใช้ข้อมูลการซื้อสินค้าของผู้ใช้ โดยสมมุติว่าเรามีข้อมูลที่บันทึกการซื้อสินค้าในรูปแบบ user-item matrix ซึ่งผู้ใช้แต่ละคนมีการซื้อสินค้าหลาย ๆ ชิ้น ข้อมูลนี้จะถูกแสดงเป็น Matrix ที่ผู้ใช้แต่ละคนจะมีค่าคะแนนหรือการซื้อสินค้า
ตัวอย่างข้อมูล:
User \ Item | Item 1 | Item 2 | Item 3 | Item 4 | Item 5 |
User 1 | 5 | 0 | 4 | 0 | 1 |
User 2 | 4 | 0 | 0 | 2 | 4 |
User 3 | 0 | 3 | 4 | 0 | 0 |
User 4 | 2 | 5 | 0 | 0 | 3 |
User 5 | 1 | 0 | 4 | 5 | 0 |
ขั้นตอนที่ 2: สร้าง Matrix Similarity
จากข้อมูลข้างต้น เราสามารถใช้ Cosine Similarity ในการคำนวณความคล้ายคลึงกันระหว่างสินค้าต่างๆ ได้
ขั้นตอนที่ 3: สร้างระบบแนะนำ
ในการสร้างระบบแนะนำ เราจะใช้ Cosine Similarity เพื่อคำนวณความคล้ายคลึงกันระหว่างสินค้าต่างๆ และใช้ผลลัพธ์นี้ในการแนะนำสินค้าต่อไป
ตัวอย่างโค้ด:
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# ข้อมูลการซื้อสินค้า (User-Item Matrix)
data = {
'Item 1': [5, 4, 0, 2, 1],
'Item 2': [0, 0, 3, 5, 0],
'Item 3': [4, 0, 4, 0, 4],
'Item 4': [0, 2, 0, 0, 5],
'Item 5': [1, 4, 0, 3, 0]
}
# สร้าง DataFrame
df = pd.DataFrame(data, index=['User 1', 'User 2', 'User 3', 'User 4', 'User 5'])
# คำนวณ Cosine Similarity ระหว่างสินค้าทั้งหมด
similarity_matrix = cosine_similarity(df.T)
# สร้าง DataFrame ของผลลัพธ์ความคล้ายคลึง
similarity_df = pd.DataFrame(similarity_matrix, index=df.columns, columns=df.columns)
# แสดงความคล้ายคลึงระหว่างสินค้า
print("Cosine Similarity Matrix:")
print(similarity_df)
# ฟังก์ชันสำหรับแนะนำสินค้าที่คล้ายกัน
def recommend_items(item_name, similarity_df, top_n=3):
similar_items = similarity_df[item_name].sort_values(ascending=False)[1:top_n+1]
return similar_items
# ทดสอบการแนะนำสินค้า
item_to_recommend = 'Item 1'
recommended_items = recommend_items(item_to_recommend, similarity_df)
print(f"\nสินค้าที่คล้ายกับ {item_to_recommend}:")
print(recommended_items)
Code language: Python (python)
คำอธิบายโค้ด:
- ข้อมูล: ข้อมูลการซื้อสินค้าถูกเก็บไว้ใน DataFrame ของ Pandas โดยแต่ละแถวแทนผู้ใช้และแต่ละคอลัมน์แทนสินค้าที่พวกเขาซื้อ
- Cosine Similarity: ใช้
cosine_similarity
จากsklearn
เพื่อคำนวณความคล้ายคลึงกันระหว่างสินค้าต่าง ๆ - ฟังก์ชันแนะนำสินค้า: ฟังก์ชัน
recommend_items()
ใช้ผลลัพธ์จากcosine_similarity
เพื่อแนะนำสินค้าที่คล้ายกับสินค้าที่ผู้ใช้สนใจ
ขั้นตอนที่ 4: ผลลัพธ์
จากโค้ดข้างต้น เราจะได้ Cosine Similarity Matrix ที่แสดงความคล้ายคลึงกันระหว่างสินค้าต่าง ๆ และจากนั้นระบบจะแนะนำสินค้าที่คล้ายกับสินค้า
Item 1
เช่น:
Cosine Similarity Matrix:
Item 1 Item 2 Item 3 Item 4 Item 5
Item 1 1.000000 0.073513 0.742440 0.174078 0.677280
Item 2 0.073513 1.000000 0.080623 0.618118 0.209602
Item 3 0.742440 0.080623 1.000000 0.328989 0.943919
Item 4 0.174078 0.618118 0.328989 1.000000 0.610122
Item 5 0.677280 0.209602 0.943919 0.610122 1.000000
สินค้าที่คล้ายกับ Item 1:
Item 3 0.742440
Item 5 0.677280
Item 4 0.174078
Code language: CSS (css)
ในที่นี้ ระบบแนะนำว่า
Item 3
,
Item 5
และ
Item 4
เป็นสินค้าที่คล้ายกับ
Item 1
สรุป
ในบทความนี้เราได้เรียนรู้วิธีการสร้างระบบแนะนำแบบง่าย ๆ ด้วย Python โดยใช้ Collaborative Filtering และ Cosine Similarity เพื่อแนะนำสินค้าที่คล้ายคลึงกันให้กับผู้ใช้ ซึ่งเป็นเทคนิคที่ใช้ได้ดีในหลายๆ แพลตฟอร์ม เช่น ระบบแนะนำสินค้าของร้านค้าออนไลน์ หรือการแนะนำเนื้อหาต่างๆ ในแอปพลิเคชันต่างๆ