張帥,賈年
(西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院,成都 610039)
隨著計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,當(dāng)今社會(huì)已然進(jìn)入了信息爆炸時(shí)代。便利的互聯(lián)網(wǎng)和日益普及的移動(dòng)終端極大地提高了人們獲取信息的速度,但是互聯(lián)網(wǎng)上的信息量增長迅速,因?yàn)樾畔⒘繕O大的原因,用戶有時(shí)候很難快速地找到自己想要的或者感興趣的信息[1]。因此,推薦系統(tǒng)應(yīng)運(yùn)而生。為了能夠讓用戶在短時(shí)間內(nèi)迅速得到自己想要的信息,推薦系統(tǒng)通過對(duì)互聯(lián)網(wǎng)上海量的信息經(jīng)過過濾整合,結(jié)合用戶自己的興趣偏好等信息,通過推薦算法的計(jì)算,最終將用戶最有可能感興趣的信息及時(shí)的推薦給用戶,提高了用戶上網(wǎng)的效率[2]。經(jīng)過多年的完善和細(xì)化,推薦算法越來越成熟,一般的推薦算法主要包括基于內(nèi)容的推薦算法、混合推薦算法和協(xié)同過濾推薦算法[3]。
進(jìn)入21世紀(jì)后,人們的生活水平越來越高,因此大家對(duì)自己的生活質(zhì)量的要求也越來越高,其中的一個(gè)例子就是對(duì)發(fā)型的要求。愛美之心,人皆有之,大家都希望剪一個(gè)適合自己的發(fā)型讓自己看起來更加帥氣或美麗。社會(huì)在進(jìn)步,美發(fā)行業(yè)也在進(jìn)步,各種理發(fā)店越來越多,各種發(fā)型也越來越多,在面對(duì)眾多發(fā)型選擇時(shí)大家總會(huì)束手無策。
針對(duì)上述問題,本文結(jié)合協(xié)同過濾算法,將個(gè)性化推薦技術(shù)應(yīng)用于發(fā)型推薦,根據(jù)用戶的興趣偏好,為用戶提供個(gè)性化的發(fā)型推薦,對(duì)協(xié)同過濾推薦算法進(jìn)行了進(jìn)一步的研究。
推薦算法的種類很多,在目前應(yīng)用最廣泛、比較成功的所有的推薦算法中,協(xié)同過濾算法在其中占據(jù)一席之地。協(xié)同過濾算法于1992年由Golderg、Nicols和Terry等學(xué)者首次提出這個(gè)概念,但是當(dāng)時(shí)并沒有將此算法運(yùn)用地很好,近些年因?yàn)榛ヂ?lián)網(wǎng)的迅速發(fā)展,有了海量的信息供我們使用,協(xié)同過濾算法開始大展身手[4]。
協(xié)同過濾算法的主要思想是對(duì)于具有相同或相似的興趣愛好的用戶們,其中某一個(gè)用戶喜歡某一個(gè)物品,那么另一個(gè)用戶也可能會(huì)喜歡這個(gè)物品,則就將此物品推薦給后者。協(xié)同過濾算法大致可以通過三個(gè)步驟達(dá)到推薦效果:第一步,數(shù)據(jù)建模,構(gòu)建一個(gè)比較精確的用戶偏好模型;第二步,計(jì)算用戶間的相似度,生成目標(biāo)用戶的鄰居集合;最后一步是根據(jù)生成的鄰居集,產(chǎn)生TOP-N個(gè)推薦數(shù)據(jù)[5]。
一般來說,我們將協(xié)同過濾算法分類為基于用戶、基于項(xiàng)目以及基于模型的推薦算法這三種類型[6]。
(1)基于用戶的協(xié)同過濾推薦算法主要是通過計(jì)算用戶與用戶之間的相似度,將得到的相似度進(jìn)行大小排列后得到與目標(biāo)用戶喜好相似度最高的用戶,根據(jù)此相似度最高的用戶的喜好來為目標(biāo)用戶推薦其最有可能感興趣的物品。
(2)基于項(xiàng)目的協(xié)同過濾推薦算法主要是通過計(jì)算已評(píng)價(jià)項(xiàng)目和待遇測項(xiàng)目的相似度,將相似度作為權(quán)重,加權(quán)其他已評(píng)價(jià)項(xiàng)目的評(píng)價(jià)分?jǐn)?shù),得到預(yù)測項(xiàng)目的預(yù)測值。
(3)基于模型的協(xié)同過濾推薦算法主要是通過對(duì)用戶——項(xiàng)目評(píng)分矩陣進(jìn)行分析和數(shù)據(jù)挖掘后,建立目標(biāo)用戶的評(píng)分預(yù)測模型,根據(jù)目標(biāo)用戶的歷史評(píng)分?jǐn)?shù)據(jù)分析其興趣偏好,最后來對(duì)目標(biāo)用戶未評(píng)分的項(xiàng)目進(jìn)行評(píng)分預(yù)測。此算法可以適當(dāng)?shù)亟鉀Q推薦算法中的數(shù)據(jù)稀疏性和冷啟動(dòng)的問題[7]。
本文發(fā)型推薦的算法的實(shí)現(xiàn)主要分為以下幾個(gè)步驟:
輸入:輸入顧客——發(fā)型的評(píng)分矩陣R。
輸出:顧客i對(duì)未評(píng)分發(fā)型的預(yù)測評(píng)分S(i,h)。
(1)使用余弦相似度計(jì)算目標(biāo)顧客i與其他所有顧客的相似度 sim(i,Ua),i≠Ua,Ua∈U,U為所有顧客的集合。
(2)生成顧客 i的最近鄰居集合 Ni={N1,N2,N3,...,Nk},i不屬于 Ni。
(3)得到顧客i對(duì)未評(píng)分發(fā)型h的預(yù)測評(píng)分S(i,h)為:
其中Rˉi和Rˉu分別為顧客i和顧客u對(duì)所有發(fā)型的評(píng)分的平均分,R(u,h)是顧客 u對(duì)發(fā)型 h的評(píng)分。
算法的執(zhí)行流程如圖1所示。
本文中所有的信息數(shù)據(jù)獲取來自西華大學(xué)周圍的數(shù)十家理發(fā)店的顧客。設(shè)定用戶對(duì)每種發(fā)型的喜好程度為5分制,最喜歡為5分,最不喜歡為1分,男生不對(duì)女生發(fā)型做出評(píng)價(jià)或者女生不對(duì)男生發(fā)型做出評(píng)價(jià)以0分定義。在一個(gè)多月時(shí)間內(nèi),總共獲取到近300位顧客對(duì)20多種發(fā)型的喜好評(píng)分?jǐn)?shù)據(jù)。
圖1 推薦算法流程圖
在任何的一個(gè)推薦系算法中,都是根據(jù)用戶對(duì)某一些對(duì)象的偏好程度來為用戶產(chǎn)生推薦。因此,用戶偏好模型的構(gòu)造是推薦算法能否成功的關(guān)鍵[8]。推薦質(zhì)量的好與壞很大程度上取決于用戶偏好模型表示用戶偏好的能力。
用戶偏好模型的建立依賴于搜集到的用戶信息,這些信息的獲取方法主要包括顯示獲取和隱式獲取兩種[9]。顯示獲取主要是取決于用戶顯示的對(duì)一些商品的評(píng)價(jià)的高低來表達(dá)用戶的興趣;隱式獲取主要是用戶在網(wǎng)站上的一些行為如瀏覽時(shí)間、瀏覽頻率等來表達(dá)用戶的興趣。本文采取的是顯示獲取用戶興趣偏好的方法。
本文通過建立用戶——項(xiàng)目評(píng)分矩陣,對(duì)采集到的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行建模,將推薦系統(tǒng)表示為二維的顧客——發(fā)型評(píng)分矩陣R(U×H)。其中ui∈U為用戶集合,hj∈H為發(fā)型集合,矩陣中的元素rij∈R代表某一用戶對(duì)某一發(fā)型的評(píng)分。
對(duì)于協(xié)同過濾算法而言,如何計(jì)算目標(biāo)用戶與其他用戶之間的相似度是該算法的一個(gè)重點(diǎn)之處。一般的用戶相似度計(jì)算方法主要有余弦相似度、歐氏距離、皮爾森相關(guān)系數(shù)以及Jaccard距離等[10]。本文使用的是基于余弦相似度的算法,算法公式如下:
其中cos(θ)的值越接近1,就代表夾角越接近零度,也就是兩個(gè)向量越相似,即兩個(gè)用戶的興趣偏好相似度越高。舉例如下:
(1)首先從采集的數(shù)據(jù)中取一些數(shù)據(jù)定義一個(gè)顧客——發(fā)型評(píng)分的矩陣R,如表1。
表1
(2)接下來利用上述的公式(2)對(duì)矩陣R中的數(shù)據(jù)進(jìn)行運(yùn)算,得到矩陣Rcos,如表2。
表2
矩陣Rcos就是基于理發(fā)店顧客的相似度矩陣。
依據(jù)推薦算法,對(duì)每一個(gè)目標(biāo)用戶u最終都會(huì)產(chǎn)生一個(gè)根據(jù)相似度大小排列的鄰居集合Ni={N1,N2,N3,...,Nk},u不屬于 Ni,從 N1到 Nk表示用戶 u與鄰居用戶Ni的相似性大小的值從大到小的排列。
根據(jù)研究數(shù)據(jù)表明,鄰居集和大小k的取值會(huì)影響算法的精確度,k的取值過于大或者過于小都會(huì)影響到推薦的精確度,根據(jù)研究k的值一般為
推薦結(jié)果生成主要分為以下兩個(gè)步驟:
第一步是對(duì)目標(biāo)用戶的鄰居集即上述所說的集合Ni進(jìn)行搜尋,通過使用TOP-N方法選出排名靠前的n個(gè)用戶作為目標(biāo)用戶實(shí)際可供選擇的鄰居用戶。
第二步是根據(jù)相似度最高的鄰居用戶對(duì)某一物品的評(píng)分來預(yù)測目標(biāo)用戶可能的評(píng)分。
本文所有的實(shí)驗(yàn)數(shù)據(jù)均來自西華大學(xué)周圍的數(shù)十家理發(fā)店的顧客親身評(píng)分。從采集到的數(shù)據(jù)中拿出180名顧客的評(píng)分?jǐn)?shù)據(jù)作為訓(xùn)練集數(shù)據(jù),將剩余的95名顧客的評(píng)分?jǐn)?shù)據(jù)作為測試集來測試算法的準(zhǔn)確性。
為了驗(yàn)證推薦結(jié)果的好壞,本文采用平均絕對(duì)誤差MAE作為測評(píng)標(biāo)準(zhǔn)。平均絕對(duì)誤差通過計(jì)算目標(biāo)用戶的預(yù)測評(píng)分與實(shí)際的用戶評(píng)分這兩者之間的偏差來衡量預(yù)測的準(zhǔn)確性,MAE值越小,也就意味著推薦的效果越好,越符合目標(biāo)用戶的偏好。具體的公式如下:
其中N是用戶——項(xiàng)目矩陣中所有未評(píng)分的發(fā)型的數(shù)目。Pi是系統(tǒng)對(duì)發(fā)型i的評(píng)分預(yù)測值,Ti是顧客——發(fā)型評(píng)分矩陣中元素的值。MAE的值越小,則意味著該推薦系統(tǒng)預(yù)測目標(biāo)用戶的評(píng)分就越準(zhǔn)確。
實(shí)驗(yàn)結(jié)果表明:95個(gè)測試集用戶的平均MAE=0.49。測試結(jié)果較為滿意,因此,該算法可行性很高。因篇幅限制,表3列舉了10個(gè)測試集用戶的MAE。
表3 MAE值
針對(duì)當(dāng)下時(shí)代進(jìn)步,社會(huì)進(jìn)步,人們越來越注重自己的形象,所以導(dǎo)致發(fā)型行業(yè)飛速發(fā)展,各式各樣的發(fā)型層出不窮,大家不能很好地選擇一個(gè)自己喜歡的發(fā)型的情況,本文利用從理發(fā)店收集到的真實(shí)數(shù)據(jù)研究了基于協(xié)同過濾的發(fā)型推薦算法,通過對(duì)采集到的數(shù)據(jù)使用協(xié)同過濾算法進(jìn)行處理后,實(shí)現(xiàn)了對(duì)目標(biāo)用戶推薦符合其偏好的發(fā)型。實(shí)驗(yàn)結(jié)果表明,協(xié)同過濾算法可以應(yīng)用于發(fā)型推薦。下一步的工作是考慮到發(fā)型師的因素,每個(gè)顧客有自己的脾氣和性格,所以會(huì)更喜歡符合自己脾氣性格的發(fā)型師,接下來的工作就是實(shí)現(xiàn)為顧客推薦符合自己脾氣性格的發(fā)型師,并由此發(fā)型師來為顧客打造一個(gè)顧客自己喜歡的發(fā)型。