前言:
上個月公司的同事提議組內做幾次關於數據挖掘的技術串講交流下學習和工作經驗,本着提攜新人的考慮,建議博主也講點什么。開始時博主想簡單講一講推薦算法的協同過濾算法。后來考慮到其實串講不僅僅是和其他人交流分享,也是對自己已有知識的鞏固。想一想還是加點挑戰,談談推薦系統吧^_^。為什么選推薦系統呢,原因有三個:
1.人們在網絡中經常接觸推薦,講起來例子多,人們不陌生;
2.原理比較簡單,不需要學習者有高超的數學基礎;
3.這個領域是博主最先接觸的數據挖掘領域^_^。
博主第一次接觸推薦系統的學習是在林老師的《文本挖掘與搜索引擎》的課上,課上他向我們推薦項亮編著的《推薦系統實踐》,雖然期末的大作業博主被分到了QA組(注:這里的QA不是質量保證而是問答系統),但博主拜讀了這本書,感覺受益頗多,之后和直博北大的學霸大白弄了個簡陋的基於社交網絡的好友推薦系統,當時也不會什么Hadoop、Spark什么的,我們倆全程手撕代碼,雖然效果和效率都不好但加深了對推薦系統的了解,這樣看來手撕代碼或許對學習幫助比較好吧(寫到這里博主想起了一天下午和大白敲完碼,大白興致勃勃拉着博主去爬學校后面的牛角山,博主爬一半沒了力氣,上不去也下不來的可怕回憶)。
一、什么是推薦系統
設想一下這個情景:
中國男足在世界杯預選賽上一路高歌猛進,有殺入世界杯之勢。過幾天晚上有場關鍵的比賽,你考慮到要盡情享受足球之夜,看球時嘴不能閑着,還需要買點零食邊看球邊吃。這里你有三個選擇:
-
到樓下的小超市或便利店買零食。你飛快的走到零食貨架,從十幾種零食中選了一種你愛吃的。
-
去離你最近的大超市家樂福買零食。家樂福有三層,有上千種商品在出售,你蒙了,還好漂亮的店員小姐告訴你,你需要的零食在二樓的零食區的非膨化食品貨架有賣。
-
作為一個宅男,你怎么可能下樓去買東西,你機智的拿出手機,打開淘寶,淘寶上有無數的商品出售,即使在分類的零食區也有數不盡的網頁,還好你很機智,在搜索欄輸入了你想要的零食,馬上你找到你想要的零食,江浙滬包郵,你所在的地區不包郵,預計下周日到達,你怒了。
上面三個例子對應着信息量的發展,隨着互聯網時代的到來,信息從匱乏的狀態變成了過載的狀態。當信息很少時(小賣鋪),我們只憑經驗瀏覽就可以得到我們想要的信息;當信息增加時(大超市),我們無法一一瀏覽信息找出我們想要的,這時就出現了門戶分類網站(雅虎等);到了信息過載時(電子商務網站),分類已經無法讓我們快捷的獲取信息了,這時就出現了搜索引擎(谷歌等)。
但僅僅有搜索引擎就夠了嗎?上訴例子是在用戶有明確的目標的條件(買某個品牌的零食)下完成的。但在用戶沒有明確目標時(比如晚上沒啥事想隨便找部電影看看),搜索引擎就顯得捉襟見肘了。
在這個數據過載的時代,信息的消費者需要從海量的信息中找到自己所需要的信息,信息的生產者要讓自己生產的信息在海量的信息中脫穎而出,這時推薦系統就應運而生了。對用戶而言,推薦系統不需要用戶提供明確的目標;對物品而言,推薦系統解決了2/8現象的問題(也叫長尾效應),讓小眾的物品可以展示到需要它們的用戶面前。
在我們生活中,推薦系統應用十分廣泛,比如:電子商務,視頻與音樂網站、社交網絡、廣告等等。同時推薦系統中的各種預測算法還能應用到其它不同的領域。
二、什么是好的推薦系統
回答什么是好的推薦系統之前先拋出一個問題:好的推薦系統是不是等於作出准確預測的推薦系統?
我們回到買零食的情景,假如你沒有去淘寶購買零食而是去了另一個網站,這個網站用了一套高超的推薦算法算出了此時此刻的你想要買某個品牌的零食(比算命的都厲害),當你打開應用的一剎那,就把這個品牌的零食呈現在你眼前,你在驚訝的同時,欣然的下單。那么這個網站的推薦系統是不是一個好的推薦系統呢?答案可能會讓你驚訝。不是!原因是用戶在之前已經有了明確的目標要買某種零食,這套推薦系統可能會增加用戶的體驗,但除此之外並沒有給網站帶來多大的利益,因為即使沒有這套推薦系統,用戶也會通過網站的搜索引擎來找到這種零食並購買,,有沒有這套推薦系統網站的收入都是一樣的(當然這套系統提高了用戶體驗可能會讓用戶更傾向使用這個網站,收入還是有所提升的)。而另一套推薦系統在你買零食時向你推薦了一款啤酒,你突然想到“看球不喝啤酒咋行”,你欣然買下了這款啤酒。這個推薦就好於上一個。因為用戶本來沒有買啤酒的計划,但看了推薦后購買了啤酒,網站通過這個推薦多賺了一單。
推薦系統的評價指標有很多,項亮的《推薦系統實踐》給出了以下指標:
-
用戶滿意度
也就是加完這套推薦系統后用戶的的滿意度,這個指標可以通過用戶調查問卷等形式得到,但值得注意的一點是獲得指標的方式方法也有可能降低用戶的滿意度。
-
預測准確率:
就是我們預測結果的准確度。一般情況下在TopN預測時我們計算召回率和准確率;在評分等預測時用MAE或RMSE
-
覆蓋率:
代表推薦的事物對全部事物的覆蓋情況,可以用來判斷推薦系統是否有馬太效應。馬太效應是出自《聖經 馬太福音》的一個典故,社會學中的一種強者越強弱者越弱的現象,也就是說推薦系統是否會使被關注的事物更加被關注,被忽視的事物更加被忽視。常用的協同過濾就有馬太效應。比較簡單的測試指標就是信息熵。
-
多樣性:
判斷推薦結果是否覆蓋用戶各個興趣點
-
新穎性:
例如不應該推薦用戶已經看過的電影等,應該多推薦給用戶用戶不知道的商品。記得當時林教授舉了一個例子,一個朋友買了5L的洗衣液,應該幾個月都不需要洗衣液了,但那個電子商務平台(不說是哪個了)還是想推薦洗衣液,這就是一個新穎性不夠的推薦。假如用戶買了一台電腦,新穎性高的推薦是向他推薦一些外設,而不是另一台電腦。
-
驚喜性:
用戶對推薦的商品之前沒有興趣,但用過之后很滿意。
-
信任性:
這個是網站運營方面的,推薦是不是受用戶信任,例如用戶相比百度搜索的推廣推薦更信任淘寶網的商品推薦
-
健壯性:
是否能承受住攻擊和刷分(就是使用一些手段使自己的商品優先被推薦)等現象
-
商業目標:
該推薦系統上線后商業目標完成情況,如業績提升、銷量增加等等
這篇文章向大家介紹了什么是推薦系統,推薦系統的產生原因和推薦系統的一系列評價指標也可以說是推薦系統的目標。接下來的幾篇文章,可能會介紹用戶行為數據和協同過濾。