非監督學習-推薦系統實戰-以MovieLens 100k為例

非監督學習-推薦系統實戰-以MovieLens 100k為例

為什麼 Netflix 比你還了解你的電影品味?本篇揭開推薦系統神祕的面紗,學習如何利用 SVD (奇異值分解) 將巨大的評分矩陣進行分解,從而挖掘出隱藏的「電影基因」,實現精準的個人化推薦。


一、 資料集來源:MovieLens 100k Dataset

  • 資料來源:GroupLens Research 實驗室提供。
  • 備註:這是推薦系統領域最經典的資料集之一,專門用於開發與測試過濾演算法。

資料集特色與欄位介紹:

資料集主要由以下幾個檔案構成,展現了使用者行為與電影資訊的關聯:

  1. u.data (核心評分表)
    • 包含 100,000 筆 評分紀錄 (943 位使用者對 1,682 部電影)。
    • user_id:使用者 ID。
    • item_id:電影 ID。
    • rating:評分 (1-5 分)。
    • timestamp:時間戳記。
  2. u.item (電影資訊表):包含電影標題、發行日期以及類型(如動作、喜劇、愛情等)。

實戰筆記 在本篇中,我們將專注於 u.data。這是一個典型的 「稀疏矩陣」 來源:雖然有近千位使用者和上千部電影,但並非每個人都看過每一部片。我們的目標就是透過 SVD 演算法,從這 10 萬筆已知的數據中,預測出其餘百萬個「空白格」的可能分數。


二、 核心概念:矩陣分解 (Matrix Factorization)

推薦系統的核心任務是處理一個龐大的 「使用者-電影評分矩陣」。但現實中,這個矩陣 99% 都是空白的(因為你不可能看過所有的電影)。

數據的「潛在特徵 (Latent Features)」

SVD (奇異值分解) 的邏輯非常優雅:它假設每一部電影都有自己的「基因」,而每個使用者都有自己的「品味」。

  • 電影基因:這部片有多「科幻」?多「浪漫」?
  • 使用者品味:我有多喜歡「科幻」?多討厭「浪漫」?

當我們把兩者相乘,就能推導出預測分數。這與 PCA 尋找「主成分」的邏輯如出一轍。


二、 推薦系統診斷報告:從空白到讀心

透過 Day 63 的實驗,我們模擬了一個微型 Netflix 環境:

1. 稀疏矩陣:數據的真空

下圖展示了 MovieLens 資料集的局部狀態。你可以透過顏色直觀地感受到「數據真空」:淺黃色的區域代表使用者尚未評分的電影(數值為 0)。

Sparse Matrix

圖 A:原始稀疏評分矩陣

  • 深藍色的孤島:觀察 User 0User 12,他們在左側的科幻片區留下了高分。這就是 SVD 算法賴以生存的「線索」。

2. 預測矩陣:填補真空的讀心術

這是 SVD 運算後的結果。原本在圖 A 是 0 的地方,現在被填上了精確的預測分數(如 3.3, 1.6, 4.1)。

Predicted Matrix

圖 B:SVD 預測填補後的完整矩陣

  • 診斷細節:注意 User 0 在《駭客任務 (The Matrix)》格點上的預測值為 1.6。雖然他沒看過,但模型根據他喜歡《全面啟動》的特質,推算出了他的潛在興趣。

3. 電影基因地圖:SVD 與 PCA 的技術血緣

如果你覺得這張圖很眼熟,那是因為它與 ML008 的特徵負荷熱力圖 (Loading Heatmap) 本質相同。

Movie DNA Heatmap

圖 C:電影潛在特徵分析 (Movie DNA Analysis)

  • 讀懂電影基因
    • Topic A (動畫基因):你可以看到《Toy Story》、《Finding Nemo》在這一列的數值非常顯眼(紅色的區塊)。這代表模型自動識別出了「動畫片」的群聚特性。
    • Topic B (科幻基因):觀察《Inception》和《Interstellar》,它們在這一列的數值極高(深紅色,達 0.65-0.74)。這就是模型提取出的「科幻因子」。
  • 技術連結:SVD 就像 PCA 一樣,將 1,682 個電影維度壓縮成少數幾個「話題軸 (Topic Axes)」。這張熱力圖就是模型理解世界的「配方表」。

4. 個性化電影推薦:User 1 的診斷書

最終,模型根據 User 1 的個人品味(與浪漫基因的高度重合),推算出他的推薦清單。

Top Recommendations

圖 D:針對 User 1 的 Top 3 電影推薦清單

  • 精準推薦:因為 User 1 展現了強烈的「浪漫品味」,模型為他挑選出的首選正是同屬浪漫類型的 《樂來越愛你 (La La Land)》(預測分數約 2.7)。
  • 數據補全:這張圖展示了從「真空」到「具體建議」的完整跨越。這就是 Netflix 介面上「因為你看了《鐵達尼號》,所以我們推薦...」背後的真實運算邏輯。

三、 總結:推薦系統的成功法則

  1. 解決稀疏性 (Sparsity):現實數據是殘缺的,矩陣分解是填補殘缺的最強武器。
  2. 從 PCA 進化到 SVD:掌握了降維的數學本質,你就掌握了現代網路巨頭(Amazon, Netflix)的核心競爭力。
  3. 非監督學習的完結:從分群、降維到推薦,我們已經學會了如何在沒有標籤的情況下挖掘數據背後的真相。

🚀 下一站:集成學習的巔峰對決

我們已經完成了地圖中的基礎與非監督板塊。接下來,我們將進入機器學習最強大的武器庫 —— 集成學習 (Ensemble Learning)

graph TD
    subgraph 已完成階段
        A[線性/邏輯回歸] --> B[SVM / KNN / 決策樹]
        B --> C[分群 / PCA / SVD]
    end

    C --> D{下一站:集成學習巔峰}
    
    subgraph 未來巔峰挑戰
        D --> XGB["🔥 XGBoost: 精準之巔"]
        D --> LGB["⚡ LightGBM: 速度之巔"]
        D --> CAT["🐱 CatBoost: 智能之巔"]
        XGB & LGB & CAT --> STACK[Stacking: 模型大融合]
    end

    style D fill:#ff9,stroke:#333,stroke-width:4px
    style XGB fill:#fdd,stroke:#f00
    style LGB fill:#dff,stroke:#00f
    style CAT fill:#dfd,stroke:#0f0

準備好迎接明天的「龍神」XGBoost 實戰了嗎?我們到時候見!