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