本發(fā)明涉及計算機應(yīng)用領(lǐng)域,具體涉及一種面向多屬性評分系統(tǒng)的基于張量分解的多屬性評分預(yù)測方法。
背景技術(shù):
今年來,隨著互聯(lián)網(wǎng)的快速發(fā)展,推薦系統(tǒng)被廣泛應(yīng)用于電商的在線平臺,尤其是個性化推薦技術(shù)的發(fā)展對于改善用戶體驗和提高服務(wù)質(zhì)量起到了重要作用。個性化推薦主要是根據(jù)用戶的興趣特點和購買行為,向用戶推薦用戶感興趣的信息和商品。
個性化推薦主要在計算機上通過推薦系統(tǒng)來完成,推薦系統(tǒng)是建立在海量數(shù)據(jù)挖掘基礎(chǔ)上,傳統(tǒng)的推薦主要依賴用戶對項目的總體評分,而現(xiàn)在越來越多的在線平臺傾向于利用用戶提供項目的各屬性評分,這些屬性評分包含了更細粒度的商品評價信息。利用用戶提供的多屬性評分可以更全面地獲取用戶偏好信息或項目特征,從而實現(xiàn)更有效的推薦,目前多屬性評分推薦已成為推薦領(lǐng)域的一個重要研究方向。
多屬性評分推薦算法的研究剛剛起步,其核心是多屬性評分預(yù)測?,F(xiàn)有很多的多屬性評分預(yù)測算法沒有兼顧多屬性評分系統(tǒng)中各屬性評分的關(guān)聯(lián)關(guān)系,也沒有有效解決稀疏性問題。因此針對多屬性評分系統(tǒng),研究有效的多屬性評分預(yù)測算法成為亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的,在于提供一種面向多屬性評分系統(tǒng)的評分預(yù)測方法,可以有效融合多個屬性的評分信息,預(yù)測用戶對商品各個屬性的評分。
為達到上述目的,本發(fā)明所采取的技術(shù)方案是,
一種面向多屬性評分系統(tǒng)的評分預(yù)測方法,包括以下步驟:
S1:輸入數(shù)據(jù):收集用戶對商品的多個屬性的評分,輸入多個屬性的評分數(shù)據(jù);
S2:構(gòu)建模型:利用具有U、C、A三個維度的三維張量表達多屬性評分信息,其中:U表示用戶,C表示商品,A表示商品的屬性;
S3:設(shè)置參數(shù),得到初始化矩陣
基于典范分解模型,將多屬性的評分張量分解為三個二維矩陣和一個三維對角張量的乘積,如公式(1)所示:
公式(1)中,為三維對角張量,即對角線上元素為1,其余元素都為0;
矩陣為|U|×kr維,|U|表示用戶個數(shù);
矩陣為|C|×kr維,|C|表示商品個數(shù);
矩陣為|A|×kr維,|A|表示屬性個數(shù);
kr是一個大于0的正整數(shù),表示張量分解的維度大??;
S4:張量分解,計算得到中間矩陣計算出目標函數(shù)的值,若目標函數(shù)未收斂或未達到迭代次數(shù)上限,使用隨機梯度下降法(SGD)更新矩陣每次更新后重新計算目標函數(shù)的值,直到目標函數(shù)收斂或者達到迭代次數(shù)上限時停止,得到中間矩陣
S5:張量填充,完成評分預(yù)測:根據(jù)步驟S4分解得到的中間矩陣采用典范分解模型,計算用戶對商品各個屬性的評分,實現(xiàn)多屬性評分張量的填充。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法,步驟S1中,多個屬性的評分包括用戶對商品的價格、服務(wù)多個屬性的評分。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法,所述評分數(shù)據(jù)由一個或多個公共網(wǎng)站進行收集歸納。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法,步驟S3中,張量中的元素為
其中,
表示編號為u的用戶對編號為c的商品的第a個屬性的評分。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法,步驟S3中,設(shè)置的參數(shù)包括:迭代次數(shù)上限N、梯度下降參數(shù)λ、正則化參數(shù)β以及張量典范分解維度kr。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法的改進在于:步驟S4包括S41,所述步驟S41為計算目標函數(shù)的值,
其中,目標函數(shù)計算的具體方法為:考慮張量中存在的非0評分信息,設(shè)計目標函數(shù)的形式如公式(3):
其中,為損失函數(shù),表示的是已知的真實的多屬性評分張量,缺失值用0表示;中的元素表示中的真實評分值,是根據(jù)公式(2)計算得到的預(yù)測評分,表示權(quán)重張量,中的元素取值為1或者0,當(dāng)?shù)闹挡粸?時,當(dāng)?shù)闹档扔?,為防止過度擬合添加的正則項,β為正則參數(shù)。
上述面向多屬性評分系統(tǒng)的評分預(yù)測方法的進一步改進在于:經(jīng)步驟S41得到的目標函數(shù)若未收斂或未達到迭代次數(shù)上限,則步驟S4中還包括S42,步驟S42為使用SGD方法,利用公式(4)對步驟S41得到的目標函數(shù)的值進行更新,公式(4)如下所示:
其中表示的是真實值與預(yù)測值之間的誤差,λ為梯度下降參數(shù);每次更新后重復(fù)步驟S41,重新計算目標函數(shù)的值,直到目標函數(shù)收斂或者達到迭代次數(shù)上限時停止,得到中間矩陣
本發(fā)明的有益效果是:
本發(fā)明主要包括構(gòu)建多屬性評分張量表達模型、多屬性評分張量的分解和多屬性評分張量填充,采用隨機梯度下降法(SGD)求解張量典范分解(canoncial polyadic decomposition)模型,有效融合了多屬性評分信息,可以充分利用多屬性評分信息有效預(yù)測用戶對商品的各個屬性的評分,算法簡單不復(fù)雜,適用于大規(guī)模高維稀疏數(shù)據(jù)。
附圖說明
下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。
圖1為本發(fā)明的算法全過程的簡要流程圖。
具體實施方式
下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是本發(fā)明還可以采用其他不同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣,因此本發(fā)明不受下面公開的具體實施例的限制。
一種面向多屬性評分系統(tǒng)的評分預(yù)測方法,其簡要流程請參閱圖1所示,所述方法包括以下步驟S1、S2、S3、S4和S5,其中S4還包括步驟S41和S42。每一步驟的詳細過程分別為:
S1:輸入數(shù)據(jù):多屬性評分是用戶對商品各個屬性的評分,在一個或多個公共網(wǎng)站上收集用戶對商品的多個屬性的評分信息,公共網(wǎng)站如:Yelp(Yelp是美國最大的餐飲娛樂評價網(wǎng)站)、美團和大眾點評網(wǎng)等。商品的屬性可以包括用戶對商品的價格、服務(wù)等多個具體屬性。輸入收集到的信息,作為多個屬性的評分數(shù)據(jù),評分數(shù)據(jù)中的總評分范圍是1-5分,缺失值為0分。評分數(shù)據(jù)的輸入格式為txt文本文件,輸入方式舉例如:第一列是用戶編號,第二列是商品編號,第三、四、五、六列是用戶對商品各個具體屬性的單個評分。
S2:構(gòu)建模型:利用具有U、C、A三個維度的三維張量表達多屬性評分信息,其中:U表示用戶,C表示商品,A表示商品的屬性。張量中的元素記為表示編號為u的用戶對編號為c的商品的第a個屬性的評分。
S3:設(shè)置參數(shù),得到初始化矩陣即對矩陣進行滿足高斯分布的隨機初始化。其中設(shè)置的參數(shù)是后續(xù)步驟需要用到的,參數(shù)主要包括有:迭代次數(shù)上限N、梯度下降參數(shù)λ、正則化參數(shù)β以及張量典范分解維度kr。
基于典范分解模型,將多屬性的評分張量分解為三個二維矩陣和一個三維對角張量的乘積,如公式(1)所示:
公式(1)中,為三維對角張量,即對角線上元素為1,其余元素都為0;其中,
矩陣為|U|×kr維,|U|表示用戶個數(shù);
矩陣為|C|×kr維,|C|表示商品個數(shù);
矩陣為|A|×kr維,|A|表示屬性個數(shù);
kr是一個大于0的正整數(shù),表示張量分解的維度大小。
張量中的元素為表示編號為u的用戶對編號為c的商品的第a個屬性的評分,如公式(2)所示,
S4:基于典范分解模型和隨機梯度下降法(SGD)方法對多屬性評分進行張量分解,計算出目標函數(shù)的值,得到中間矩陣
S41:計算出目標函數(shù)的值,
其中,目標函數(shù)計算的具體方法為:考慮張量中存在的非0評分信息,設(shè)計目標函數(shù)的形式如公式(3):
其中,為損失函數(shù),
表示的是已知的真實的多屬性評分張量,缺失值用0表示。
中的元素表示中的真實評分值,
是根據(jù)公式(2)計算得到的預(yù)測評分,
表示權(quán)重張量,中的元素取值為1或者0,當(dāng)?shù)闹挡粸?時,當(dāng)?shù)闹档扔?,
為防止過度擬合添加的正則項,β為正則參數(shù)。
分別為矩陣的模。
S42:經(jīng)步驟S41得到的目標函數(shù)若未收斂或未達到迭代次數(shù)上限,需要執(zhí)行此步驟。
步驟S42為使用SGD方法,根據(jù)公式(4)同時對步驟S41得到的目標函數(shù)的值進行更新。SGD方法,即讓變量沿著目標函數(shù)負梯度的方向移動,直到移動到極小值點。公式(4)的推導(dǎo)過程為:
首先分別對求偏導(dǎo),如下:
因為
則,
由此得到公式(4):
其中表示的是真實值與預(yù)測值之間的誤差,λ為梯度下降參數(shù);按照公式(4)對同時進行更新,使沿著目標函數(shù)的方向向下移動到極小值,之后再執(zhí)行步驟S41計算目標函數(shù)的值,如果目標函數(shù)收斂或者達到迭代次數(shù)上限時則停止迭代,此時即可得到中間矩陣
如果目標函數(shù)仍未收斂或未達到迭代次數(shù)上限,則繼續(xù)利用公式(4)對進行更新,依次循環(huán)迭代步驟S41、S42,直到目標函數(shù)收斂或達到迭代次數(shù)上限為止。
S5:張量填充,完成評分預(yù)測:根據(jù)步驟S4分解得到的中間矩陣采用典范分解模型,即公式(2),計算用戶對商品各個屬性的預(yù)測評分,實現(xiàn)多屬性評分張量的填充,完成多屬性評分預(yù)測。
以上說明內(nèi)容僅為本發(fā)明較佳實施例,顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。