本發(fā)明提供一種基于聚類pu矩陣分解的個性化推薦方法,涉及個性化推薦領(lǐng)域的矩陣分解算法,特別適用于關(guān)系矩陣中只有正例被觀察到的推薦系統(tǒng)問題。
背景技術(shù):
目前,個性化推薦技術(shù)已廣泛運用于互聯(lián)網(wǎng)的各方面,例如著名的電商平臺amazon,會根據(jù)用戶的瀏覽、點擊、購買、評價歷史數(shù)據(jù),推薦用戶可能感興趣的其他商品;著名的電影視頻網(wǎng)站netflix會根據(jù)用戶對已看電影的評分判斷出用戶對哪些類型的電影感興趣,然后推薦合適的電影給用戶。
一種主流的個性化推薦算法,是根據(jù)用戶群對商品集的評分記錄,得到評分矩陣,也稱關(guān)系矩陣,然后使用機器學(xué)習(xí)技術(shù),對缺失的值填補,將預(yù)測值較大的商品推薦給用戶。大多情形下,用戶對商品的評分由低到高有很多值,但也有很多情形,用戶對商品只有喜歡或不喜歡的表達,如果僅知道用戶喜歡哪些商品,則關(guān)系矩陣中只有正例元素被觀察到,其他均為非標記元素。傳統(tǒng)的推薦算法并不適用上述情形。
隨著數(shù)據(jù)收集和處理能力的增強,有更多的用戶或商品的特征會被收集和使用。傳統(tǒng)的個性化推薦算法浪費了很多有用的用戶或商品的輔助特征信息,本發(fā)明考慮采用帶輔助特征信息的歸納式矩陣補全方法提升推薦效果,同時也可考慮使相似的用戶或商品的推薦結(jié)果盡量接近,將聚類的思想融入到模型中。
技術(shù)實現(xiàn)要素:
發(fā)明目的:目前的個性化推薦往往只考慮用戶商品的多值關(guān)系,忽略了用戶和商品之間往往只存在二值關(guān)系并且只有正向關(guān)系被觀察到,此外通常忽略了相似用戶和商品之間的聯(lián)系,不具有普適性。針對上述問題,本發(fā)明提供了一種基于聚類pu(p為正樣本,u為未標記樣本)矩陣分解的個性化推薦方法法:首先構(gòu)建用戶和商品的二值關(guān)系矩陣,使用聚類pu矩陣分解的方法訓(xùn)練模型,再用訓(xùn)練的模型預(yù)測未被觀察到的用戶商品之間的關(guān)系,按預(yù)測值從大到小進行推薦。
技術(shù)方案:一種基于聚類pu矩陣分解的個性化推薦方法,包括使用聚類pu矩陣分解方法訓(xùn)練的步驟,對用戶或商品進行推薦的步驟。
所述使用聚類pu矩陣分解方法訓(xùn)練的具體步驟為:
步驟100,輸入用戶與商品的行為數(shù)據(jù)至數(shù)據(jù)處理平臺,行為數(shù)據(jù)是指用戶對商品的瀏覽記錄、購買記錄等;
步驟101,若存在用戶或商品各自的特征數(shù)據(jù),則輸入作為關(guān)系矩陣的輔助特征信息;
步驟102,對特征數(shù)據(jù)進行預(yù)處理,去除異常值的噪聲影響,同時進行數(shù)據(jù)正規(guī)化處理;
步驟103,定義用戶和商品的關(guān)系標簽,若某用戶與某商品有關(guān)聯(lián),則定義為正向關(guān)系,標記為“1”,否則該用戶與該商品關(guān)系未知,標記為“0”;標記完成后得到二值關(guān)系矩陣a;
步驟104,初始化聚類數(shù)k、正負樣本損失權(quán)重c、正則項系數(shù)λ1、聚類項系數(shù)λ2等模型參數(shù);
步驟105,在數(shù)據(jù)處理平臺上,使用聚類pu矩陣分解方法訓(xùn)練模型,得到兩個參數(shù)矩陣w,h;
步驟106,輸出并保存模型w,h至數(shù)據(jù)處理平臺的存儲系統(tǒng);
對用戶或商品進行推薦的具體步驟為:
步驟200,判斷是否需要對新用戶或新商品進行推薦,如果是則獲取新用戶或商品的特征數(shù)據(jù);否則取出已有用戶或商品的特征數(shù)據(jù);
步驟201,判斷是否利用輔助特征信息,若是則用特征信息矩陣v與訓(xùn)練得到的參數(shù)矩陣w,h相乘得到預(yù)測值矩陣m=whtvt;否則直接相乘w,h得到預(yù)測值矩陣m=wht;
步驟202,將預(yù)測值矩陣m中的元素,按數(shù)值從高到低排序;
步驟203,根據(jù)實際需求,確立要推薦的用戶商品數(shù)目為t,對m中未知關(guān)系的用戶商品,按從高到低的順序取出最大的t個進行推薦;
所述模型訓(xùn)練的具體流程為:首先初始化機器學(xué)習(xí)平臺,然后隨機初始化所要訓(xùn)練的模型參數(shù)矩陣w,h,進入訓(xùn)練過程:先計算整個模型的目標方程,再計算要訓(xùn)練的參數(shù)矩陣的梯度,使用共軛梯度法交替更新參數(shù)矩陣w,h的值;
定義模型的目標方程
其中,m為用戶數(shù),n為商品數(shù),v為特征維度,k為聚類數(shù),w和h是模型要學(xué)的參數(shù)矩陣,f是聚類項矩陣,v∈rn×v表示用戶或商品的特征信息矩陣,aij是觀察到的二值矩陣,若aij=1,則cij=c,若aij=0,則cij=1-c,c為初始化的正樣本損失權(quán)重,1-c為負樣本的損失權(quán)重,λ1,λ2分別對應(yīng)于正則項系數(shù)和聚類項系數(shù);使用交替優(yōu)化的思想,先固定w,計算h的梯度,用共軛梯度下降法更新一輪h;再固定h,計算的w梯度,用共軛梯度下降法更新一輪w;再對w進行svd矩陣分解,取最大k個奇異向量,構(gòu)成矩陣作為新的f;不斷迭代上述過程,直到訓(xùn)練完畢。
所述用戶與商品的關(guān)系矩陣中只有觀察到的正向關(guān)系,其他均為未知關(guān)系。
所述用戶和商品的輔助特征信息,是指用戶或商品各自的特征數(shù)據(jù),訓(xùn)練推薦算法時可以學(xué)到更多有用的信息。
本發(fā)明方法既可以對已有的用戶或商品進行推薦,也可對新加入的用戶或商品進行推薦。
有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明提供的基于聚類pu矩陣分解的個性化推薦方法,利用了用戶和商品之間潛在的相似性,使學(xué)習(xí)的結(jié)果更具解釋性,且提升了推薦效果。
附圖說明
圖1為本發(fā)明實施的個性化推薦方法訓(xùn)練工作流程圖;
圖2為本發(fā)明實施的個性化推薦方法預(yù)測工作流程圖;
圖3為本發(fā)明實施的模型訓(xùn)練工作流程圖;
圖4為本發(fā)明方法與pu歸納式矩陣補全方法的實驗效果對比圖;
圖5為本發(fā)明方法與pu歸納式矩陣補全方法的實驗效果對比圖。
具體實施方式
下面結(jié)合具體實施例,進一步闡明本發(fā)明,應(yīng)理解這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。
基于聚類pu矩陣分解的個性化推薦方法,訓(xùn)練工作流程如圖1所示。首先將收集的用戶和商品的行為數(shù)據(jù)存至數(shù)據(jù)處理平臺(步驟10)。接著判斷是否使用輔助特征信息,即用戶商品各自獨立的一些特征(步驟11),若使用輔助特征信息,則加入用戶商品的特征數(shù)據(jù)(步驟12),否則跳到下一步。然后對數(shù)據(jù)進行預(yù)處理,包括除噪音和數(shù)據(jù)正規(guī)化等過程(步驟13),再從數(shù)據(jù)中判斷已知的用戶和商品之間的關(guān)系(步驟14),若存在已知的正向關(guān)系則標記為”1”(步驟15a),否則標記為”0”(步驟15b),表示用戶商品的關(guān)系未知。通過上述步驟,可以得到用戶商品的關(guān)系矩陣a(步驟16)。接下來系統(tǒng)初始化各項參數(shù),例如聚類數(shù)目k和正負樣本損失權(quán)重c等(步驟17),進入到模型訓(xùn)練的迭代階段(步驟18),每迭代一輪進行判斷是否達到停止條件(步驟19),若未達到停止條件則繼續(xù)迭代,否則輸出訓(xùn)練結(jié)果并保存模型(步驟20)。
使用訓(xùn)練得到的模型預(yù)測用戶商品關(guān)系并進行推薦的工作流程如圖2所示。首先讀取訓(xùn)練得到的模型(步驟21),判斷需要推薦的目標是否是新用戶或商品(步驟22),若是則需獲取新用戶商品的特征數(shù)據(jù)(步驟23a),否則直接取出已有的用戶商品特征數(shù)據(jù)(步驟23b)。接著判斷是否使用輔助特征信息來預(yù)測(步驟24),這和訓(xùn)練時是一致的,即訓(xùn)練時若使用了輔助特征信息,則預(yù)測時也要用,否則兩個過程均不用。若使用輔助特征信息,則將特征信息矩陣與模型參數(shù)矩陣相乘(步驟25a),否則直接將模型參數(shù)矩陣相乘(25b),得到預(yù)測值矩陣m(步驟26)。接著將預(yù)測值矩陣m中的元素,按數(shù)值從高到低排序(步驟27),根據(jù)實際需求,確立要推薦的用戶商品數(shù)目為t(步驟28),對m中未知關(guān)系的用戶商品,按預(yù)測值從高到低的順序取出最大的t個進行推薦,輸出推薦結(jié)果(步驟29)。
推薦方法內(nèi)部詳細的模型訓(xùn)練與優(yōu)化的工作流程圖如圖3所示。首先初始化機器學(xué)習(xí)平臺(步驟180),然后隨機初始化所要訓(xùn)練的模型參數(shù)矩陣w,h(步驟181),進入訓(xùn)練過程(步驟182):先計算整個模型的目標方程(步驟184),再計算要訓(xùn)練的參數(shù)矩陣的梯度(步驟185),使用共軛梯度法交替更新參數(shù)矩陣w,h的值(步驟186),對新的參數(shù)矩陣w進行svd分解,取出前k個最大的奇異向量組成的矩陣,作為聚類項矩陣f新的值(步驟187),重復(fù)上述步驟,不斷交替更新參數(shù)矩陣w,h和聚類項矩陣f(步驟183),直到滿足停止條件(步驟188),輸出參數(shù)模型(步驟189)。
本發(fā)明在兩個數(shù)據(jù)集上進行了實驗,對比了本發(fā)明的方法和已有最好方法的效果,已有的最好方法是cho-juihsieh在2015年機器學(xué)習(xí)頂級會議icml論文中提出的“pu歸納式矩陣補全方法”。
第一個數(shù)據(jù)集是學(xué)術(shù)論文相關(guān)的數(shù)據(jù)集citeulike,關(guān)系矩陣每一行是一個作者(類比于用戶),每一列是一篇文章(類比于商品),關(guān)系矩陣元素為1代表作者引用了文章,另外還有文章的輔助特征信息矩陣,由文本內(nèi)容生成。本數(shù)據(jù)集作者數(shù)5551,文章數(shù)16980,文章的特征維度為8000,已知的引用數(shù)目為204987。
實驗結(jié)果如圖4所示,綠色線為本發(fā)明的實驗效果,藍色線為pu歸納式矩陣補全方法的實驗效果,評價指標為auc(精確度),可見本發(fā)明的方法有很大提升。
第二個數(shù)據(jù)集是多標記學(xué)習(xí)的數(shù)據(jù)集eurlex,關(guān)系矩陣每一行是一個樣本(類比于用戶),每一列是一個標簽(類比于商品),關(guān)系矩陣元素為1代表樣本擁有某個標記,此外有樣本的輔助特征信息矩陣。本數(shù)據(jù)集樣本數(shù)19346,標記數(shù)3393,樣本特征維度5000,已知的標簽數(shù)為102741。
實驗結(jié)果如圖5所示,綠色線為本發(fā)明的實驗效果,藍色線為pu歸納式矩陣補全方法的實驗效果,評價指標為auc,可見本發(fā)明的方法有很大提升。