1. 程式人生 > >基於譜聚類SM演算法的協同過濾推薦演算法研究——清華師兄畢業論文學習

基於譜聚類SM演算法的協同過濾推薦演算法研究——清華師兄畢業論文學習

一、個性化推薦演算法

1.相似度的比較

兩個商品或者商品之間相似的的計算方法,量化屬性為非數值型資料的商品或者使用者之間的接近程度。通常我們計算使用者或者專案間相似度的主要方法有餘弦相似度(Cosime Similarity)、Jaccard係數和pearson相關(pearson Correlation Similarity)係數等。

(1)餘弦相似度

餘弦相似度通常應用在資訊檢索領域,通過計算文字向量所對應的夾角來度量兩個文字之間的相似性,將一個使用者對所有專案的評分看成一個n維向量:假設使用者i和使用者j的專案評分向量分別為I和J,則使用者i和使用者j的餘弦相似度為:

其中Ri,c是使用者i對專案c的評分,以此類推。然而在實際運用中,因為不同使用者評分標準不同,分值設定也不統一,過高的分,過低的分,甚至於不評分,都會影響使用者餘弦相似度的計算。

(2) Jaccard係數

Jaccard係數用來衡量二值型資料的相似程度,如下:

Ri代表使用者i的專案,以此類推。Jaccard係數通常用來對比不同使用者所購買的商品的資料:分子兩使用者之間的共同矩陣,分母為兩使用者之間所有專案。但由於Jaccard係數只能比較二值型資料之間的相似程度,所以應用範圍有限,限制了其在推薦系統中的使用。

(3)pearson相關係數

皮爾遜相關係數( Pearson correlation coefficient

),又稱皮爾遜積矩相關係數(Pearson product-moment correlation coefficient)。通常用來度量兩個變數X和Y之間的線性相關程度,其值介於-1與1之間。兩個變數之間的皮爾遜相關係數定義為兩個變數之間的協方差標準差的商:

通常在推薦系統演算法中,使用皮爾遜相關係數來衡量兩個使用者或者兩個專案之間的相似度。應用到實際專案(商品)或使用者相似度計算時,定義如下:

同樣,Ri,c代表使用者i對專案c的評分,代表使用者i對所有專案的評分均值,以此類推。

二、推薦演算法

1.基於內容的推薦演算法

演算法首先使用分類、標籤、索引、詞頻統計等相應的機器學習方法或者概率論方法,統計使用者搜尋記錄或者感興趣的專案,然後根據提取出來的文字特徵構建出一個文字向量,再結合使用者以往的興趣記錄為使用者構建一個基於使用者偏好的興趣向量,向量中每一個分量都代表著使用者某一個對應的興趣點。此時,每一個使用者的興趣都量化成了某一興趣向量。使用同樣的方法,為不同專案(商品)建立同樣的文字向量,最後通過相似度計算方法,比較使用者與專案(商品)之間文字向量的相似程度,把相似程度較高的商品推薦給使用者。

2.協同過濾推薦演算法

(1)基於使用者的協同過濾演算法

基於使用者的協同過濾演算法分為三個步驟:1.構建評分矩陣;2.形成最近使用者鄰居集;3.生成使用者推薦

基於使用者的協同過濾演算法具體實現步驟如下:

輸入:使用者-專案評分矩陣R,活動使用者u;

輸出:活動使用者u的Top-N專案推薦列表;

步驟一:使用使用者-專案評分矩陣R以及預先選擇的相似度計算方法,計算使用者u與其他使用者的相似度;

步驟二:根據步驟一種得到的相似度,為使用者u選擇k個最近的相似近鄰,建立相似近鄰集合,相應的相似度

步驟三:對活動使用者u和所有相似近鄰,找出它已經評分專案集,將所有取並集,然後去掉中存在的專案,生成候選專案集C;

步驟四:對候選專案集中,使用加權平均演算法預測使用者u的評分

步驟五:將候選專案集中的專案按預測評分從大到小進行排序,選擇前N個專案為使用者u產生推薦列表。

(2)基於專案的協同過濾推薦演算法

基於專案的協同過濾演算法同樣分為三個步驟:1.構建專案相似矩陣;2.形成最近專案鄰居集;3.生成使用者推薦。

區別:基於使用者的協同過濾演算法是從橫向觀察使用者-評分矩陣,將使用者-評分矩陣獨立成一個個的行向量,行向量的每個屬性值對應著相同的使用者對各個專案的評分,根據使用者對所有專案的評分來計算使用者之間的相似度;而基於專案的協同過濾演算法則是縱向來觀察使用者-評分矩陣,將使用者-評分矩陣獨立成一個個的列向量,列向量的每個屬性值對應著不同的使用者對同一個專案的評分,以此來計算專案間的相似度。

三、譜聚類演算法

1.譜聚類的實現方法概括如下:

第一,將聚類問題轉化為圖劃分問題。圖的劃分目的是要使劃分成的兩個子圖內部相似度最大,子圖之間的相似度要最小;

第二,構造建立樣本集矩陣M;

第三,計算矩陣M的前k個特徵值及對應的特徵向量,用特徵向量構造新的特徵向量空間;

第四,將樣本資料點集與子空間的行所構成的資料節點進行一一對應,對新的資料節點進行聚類,聚類的方法分為兩大類:第一種2-way劃分法,這種方法依據的原則就是目標函式的最優解原則,在一維的資料空間裡劃分,對劃分好的子圖進行迭代處理;第二種是k-way劃分法,利用k-means等經典演算法對資料節點進行再次聚類。

2.SM演算法

SM演算法的描述過程如下:

a)依據樣本集建立無向加權圖G,通過無向加權圖G構造矩陣W和D;

b)計算第二小特徵值以及對應的Fiedler向量;

c)最後在Fiedler向量中尋找劃分點,這個劃分點得出的Ncut(A,B)值最小,Fiedler向量r中大於這個值的點歸為一個簇,小於該值的點歸為另一個簇。

四、基於使用者譜聚類的協同過濾演算法

1.先採用某一聚類演算法對使用者進行聚類(年齡、性別、收入情況等屬性),產生若干個使用者簇,與其相對應的是若干個使用者簇中心;當目標使用者進入推薦系統,在尋找使用者最近鄰時,此時,就沒必要通過完整的使用者資料構建使用者-專案評分矩陣了。只需計算目標使用者與各個簇中心的相似度水平,利用餘弦相似度或者皮爾遜相關係數等。之後將目標使用者分類到相似度水平最高的一個或多個與簇中心相對應的簇中,與相比原始資料集相比,這種演算法下,是在相對較小規模且相對較集中的使用者資料集中進行商品推薦。

2.

1)譜聚類演算法首先要根據資料基本資訊,使用高斯核函式計算兩條資料之間的相似度,再構建鄰近矩陣,在鄰近矩陣上對資料進行譜聚類。

2)本文提出了一種基於協同過濾演算法中的使用者—專案評分矩陣來建立使用者相似度相似矩陣。與此同時,計算使用者相似度時,我們也選用更加適合協同過濾演算法的餘弦相似度來代替高斯核函式。

3)在基於使用者-專案評分的相似矩陣的基礎上,不直接呼叫協同過濾演算法,而是先進行聚類,產生若干個使用者聚類簇中心,再在此基礎上預測目標使用者對未評分專案的評分。

本文提出的依據使用者譜聚類的協同過濾演算法首先根據使用者—專案評分矩陣R(m,n)對使用者先行聚類,產生若干個使用者中心簇;再根據聚類的結果,選用新的相似度量屬性進行使用者最近鄰的搜尋。

4)使用使用者-專案評分矩陣代替使用者基本資訊(性別、年齡、職業等屬性)來構造相似矩陣。

5)演算法輸入:使用者聚類中心clu(k,n)和類別程度所屬矩陣U(k,n);

     演算法輸出:目標使用者的top-n個最近鄰:

五、實驗設計與分析

1.採用GroupLens小組[56]提供的資料集MovieLens

2.實驗評測指標

1)採用平均絕對誤差(MAE)作為預測準確度指標

2)聚類輪廓係數

廓係數結合了內聚度和分離度兩種因素。通過係數的值來確定聚類效果的好壞。輪廓係數定義如下[60]:

①計算a(i)=average(i向量到所有它屬於的簇中其它點的距離);

②計算b(i)=min(i向量到所有非本身所在簇的點的平均距離);

因此i向量輪廓係數為:

將所有的i向量輪廓係數求均值,得到的總體輪廓係數來測評聚類的優劣性。輪廓係數的值介於[-1,1],越趨近於1表示聚類的數目越優。內聚度和分離度都相對優越。

3.實驗評估

本次實驗將MovieLens集合分為測試集合以及訓練集合,將它們分成五個互不相交的子集,然後選用其中的一個子集當做測試資料集,其餘的四個合併成一個訓練集合。因此,採用的是5-折交叉驗證。