本發(fā)明是關(guān)于數(shù)據(jù)挖掘中的個(gè)性化推薦問題,具體涉及數(shù)據(jù)挖掘中的基于聚類的個(gè)性化推薦領(lǐng)域。
背景技術(shù):
個(gè)性化推薦是根據(jù)用戶的興趣特點(diǎn)和購買行為,向用戶推薦用戶感興趣的信息和商品。協(xié)同過濾算法是個(gè)性化推薦中的常用算法。協(xié)同過濾推薦前進(jìn)行聚類有利于解決搜索空間較大、準(zhǔn)確率不夠高以及對(duì)稀疏數(shù)據(jù)敏感等問題。
聚類是將相似度高的對(duì)象聚集成簇的過程。在個(gè)性化推薦中,可以首先采用聚類技術(shù)將相似度高的對(duì)象聚類,然后將聚類簇的信息用到推薦算法中。然而,目前大多數(shù)采取先聚類后協(xié)同過濾策略的個(gè)性化推薦算法只支持離線學(xué)習(xí),不能適應(yīng)用戶、項(xiàng)目和評(píng)分信息頻繁更新的增量學(xué)習(xí)的情況。
目前已經(jīng)提出了一些能適應(yīng)增量學(xué)習(xí)情況的先聚類后協(xié)同過濾的個(gè)性化推薦算法。但是這些算法存在的一個(gè)缺點(diǎn)是:在聚類階段需要事先人為指定簇的數(shù)量,這樣推薦算法的結(jié)果往往對(duì)該人為指定的簇的數(shù)量敏感,因而需要花費(fèi)大量時(shí)間來實(shí)驗(yàn)以確定最優(yōu)的簇?cái)?shù)量。另一個(gè)缺點(diǎn)是準(zhǔn)確度不夠高。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有先聚類后協(xié)同過濾的個(gè)性化推薦算法存在的不足,本發(fā)明提供了一種基于簇?cái)?shù)自適應(yīng)增長的聚類算法的個(gè)性化推薦算法。本算法包含基于聚類的增量學(xué)習(xí)和推薦兩個(gè)階段,其中在基于聚類的增量學(xué)習(xí)階段采用了本發(fā)明提供的mwosk-means(modifiedweightedonlinesphericalk-means)算法與mgsoc(modifiedgrowingself-organizingcluster)算法。mwosk-means算法能夠充分利用項(xiàng)目信息補(bǔ)足用戶權(quán)值的計(jì)算,提高了個(gè)性化推薦的準(zhǔn)確度。mgsoc算法完成了簇?cái)?shù)量的自適應(yīng)增長,一定程度上解決了現(xiàn)有技術(shù)中簇的數(shù)量需人為事先指定、需要大量時(shí)間確定最優(yōu)簇?cái)?shù)量的問題。
本發(fā)明所提供的基于簇?cái)?shù)自適應(yīng)增長的聚類算法的個(gè)性化推薦算法可適用于信息(如用戶、項(xiàng)目和評(píng)分信息等)頻繁更新的增量學(xué)習(xí)情況,與現(xiàn)有個(gè)性化推薦算法相比能得到更高的準(zhǔn)確度并且減少了確定最優(yōu)簇?cái)?shù)量所需的時(shí)間。
本發(fā)明包含以下內(nèi)容:
1、一種基于簇?cái)?shù)自適應(yīng)增長的聚類算法的個(gè)性化推薦算法
該算法包含基于聚類的增量學(xué)習(xí)和推薦兩個(gè)階段,詳見圖1。
2、一種基于mwosk-means算法和mgsoc算法的簇?cái)?shù)自適應(yīng)增長的聚類算法
在本發(fā)明提供的個(gè)性化推薦算法中的增量學(xué)習(xí)階段,采用了本發(fā)明提供的一種基于mwosk-means算法和mgsoc算法的簇?cái)?shù)自適應(yīng)增長的聚類算法(見圖1中的p1),該算法包括使用mwosk-means算法進(jìn)行聚類(見圖1中的s2,詳見圖3)、使用mgsoc算法實(shí)現(xiàn)簇?cái)?shù)量的自適應(yīng)增長(見圖1中的p1.1,詳見圖4、圖5)和增量更新(見圖1中的s6,詳見圖6、圖7、圖8、圖9)三個(gè)部分。
3、一種新的項(xiàng)目權(quán)值和用戶權(quán)值的計(jì)算方法
現(xiàn)有技術(shù)在計(jì)算用戶權(quán)值時(shí)沒有考慮項(xiàng)目權(quán)值帶來的影響。本發(fā)明提供了一種mwosk-means算法,該算法的初始化階段(見圖2中的s1.5)采用了本發(fā)明提供的一種新的項(xiàng)目權(quán)值計(jì)算方法,具體見公式(1)、(2)?;谠擁?xiàng)目權(quán)值計(jì)算方法,本發(fā)明提供了一種新的考慮了項(xiàng)目權(quán)值的用戶權(quán)值計(jì)算方法,具體方法見公式(3)。
4、一種新的判斷聚類過程中簇?cái)?shù)量是否合適的判斷方法
在本發(fā)明的內(nèi)容2中,采用mgsoc算法實(shí)現(xiàn)簇?cái)?shù)量的自適應(yīng)增長(見圖1中的p1.1,詳見圖4、圖5)部分,為了實(shí)現(xiàn)簇?cái)?shù)量的自適應(yīng)增長,本發(fā)明在mgsoc算法中提供了一種新的判斷聚類過程中簇?cái)?shù)量是否合適的方法(圖1中的s3、s4,其中s3詳見圖4)。
5、一種新的計(jì)算新增簇中心初始位置的計(jì)算方法
在本發(fā)明的內(nèi)容2中,采用mgsoc算法實(shí)現(xiàn)簇?cái)?shù)量的自適應(yīng)增長(見圖1中的p1.1,詳見圖4、圖5)部分,如果判斷得出聚類過程中的簇?cái)?shù)量不合適,則由mgsoc算法中本發(fā)明提供的一種新的計(jì)算新增簇中心初始位置的計(jì)算方法來計(jì)算新簇中心初始位置(圖1中的s5,詳見圖5)。
附圖說明
圖1是本發(fā)明提供的一種基于簇?cái)?shù)自適應(yīng)增長的聚類算法的個(gè)性化推薦算法的流程圖。
圖2是圖1中s1的流程圖。
圖3是圖1中s2的流程圖。
圖4是圖1中s3的流程圖。
圖5是圖1中s5的流程圖。
圖6是圖1中s6的流程圖。
圖7是圖6中s6.1的流程圖。
圖8是圖6中s6.2的流程圖。
圖9是圖6中s6.3的流程圖。
本發(fā)明所用到的符號(hào)說明:
σ(ui):ui的標(biāo)準(zhǔn)差
exp(·):以e為底的指數(shù)函數(shù)
η:聚類過程中簇中心的學(xué)習(xí)率
α:用于判斷簇中心是否收斂的收斂閾值
β:用于判斷當(dāng)前簇?cái)?shù)量是否合適的誤差閾值
1:與被乘向量維數(shù)相同,且元素全為1的向量
t:矩陣轉(zhuǎn)置
n:用戶數(shù)
p:項(xiàng)目數(shù)
d:線性映射后區(qū)間的長度
l:線性映射后區(qū)間的下界
a:待推薦的用戶集合
s(u):向量歸一化。舉例:對(duì)n維向量u=(u1,u2,...,un),其模為
具體實(shí)施方式
本發(fā)明公開的基于簇?cái)?shù)自適應(yīng)增長的聚類算法的個(gè)性化推薦算法包含基于聚類的增量學(xué)習(xí)和推薦兩個(gè)階段。
個(gè)性化推薦算法整體流程圖如圖1所示。
下面結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施方式做詳細(xì)說明。
一、初始化
本部分對(duì)應(yīng)圖1中的s1,詳細(xì)流程圖見圖2。
s1:初始化
s1.1:初始化參數(shù)集
1)根據(jù)實(shí)際情況對(duì)用戶數(shù)n、項(xiàng)目數(shù)p進(jìn)行賦值;
2)該算法的使用者指定初始簇?cái)?shù)量k、學(xué)習(xí)率η、收斂閾值α、誤差閾值β、線性映射后區(qū)間的長度d、線性映射后區(qū)間的下界l、待推薦的用戶集合a。
s1.2:初始化表示“用戶是否對(duì)項(xiàng)目評(píng)分”的矩陣m
以n行p列的矩陣m=(mij)表示第i個(gè)用戶是否給出了對(duì)第j個(gè)項(xiàng)目的評(píng)分,其中i∈{1,2,3,...,n},j∈{1,2,3,...,p}。mij=1表示用戶i給出了對(duì)項(xiàng)目j的評(píng)分,mij=0表示用戶i沒對(duì)項(xiàng)目j給出評(píng)分。
s1.3:初始化“用戶-項(xiàng)目評(píng)分矩陣”u
1)以n行p列的矩陣u=(uij)表示用戶-項(xiàng)目評(píng)分矩陣,其中i∈{1,2,3,...,n},j∈{1,2,3,...,p}。第i行第j列的元素表示第i個(gè)用戶對(duì)第j個(gè)項(xiàng)目的評(píng)分值。用ui=(ui1,ui2,...,uij,...,uip)表示第i個(gè)用戶對(duì)所有p個(gè)項(xiàng)目的評(píng)分值;
2)對(duì)u逐行歸一化,即s(ui),i∈{1,2,3,...,n};
s1.4:初始化“用戶-用戶所屬簇矩陣”z
1)構(gòu)造n行k列的矩陣z=(zik)表示用戶-用戶所屬簇矩陣,其中i∈{1,2,3,...,n},k∈{1,2,3,...,k}。zik∈{0,1},zik=1表示用戶i屬于簇k,zik=0表示用戶i不屬于簇k;
2)將n個(gè)用戶隨機(jī)分配至k個(gè)簇中的某一個(gè)簇(對(duì)任意用戶i滿足
s1.5:mwosk-means算法初始化
1)計(jì)算包含p個(gè)項(xiàng)目的權(quán)值的項(xiàng)目權(quán)值向量witem,第j(j∈{1,2,3,...,p})個(gè)項(xiàng)目的項(xiàng)目權(quán)值的計(jì)算公式如下:
m,j表示矩陣m的第j列。
2)根據(jù)d、l及如下公式將witem線性映射到合適的區(qū)間:
其中
3)計(jì)算包含n個(gè)用戶的權(quán)值的用戶權(quán)值向量wuser,第i(i∈{1,2,3,...,n})個(gè)用戶的用戶權(quán)值的計(jì)算公式如下:
其中σ(ui)表示ui的標(biāo)準(zhǔn)差。
4)根據(jù)如下公式構(gòu)造k個(gè)p維向量μk(k∈{1,2,3,...,k})以表示各個(gè)簇的簇中心的位置:
其中j∈{1,2,3,...,p}。
二、聚類
本部分對(duì)應(yīng)圖1中的s2,具體流程圖見圖3。
s2:mwosk-means算法聚類
s2.1:遍歷u中所有用戶訓(xùn)練模型
對(duì)第i(i∈{1,2,3,...,n})個(gè)用戶:
1)重新計(jì)算用戶i所屬簇:
其中k∈{1,2,3,...,k},closest_ki表示重新計(jì)算得到的用戶i所屬的某個(gè)新簇,closest_ki∈{1,2,3,...,k}。
2)更新用戶i新所屬簇的簇中心:
s2.2:計(jì)算收斂度h
根據(jù)如下公式計(jì)算收斂度h:
μ'k表示“s2.1:遍歷u中所有用戶訓(xùn)練模型”后的第k個(gè)簇中心,μk表示s2.1前的第k個(gè)簇中心,k∈{1,2,3,...,k}。
三、簇?cái)?shù)自適應(yīng)增長
本部分對(duì)應(yīng)圖1中的s3、s4、s5,其中s3、s5的具體流程圖見圖4、圖5。
s3:mgsoc算法階段一:計(jì)算誤差度em
s3.1:構(gòu)造包含k個(gè)元素的誤差向量e
對(duì)每個(gè)簇k(k∈{1,2,3,...,k})用以下公式計(jì)算ek:
s3.2:歸一化e
即s(e)。
s3.3:計(jì)算誤差度em
用以下公式計(jì)算誤差度em:
其中,exp(·)是以e為底的指數(shù)函數(shù)。
s4:判斷簇?cái)?shù)量是否合適
根據(jù)以上得到的誤差度em,將em與β比較,如果em小于β,則當(dāng)前簇?cái)?shù)量合適;如果em大于β,則當(dāng)前簇?cái)?shù)不合適。
s5:mgsoc算法階段二:計(jì)算新簇中心μnew
s5.1:計(jì)算新簇中心的位置μnew
用以下公式計(jì)算新簇中心的位置μnew:
s5.2:歸一化新簇的簇中心向量μnew
即s(μnew)。
s5.3:清除誤差向量e
四、增量學(xué)習(xí)
s6:增量學(xué)習(xí)
本發(fā)明中提出的個(gè)性化推薦算法支持以下四種增量學(xué)習(xí)情況:1)已存在用戶i第一次對(duì)項(xiàng)目j進(jìn)行評(píng)分;2)已存在用戶i更新對(duì)項(xiàng)目j的評(píng)分;3)出現(xiàn)新用戶;4)出現(xiàn)新項(xiàng)目。由于出現(xiàn)的新項(xiàng)目未被用戶評(píng)分,因此不會(huì)對(duì)模型造成影響。當(dāng)新項(xiàng)目被用戶評(píng)分時(shí),情況等價(jià)于“1)已存在用戶i第一次對(duì)項(xiàng)目j進(jìn)行評(píng)分”。
具體如下:
s6.1:已存在用戶i第一次對(duì)項(xiàng)目j進(jìn)行評(píng)分
對(duì)應(yīng)圖7。
1)更新用戶i的模:
||u'i||表示更新后用戶i的模,||ui||表示更新前用戶i的模。
2)更新用戶i與各個(gè)簇的余弦相似度:
其中k∈{1,2,3,...,k}。
3)更新項(xiàng)目j的權(quán)值:
4)更新用戶i的權(quán)值:
5)重新計(jì)算用戶i所屬簇:
其中k∈{1,2,3,...,k},closest_ki表示重新計(jì)算得到的用戶i所屬的某個(gè)新簇,closest_ki∈{1,2,3,...,k}。
6)根據(jù)公式(7)更新簇中心
s6.2:已存在用戶i更新對(duì)j的評(píng)分
對(duì)應(yīng)圖8。
1)更新用戶i的模:
2)更新用戶i與各個(gè)簇的余弦相似度:
其中k∈{1,2,3,...,k}。
3)更新用戶i的權(quán)值:
4)根據(jù)公式(16)、(17)重新計(jì)算用戶i所屬簇;
5)根據(jù)公式(7)更新簇中心
s6.3:出現(xiàn)新用戶
對(duì)應(yīng)圖9。
1)根據(jù)公式(3)計(jì)算新用戶權(quán)值;
2)根據(jù)公式(16)、(17)計(jì)算新用戶所屬簇;
3)根據(jù)公式(7)更新所屬簇中心;
五、推薦
本部分對(duì)應(yīng)圖1中的s7。
s7:協(xié)同過濾推薦
預(yù)測(cè)用戶a對(duì)項(xiàng)目j的評(píng)分:
其中a∈a,k∈{1,2,3,...,k},j∈{1,2,3,...,p}。