eq值 推荐算法_利用 SVD 实现协同过滤推荐算法
奇異值分解(Singular Value Decomposition,以下簡稱SVD)
是在機器學習領域廣泛應用的算法,它不光可以用于降維算法中的特征分解,還可以用于推薦系統,以及自然語言處理等領域。
優點:簡化數據,去除噪聲,提高算法的結果。
缺點:數據的轉換可能難以理解。
應用領域:推薦引擎(協同過濾、相似度計算)、圖像壓縮等。
SVD定義:如果我們求出了矩陣A的n個特征值λ1≤λ2≤...≤λn,以及這n個特征值所對應的特征向量{w1,w2,...wn},如果這n個特征向量線性無關,那么矩陣A就可以用下式的特征分解表示:A=WΣW?1,其中W是這n個特征向量所張成的n×n維矩陣,而Σ為這n個特征值為主對角線的n×n維矩陣。一般我們會把W的這n個特征向量標準化,即滿足||wi||2=1, 或者wiTwi=1,此時W的n個特征向量為標準正交基,滿WTW=I,即WT=W?1, 也就是說W為酉矩陣。要進行特征分解,矩陣A必須為方陣。那么如果A不是方陣,則用到SVD。
矩陣A的SVD為:A=UΣVT,其中U是一個m×m的矩陣,Σ是一個m×n的矩陣,除了主對角線上的元素以外全為0,主對角線上的每個元素都稱為奇異值,V是一個n×n的矩陣。U和V都是酉矩陣,即滿足UTU=I,VTV=I。
對于奇異值,它跟我們特征分解中的特征值類似,在奇異值矩陣中也是按照從大到小排列,而且奇異值的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上的比例。也就是說,我們也可以用最大的k個的奇異值和對應的左右奇異向量來近似描述矩陣。
因此SVD 也是一種強大的降維工具,可以利用 SVD 來逼近矩陣并從中獲得主要的特征。通過保留矩陣的 80%~90% 的能量,就可以得到重用的特征并去除噪聲。
推薦系統是利用電子商務網站向客戶提供商品信息和建議,幫助用戶決定應該購買什么產品,模擬銷售人員幫助客戶完成購買過程。
主要有以下幾種推薦算法:
基于內容的推薦(用到自然語言處理),協同過濾(主流),基于規則推薦(基于最多用戶點擊,最多用戶瀏覽等),混合推薦(類似集成算法,投票決定),基于人口統計信息的推薦(根據用戶基本信息)
協同過濾推薦分為三種類型。第一種是基于用戶(user-based)的協同過濾(需要在線找用戶和用戶之間的相似度關系),第二種是基于項目(item-based)的協同過濾(基于項目的協同過濾可以離線找物品和物品之間的相似度關系),第三種是基于模型(model based)的協同過濾(用戶和物品,主流)。
一般在推薦系統中,數據往往是使用 用戶-物品 矩陣來表示的。用戶對其接觸過的物品進行評分,評分表示了用戶對于物品的喜愛程度,分數越高,表示用戶越喜歡這個物品。而這個矩陣往往是稀疏的,空白項是用戶還未接觸到的物品,推薦系統的任務則是選擇其中的部分物品推薦給用戶。
對于這個 用戶-物品 矩陣,用已有的部分稀疏數據來預測那些空白的物品和數據之間的評分關系,找到最高評分的物品推薦給用戶。
具體基于模型的方法有:
用關聯算法做協同過濾(Apriori算法、FP Tree算法)
用聚類算法做協同過濾(針對基于用戶或者基于模型,Kmeans,DBSCAN)
用分類算法做協同過濾(設定評分閾值,高于推薦,低于不推薦,邏輯回歸和樸素貝葉斯,解釋性很強)
用回歸算法做協同過濾(Ridge回歸,回歸樹)
用矩陣分解做協同過濾(由于傳統的奇異值分解SVD要求矩陣不能有缺失數據,必須是稠密的,而用戶物品評分矩陣是一個典型的稀疏矩陣,主要是SVD的一些變種,比如FunkSVD,BiasSVD和SVD++。這些算法和傳統SVD的最大區別是不再要求將矩陣分解為UΣVT的形式,而變是兩個低秩矩陣PTQ的乘積形式。)
用神經網絡做協同過濾(限制玻爾茲曼機RBM)
在 Python 的 numpy 中,linalg已經實現了SVD
總結
以上是生活随笔為你收集整理的eq值 推荐算法_利用 SVD 实现协同过滤推荐算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自制操作系统学习笔记(3)-INT 0x
- 下一篇: 什么是ip地址、子网掩码、网关和DNS?