段華杰
隨著電子商務規(guī)模的不斷擴大,產品個數和種類的快速增長,顧客需要花費大量的時間才能找到自己想要的產品。這種瀏覽大量無關的信息和產品過程,無疑會降低顧客的用戶體驗。為了解決這些問題,個性化推薦系統(tǒng)應用而生。
個性化推薦系統(tǒng)是建立在海量數據挖掘基礎上的一種高級商務智能平臺,以幫距電子商務網站為其顧客購物提供完全個性化的決策支持和信息服務。個性化推薦根據用戶的興趣特點和購買行為,向用戶推薦用戶感興趣的信息和產品。
從廣義上說,推薦系統(tǒng)基于以下兩種策略[1]:
(1)基于內容的過濾(content-based filtering)策略。該方法為每個用戶或產品創(chuàng)建特征集來標記他們的特性。例如,一部電影的特征集可以包括電影的類型(愛情片、動作片、喜劇片、科幻片等)、導演、主演人員等。用戶的特征集包括性別、年齡、個人喜好、出生地點等。推薦系統(tǒng)根據這些特征集為每位用戶推薦匹配的產品?;趦热莸牟呗砸笙到y(tǒng)收集額外的產品信息和用戶信息,而用戶信息往往不易獲得,即使能夠獲得,也不一定真實,因此具有很大的局限性。
(2)協同過濾(collaborative filtering)策略。協同過濾(CF)策略不需要事先獲得產品或用戶的特征集,而僅依賴于用戶過去的行為(用戶對產品的歷史購買情況、對產品的顯式評分或隱式評分等)。協同過濾方法通過分析已經收集到的用戶-產品對的評分情況猜測未知的用戶-產品對的關聯性,從而給出個性化推薦。
協同過濾策略存在多種實現方式,其中鄰居模型(kNN)和潛在因子模型是兩大主要實現方法。鄰居模型又可以分為基于用戶的(user-based)鄰居模型和基于產品的(item-based)鄰居模型。在基于用戶的kNN模型中,用戶對產品的評價預測是基于與此用戶相似的用戶所給予的評分實現的。而兩個用戶的相似度可以通過他們對共同的產品的評價相似度獲得。
潛在因子模型(latent factor model)基于如下的假設:每個用戶與每件產品都可以由若干個特征因子描述,用戶與產品之間的聯系能夠通過兩組特征因子之間的相互作用產生。當一個用戶的特征剛好符合某件產品的特征時,我們認為該用戶會對產品給予很高的評分,反之亦然。
最近幾年,一些很成功的潛在因子模型的實現方式,都是基于矩陣分解(Matrix Factorization)模型的。矩陣分解模型中,每一件產品對應一個K維的向量,每一個用戶同樣對應一個K維向量。產品與用戶之間的關系能夠通過兩組向量的相關程度獲得。矩陣分解模型具有很好的可擴展性和預測精度,因此能夠很好的應用于現實產品推薦中。
產品推薦系統(tǒng)的運作是依賴于用戶提供的反饋信息的。反饋信息一般分為兩種:隱式反饋信息(如用戶的購買記錄、瀏覽記錄、鼠標點擊情況等)和顯式反饋信息(如用戶對產品的評分情況)。矩陣分解模型則能夠很好地結合隱式和顯式反饋信息。本文中僅考慮顯式反饋信息。
在基本矩陣分解模型中,每個用戶對應一個向量,每件產品也對應一個向量,假定K為向量的維數,同時也是潛在因子的個數。那么第u個用戶對第i件產品的評分預測可以表示為公式(1)
為了學習這些參數(和),我們可以通過最小化預測評分在驗證集上的均方誤差公式(2)
其中λ為懲罰因子。給定懲罰參數的目的是為了防止模型產生過度擬合。
最小化公式(2)有兩種方法:梯度下降法[2]和交替最小二乘法。一般情況下,梯度下降法能夠在短時間內獲得不錯的預測精度。交替最小二乘法某些場合能夠獲得更好的預測精度,但需要花費更長的計算時間。本文實驗中采用的是梯度下降法。
梯度下降法的實現方法大致如下:
首先,對每一個給定的訓練實例,算法預先給定rui的值(實驗發(fā)現預先給定的預測值并不影響最終結果)并計算預測值與實際值之差為公式(3)
然后,算法根據預測值與實際值之間的偏差調整iq與pu的參數,調整公式為公式(4)、(5)
其中γ為學習率,λ為懲罰因子。往往更小的學習率能夠獲得更好的預測精度,但同時需要更多的學習時間。加入懲罰因子的目的是為了防止模型產生過度擬合的情況。
基本矩陣分解模型主要捕捉到的是產品與用戶之間的作用關系,而并沒有考慮每個用戶與每件產品本身之間的差異性。例如,某些用戶對產品的評價普遍偏高,而某些用戶對產品的評價則普遍偏低。有些產品性價比很高,從而獲得更高的評價;而有些產品可能本身質量問題,從而獲得較差評價。
因此,很難僅僅通過qi、pu解釋所有的評分。我們可以在捕捉產品與用戶的相互關系之前消除上面提到的偏差,從而獲得基準預測,如公式(6)
其中μ為所有訓練集上的均值,bu和bi分別為用戶u和產品i在訓練集上相對于均值μ的偏差。
那么考慮偏差后的預測評分公式(7)
類似于基本矩陣分解模型,我們可以最小化訓練集上的均方誤差學習這些參數如公式(8)
同樣地,我們可以使用梯度下降法最小化公式(8)。
在上一節(jié)中,產品偏差bi和用戶偏差bu并沒有考慮時間效應,但在實際生活中,我們會發(fā)現用戶的喜好和產品的歡迎度均受時間的影響,如圖1所示:
描述的是Netflix電影評分系統(tǒng)隨著時間的推移,評分均值的變化情況。從該圖中可以看出,時間因子確實影響著系統(tǒng)評分。接下來,我們將在改進模型中加入時間因子,捕捉這些時間效應,從而獲得更好的預測結果。
考慮時間效應后,我們改寫公式(6),用戶u在時間tui對產品i的基準評分預測計算公式(9)
在該公式中,bi和bu的值在不同的時間點,所獲得的值是不同的。
Koren[3]認為,一件產品的歡迎程度一般不會在很短的時間內發(fā)生變化(在某些特殊情況下不適用,例如2003年非典時期食用醋的價格飆升)。因此,我們在捕捉產品的歡迎程度變化情況時,沒有必要捕捉每天的變化值。如果捕捉每天的變化值,不僅需要大量的存儲空間和計算量,而且會降低執(zhí)行效率。我們可以選擇一個固定周期(bin),周期的長短視具體產品類型而定。例如在Netflix電影評分系統(tǒng)中,用戶一般在周末對電影的評分較多,那么我們可以選擇周期為星期的倍數。實驗證明,按星期的倍數為周期劃分的效果比其他的劃分方式好。我們假設劃分的周期數為K,產品i在第k個周期獲得的評價得分均值為,那么我們可以給出bi(t)的計算公式(10)
wik的計算方法為公式(11)
為了防止過度擬合,需要修正的值公式(12)
α的值能夠通過交叉驗證(cross validation)獲得。那么最終bi(t)的計算公式為公式(13)
在計算考慮時間因素的ub時,我們不能夠簡單的套用計算ib的方法。其主要原因是:用戶對產品的評分除了相對穩(wěn)定的喜好外,受當天的情緒波動影響較大,如果簡單地將用戶對產品的評分劃分為一段一段的形式,將喪失用戶每天的情緒波動信息。
為了捕捉用戶喜好的變化,Koren提出了時間偏差(time deviation)的計算公式(14)
其中為用戶u的平均評分時間,表示時間t與之間間隔的天數,β的值能夠通過在驗證集上交叉驗證獲得。那么我們可以給出bu的計算公式(15)
公式(15)中并沒有考慮用戶每天的情緒波動信息,我們可以在公式(15)的基礎上加入評分日當天的偏差信息為公式(16)
我們可以給出一種簡單的計算utb的方法,如公式(17)
為了防止過度擬合,我們需要在公式(17)中加入懲罰因子,如公式(18)
α的值同樣可以通過交叉驗證的方式求得。
那么綜合前面的公式,我們給出計算uib的完整公式(19)
相應的,考慮時間效應后的的預測評分公式為:
類似于基本矩陣分解模型,我們可以最小化訓練集上的均方誤差學習這些參數:
同樣,我們可以選擇梯度下降法最小化公式(21)。
本文中實驗所用數據集為Netflix公司于2006年10月份對外發(fā)布的電影評分數據集。該數據集包括了從1999年12月31日到2005年12月31日的超過一億條評分。這些評分來自于480,000多位匿名用戶對17,770部電影的評分,每條評分包含了評分日期。在該數據集中,平均每部電影有5,600個評分,平均每個用戶評價了208部電影。本文中實驗結果的驗證均在Netflix公司發(fā)布的Probe set上進行,對預測結果的好壞評價采用的是均方根誤差(root mean squared error)方法。RMSE的計算公式(22)
Netflix數據集是在Netflix Prize競賽中發(fā)布的。Netflix Prize競賽的的目標是提升該公司的推薦系統(tǒng),其推薦效果須在Netflix公司使用的推薦系統(tǒng)Cinematch的基礎上改進10%(使用均方根預測誤差衡量)。Cinematch系統(tǒng)作為Netflix公司所使用的推薦系統(tǒng),在測試集(Probe set)上的RMSE值為0.9514。
本文實驗所用測試集與驗證集均使用Netflix于2006年發(fā)布的電影評分數據集,該數據集不僅數據量龐大,而且經過Netflix公司利用科學方法從真實的電影推薦數據庫中提出出來,從而能夠很好地模擬現實中的推薦系統(tǒng)。
本文分別實現了未考慮時間效應、加入電影的時間效應、加入用戶的時間效應后的基準評分預測結果,使用的公式如下:
不考慮時間效應:bui=μ+bi+bu,
加入電影的時間效應:bui=μ+bi(t)+bu,
加入用戶的時間效應:bui=μ+bi(t)+bu+αu.devu(t)+but。
表(1)給出了利用上面3個公式計算出來的預測偏差RMSE的值,如表1所示:
表1 加入時間效應前后的基準評分預測結果
從實驗結果給出的數據來看,考慮電影的時間效應后,預測誤差確實有所減少。而相對于電影的時間效應,用戶的時間效應對預測精度的影響則更大??紤]用戶的時間效應后,預測精度得到顯著提高。這也說明了用戶的偏好變化尤其是每天的情緒波動對電影的評分影響顯著。
如圖2所示:
圖2 MF、BMF、TBMF模型在netflix數據集上的RMSE變化圖
給出的是基本矩陣分解模型、未考慮時間效應的BMF模型和考慮了時間效應的TBMF模型應用梯度下降法給出的RMSE變化情況。圖中還給出了Netflix公司在該數據集上的RMSE值。
從圖2可以明顯看出,加入時間效應后的矩陣分解模型在Netflix電影數據集上獲得了更好地預測精度。
矩陣分解技術作為潛在因子模型的重要實現方式,在推薦系統(tǒng)中得到了很好的應用。由于基于該技術的矩陣分解模型具有很好的可擴展性,我們在基本矩陣分解模型中加入了具有時間效應的產品偏差和用戶偏差,成功地捕捉到了產品的評價偏移、用戶的喜好偏移和用戶每天的情緒波動對評分的影響??紤]了時間效應后,預測偏差明顯減小,預測精度顯著提高,從而獲得更好的推薦結果。
[1]Y.Koren,R.M.Bell,C.Volinsky.Matrix factorization techniques for recommender systems[J],IEEE Computer 42(8)(2009)30-37.
[2]B.Webb.Netflix update:Try this at home[EB/OL].http://sifter.org/-simon/journal/20061211.html,2006-12-11.
[3]Y.Koren.Collaborative Filtering with Temporal Dynamics[J].ACM Press,2009,pp.447-456.