Recommender.md
推薦系統是一種機器學習應用,根據使用者的行為、偏好或特徵,預測並推薦其可能感興趣的項目(如商品、電影、音樂、文章等)。
1. 推薦系統的主要類型
(1) 協同過濾(Collaborative Filtering)
依賴「使用者-物品」互動資料(如評分、點擊、購買紀錄),分為:
使用者式協同過濾(User-based CF):找出與目標使用者行為相似的其他使用者
物品式協同過濾(Item-based CF):推薦與使用者曾喜歡的物品相似的項目
from sklearn.metrics.pairwise import cosine_similarity
from scipy.sparse import csr_matrix
# 假設 ratings 為使用者-物品矩陣
similarity = cosine_similarity(ratings)
(2) 內容式過濾(Content-Based Filtering)
根據物品的特徵(如關鍵字、類別、描述)與使用者偏好進行配對。
對每個使用者建立其偏好向量
計算每個物品與偏好的相似度
(3) 混合式方法(Hybrid Methods)
結合協同過濾與內容式方法,提升準確度與覆蓋率。
2. 評估指標
指標
說明
MAE / RMSE
預測評分誤差
Precision
推薦項目中正確的比例
Recall
所有應該推薦中正確推薦的比例
F1-score
Precision 與 Recall 的加權平均
AUC / MAP
排名品質衡量,適用於排序任務
3. Python 套件與工具
Surprise
: 用於協同過濾與模型評估LightFM
: 支援 hybrid、隱語義模型與冷啟動問題implicit
: 適用於隱式回饋資料(如點擊)TensorFlow Recommenders
: 支援深度學習推薦架構
4. 實作範例(使用 Surprise)
from surprise import Dataset, SVD, accuracy
from surprise.model_selection import train_test_split
# 載入內建 movielens 資料
data = Dataset.load_builtin('ml-100k')
trainset, testset = train_test_split(data, test_size=0.25)
model = SVD()
model.fit(trainset)
predictions = model.test(testset)
print("RMSE:", accuracy.rmse(predictions))
5. 挑戰與議題
冷啟動問題(Cold Start):新使用者或新物品缺乏互動紀錄
稀疏性(Sparsity):使用者-物品矩陣常非常稀疏
多樣性與新穎性:避免只推薦熱門內容,提升推薦多樣性
過擬合與隱私問題:需平衡推薦準確性與使用者數據保護
推薦系統廣泛應用於電商、影音平台、社群網站與數位內容服務,是連結使用者與資訊的關鍵技術之一。
Last updated