大家可以回想一下,如果你需要向別人推薦件物品,常用的方法是什麼:
有個東西,我之前用過很好用,推薦你用 -- 基於使用者推薦
有個東西,用的人很多,推薦你用 -- 基於熱度
有個東西,你之前好像用過,推薦你用 -- 基於時間線
...由上面例子可知,無論什麼推薦,第一步需要有你心目中物品的重要性 -- 即是排序
然後,你可能選擇其中一種規則來進行推薦某一些物品 --即是召回
所以,推薦演算法的重點,即是排序、召回
假設有乙個對電影評分的矩陣 m*n,需要**你對每部電影的評分
首先,將乙個稀疏的m*n評分矩陣拆分為兩個秩更低的矩陣:u(m*k),v(n*k),用這兩個矩陣的乘積來近似這個得分矩陣;
從而將整個矩陣的自由度m*n轉成(m+n)*k;
-- 矩陣的自由度既是矩陣中引數的個數,這樣拆分了之後,既是乙個降維的過程(k一般為1,2,3);
-- 通俗理解,給電影評分的時候,乙個人的喜好是矩陣u,一部電影的特徵是矩陣v,那人的喜好矩陣和電影特徵矩陣的相似度是ut*v,而相似度,既可以近似理解為得分;"
重構誤差,既是原矩陣和兩個重構矩陣u,v之間的差異程度
使用frobenius範數來表示:||a-uvt||f^2
從而得到als的優化目標:將協同推薦的問題通過低秩假設成功轉變成了乙個優化問題
直到差平方和小於乙個預設的數,或者迭代次數滿足要求則停止
-- 交替最小二乘來解決這個優化問題:
所謂「交替」,就是指我們先隨機生成然後固定它求解,再固定求解,這樣交替進行下去,依次迭代;
每步迭代的目的都是降低重構誤差,並且誤差是有下界的,所以 als 一定會收斂;
最終會得到乙個最優的重構結果;"
-- 最終優化後的結果u,v,假設都是1維的,那u既是對應的使用者編碼的特徵,比如使用者組[1,2,3,4],可能對應[11, 27 , 33 ,40]。v對應的就是對應電影,比如對於電影特徵[001,002,003,004],可能對應的[11,22,33,44]
-- 那我最終要知道使用者對某個電影的評價,比如使用者2對電影003,直接27*33既是得分;
-- 而使用者2在原矩陣中可能並沒有對這個電影進行評分,現利用這個模型如果需要**這個使用者對電影的評分,則很好**
-- 這個演算法的輸入矩陣是m*n,m是使用者,n是電影,每個元素都是某使用者對某電影的評價分;
-- 參考文章:"
最終怎麼使用訓練完的模型進行** "對乙個評分矩陣c,通過最小二乘法分解為u,v之後
-- 假設分解後矩陣的k為1,那要**的話,計算對應使用者特徵和對應電影特徵的乘積即是得分。
-- 若k為2呢,那得分即是對應使用者特徵(a,b)乘以對應電影特徵(c,d),即是ac+bd。
-- 具體k是幾,由優化過程決定怎麼樣是最優的配比,並不是像pca方法一樣可以人為設定
-- 其他依次類推,總是可以**的。"
交替最小二乘法和普通最小二乘法的區別
首先,二乘,是平方的意思,即是用最小平方差的方式來解決優化問題
交替最小二乘法:a=uv ,普通最小二乘法:y=ax
-- 普通最小二乘法是,x,y都是已知的,代入求出a即可。這裡的所謂x,y已知,並不是說x是最優的最小二乘解,而是說x是輸入樣本中的x矩陣而已,由已知樣本的x,y既可以求出最優的a,使y與a距離的平方和最小 -- 這句話的推導過程見下面鏈結
-- xa=y ==> x′xa=x′y ==> a=(x′x)^−1x′y
-- 交替最小二乘法是交替將u,v當作x,那v,u也會依次稱為a,從而依次被優化
-- 推導參考資料(
見我那篇pls的部落格,差不多
協同過濾推薦演算法 協同過濾推薦演算法總結
推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...
協同過濾推薦演算法
協同過濾推薦演算法 分為基於使用者的協同過濾推薦usercf和基於物品的協同過濾推薦itemcf。介紹見 協同過濾的實現步驟 1 指導思想 這種過濾演算法的有效性基礎在於 1 使用者偏好具有相似性,即使用者可分類。這種分類的特徵越明顯,推薦準確率越高 2 物品之間具有相似性,即偏好某物品的人,都很可...