當前位置:首頁 » 凈水方式 » 矩陣協同過濾

矩陣協同過濾

發布時間: 2021-03-14 13:09:55

① python機器學習中可以實現協同過濾

1.背景
協同過濾(collaborative filtering)是推薦系統常用的一種方法。cf的主要思想就是找出物品相似度高的歸為一類進行推薦。cf又分為icf和ucf。icf指的是item collaborative filtering,是將商品進行分析推薦。同理ucf的u指的是user,他是找出知趣相似的人,進行推薦。通常來講icf的准確率可能會高一些,通過這次參加天貓大數據比賽,我覺得只有在數據量非常龐大的時候才適合用cf,如果數據量很小,cf的准確率會非常可憐。博主在比賽s1階段,大概只有幾萬條數據的時候,嘗試了icf,准確率不到百分之一。。。。。
2.常用方法
cf的常用方法有三種,分別是歐式距離法、皮爾遜相關系數法、餘弦相似度法。
測試矩陣,行表示三名用戶,列表示三個品牌,對品牌的喜愛度按照1~5增加。
(1)歐氏距離法
就是計算每兩個點的距離,比如Nike和Sony的相似度。數值越小,表示相似的越高。
[python] view plain print?在CODE上查看代碼片派生到我的代碼片
def OsDistance(vector1, vector2):
sqDiffVector = vector1-vector2
sqDiffVector=sqDiffVector**2
sqDistances = sqDiffVector.sum()
distance = sqDistances**0.5
return distance
(2)皮爾遜相關系數
兩個變數之間的相關系數越高,從一個變數去預測另一個變數的精確度就越高,這是因為相關系數越高,就意味著這兩個變數的共變部分越多,所以從其中一個變數的變化就可越多地獲知另一個變數的變化。如果兩個變數之間的相關系數為1或-1,那麼你完全可由變數X去獲知變數Y的值。
· 當相關系數為0時,X和Y兩變數無關系。
· 當X的值增大,Y也增大,正相關關系,相關系數在0.00與1.00之間
· 當X的值減小,Y也減小,正相關關系,相關系數在0.00與1.00之間
· 當X的值增大,Y減小,負相關關系,相關系數在-1.00與0.00之間
當X的值減小,Y增大,負相關關系,相關系數在-1.00與0.00之間
相關系數的絕對值越大,相關性越強,相關系數越接近於1和-1,相關度越強,相關系數越接近於0,相關度越弱。
clip_image003
在Python中用函數corrcoef實現,具體方法見http//infosec.pku.e.cn/~lz/doc/Numpy_Example_List.htm
(3)餘弦相似度
通過測量兩個向量內積空間的夾角的餘弦值來度量它們之間的相似性。0度角的餘弦值是1,而其他任何角度的
餘弦值都不大於1;並且其最小值是-1。從而兩個向量之間的角度的餘弦值確定兩個向量是否大致指向相同的方向。兩
個向量有相同的指向時,餘弦相似度的值為1;兩個向量夾角為90°時,餘弦相似度的值為0;兩個向量指向完全相
反的方向時,餘弦相似度的值為-1。在比較過程中,向量的規模大小不予考慮,僅僅考慮到向量的指向方向。餘弦相
似度通常用於兩個向量的夾角小於90°之內,因此餘弦相似度的值為0到1之間。
\mathbf{a}\cdot\mathbf{b}=\left\|\mathbf{a}\right\|\left\|\mathbf{b}\right\|\cos\theta
[python] view plain print?在CODE上查看代碼片派生到我的代碼片
def cosSim(inA,inB):
num = float(inA.T*inB)
denom = la.norm(inA)*la.norm(inB)
return 0.5+0.5*(num/denom)

② 做協同過濾的時候矩陣太大伺服器吃不消怎麼辦

矩陣分解,降維,或者使用稀疏矩陣改寫程序。一般,如果是推薦系統場景可以先嘗試用稀疏矩陣試試。矩陣分解和稀疏矩陣都是線性代數的的內容。降維是數據挖掘中去掉無關特徵的方法。

③ 協同過濾中als演算法輸出兩個分解矩陣u*v什麼意思

在本文中矩陣用斜體大寫字母表示(如:R),標量用小寫字母表示(如:i,j)。回給定一個答矩陣R,
Rij表示它的一個元素,Ri.表示矩陣R的第i行,R.j表示矩陣R的第j列,RT
表示矩陣R的轉置。R-1
表示矩陣R的逆。在本文中給定的矩陣R表示具有m個用戶、n個對象的評分矩陣,矩陣U、
V分別表示用戶和推薦對象的特徵矩陣

④ 個性化推薦演算法——協同過濾

有三種:協同過濾
用戶歷史行為
物品相似矩陣

⑤ 協同過濾演算法matlab代碼疑難

means 聚類演算法

演算法本身挺簡單的,建議你自己試著編一下

⑥ 矩陣因子分解 和 協同過濾的區別

在本文中矩陣用抄斜體大寫字母表示(襲如:R),標量用小寫字母表示(如:i,j)。給定一個矩陣R, Rij表示它的一個元素,Ri.表示矩陣R的第i行,R.j表示矩陣R的第j列,RT 表示矩陣R的轉置。R-1 表示矩陣R的逆。在本文中給定的矩陣R表示具有m個用戶、。

⑦ 在推薦系統中矩陣分解是協同過濾的一種嗎

解:∵y=√(x-1)與y=x/2的交點為(2,1)、且y=√(x-1)的定義域為x≥1,
∴原式專=∫(0,2)dx∫(0,x/2)ydy-∫(1,2)dx∫[0,√(x-1)]ydy=(1/2)∫(0,2)x^屬2dx-(1/2)∫(1,2)(x-1)dx=(1/6)x^3丨(x=0,2)-(1/2)[(1/2)x^2-x]丨(x=1,2)=13/12。
供參考。

⑧ 矩陣分解在協同過濾推薦演算法中的應用

矩陣分解在協同過濾推薦演算法中的應用
推薦系統是當下越來越熱的一個研究問題,無論在學術界還是在工業界都有很多優秀的人才參與其中。近幾年舉辦的推薦系統比賽更是一次又一次地把推薦系統的研究推向了高潮,比如幾年前的Neflix百萬大獎賽,KDD CUP 2011的音樂推薦比賽,去年的網路電影推薦競賽,還有最近的阿里巴巴大數據競賽。這些比賽對推薦系統的發展都起到了很大的推動作用,使我們有機會接觸到真實的工業界數據。我們利用這些數據可以更好地學習掌握推薦系統,這些數據網上很多,大家可以到網上下載。
推薦系統在工業領域中取得了巨大的成功,尤其是在電子商務中。很多電子商務網站利用推薦系統來提高銷售收入,推薦系統為Amazon網站每年帶來30%的銷售收入。推薦系統在不同網站上應用的方式不同,這個不是本文的重點,如果感興趣可以閱讀《推薦系統實踐》(人民郵電出版社,項亮)第一章內容。下面進入主題。
為了方便介紹,假設推薦系統中有用戶集合有6個用戶,即U={u1,u2,u3,u4,u5,u6},項目(物品)集合有7個項目,即V={v1,v2,v3,v4,v5,v6,v7},用戶對項目的評分結合為R,用戶對項目的評分范圍是[0, 5]。R具體表示如下:

推薦系統的目標就是預測出符號「?」對應位置的分值。推薦系統基於這樣一個假設:用戶對項目的打分越高,表明用戶越喜歡。因此,預測出用戶對未評分項目的評分後,根據分值大小排序,把分值高的項目推薦給用戶。怎麼預測這些評分呢,方法大體上可以分為基於內容的推薦、協同過濾推薦和混合推薦三類,協同過濾演算法進一步劃分又可分為基於基於內存的推薦(memory-based)和基於模型的推薦(model-based),本文介紹的矩陣分解演算法屬於基於模型的推薦。
矩陣分解演算法的數學理論基礎是矩陣的行列變換。在《線性代數》中,我們知道矩陣A進行行變換相當於A左乘一個矩陣,矩陣A進行列變換等價於矩陣A右乘一個矩陣,因此矩陣A可以表示為A=PEQ=PQ(E是標准陣)。
矩陣分解目標就是把用戶-項目評分矩陣R分解成用戶因子矩陣和項目因子矩陣乘的形式,即R=UV,這里R是n×m, n =6, m =7,U是n×k,V是k×m。直觀地表示如下:

高維的用戶-項目評分矩陣分解成為兩個低維的用戶因子矩陣和項目因子矩陣,因此矩陣分解和PCA不同,不是為了降維。用戶i對項目j的評分r_ij =innerproct(u_i, v_j),更一般的情況是r_ij =f(U_i, V_j),這里為了介紹方便就是用u_i和v_j內積的形式。下面介紹評估低維矩陣乘積擬合評分矩陣的方法。
首先假設,用戶對項目的真實評分和預測評分之間的差服從高斯分布,基於這一假設,可推導出目標函數如下:

最後得到矩陣分解的目標函數如下:

從最終得到得目標函數可以直觀地理解,預測的分值就是盡量逼近真實的已知評分值。有了目標函數之後,下面就開始談優化方法了,通常的優化方法分為兩種:交叉最小二乘法(alternative least squares)和隨機梯度下降法(stochastic gradient descent)。
首先介紹交叉最小二乘法,之所以交叉最小二乘法能夠應用到這個目標函數主要是因為L對U和V都是凸函數。首先分別對用戶因子向量和項目因子向量求偏導,令偏導等於0求駐點,具體解法如下:

上面就是用戶因子向量和項目因子向量的更新公式,迭代更新公式即可找到可接受的局部最優解。迭代終止的條件下面會講到。
接下來講解隨機梯度下降法,這個方法應用的最多。大致思想是讓變數沿著目標函數負梯度的方向移動,直到移動到極小值點。直觀的表示如下:

其實負梯度的負方向,當函數是凸函數時是函數值減小的方向走;當函數是凹函數時是往函數值增大的方向移動。而矩陣分解的目標函數L是凸函數,因此,通過梯度下降法我們能夠得到目標函數L的極小值(理想情況是最小值)。
言歸正傳,通過上面的講解,我們可以獲取梯度下降演算法的因子矩陣更新公式,具體如下:

(3)和(4)中的γ指的是步長,也即是學習速率,它是一個超參數,需要調參確定。對於梯度見(1)和(2)。
下面說下迭代終止的條件。迭代終止的條件有很多種,就目前我了解的主要有
1) 設置一個閾值,當L函數值小於閾值時就停止迭代,不常用
2) 設置一個閾值,當前後兩次函數值變化絕對值小於閾值時,停止迭代
3) 設置固定迭代次數
另外還有一個問題,當用戶-項目評分矩陣R非常稀疏時,就會出現過擬合(overfitting)的問題,過擬合問題的解決方法就是正則化(regularization)。正則化其實就是在目標函數中加上用戶因子向量和項目因子向量的二范數,當然也可以加上一范數。至於加上一范數還是二范數要看具體情況,一范數會使很多因子為0,從而減小模型大小,而二范數則不會它只能使因子接近於0,而不能使其為0,關於這個的介紹可參考論文Regression Shrinkage and Selection via the Lasso。引入正則化項後目標函數變為:

(5)中λ_1和λ_2是指正則項的權重,這兩個值可以取一樣,具體取值也需要根據數據集調參得到。優化方法和前面一樣,只是梯度公式需要更新一下。
矩陣分解演算法目前在推薦系統中應用非常廣泛,對於使用RMSE作為評價指標的系統尤為明顯,因為矩陣分解的目標就是使RMSE取值最小。但矩陣分解有其弱點,就是解釋性差,不能很好為推薦結果做出解釋。
後面會繼續介紹矩陣分解演算法的擴展性問題,就是如何加入隱反饋信息,加入時間信息等。

⑨ 如何在spark分布式矩陣實現協同過濾推薦

在本文來中矩陣用斜體大寫字源母表示(如:R),標量用小寫字母表示(如:i,j)。給定一個矩陣R, Rij表示它的一個元素,Ri.表示矩陣R的第i行,R.j表示矩陣R的第j列,RT 表示矩陣R的轉置。R-1 表示矩陣R的逆。在本文中給定的矩陣R表示具有m個用戶

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239