推薦系統評價標準

當你的推薦系統搭建完畢之後,你最想了解的可能就是這個系統的效果如何?對於電商系統來說,推薦系統能夠帶來多大的轉化率?對於提供音樂、電影、資訊服務的網站來說,推薦系統推薦給用戶的東西有多少是用戶真正喜歡的,並且使用了的?

如果一個智能系統的智能程度很弱的話,對於工業界來說,完全可以不用智能系統。假象你推薦給用戶的東西效果很差的話,還不如推薦給用戶一些比較hot的東西。

那麼,如何來評價一個推薦系統的效果呢?

(1)Accuracy

準確性是一個可以量化的指標,在學術界,評價一個推薦系統最重要的指標就是看看你預測的分數和真實的分數之間的誤差有多大。一般的做法是將你拿到的數據集分爲兩組,training set和 testing set,兩者的比例一般是4:1(或者隨便自己定,但訓練集明顯要多於測試集)

然後你可以用平均誤差MAE或者誤差的平方RMSE來計算推薦系統的準確性。

通過計算準確性,可以不斷調試推薦系統的各種參數,比如PureSVD方法中的要保留的矩陣維數k,比如Latent Factor Model中gradient desent 算法中的下降因子等等諸多參數。

對於在工業界的應用來說,轉化率一個比較實在的指標。在商城系統中,系統爲顧客推薦的產品有多少轉化成了顧客的購買行爲時他們最最關心的。在音樂,電影,資訊服務的網站中,系統爲用戶推薦的音樂,電影,資訊有多少被用戶點擊並且表達出一種喜歡的態度。(不管是用戶顯式地告訴系統他喜歡,還是系統通過挖掘用戶的行爲分析得到他喜歡)

(2)Diversity

在一個智能web應用中,推薦系統不僅僅基於一種算法,而是多種算法混合起來使用。(混合推薦技術總結:http://somemory.com/myblog/?post=16

不同的算法由於機理不同,產生的結果必然不同,然而每個算法都有自己的特點,推薦出的產品的特點也是非常鮮明的。比如,user-based cf 會推薦出和你有相同品位的人喜歡的產品,item-based cf會推薦給你和你喜歡的產品非常相似的產品,Latent Factor Model可以充分地考慮用戶評分矩陣中的missing value,也就是說這個模型可以挖掘用戶的隱性反饋行爲,換句話說把矩陣中缺的值也可以利用起來。

因此,在推薦的結果列表中往往會參雜各種算法推薦出來的結果,而不是隻是單調的與您喜歡的產品非常類似的產品。就像你表示過喜歡射鵰英雄傳,系統永遠給你推薦的是鹿鼎記,天龍八部,這些結果都太單調了,如果系統可以給這個用戶推薦出得分非常高的其他種類的item將會讓用戶覺得非常surprise。

(3)Ability to surprise

推薦系統有一個比較好聽的名字叫做猜你喜歡(或者您可能會喜歡)。

如果你猜對了用戶喜歡的東西就會給用戶帶來非常棒的用戶體驗,會覺得你這個系統非常的智能和神奇。

說是猜,其實還是計算和挖掘。

多樣的推薦結果會更大概率的給用戶surprise。

(4)Explain Ability

系統爲什麼推薦給我這個呢?這是用戶常常思考的問題。

所以一個好的推薦系統,必須給用戶一個推薦的理由,不然用戶會覺得非常的詫異,懷疑你的系統是不是瞎猜。

比如,在Amazon上經常會看到這樣的話:

您瀏覽過XXX,查看此商品的顧客也查看了XXX XXX  XXX

根據瀏覽記錄爲您推薦:XXX  XXX XXX

一個好的解釋,可以更加讓用戶信服你的推薦結果,從而認同你的網站。

(5)Computational efficiency

一個系統運行的優劣,結果是一個重要的因素,但效率也是一個非常重要的因素。

效率可以理解爲時間效率和空間效率。

但如果讓我給這兩個因素按重要程度排序的話,我會覺得結果更加重要。

因爲你的結果很差,還不如不要這個推薦系統了,這時候也就沒有效率什麼事兒了。

推薦系統分爲線上系統和線下系統。

一般線下系統會把各種矩陣分解,user之間的相似度,item之間的相似度,用戶的預測評分計算好。

然後直接將離線系統計算好的預測評分和對應的item放到線上系統,過濾掉用戶明顯不喜歡的(這個可以通過反饋系統或者用戶行爲分析得到。),然後按分數降序輸出。

考慮到推薦結果的Diversity和Ability to surprise,將不同算法計算出的結果各推薦幾個給用戶,並且儘量推薦以前沒有推薦過的。(或者說盡量可以讓用戶在一段時間內看到不太相同的推薦結果。)

這裏,推薦系統的速度主要體現在離線系統的計算上,item-based cf和content-based在這方面表現得非常好,在短期內,計算好一次結果就可以一直用,有點“一勞永逸”的意思。但user-based cf則相對差一些,需要你很頻繁地計算用戶的相似度矩陣,非常費時。

說到空間的效率,原始數據、中間結果以及最後的結果的存儲都是一些問題。

對於原始數據來說,用戶的評分矩陣是個非常稀疏的矩陣,大部分是0。如何存儲和讀取稀疏矩陣也是個關乎效率的問題。

對於中間結果,user相似度矩陣,item相似度矩陣,item-tag矩陣,svd分解後的矩陣,或者一般的矩陣分解方法產生的矩陣都是需要佔掉大量的空間,有的甚至是內存空間。

對於最後的結果,解決起來還是比較容易的。

所以一個推薦系統的好壞,還是要顧及到算法的計算速度和產生的結果和中間結果的存儲和讀取等等效率方面的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章