機器學習系列24:協同過濾

  • 2019 年 10 月 7 日
  • 筆記

在上一次中,我們是先知道電影的特徵,然後通過算法計算出用戶的特徵。下面我們來考慮一下能不能知道用戶的特徵,讓算法學習齣電影的特徵呢?

我們可以看到,這個算法與之前的算法是一樣的,只不過傳入的特徵不同而已。我們可以先隨機地求出一些用戶特徵 θ,用這些特徵計算齣電影的特徵 x,通過電影的特徵又能更好地計算出用戶的特徵,不斷迭代… 最終會收斂到一個最優的位置,這時用戶的特徵和電影的特徵被計算出來,這種方法就叫協同過濾(Collaborative filtering)

為了簡化一下這種方法,不讓它進行多次來回重複,我們將它合併成一個代價函數,這個代價函數同時傳入電影特徵 x 和用戶特徵 θ:

它會同時最小化電影特徵 x 和用戶特徵 θ,雖然這個代價函數看起來很長很複雜,但是仔細分析一下你就會發現,這個代價函數就是把之前的兩個代價函數合併起來了而已。

如何尋找相關聯的電影呢?比如說,你已經知道該用戶對動作電影感興趣,你向他推薦了一部動作電影,用戶看完之後,如果你還想向他推薦動作電影該如何進行處理呢?一種方法就是計算兩個電影特徵的絕對值,如果絕對值比較小,就代表這兩個電影高度相關,你就可以把這部電影也推薦給該用戶。

最後總結一下協同過濾算法:

1.隨機初始化一些用戶特徵 θ 和電影特徵 x;

2.運用梯度下降最小化代價函數,得到最佳的用戶特徵 θ 及電影特徵 x;

3.傳入一個用戶特徵,該算法就可以根據之前的學習成果向該用戶推薦可能感興趣的電影。