本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種用于稀疏大數(shù)據(jù)的個性化推薦方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的飛速發(fā)展,目前已經(jīng)開始出現(xiàn)很多的個性化推薦服務(wù),這些個性化推薦服務(wù)能夠根據(jù)用戶的歷史行為記錄推薦給用戶最可能符合其興趣的信息。
現(xiàn)有技術(shù)中存在一種協(xié)同過濾的個性化推薦方法,該方法認為用戶的興趣在一段時間內(nèi)是不變的,據(jù)此可以向用戶推薦與其興趣相似的用戶感興趣的商品,所以通常的推薦過程包括相似性計算和推薦產(chǎn)生兩個步驟。用戶的歷史行為作為特征被用來刻畫用戶,然后根據(jù)用戶間的相似性進行推薦。但是在實際應(yīng)用中,用戶和內(nèi)容的規(guī)模都異常龐大。其中,內(nèi)容指在實際的系統(tǒng)中向用戶推薦的商品、音樂、視頻、電子書籍等。用戶的行為分布很不均勻,通常遵循冪律分布或韋伯分布,大部分用戶只有少量的行為,對于單個用戶,有過相應(yīng)行為的內(nèi)容相對所有內(nèi)容是非常稀疏的,當用戶行為較稀疏時,用戶之間的共同行為往往比較少或者根本沒有共同行為,所給出的這些推薦數(shù)據(jù)只能從較少的維度來刻畫和了解一個用戶,很難充分判斷出用戶的屬性、消費水平及興趣愛好等,因此推薦的結(jié)果是不充分的,甚至不夠準確。
在目前的個性化推薦方法中,數(shù)據(jù)稀疏性會降低基于用戶共同行為的相似性計算的準確性,進而引起推薦誤差,同時也會造成對計算資源的浪費。因此,現(xiàn)有技術(shù)的個性化推薦方法中因存在數(shù)據(jù)稀疏性而導致推薦結(jié)果不準確,對計算資源的浪費也很嚴重。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種用于稀疏大數(shù)據(jù)的個性化推薦方法和裝置,用于提高推薦的準確性,減少對計算資源的浪費,適用于稀疏大數(shù)據(jù)的場景下向用戶推薦商品。
為了達到上述目的,本發(fā)明采用這樣的如下技術(shù)方案:
一方面,本發(fā)明提供一種用于稀疏大數(shù)據(jù)的個性化推薦方法,包括:
從用戶歷史行為數(shù)據(jù)庫中獲取用戶與商品之間產(chǎn)生的行為記錄;
根據(jù)所述用戶與商品之間產(chǎn)生的行為記錄生成行為矩陣,所述行為矩陣中的每個元素對應(yīng)一個用戶對一個商品產(chǎn)生的行為數(shù)據(jù),所述行為矩陣中的每一行表示一個用戶的特征向量,所述行為矩陣中的每一列表示一個商品的特征向量;
根據(jù)所述行為矩陣中所有商品之間的相似性將所述所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),所述商品簇集中包括多個商品簇;
計算所述行為矩陣中所有用戶對所述商品簇集的歸屬度矩陣,所述歸屬度矩陣中的每一行表示一個用戶對所述商品簇集中所有商品簇的歸屬度向量,所述歸屬度向量中的各個歸屬度值分別表示一個用戶對一個商品簇的喜好程度;
根據(jù)所述每個用戶對應(yīng)的歸屬度矩陣中的歸屬度向量計算所述行為矩陣中用戶之間的相似性,并根據(jù)計算得到所述用戶之間的相似性對所述行為矩陣中的用戶進行個性化推薦。
另一方面,本發(fā)明提供一種用于稀疏大數(shù)據(jù)的個性化推薦裝置,包括:
行為記錄獲取模塊,用于從用戶歷史行為數(shù)據(jù)庫中獲取用戶與商品之間產(chǎn)生的行為記錄;
行為矩陣生成模塊,用于根據(jù)所述用戶與商品之間產(chǎn)生的行為記錄生成行為矩陣,所述行為矩陣中的每個元素對應(yīng)一個用戶對一個商品產(chǎn)生的行為數(shù)據(jù),所述行為矩陣中的每一行表示一個用戶的特征向量,所述行為矩陣中的每一列表示一個商品的特征向量;
商品聚類模塊,用于根據(jù)所述行為矩陣中所有商品之間的相似性將所述所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),所述商品簇集中包括多個商品簇;
歸屬度矩陣計算模塊,用于計算所述行為矩陣中所有用戶對所述商品簇集的歸屬度矩陣,所述歸屬度矩陣中的每一行表示一個用戶對所述商品簇集中所有商品簇的歸屬度向量,所述歸屬度向量中的各個歸屬度值分別表示一個用戶對一個商品簇的喜好程度;
個性化推薦模塊,用于根據(jù)所述用戶對應(yīng)的歸屬度矩陣中的歸屬度向量計算所述行為矩陣中用戶之間的相似性,并根據(jù)計算得到所述用戶之間的相似性對所述行為矩陣中的用戶進行個性化推薦。
采用上述技術(shù)方案后,本發(fā)明提供的技術(shù)方案將有如下優(yōu)點:
本發(fā)明實施例中,通過用戶歷史行為數(shù)據(jù)庫可以獲取用戶與商品之間產(chǎn)生的行為記錄,所以能高效、全面的搜尋到相關(guān)數(shù)據(jù),從而生成用戶與商品之間的行為矩陣,由于用戶與商品之間產(chǎn)生的行為記錄為稀疏大數(shù)據(jù),通過商品之間的相似性將行為矩陣中的所有商品劃分到商品簇集中的相應(yīng)商品簇內(nèi),從而對商品進行聚類,計算每個用戶對商品簇的歸屬度,因此可以使用歸屬度來刻畫用戶,相對于現(xiàn)有技術(shù)中使用用戶對單個商品的行為,通過商品聚類后得到商品簇集,用戶對商品簇的歸屬度可以使得每個用戶的特征更加顯著,基于歸屬度計算的用戶的相似性更加精確,從而提高提高協(xié)同過濾中基于相似用戶推薦的準確性。由于歸屬度矩陣的商品簇維度遠遠小于行為矩陣中商品的維度,大大節(jié)省用戶相似性計算的時間和空間資源,提高推薦效率。
附圖說明
圖1為本發(fā)明實施例提供的用于稀疏大數(shù)據(jù)的個性化推薦裝置的一種組成結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供用于稀疏大數(shù)據(jù)的個性化推薦方法的技術(shù)框架示意圖;
圖3為本發(fā)明實施例提供一種用于稀疏大數(shù)據(jù)的個性化推薦方法的流程方框示意圖;
圖4為本發(fā)明實施例提供將商品劃分到商品簇的實現(xiàn)場景示意圖;
圖5為本發(fā)明實施例提供的粗?;幚砟K的組成結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的自組織特征映射模塊的實現(xiàn)場景示意圖;
圖7為本發(fā)明實施例提供的評分預(yù)測模塊的組成結(jié)構(gòu)示意圖;
圖8為本發(fā)明實施例提供的用于稀疏大數(shù)據(jù)的個性化推薦裝置的另一種組成結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供了一種用于稀疏大數(shù)據(jù)的個性化推薦方法和裝置,用于提高推薦的準確性,減少對計算資源的浪費,用于稀疏大數(shù)據(jù)的場景下向用戶推薦商品。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的術(shù)語在適當情況下可以互換,這僅僅是描述本發(fā)明的實施例中對相同屬性的對象在描述時所采用的區(qū)分方式。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
本發(fā)明實施例首先提供一種用于稀疏大數(shù)據(jù)的個性化推薦裝置,如圖1所示,用于稀疏大數(shù)據(jù)的個性化推薦裝置包括:數(shù)據(jù)獲取模塊、數(shù)據(jù)處理模塊、個性化推薦模塊,其中,數(shù)據(jù)獲取模塊包括:數(shù)據(jù)爬取模塊和數(shù)據(jù)預(yù)處理模塊,數(shù)據(jù)處理模塊包括:粗?;幚砟K、歸屬度計算模塊和相似性計算模塊,個性化推薦模塊可以包括:預(yù)測推薦模塊和推薦展示模塊。該用于稀疏大數(shù)據(jù)的個性化推薦裝置可以基于圖2所示的技術(shù)框架來實現(xiàn),該用于稀疏大數(shù)據(jù)的個性化推薦裝置可以執(zhí)行后續(xù)圖3所示的方法實施例中描述的用于稀疏大數(shù)據(jù)的個性化推薦方法。其中,用于稀疏大數(shù)據(jù)的個性化推薦裝置中包括的各個模塊可以執(zhí)行后續(xù)方法實施例中的各個步驟,接下來分別對用于稀疏大數(shù)據(jù)的個性化推薦裝置中各個模塊執(zhí)行的方法步驟流程進行詳細說明。
本發(fā)明實施例提供了用于稀疏大數(shù)據(jù)的個性化推薦裝置,其功能模塊如如圖1所示,本裝置主要利用粗?;椒ㄌ幚泶髷?shù)據(jù)環(huán)境下形成的稀疏數(shù)據(jù),基于處理后的數(shù)據(jù)精確地計算用戶間的相似性,從而消除稀疏數(shù)據(jù)帶來的推薦誤差,不僅以提高個性化推薦系統(tǒng)的推薦效果為目標,也注重提升推薦算法的性能和可解釋性。以下分別進行詳細說明,在本發(fā)明的一個實施例提供一種用于稀疏大數(shù)據(jù)的個性化推薦方法,可以通過用于稀疏大數(shù)據(jù)的個性化推薦裝置來執(zhí)行,如圖3所示,該方法可以包括如下步驟:
步驟101、從用戶歷史行為數(shù)據(jù)庫中獲取用戶與商品之間產(chǎn)生的行為記錄。
在本發(fā)明實施例中,用戶歷史行為數(shù)據(jù)庫中存儲有用戶與商品之間行為記錄,先通過數(shù)據(jù)爬取的方式獲取用戶與商品之間產(chǎn)生的行為記錄,用戶歷史行為數(shù)據(jù)庫中保存的是大數(shù)據(jù),該大數(shù)據(jù)可能存在稀疏性,大部分用戶只有少量的行為,對于單個用戶,有過相應(yīng)行為的內(nèi)容相對所有內(nèi)容是非常稀疏的,當用戶行為較稀疏時,用戶之間的共同行為往往比較少或者根本沒有共同行為,所給出的這些推薦數(shù)據(jù)只能從較少的維度來刻畫和了解一個用戶,很難充分判斷出用戶的屬性、消費水平及興趣愛好等,因此推薦的結(jié)果是不充分的,甚至不夠準確。其中,用戶對商品的行為可以包括:瀏覽、收藏、評論等,本發(fā)明實施例中所指的商品可以也稱為內(nèi)容,商品指在實際的系統(tǒng)中能接收到的信息,例如在電商網(wǎng)站上指商品,或者其他一些應(yīng)用了推薦系統(tǒng)的地方也可以指音樂(如網(wǎng)易云、潘多拉)、視頻、書籍。行為記錄是指用戶對商品產(chǎn)生行為的數(shù)據(jù),例如用戶a購買過某個商品,或者瀏覽過某個商品,或者用戶對某個商品做出了評價,給出了打分值等。
步驟102、根據(jù)用戶與商品之間產(chǎn)生的行為記錄生成行為矩陣,行為矩陣中的每個元素對應(yīng)一個用戶對一個商品產(chǎn)生的行為數(shù)據(jù),行為矩陣中的每一行表示一個用戶的特征向量,行為矩陣中的每一列表示一個商品的特征向量。
在本發(fā)明實施例中,通過爬取用戶歷史行為數(shù)據(jù)庫,可以提取出多個用戶分別對商品產(chǎn)生的行為記錄,使用用戶與商品之間產(chǎn)生的行為記錄可以生成行為矩陣,在行為矩陣中的每個元素對應(yīng)一個用戶對一個商品產(chǎn)生的行為數(shù)據(jù),該行為矩陣的行表示用戶,行為矩陣的列表示商品,則行為矩陣中的每一行表示一個用戶的特征向量,行為矩陣中的每一列表示一個商品的特征向量,通過生成行為矩陣可以將用戶與商品的行為記錄準確的記錄下來。
舉例說明如下,步驟101和步驟102可以通過圖1所示的數(shù)據(jù)獲取模塊來完成,該數(shù)據(jù)獲取模塊通過網(wǎng)絡(luò)爬蟲收集相關(guān)用戶的行為信息,并對收集到的數(shù)據(jù)進行清洗,轉(zhuǎn)換成后續(xù)計算所需的數(shù)據(jù)形式,此模塊主要包括數(shù)據(jù)爬取和數(shù)據(jù)預(yù)處理模塊。
首先對數(shù)據(jù)爬取模塊進行說明,當爬取的用戶行為的類型不同時所爬取的數(shù)據(jù)內(nèi)容也不同。如果爬取的是用戶的瀏覽(或收藏)行為,則每條瀏覽(或收藏)信息包含:用戶userid、商品itemid、瀏覽(或收藏)時間。如果是用戶的購買行為,則每條購買信息包括:用戶userid、商品itemid、購買時間、購買數(shù)量。如果是評分行為,則每條評分信息包括:用戶userid、商品itemid、評分時間、評分值。
接下來對數(shù)據(jù)預(yù)處理模塊進行說明,為了后續(xù)計算的方便,需將爬取到的數(shù)據(jù)進行去噪、轉(zhuǎn)換預(yù)處理,形成計算所需的統(tǒng)一的行為矩陣形式,這個行為矩陣即后續(xù)描述的w。不管是哪種類型的數(shù)據(jù),首先需要清理數(shù)據(jù)中的冗余、不完整、非法字符等臟數(shù)據(jù)。舉例說明,需要爬取用戶的瀏覽信息,那么可能會出現(xiàn)數(shù)據(jù)重復的情況,例如有兩條記錄完全是一樣的,這就需要進行去重處理。還有一些可能會出現(xiàn)爬取的數(shù)據(jù)有缺省的情況,比如在獲取用戶的評分數(shù)據(jù)時,只有用戶和評分,但是沒有對應(yīng)的商品的情況,這就需要把這些缺省數(shù)據(jù)過濾掉,例如可以通過編程來過濾掉這些噪聲數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換是將不同形式的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的形式,主要是根據(jù)后面算法的需要,將數(shù)據(jù)轉(zhuǎn)成成算法計算需要的基礎(chǔ)數(shù)據(jù)形式。其次,將處理后的數(shù)據(jù)轉(zhuǎn)換成行為矩陣w,其中,對于行為矩陣中的元素wij,若是瀏覽數(shù)據(jù),則wij表示用戶i瀏覽商品j的次數(shù);若是購買數(shù)據(jù),則wij表示購買數(shù)量;若是評分數(shù)據(jù),則wij表示具體評分值;若是收藏數(shù)據(jù),則wij=1表示用戶收藏過商品,0則表示沒有收藏過。行為矩陣中的每一行可以表示一個用戶的特征向量,每一列可以表示一個商品的特征向量。
步驟103、根據(jù)行為矩陣中所有商品之間的相似性將所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),商品簇集中包括多個商品簇。
在本發(fā)明實施例中,用戶與商品之間產(chǎn)品的行為記錄為稀疏大數(shù)據(jù)時,可以通過粗?;l(fā)現(xiàn)被推薦商品之間的潛在關(guān)系,將每一個商品劃分到相應(yīng)的商品簇(后續(xù)實施例中也可以簡稱為簇)中,將原始用戶對單個商品的行為轉(zhuǎn)換成用戶對商品簇的喜好,以解決數(shù)據(jù)稀疏性問題。使用粗?;蟮臄?shù)據(jù)表征用戶,相較于使用用戶對商品的稀疏行為數(shù)據(jù)來表征一個用戶進行相似性計算,本發(fā)明實施例中通過將商品歸屬到商品簇,從而得到的用戶特征更加鮮明,相似性計算更加準確可靠,同時也可以降低推薦過程的時間復雜度。
舉例說明如下,前述的步驟103可以通過如圖1所示的數(shù)據(jù)處理模塊來完成,擬使用粗?;姆椒▽ο∈钄?shù)據(jù)進行處理。粗?;峭ㄟ^不分明的關(guān)系、相似關(guān)系、鄰近關(guān)系或功能關(guān)系等對一個論域進行劃分形成子集、類或簇的過程。粗?;菍υ颊撚虻囊粋€映射過程,粗?;蟮臄?shù)據(jù)相對于原始數(shù)據(jù)特征更加鮮明、粒度間差異性更大。在本發(fā)明實施例提供的裝置中,通過粗?;l(fā)現(xiàn)被推薦商品之間的潛在關(guān)系,將每一個商品劃分到相應(yīng)的簇中,一個商品屬于一個簇,每次取出一個商品,然后決定將這個商品劃分到其中一個簇,直到所有商品都劃分到簇中。將原始用戶對單個商品的行為轉(zhuǎn)換成用戶對商品簇的喜好,以解決數(shù)據(jù)稀疏性問題。使用粗粒化后的數(shù)據(jù)表征用戶,相較于使用用戶對商品的稀疏行為數(shù)據(jù)來表征一個用戶,進行相似性計算,前者用戶特征更加鮮明,相似性計算更加準確可靠,同時也可以降低推薦過程的時間復雜度。
商品數(shù)據(jù)的粗?;幚矸绞娇梢匀鐖D4所示。在本發(fā)明實施例中,行為矩陣中每個列單獨表示一個商品的特征向量,若有多少種商品,行為矩陣中就會存在多少個列,商品在劃分中商品簇時需要依據(jù)商品之間的相似性,舉例說明如下,行為矩陣中共有8個商品,分別為商品1、商品2、….、商品8,最終行為的商品簇集共有兩個,分別為簇1和簇2,則根據(jù)商品之間的相似性可以將商品1至商品4劃分到商品簇1中,將商品5至商品8劃分到商品簇2,則用戶對商品之間產(chǎn)生的行為記錄,就可以轉(zhuǎn)換為用戶對商品簇的歸屬度,從而減少因為數(shù)據(jù)稀疏性的影響造成的推薦結(jié)果不準確。本發(fā)明實施例中將多個商品分別劃分到商品簇中可以有多種方式,接下來分別進行舉例說明。
在本發(fā)明的一些實施例中,如圖5所示,粗?;幚砟K可以包括:k均值聚類模塊、自組織特征映射模塊,首先對k均值聚類模塊的實現(xiàn)方式進行舉例說明。在本發(fā)明的一些實施例中,步驟103根據(jù)行為矩陣中所有商品之間的相似性將所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),包括:
步驟a、獲取商品簇集中k個商品簇的當前均值向量{μ1,μ2,...,μk},k表示商品簇集中的商品簇個數(shù);
步驟b、計算行為矩陣中商品ii分別與k個商品簇的當前均值向量之間的距離,將商品ii歸入與商品ii之間距離取值最小的當前均值向量對應(yīng)的商品簇,ii表示行為矩陣中的任意一個商品的特征向量;
步驟c、當行為矩陣中所有商品都歸入到商品簇集中的一個商品簇之后,通過如下計算方式重新計算商品簇集中k個商品簇的均值向量:
其中,μ′i表示重新計算得到的商品簇集中第i個商品簇的均值向量,|ci|表示第i個商品簇中的商品個數(shù),ij表示行為矩陣中第j個商品的特征向量;
步驟d、判斷重新計算得到的均值向量μ′i和第i個商品簇的當前均值向量μi之間的差值是否大于預(yù)置的誤差門限,若μ′i和μi之間的差值大于誤差門限,將μi更新為重新計算得到的μ′i,否則不更新μi,通過步驟d的方式再次獲取當前商品簇集中k個商品簇的均值向量;
步驟e、重復依次執(zhí)行步驟a至步驟d,當商品簇集中k個商品簇的更新前后的均值向量之間的差值總和小于或等于預(yù)置的第一誤差總門限時,停止執(zhí)行前述步驟a至步驟d的迭代過程,確定商品簇集中k個商品簇的當前均值向量為k個商品簇的代表向量,輸出最終形成的商品簇集,其中,最終形成的商品簇集中每個商品簇至少包括行為矩陣中的一個商品。
需要說明的是,步驟a至步驟d描述了一個具體的循環(huán)處理過程,步驟d中的誤差門限可以根據(jù)具體的實現(xiàn)場景來確定其取值,步驟e中的第一誤差總門限也是根據(jù)具體的實現(xiàn)場景確定其取值的,當商品簇集中k個商品簇的更新前后的均值向量之間的差值總和小于或等于預(yù)置的第一誤差總門限時,步驟a至步驟d所描述的循環(huán)過程停止迭代,此時輸出最終形成的商品簇集。
在前述的步驟a至步驟e中,記載了使用k均值(k-means)聚類的方式將多個商品分別劃分到相應(yīng)的商品簇。進一步的,在本發(fā)明的一些實施例中,在所述步驟a執(zhí)行之前,所述方法還包括:
從行為矩陣中隨機選擇k個商品的特征向量作為商品簇集中k個商品簇的初始均值向量,k個商品中的一個商品的特征向量作為商品簇集中一個商品簇的初始均值向量,在首次執(zhí)行步驟a時,將k個商品簇的初始均值向量作為k個商品簇的當前均值向量。
其中,在步驟a至步驟d的循環(huán)過程中,可以采用k個商品的特征向量作為商品簇集中k個商品簇的初始均值向量。
在本發(fā)明實施例提供的裝置中,可以有兩種不同的粗?;幚矸椒晒┻x擇,k均值聚類算法和自組織特征映射,步驟a至步驟e記載了k均值(k-means)聚類模塊所執(zhí)行的方法步驟,接下來對步驟a至步驟e進行詳細說明。此模塊的輸入為用戶的行為矩陣,處理的對象是該矩陣中代表商品的每一列向量,即每一個商品的特征向量,那么對于每一個商品,用矩陣中的一列向可以用i={w1i,w2i,...,wni}來表示,處理的結(jié)果是彼此之間相似的商品聚為一簇,使不同簇的商品之間相似性較小。
在前述的步驟a中,從商品集中隨機選擇k個商品的特征向量作為初始均值向量{μ1,μ2,...,μk},k的取值可以根據(jù)應(yīng)用場景靈活配置,一般最大值是50左右,最小是10左右。即從w矩陣中隨機選擇k列向量作為初始均值向量,每一個均值向量作為簇集c={c1,c2,...,ck}相應(yīng)簇的代表向量,例如,c1這個簇的初始均值向量就用μ1來表示,初始的簇均為空集。
在前述的步驟b中,對于每一個商品ii,計算商品ii與每一個均值向量μj的距離dij=||ii-μj||2,ii是所有商品中的第i個商品。通過計算這個商品與每個簇中心的距離,將其歸入到距離最近的那一簇,每個商品作這個計算就可以將所有商品歸入到相應(yīng)的簇了,所有商品這樣計算計算后,每個簇里面就會包含一些商品。將商品ii歸入與其距離最近的均值向量代表的那一簇,商品ii會分別計算與所有的均值向量的距離,找出這些距離中最小的,那么得到這個最小距離的均值向量代表的那一簇就是商品要歸入的簇。
在前述的步驟c中,在所有的商品歸入到相應(yīng)的簇之后,對每一個簇,重新計算它的均值向量
在前述的步驟d中,一種可行的方式是,在均值向量更新后,計算更新前和更新后的均值向量之間的誤差和,即使用公式
經(jīng)過前述的k均值聚類模塊,原來的m個商品最終分布在k個簇中,在同一個簇中的商品較相似,不同簇之間的商品相似性較小。
在本發(fā)明的另一些實施例中,步驟103根據(jù)行為矩陣中所有商品之間的相似性將所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),包括:
步驟1、將行為矩陣中每個商品的特征向量依次輸入自組織特征映射(self-organizingmapping,som)模型的輸入層中,som模型包括:輸入層和輸出層,輸出層包括:k個原型節(jié)點,每個原型節(jié)點代表商品簇集中一個商品簇,每個原型節(jié)點具有相應(yīng)的特征向量和空間的位置向量,k表示商品簇集中的商品簇個數(shù);
步驟2、當som模型的輸入層中輸入商品i(t)的特征向量時,獲取som模型的網(wǎng)絡(luò)參數(shù),som模型的網(wǎng)絡(luò)參數(shù),包括:第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的學習率α(t)和高斯參數(shù)σ(t),t表示som模型的輸入層中輸入的商品個數(shù),同時t也表示更新次數(shù);
α(t)通過如下計算方式得到:
α(t)=α0exp(-t/τα),α0表示初始學習率,τα表示計算α(t)時使用的常量參數(shù);
σ(t)通過如下計算方式得到:
σ0表示初始的高斯參數(shù),τσ表示計算σ(t)時使用的常量參數(shù);
步驟3、計算商品i(t)的特征向量分別與輸出層中k個原型節(jié)點的特征向量之間的距離,從k個原型節(jié)點中選擇與商品i(t)之間距離取值最小的原型節(jié)點作為當前的激活節(jié)點μi(t);
步驟4、根據(jù)輸出層中除激活節(jié)點μi(t)以外的其它原型節(jié)點與被激活節(jié)點μi(t)之間的距離通過如下計算方式更新激活節(jié)點μi(t)的鄰域內(nèi)的其它原型節(jié)點:
μj(t+1)=μj(t)+hji(t)(i(t)-μj(t)),
其中,μj(t+1)表示激活節(jié)點μi(t)的鄰域內(nèi)在第t+1次更新時的其它原型節(jié)點,j表示輸出層中的第j個原型節(jié)點,μj(t)表示激活節(jié)點μi(t)的鄰域內(nèi)在第t次更新時的其它原型節(jié)點,hji(t)表示激活節(jié)點μi(t)的鄰域函數(shù);
hji(t)通過如下計算公式得到:
hji(t)=α(t)exp(-dist(rj,ri)2/(2σ2(t))),
其中,α(t)表示第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的學習率,σ(t)表示第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的高斯參數(shù),rj表示第j個原型節(jié)點的位置向量,ri表示第i個原型節(jié)點的位置向量;
步驟5、重復依次執(zhí)行步驟1至步驟4,當?shù)趖+1次更新的k個原型節(jié)點特征向量與第t次更新的k個原型節(jié)點之間的特征向量之間的差值總和小于或等于預(yù)置的第二誤差總門限時,停止執(zhí)行前述步驟1至步驟4的迭代過程,確定商品簇集中k個原型節(jié)點的特征向量為k個商品簇的代表向量;
步驟6、計算行為矩陣中商品ii分別與k個原型節(jié)點的特征向量的距離,將商品ii歸入與商品ii之間距離取值最小的特征向量對應(yīng)的商品簇,ii表示行為矩陣中的任意一個商品的特征向量,其中,最終形成的商品簇集中每個商品簇至少包括行為矩陣中的一個商品。
在本發(fā)明實施例提供的裝置中,除了采用k均值聚類算法進行粗?;幚?,還可以采用自組織特征映射算法進行粗粒化處理,步驟1至步驟6記載了自組織特征映射(som)模塊所執(zhí)行的方法步驟,接下來對步驟1至步驟6進行詳細說明。由于高維數(shù)據(jù)很難直觀地表示出來,如果可以將高維空間數(shù)據(jù)映射到低維(二維或三維)空間,并能在拓撲關(guān)系上保留原數(shù)據(jù)分布的情況,那么就可以從低維空間數(shù)據(jù)的分布了解它們在原數(shù)據(jù)空間中的關(guān)系。這種映射在神經(jīng)元網(wǎng)絡(luò)中的方法被稱為自組織特征映射,如圖6所示,som模型包括:輸入層(inputlayer)和輸出層(outputlayer),該模塊的輸入為用戶的行為矩陣w中的一列向量,即商品的特征向量,最終輸出的是每個商品的簇標簽。輸入層每次輸入一個商品的特征向量,輸出層則是由所有的原型節(jié)點形成,其中,原型節(jié)點的代表向量的作用與k-means中代表簇的均值向量的作用是類似的,在聚類的最后,可以通過計算每個商品的特征向量與原型節(jié)點的代表向量的距離,將商品歸入到相應(yīng)的原型節(jié)點代表的簇中。
與k-means算法不同的是,som不僅需要初始化原型為{μ1,μ2,...,μk},μi表示的是簇i的代表向量,也叫特征向量,還需初始化每個原型的n維特征向量和空間的位置向量每次訓練一個商品,通過計算該商品與原型(使用特征向量計算)的距離,這個與前述的k-means算法中的每個點與簇的均值向量的距離計算公式相類似,這里計算的是每個點與簇的代表向量的距離。通過計算商品與原型的距離,激活與該商品距離最近的原型節(jié)點,同時更新該被激活的原型節(jié)點和其鄰域內(nèi)的其他原型節(jié)點,使得輸出層的這些原型節(jié)點與當前輸入的商品節(jié)點更相似,鄰域的其他輸出節(jié)點與激活節(jié)點的距離決定了其它輸出節(jié)點的代表向量的更新。如果一個二維平面有一個點,那么這個點既有坐標形成的位置向量,也有它對應(yīng)的與位置無關(guān)的特征向量。
接下來對自組織特征映射模塊執(zhí)行的步驟1至步驟6進行舉例說明,計算過程如下,其中的t均表示第t次更新,也可以表示輸入商品節(jié)點的個數(shù),因為每次輸入一個節(jié)點,就會更新一次。首先在步驟1和步驟2中,確定som網(wǎng)格的拓撲結(jié)構(gòu),初始化參數(shù)α0、τα、σ0、τσ,其中,α0表示初始的學習率,α(t)在α0的基礎(chǔ)上進行更新,它決定了激活節(jié)點的領(lǐng)域中的其他原型節(jié)點的代表向量的更新,可以控制算法最后停止的快慢。τα是一個常量參數(shù),用于計算α(t),并且初始化原型向量(即質(zhì)心){μ1,μ2,...,μk}。σ0是初始的高斯參數(shù),它控制更新鄰域的寬度,σ0是計算σ(t)時會用到的常量參數(shù)。
在步驟3中,選擇當前輸入的商品i(t),計算商品i(t)到各個原型節(jié)點的距離,選擇距離最近的原型節(jié)點作為當前的激活點μi(t),μi(t)表示原型向量。
在步驟4中,根據(jù)輸出層其他原型節(jié)點與當前被激活的原型節(jié)點之間的距離,使用下面的方法更新當前被激活的原型節(jié)點鄰域內(nèi)的其他原型節(jié)點:
μj(t+1)=μj(t)+hji(t)(i(t)-μj(t)),
其中,j表示當前質(zhì)心領(lǐng)域內(nèi)第j個質(zhì)心,μj(t+1)表示第j個原型節(jié)點在第t+1輪的代表向量,hji(t)是領(lǐng)域函數(shù),它決定了第j個原型節(jié)點與當前已經(jīng)被激活的原型節(jié)點i的距離,對原型節(jié)點j的代表向量更新的影響,計算公式如下:
hji(t)=α(t)exp(-dist(rj,ri)2/(2σ2(t)))。
在步驟5中,依次輸入每個商品,重復前述的步驟,直到聚類結(jié)果收斂,判斷收斂的標準跟前面的k-means算法類似,就是每個原型節(jié)點的代表向量的變化很小或者不變,即已經(jīng)達到了設(shè)定的迭代次數(shù),或者各個原型節(jié)點的代表向量變化很小或不變,則停止迭代。
對每一個商品,通過計算其與原型節(jié)點的距離,將商品指派到與其距離最近的原型節(jié)點所代表的那一簇。如果每一個原型節(jié)點有一個唯一的標簽,將距離最近的那一個原型節(jié)點的標簽賦予商品,最后標簽相同的商品就歸為一類。與k-means聚類模塊一樣,經(jīng)過自組織特征映射,原來的m個商品最終分布在k個簇中,每個簇中包含一定數(shù)目的商品。
步驟104、計算行為矩陣中所有用戶對商品簇集的歸屬度矩陣,歸屬度矩陣中的每一行表示一個用戶對商品簇集中所有商品簇的歸屬度向量,歸屬度向量中的各個歸屬度值分別表示一個用戶對一個商品簇的喜好程度。
在本發(fā)明實施例中,行為矩陣中的所有商品分別劃分到商品簇集中的一個商品簇,可以將用戶對商品的喜好程度轉(zhuǎn)換為用戶對商品簇的喜好程度,從而解決用戶行為數(shù)據(jù)稀疏性導致的推薦結(jié)果不準確的問題,本發(fā)明實施例中使用歸屬度向量陣來表征用戶特征,其中,每個用戶和各個商品簇之間的歸屬度關(guān)系可以形成歸屬度矩陣,所述歸屬度矩陣中的每一行代表一個用戶的歸屬度向量,一個歸屬度矩陣可以包括:每個用戶分別對商品簇集中所有商品簇的歸屬度,歸屬度向量中的各個歸屬度值分別表示一個用戶對一個商品簇的喜好程度。
在本發(fā)明的一些實施例中,步驟104計算行為矩陣中所有用戶對商品簇集的歸屬度矩陣,包括:
通過如下方式計算行為矩陣中用戶u對商品簇c的歸屬度:
其中,βuc表示用戶u對商品簇c的歸屬度矩陣,nu表示用戶u對商品簇c中產(chǎn)生過行為的商品個數(shù),nc表示商品簇c中的商品總個數(shù)。
舉例說明如下,可以通過歸屬度計算模塊來計算每個用戶的歸屬度矩陣,基于粗?;幚砗蟮臄?shù)據(jù),歸屬度計算模塊可以采用如下的歸屬度算法,計算用戶u對某一商品簇c的歸屬度,用βuc表示,這個歸屬度與用戶選擇過的商品有關(guān),可以表示用戶對每一個商品簇的喜好程度,如果用戶在某一商品簇中有過行為的商品越多,說明用戶對這個商品簇的喜好度越大,|nc∩nu|是用戶有過行為同時也在商品簇c中的商品的個數(shù)。用戶有過行為的商品在某一簇中分布得越多,說明用戶對該簇的關(guān)注度越高,對該簇的興趣也越大。通過此歸屬度的計算,將原來用戶對單個商品的行為轉(zhuǎn)換成了用戶對各個商品簇的喜好,轉(zhuǎn)換后的喜好度矩陣相比于之前的行為矩陣更加稠密。舉例說明,一般聚類之后的簇個數(shù)最大是50左右,而在用戶的行為矩陣有n*m個元素,其中非零元素所占的比例就是該矩陣的密度,而經(jīng)過聚類后的商品簇矩陣有n*50個元素,而m>>50,這樣計算出來的密度的話,后者是要比前者稠密的。經(jīng)過對商品的粗粒化處理,用戶的行為向量維度會大大降低,也降低了用戶間相似性計算的復雜度。商品的數(shù)量是遠遠大于簇的數(shù)量的,那么在計算用戶的相似性時,用喜好度向量表征一個用戶,相較于行為向量來表征一個用戶,向量的維度是大大降低的。
步驟105、根據(jù)每個用戶對應(yīng)的歸屬度矩陣中的歸屬度向量計算行為矩陣中用戶之間的相似性,并根據(jù)計算得到用戶之間的相似性對行為矩陣中的用戶進行個性化推薦。
在本發(fā)明實施例中,對于行為矩陣中的所有用戶,與所有簇形成的歸屬度關(guān)系可以形成一個歸屬度矩陣,通過歸屬度矩陣中用戶的歸屬度向量計算行為矩陣中用戶之間的相似性,從而減少稀疏大數(shù)據(jù)對相似性計算的結(jié)果影響。具體的,步驟105中的根據(jù)每個用戶對應(yīng)的歸屬度矩陣中的歸屬度向量計算行為矩陣中用戶之間的相似性,包括:
通過如下計算方式得到行為矩陣中兩個用戶之間的相似度:
其中,suv表示用戶u與用戶v之間的相似性,βui表示用戶u對商品簇c中的第i個商品簇的歸屬度向量,βvi表示用戶v對商品簇c中的第i個商品簇的歸屬度向量。
舉例說明如下,前述的計算過程可以通過相似性計算模塊來完成,本發(fā)明實施例中提供的相似性計算區(qū)別于現(xiàn)有技術(shù)的相似性計算方法,本發(fā)明實施例中用歸屬度來表征用戶,基于用戶的特征,計算用戶的相似性,為后面的推薦作鋪墊,通過用戶歸屬度的定義,將原本相似性計算的用戶的m維數(shù)據(jù)轉(zhuǎn)換成了k維數(shù)據(jù),很好地解決了大數(shù)據(jù)稀疏性帶來的相似性計算不準確的問題,并大大降低了計算的時間和空間成本。在真實的推薦系統(tǒng)中,用戶對單個商品的行為是具有偶然性的,比如用戶買一件商品,可能只是出于剛好需要,如果用這種偶然行為來表征一個用戶的話,其實對用戶的評估是有誤差的,但是如果用戶對某一簇商品有較多行為的話,可以說明用戶對這一類商品比價關(guān)注,那么該用戶再對這個簇里面的商品有行為的可能性就比其他簇大。本發(fā)明實施例中計算兩個用戶的相似性時不再使用單個的微觀對象評分,這個評分具有偶然性,而是基于用戶的宏觀類別喜好來衡量用戶的相似性。
在本發(fā)明的一些實施例中,步驟105中的根據(jù)計算得到用戶之間的相似性對行為矩陣中的用戶進行個性化推薦,包括:
步驟a1、根據(jù)計算得到用戶之間的相似性為行為矩陣中的用戶對行為矩陣中沒有產(chǎn)生過行為的商品進行預(yù)測評分;或,
步驟a2、根據(jù)計算得到用戶之間的相似性為行為矩陣中的用戶生成商品推薦列表。
其中,向用戶進行個性化推薦可以有多種方式,例如預(yù)測用戶對未產(chǎn)生行為的商品的評分,或者向用戶生成推薦列表,具體可以不同的場景來確定具體的實現(xiàn)方式。
在本發(fā)明的一些實施例中,步驟a1根據(jù)計算得到用戶之間的相似性為行為矩陣中的用戶對行為矩陣中沒有產(chǎn)生過行為的商品進行預(yù)測評分,包括:
通過如下計算方式計算行為矩陣中用戶u對行為矩陣中沒有產(chǎn)生過行為的商品進行預(yù)測評分:
其中,ru,p表示對用戶u對商品p的預(yù)測評分,
其中,l通過如下計算方式計算得到:
v表示
在本發(fā)明的一些實施例中,步驟a2根據(jù)計算得到用戶之間的相似性為行為矩陣中的用戶生成商品推薦列表,包括:
通過如下計算方式預(yù)測行為矩陣中用戶u對行為矩陣中的商品p產(chǎn)生行為的預(yù)測分值:
其中,ru,p表示對用戶u對商品p的預(yù)測分值,
舉例說明如下,步驟105可以通過個性化推薦模塊來完成,本發(fā)明實施例根據(jù)不同的數(shù)據(jù)輸入以及推薦需求,產(chǎn)生預(yù)測評分和推薦列表兩種結(jié)果,針對用戶的評分數(shù)據(jù)的輸入,最終可以產(chǎn)生預(yù)測評分和推薦列表,而對于用戶其他的行為,一般產(chǎn)生推薦列表。如圖7所示,個性化推薦模塊包括:預(yù)測評分模塊和推薦列表模塊。首先對預(yù)測評分模塊進行舉例說明,對于電影、音樂、書籍等這一類商品,用戶會對這些商品做出評分以表示自己對其的喜歡程度,因此對用戶的評分行為預(yù)測是本發(fā)明實施例的輸出結(jié)果之一。通過歸一化解決了用戶的評分尺度不一致的問題。接下來對推薦列表模塊進行舉例說明,本發(fā)明實施例中也可以預(yù)測用戶對其沒有交互行為的商品的可能行為,比如在電商網(wǎng)站上的瀏覽、購買、收藏行為等,而這些行為代表著用戶對商品的某種關(guān)注。通過前述的計算公式,可以預(yù)測用戶對其沒有歷史行為的商品的喜好度,通過對用戶所有有喜好度預(yù)測的商品的喜好度的排序,本發(fā)明實施例可以找出前l(fā)個用戶最可能感興趣的商品推薦給該用戶。
在本發(fā)明的一些實施例中,還可以采用推薦展示模塊將前述產(chǎn)生的個性化推薦結(jié)果在本模塊展示,包括預(yù)測評分的展示和推薦列表的展示,如圖3所示。本發(fā)明實施例中由于采取了數(shù)據(jù)爬取模塊,所以能高效、全面的搜尋到相關(guān)數(shù)據(jù)。由于使用歸屬度來刻畫用戶,相對于使用用戶對單個商品的行為,前者用戶的特征更加顯著,基于歸屬度計算的用戶的相似性更加有說服力,從而提高提高協(xié)同過濾中基于相似用戶推薦的準確性。由于歸屬度矩陣的商品簇維度遠遠小于行為矩陣中商品的維度,大大節(jié)省用戶相似性計算的時間和空間資源,提高推薦效率。
前述實施例介紹本發(fā)明實施例提供的用于稀疏大數(shù)據(jù)的個性化推薦方法,接下來介紹本發(fā)明實施例提供的另一種用于稀疏大數(shù)據(jù)的個性化推薦裝置,請參閱圖8所示,包括:
行為記錄獲取模塊,用于從用戶歷史行為數(shù)據(jù)庫中獲取用戶與商品之間產(chǎn)生的行為記錄;
行為矩陣生成模塊,用于根據(jù)所述用戶與商品之間產(chǎn)生的行為記錄生成行為矩陣,所述行為矩陣中的每個元素對應(yīng)一個用戶對一個商品產(chǎn)生的行為數(shù)據(jù),所述行為矩陣中的每一行表示一個用戶的特征向量,所述行為矩陣中的每一列表示一個商品的特征向量;
商品聚類模塊,用于根據(jù)所述行為矩陣中所有商品之間的相似性將所述所有商品分別劃分到商品簇集中相應(yīng)的商品簇內(nèi),所述商品簇集中包括多個商品簇;
歸屬度矩陣計算模塊,用于分別計算所述行為矩陣中每個用戶對所述商品簇集的歸屬度矩陣,所述歸屬度矩陣中包括:一個用戶分別對所述商品簇集中所有商品簇的歸屬度向量,歸屬度向量中的各個歸屬度值分別表示一個用戶對一個商品簇內(nèi)各個商品的喜好程度;
個性化推薦模塊,用于根據(jù)所述用戶對應(yīng)的歸屬度矩陣中的歸屬度向量計算所述行為矩陣中用戶之間的相似性,并根據(jù)計算得到所述用戶之間的相似性對所述行為矩陣中的用戶進行個性化推薦。
在本發(fā)明的一些實施例中,商品聚類模塊,具體用于執(zhí)行如下步驟:
步驟a、獲取商品簇集中k個商品簇的當前均值向量{μ1,μ2,...,μk},所述k表示商品簇集中的商品簇個數(shù);
步驟b、計算所述行為矩陣中商品ii分別與所述k個商品簇的當前均值向量之間的距離,將所述商品ii歸入與所述商品ii之間距離取值最小的當前均值向量對應(yīng)的商品簇,所述ii表示所述行為矩陣中的任意一個商品的特征向量;
步驟c、當所述行為矩陣中所有商品都歸入到所述商品簇集中的一個商品簇之后,通過如下計算方式重新計算所述商品簇集中k個商品簇的均值向量:
其中,所述μ′i表示重新計算得到的所述商品簇集中第i個商品簇的均值向量,所述|ci|表示第i個商品簇中的商品個數(shù),所述ij表示所述行為矩陣中第j個商品的特征向量;
步驟d、判斷所述重新計算得到的均值向量μ′i和第i個商品簇的當前均值向量μi之間的差值是否大于預(yù)置的誤差門限,若所述μ′i和所述μi之間的差值大于所述誤差門限,將所述μi更新為重新計算得到的μ′i,否則不更新所述μi,通過步驟d的方式再次獲取當前商品簇集中k個商品簇的均值向量;
步驟e、重復依次執(zhí)行步驟a至步驟d,當所述商品簇集中k個商品簇的更新前后的均值向量之間的差值總和小于或等于預(yù)置的第一誤差總門限時,停止執(zhí)行前述步驟a至步驟d的迭代過程,確定所述商品簇集中k個商品簇的當前均值向量為k個商品簇的代表向量,輸出最終形成的商品簇集,其中,最終形成的商品簇集中每個商品簇至少包括所述行為矩陣中的一個商品。
在本發(fā)明的另一些實施例中,商品聚類模塊,還用于執(zhí)行如下步驟:在所述步驟a執(zhí)行之前,從所述行為矩陣中隨機選擇k個商品的特征向量作為商品簇集中k個商品簇的初始均值向量,所述k個商品中的一個商品的特征向量作為所述商品簇集中一個商品簇的初始均值向量,在首次執(zhí)行步驟a時,將所述k個商品簇的初始均值向量作為k個商品簇的當前均值向量。
在本發(fā)明的一些實施例中,商品聚類模塊,具體用于執(zhí)行如下步驟:
步驟1、將所述行為矩陣中每個商品的特征向量依次輸入自組織特征映射som模型的輸入層中,所述som模型包括:所述輸入層和輸出層,所述輸出層包括:k個原型節(jié)點,每個所述原型節(jié)點代表所述商品簇集中一個商品簇,每個所述原型節(jié)點具有相應(yīng)的特征向量和空間的位置向量,所述k表示所述商品簇集中的商品簇個數(shù);
步驟2、當所述som模型的輸入層中輸入商品i(t)的特征向量時,獲取所述som模型的網(wǎng)絡(luò)參數(shù),所述som模型的網(wǎng)絡(luò)參數(shù),包括:第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的學習率α(t)和高斯參數(shù)σ(t),所述t表示所述som模型的輸入層中輸入的商品個數(shù)以及表示輸出層更新的次數(shù);
所述α(t)通過如下計算方式得到:
α(t)=α0exp(-t/τα),所述α0表示初始學習率,所述τα表示計算所述α(t)時使用的常量參數(shù);
所述σ(t)通過如下計算方式得到:
所述σ0表示初始的高斯參數(shù),所述τσ表示計算所述σ(t)時使用的常量參數(shù);
步驟3、計算所述商品i(t)的特征向量分別與所述輸出層中k個原型節(jié)點的特征向量之間的距離,從所述k個原型節(jié)點中選擇與所述商品i(t)之間距離取值最小的原型節(jié)點作為當前的激活節(jié)點μi(t);
步驟4、根據(jù)所述輸出層中除所述激活節(jié)點μi(t)以外的其它原型節(jié)點與所述被激活節(jié)點μi(t)之間的距離,通過如下計算方式更新所述激活節(jié)點μi(t)的鄰域內(nèi)的其它原型節(jié)點:
μj(t+1)=μj(t)+hji(t)(i(t)-μj(t)),
其中,所述μj(t+1)表示所述激活節(jié)點μi(t)的鄰域內(nèi)在第t+1次更新時的其它原型節(jié)點,所述j表示所述輸出層中的第j個原型節(jié)點,所述μj(t)表示所述激活節(jié)點μi(t)的鄰域內(nèi)在第t次更新時的其它原型節(jié)點,所述hji(t)表示所述激活節(jié)點μi(t)的鄰域函數(shù);
所述hji(t)通過如下計算公式得到:
hji(t)=α(t)exp(-dist(rj,ri)2/(2σ2(t))),
其中,所述α(t)表示第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的學習率,所述σ(t)表示第t次更新被激活的原型節(jié)點和其鄰域內(nèi)的其它原型節(jié)點時得到的高斯參數(shù),所述rj表示第j個原型節(jié)點的位置向量,所述ri表示第i個原型節(jié)點的位置向量;
步驟5、重復依次執(zhí)行步驟1至步驟4,當?shù)趖+1次更新的k個原型節(jié)點特征向量與第t次更新的k個原型節(jié)點之間的特征向量之間的差值總和小于或等于預(yù)置的第二誤差總門限時,停止執(zhí)行前述步驟1至步驟4的迭代過程,確定所述商品簇集中k個原型節(jié)點的特征向量為k個商品簇的代表向量;
步驟6、計算所述行為矩陣中商品ii分別與所述k個原型節(jié)點的特征向量的距離,將所述商品ii歸入與所述商品ii之間距離取值最小的特征向量對應(yīng)的商品簇,所述ii表示所述行為矩陣中的任意一個商品的特征向量,其中,最終形成的商品簇集中每個商品簇至少包括所述行為矩陣中的一個商品。
在本發(fā)明的一些實施例中,歸屬度矩陣計算模塊,具體用于執(zhí)行如下步驟:
通過如下方式計算所述行為矩陣中用戶u對所述商品簇c的歸屬度:
其中,所述βuc表示用戶u對所述商品簇c的歸屬度,所述nu表示所述用戶u對所述商品簇c中產(chǎn)生過行為的商品個數(shù),所述nc表示所述商品簇c中的商品總個數(shù)。
在本發(fā)明的一些實施例中,個性化推薦模塊,具體用于執(zhí)行如下步驟:
通過如下計算方式得到所述行為矩陣中兩個用戶之間的相似度:
其中,所述suv表示所述用戶u與所述用戶v之間的相似性,所述βui表示所述用戶u對所述商品簇集c中的第i個商品簇的歸屬度向量,所述βvi表示所述用戶v對所述商品簇集c中的第i個商品簇的歸屬度向量。
在本發(fā)明的一些實施例中,個性化推薦模塊,具體用于執(zhí)行如下步驟:
根據(jù)計算得到所述用戶之間的相似性為所述行為矩陣中的用戶對所述行為矩陣中沒有產(chǎn)生過行為的商品進行預(yù)測評分;或,
根據(jù)計算得到所述用戶之間的相似性為所述行為矩陣中的用戶生成商品推薦列表。
進一步的,在本發(fā)明的一些實施例中,個性化推薦模塊,具體用于執(zhí)行如下步驟:
通過如下計算方式計算所述行為矩陣中用戶u對所述行為矩陣中沒有產(chǎn)生過行為的商品進行預(yù)測評分:
其中,所述ru,p表示對所述用戶u對商品p的預(yù)測評分,所述
其中,所述l通過如下計算方式計算得到:
l=1/σv∈u|suv|,
所述v表示所述
進一步的,在本發(fā)明的一些實施例中,個性化推薦模塊,具體用于執(zhí)行如下步驟:
通過如下計算方式預(yù)測所述行為矩陣中用戶u對所述行為矩陣中的商品p產(chǎn)生行為的預(yù)測分值:
其中,所述ru,p表示對所述用戶u對商品p的預(yù)測分值,所述
通過前述實施例對本發(fā)明的舉例說明可知,通過用戶歷史行為數(shù)據(jù)庫可以爬取到用戶與商品之間產(chǎn)生的行為記錄,所以能高效、全面的搜尋到相關(guān)數(shù)據(jù),從而生成用戶與商品之間的行為矩陣,由于用戶與商品之間產(chǎn)生的行為記錄為稀疏大數(shù)據(jù),通過商品之間的相似性將行為矩陣中的所有商品劃分到商品簇集中的相應(yīng)商品簇內(nèi),從而對商品進行聚類,計算每個用戶對商品簇的歸屬度,因此可以使用歸屬度來刻畫用戶,相對于現(xiàn)有技術(shù)中使用用戶對單個商品的行為,通過商品聚類后得到商品簇集,用戶對商品簇的歸屬度可以使得每個用戶的特征更加顯著,基于歸屬度計算的用戶的相似性更加精確,從而提高提高協(xié)同過濾中基于相似用戶推薦的準確性。由于歸屬度矩陣的商品簇維度遠遠小于行為矩陣中商品的維度,大大節(jié)省用戶相似性計算的時間和空間資源,提高推薦效率。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當然也可以通過專用硬件包括專用集成電路、專用cpu、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機程序完成的功能都可以很容易地用相應(yīng)的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤、u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對上述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。