李苗苗
(上海工程技術(shù)大學(xué) 管理學(xué)院,上海 201620)
?
個(gè)性化推薦及Slope One算法
李苗苗
(上海工程技術(shù)大學(xué) 管理學(xué)院,上海 201620)
針對(duì)個(gè)性化推薦問(wèn)題,Slope One算法具有關(guān)鍵性的作用,且是個(gè)性化推薦的重要算法。Slope One是屬于協(xié)同過(guò)濾推薦的一種形式,運(yùn)算簡(jiǎn)單、高效,但也存在一些問(wèn)題。文中介紹了標(biāo)準(zhǔn)Slope One算法、加權(quán)Slope One算法的事例和數(shù)學(xué)表達(dá)式,研究了在這兩種模型基礎(chǔ)上的優(yōu)化,通過(guò)研究匯總數(shù)理運(yùn)算過(guò)程。描繪了Slope One算法在現(xiàn)實(shí)生活中的應(yīng)用并進(jìn)行了推廣,展望了 Slope One算法發(fā)展前景。
個(gè)性化推薦;Slope One算法;協(xié)同過(guò)濾
隨著計(jì)算機(jī)技術(shù)的發(fā)展,網(wǎng)購(gòu)成為一種趨勢(shì),人們的日常活動(dòng)開(kāi)始從線下轉(zhuǎn)移到線上,各種社交網(wǎng)絡(luò)不斷涌現(xiàn),信息大爆炸使得人們對(duì)商品的了解變得模糊、對(duì)商品的關(guān)注失去了焦點(diǎn),而商家為了提高利潤(rùn)、縮減成本,開(kāi)始提供各樣的個(gè)性化推薦。個(gè)性化推薦采用的算法是根據(jù)用戶購(gòu)買記錄、用戶偏好形成評(píng)分,依照評(píng)分高低推薦目標(biāo)產(chǎn)品[1],基于計(jì)算機(jī)進(jìn)行各種算法從而實(shí)現(xiàn)精準(zhǔn)推薦。在這些算法中,代表性算法有3種[2]:基于內(nèi)容推薦、基于協(xié)同過(guò)濾推薦和混合推薦,如圖1所示。
圖1 推薦算法分類
這3種推薦算法具有不同的特點(diǎn),應(yīng)用的場(chǎng)合也有所差異,具體如表1所示。
表1 推薦算法及特點(diǎn)
在這3種推薦算法中,具體的操作算法又有所差異,本文重點(diǎn)介紹Slope One算法。Slope One算法屬于協(xié)同過(guò)濾推薦算法[3](Collaborative Filtering,CF)的一種,算法簡(jiǎn)單且運(yùn)算效率高,可擴(kuò)展性好[4],但仍然存在問(wèn)題,例如稀疏性和物品噪聲[5],且依賴于大量用戶對(duì)預(yù)測(cè)物體的評(píng)分,用戶數(shù)量減少、忽略用戶偏好等都將直接影響預(yù)測(cè)結(jié)果[6]。
Slope One算法于2005年由Daniel Lemire教授提出,基于Item-Based的協(xié)同過(guò)濾推薦算法[7],基本思想是應(yīng)用平均值來(lái)進(jìn)行預(yù)測(cè),根據(jù)已有評(píng)分和偏好的平均值來(lái)預(yù)測(cè)用戶對(duì)新物品的偏好值,其原理是兩個(gè)物品的偏好值之間存在某種線性關(guān)系,形如f(x)=x+b的線性函數(shù),可以由物品x的偏好值估算出用戶對(duì)新物品的偏好值f(x),而計(jì)算兩兩物品之間的平均偏好值 成為計(jì)算關(guān)鍵[8]。
1.1 標(biāo)準(zhǔn)Slope One算法
圖2 算法演示
在圖2演示算法中,事例1中使用者A對(duì)物體1、2的評(píng)分為5、4,由此可以推測(cè)使用者B對(duì)物體2的評(píng)分為:3+(4-5)=2;
在事例2中,有3個(gè)使用者,缺少使用者B對(duì)物體2的評(píng)分,Slope One算法采用平均數(shù)來(lái)推斷,那么平均差值為
可以推測(cè)使用者B對(duì)物體2的評(píng)分為3-0.5=2.5。那么在個(gè)性化推薦過(guò)程中,根據(jù)消費(fèi)者偏好和評(píng)分決定是否推薦、推薦何種商品。
將上述過(guò)程進(jìn)行數(shù)理模型構(gòu)建,可得Slope One算法的計(jì)算過(guò)程如下:給定兩個(gè)物體i和j(i≠j)偏差計(jì)算devij
(1)
已有評(píng)分是基礎(chǔ),rui、ruj是已知評(píng)分;|Si,j|代表評(píng)分的數(shù)量;具體表達(dá)就是rui表示用戶u對(duì)物體i的評(píng)分;Sij表示同時(shí)對(duì)物體i和j(i≠j)有評(píng)分的用戶集合;|Si,j|表示用戶集合Si,j中用戶的數(shù)量。得到物體i和j(i≠j)之間的偏差devij后,用戶u即可對(duì)物體i進(jìn)行預(yù)測(cè),預(yù)測(cè)公式preui為
(2)
其中,在式(2)中,S(u)表示用戶u所評(píng)分的所有物體的集合;S(u)-{i}表示集合中至少有一個(gè)物體與物體i同時(shí)被用戶u評(píng)分的物體集合。
1.2 加權(quán)Slope One算法
在現(xiàn)實(shí)生活中,多個(gè)用戶情況下,分配的權(quán)重有所不同。事例3:假設(shè)有1 000個(gè)用戶對(duì)物體1和物體2都打過(guò)分,另外有100個(gè)用戶對(duì)物體2和物體3也打過(guò)分,顯然這兩個(gè)評(píng)分差的權(quán)重是不一樣的。具體的計(jì)算方法如下
而根據(jù)事例3,加權(quán)的Slope One算法的具體公式如下
(3)
在式(3)中,|Sij|表示共同評(píng)論物體i和j(i≠j)的用戶個(gè)數(shù)。
用戶也可以對(duì)條目的厭惡程度打分,使用雙極Slope One算法(BI-polar Slope One)[9]。這是3種基本的Slope One算法,在此基礎(chǔ)上,學(xué)者從不同角度進(jìn)行了算法改進(jìn)。
以下對(duì)Slope One算法進(jìn)行改進(jìn)比較,分為兩方面進(jìn)行。通過(guò)性能對(duì)比,了解其運(yùn)算過(guò)程[10]。文章給出的順序一般為評(píng)分處理差異—評(píng)分處理公式,最后代入總公式表達(dá),便于理解改進(jìn)優(yōu)化的切入點(diǎn)和處理方式,Slope One算法基本思路保持不變。
2.1 基于標(biāo)準(zhǔn)Slope One的改進(jìn)
在最小二乘法的基礎(chǔ)上進(jìn)行優(yōu)化[11],采用已有評(píng)分和預(yù)測(cè)評(píng)分之間的殘差最小來(lái)使得預(yù)測(cè)評(píng)分接近已有評(píng)分。在式(4)中 表示用戶對(duì)物體 的已有評(píng)分
(4)
采用梯度下降法來(lái)確定最合適的wij,具體處理過(guò)程如式(5)所示
if:?j∈S(u)-{i}
wij←wij+α×(eui×devij)
(5)
在式(5)中,eui為預(yù)測(cè)偏差,eui=rui-pui,rui表示已有評(píng)分;pui表示預(yù)測(cè)評(píng)分。α選取需要通過(guò)交叉驗(yàn)證,可以通過(guò)反復(fù)試驗(yàn)來(lái)確定其取值
(6)
在式(6)中,wij=1即為標(biāo)準(zhǔn)Slope One算法,改進(jìn)之處在于已有評(píng)分和預(yù)測(cè)評(píng)分的偏差力求最小,實(shí)現(xiàn)優(yōu)化。
2.2 基于加權(quán)Slope One的改進(jìn)
2.2.1 最小二乘法
在最小二乘法基礎(chǔ)上進(jìn)行優(yōu)化[11],將wij因子視為衡量物體i與物體j的評(píng)分差異度的指標(biāo),力求已有評(píng)分和預(yù)測(cè)評(píng)分的差距最小。初始wij在式(7)中采用最小二乘法確定
(7)
采用梯度下降法來(lái)確定最合適的wij,具體處理過(guò)程如式(8)所示
if:?j∈S(u)-{i}
(8)
最后代入式(9)Slope One算法中,求出預(yù)測(cè)值
(9)
2.2.2 多項(xiàng)式有限混合模型
在多項(xiàng)式有限混合模型的基礎(chǔ)上進(jìn)行的改進(jìn)[12],聚類算法對(duì)用戶評(píng)分行為進(jìn)行了聚類,根據(jù)評(píng)分將具有相似偏好的用戶進(jìn)行了整合,增加行為相似評(píng)分的權(quán)重,在現(xiàn)實(shí)生活中如同一個(gè)社交平臺(tái)上的用戶,對(duì)Slope One算法進(jìn)行聚類優(yōu)化。具體的過(guò)程如下
(10)
最后,代入加權(quán)Slope One算法如式(11)所示,進(jìn)行預(yù)測(cè)偏好從而推薦
(11)
在求平均偏差的過(guò)程中加入了行為歸屬概率的權(quán)重,以實(shí)現(xiàn)算法改進(jìn)、優(yōu)化。
2.2.3 聚類推薦算法
(12)
根據(jù)最近鄰居評(píng)分情況如式(13),對(duì)未評(píng)分物體進(jìn)行評(píng)分預(yù)測(cè)
(13)
2.2.4 項(xiàng)目語(yǔ)義相似度
柴華,劉建毅[13]認(rèn)為改進(jìn)分為3種:數(shù)學(xué)建模修正結(jié)果、純數(shù)學(xué)理論優(yōu)化用戶—項(xiàng)目新生成的優(yōu)化矩陣、項(xiàng)目相似;在評(píng)分處理過(guò)程中,依據(jù)項(xiàng)目相似度與奇異值分解提出了優(yōu)化,保留盡可能多的評(píng)分信息,從而提高非稠密數(shù)據(jù)集下的準(zhǔn)確率性能。具體運(yùn)算過(guò)程為
(14)
其中,Eui和Euj為評(píng)分矩陣中第u行第i,j列的元素值;Ei和Ej是第i,j個(gè)列向量中每個(gè)元素的算數(shù)平均值。
在項(xiàng)目語(yǔ)義相似度基礎(chǔ)上,在式(15)中設(shè)j為用戶ui的未評(píng)分物體,則計(jì)算基于物體相似度的預(yù)測(cè)評(píng)分如下
(15)
物體語(yǔ)義相似度這兩種模型計(jì)算出的用戶i對(duì)物體j的預(yù)測(cè)評(píng)分。λ表示兩種方法在最終結(jié)果中所占的權(quán)重,可以根據(jù)對(duì)物體j評(píng)過(guò)分的人數(shù)占全部用戶人數(shù)的百分比進(jìn)行調(diào)節(jié),也可以直接指定一個(gè)固定值。
最終加權(quán)推薦公式為
(16)
其他的改進(jìn),如李映[14]也從改進(jìn)了相似度計(jì)算方法和混合推薦算法進(jìn)行了對(duì)比,得出了混合協(xié)同過(guò)濾法具有良好的質(zhì)量,值得推薦。筆者認(rèn)為可以嘗試著應(yīng)用到Slope One算法中。
2.3 改進(jìn)匯總
改進(jìn)方式的著手點(diǎn)為權(quán)重的調(diào)整和物體評(píng)分測(cè)定的數(shù)理模型完善,對(duì)于Slope One算法的改進(jìn)各有優(yōu)缺點(diǎn),都在原有算法的基礎(chǔ)上提高了精準(zhǔn)性和適應(yīng)性,緩解了數(shù)據(jù)的稀疏性問(wèn)題、增強(qiáng)了系統(tǒng)的擴(kuò)展性、提高了預(yù)測(cè)精度等,值得進(jìn)一步考慮的是推薦動(dòng)態(tài)性問(wèn)題、方法的選取、組合的順序、權(quán)重的分配、數(shù)據(jù)的規(guī)模、模型的適用性等系列問(wèn)題[15]。改進(jìn)部分為評(píng)分處理過(guò)程。
將Slope One算法具體推廣到現(xiàn)實(shí)應(yīng)用中的研究有,楊凌云[4]將其應(yīng)用于圖書推薦系統(tǒng),應(yīng)用了加權(quán)優(yōu)化的方法,根據(jù)瀏覽次數(shù)和購(gòu)買結(jié)果進(jìn)行了評(píng)分,進(jìn)行了Slope One算法和優(yōu)化后算法對(duì)比,得出了增加實(shí)時(shí)計(jì)算評(píng)分偏差矩陣和基于預(yù)測(cè)評(píng)分可靠性加權(quán)有利于優(yōu)化結(jié)果。吳志強(qiáng)[16]將其應(yīng)用到構(gòu)建了數(shù)字圖書館個(gè)性化信息推薦模型之中。
劉亞?wèn)|[17]將Slope One算法應(yīng)用到了移動(dòng)終端推薦,根據(jù)用戶在各板塊瀏覽時(shí)間和次數(shù)加權(quán)作為評(píng)分,將評(píng)分?jǐn)?shù)據(jù)匯總向用戶推薦所偏好的板塊和內(nèi)容。馬騰騰[18]基于項(xiàng)目協(xié)同過(guò)濾對(duì)Slope One進(jìn)行了優(yōu)化,應(yīng)用于旅游景點(diǎn)推薦之中,根據(jù)景點(diǎn)評(píng)分記錄進(jìn)行了推薦。在就業(yè)推薦過(guò)程中也可以使用Slope One算法,劉順文[8]進(jìn)行了個(gè)性化就業(yè)推薦,依據(jù)用戶的歷史評(píng)分記錄和計(jì)算就業(yè)信息之間的平均偏好值差異、相似矩陣從而預(yù)測(cè)偏好值。
根據(jù)這些應(yīng)用,歸納出推廣應(yīng)用的一般步驟:
步驟1 確定評(píng)分指標(biāo)體系和預(yù)測(cè)對(duì)象;
步驟2 評(píng)分指標(biāo)體系的處理過(guò)程,這部分就是學(xué)者在反復(fù)改進(jìn)、優(yōu)化之處,在處理過(guò)程中有所差異;
步驟3 代入標(biāo)準(zhǔn)Slope One算法或加權(quán)Slope One算法。得出預(yù)測(cè)偏好值,進(jìn)行推薦。
關(guān)于評(píng)分的指標(biāo)選取問(wèn)題的探究,對(duì)于用戶的偏好進(jìn)行更精準(zhǔn)的推測(cè),項(xiàng)目偏好信息復(fù)雜且多變,在今后的Slope One算法運(yùn)算中可以加入用戶的社交關(guān)系、人際網(wǎng)絡(luò)、情感訴求等因素,更加精準(zhǔn)的推薦。
Slope One算法在不斷的改進(jìn),如何將改進(jìn)的優(yōu)點(diǎn)結(jié)合起來(lái)形成有效的工具,如何結(jié)合現(xiàn)實(shí)問(wèn)題,開(kāi)發(fā)合理的推薦系統(tǒng),具有普遍性和應(yīng)用性的價(jià)值,而不僅僅是數(shù)理推算的不斷變化,值得學(xué)者繼續(xù)探究。
[1] 鄭丹,王名揚(yáng),陳廣勝.基于Weighted-slope One的用戶聚類推薦算法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016(4):51-55.
[2] 孫魯平,張麗君,汪平.網(wǎng)上個(gè)性化推薦研究述評(píng)與展望[J].外國(guó)經(jīng)濟(jì)與管理,2016(6):82-99.
[3] 王鵬,王晶晶,俞能海.基于核方法的User-Based 協(xié)同過(guò)濾推薦算法[J].計(jì)算機(jī)研究與發(fā)展,2013,50(7):1444-1451.
[4] 楊凌云.基于Slope One算法的圖書推薦系統(tǒng)優(yōu)化[J].電腦知識(shí)與技術(shù),2015(4):79-81.
[5] 弭真真.推薦系統(tǒng)中協(xié)同過(guò)濾算法的研究及應(yīng)用[D].杭州:浙江大學(xué),2012.
[6] 王毅,樓恒越. 一種改進(jìn)的Slope One協(xié)同過(guò)濾算法[J]. 計(jì)算機(jī)科學(xué),2011(S1):192-194.
[7] Lemire D, Maclachlan A. Slope one predictors for online rating-based collaborative filtering[C].Altlanda:Proceeding of SDM,2005.
[8] 劉順文.改進(jìn)Slope One算法在個(gè)性化就業(yè)推薦系統(tǒng)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2016(12):84-85,87.
[9] 李朝陽(yáng).基于Slope One算法的協(xié)作過(guò)濾個(gè)性化推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2010.
[10] 袁自月,楊國(guó).MUSIC算法的性能比較[J].電子科技,2014,27(7):19-22.
[11] 張玉連,郇思思,梁順攀.融合用戶相似度與項(xiàng)目相似度的加權(quán)Slope One算法[J].小型微型計(jì)算機(jī)系統(tǒng),2016(6):1174-1178.
[12] 陳平華,王旭彬,洪英漢.基于多項(xiàng)式有限混合模型的Slope One算法改進(jìn)[J].計(jì)算機(jī)工程與科學(xué),2016(4):761-767.
[13] 柴華,劉建毅.一種改進(jìn)的slope one推薦算法研究[J].信息網(wǎng)絡(luò)安全,2015(2):77-81.
[14] 李映,李玉龍,王陽(yáng)萍,等.一種改進(jìn)的混合協(xié)同過(guò)濾推薦算法[J].電子科技,2016,29(4):45-48.
[15] 陳潔敏,湯庸,李建國(guó),等.個(gè)性化推薦算法研究[J].華南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2014(5):8-15.
[16] 吳志強(qiáng),王義翠,馬慧娟.協(xié)同信息推薦:一種數(shù)字圖書館個(gè)性化信息服務(wù)新模式[J].圖書館,2011(1):45-47.
[17] 劉亞?wèn)|,何利力,高金標(biāo).基于Slope One的移動(dòng)終端推薦算法研究[J].工業(yè)控制計(jì)算機(jī),2016(2):107-108.
[18] 馬騰騰,朱慶華,曹菡,等.基于Hadoop的旅游景點(diǎn)推薦的算法實(shí)現(xiàn)與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016(3):47-52.
Personalized Recommendation and Slope One Algorithm
LI Miaomiao
(School of Management,Shanghai University of Engineering Science,Shanghai 201620,China)
Aiming at the problem of personalized recommendation, Slope One algorithm has the key role, and it is an important algorithm of personalized recommendation. Slope One is a form of collaborative filtering recommendation, the operation is simple and efficient, but there are some problems. Examples and the mathematical expressions of standardized and weighted Slope One algorithm are introduced in this paper; then this paper studies the optimization on the base of these two models. The research summaries mathematical computation process. The paper puts forward the application of Slope One algorithm in real life and has carried on the promotion. Finally it points out the Slope One algorithm development prospects.
personalized recommendation; Slope One algorithm; collaborative filtering
10.16180/j.cnki.issn1007-7820.2016.12.027
2016- 07- 24
2016上海高校市場(chǎng)精品課程資助項(xiàng)目(A1-8908-16-010302)
李苗苗(1991-),女,碩士研究生。研究方向:企業(yè)管理。
TP39
A
1007-7820(2016)12-097-04