一瘸彤、好的推薦系統(tǒng)
1.什么是推薦系統(tǒng)
從某種意義上說,推薦系統(tǒng)和搜索引擎對于用語來說是兩個互補(bǔ)的工具。搜索引擎滿足了用戶有明確目的時的主動查找需求润梯,而推薦系統(tǒng)能夠在用戶沒有明確目的的時候幫助他們發(fā)現(xiàn)感興趣的內(nèi)容。
分為社會化推薦,基于內(nèi)容的推薦和基于協(xié)同過濾的推薦纺铭。
2.個性化推薦系統(tǒng)的應(yīng)用
推薦系統(tǒng)應(yīng)用都是由前臺的展示頁面抒和,后臺的日志頁面,以及推薦算法系統(tǒng)組成彤蔽。
音樂推薦如下特點(diǎn):
- 物品空間大
- 消費(fèi)每首歌的代價很小
- 物品種類豐富
- 聽一首歌耗時很少
- 物品重用率很高
- 用戶充滿激情
- 上下文相關(guān)
- 次序很重要
- 很多播放列表資源
- 不需要用戶全神貫注
- 高度社會化
目前廣告投放的技術(shù)主要分三種:
- 上下文廣告
- 搜索廣告
- 個性化展示廣告
好的推薦系統(tǒng)不僅僅能夠準(zhǔn)確預(yù)測用戶的行為摧莽,而且能夠擴(kuò)展用戶的視野,幫助用戶發(fā)現(xiàn)那些題目可能會感興趣顿痪,但卻不那么容易發(fā)現(xiàn)的東西镊辕。
3.推薦系統(tǒng)實(shí)驗(yàn)方法
- 離線實(shí)驗(yàn):用戶日志(訓(xùn)練集,測試集)
- 用戶調(diào)查:優(yōu)點(diǎn)風(fēng)險低蚁袭,出現(xiàn)錯誤容易彌補(bǔ)征懈,缺點(diǎn)是招募代價大
- 在線實(shí)驗(yàn):把用戶分組,不同組不同算法揩悄,切分流難度大
評分預(yù)測的預(yù)測準(zhǔn)確度一般通過均方根誤差(RMSE)和破軍絕對誤差(MAE)計(jì)算卖哎。(公式見課本25頁)
假設(shè)我們用records存放用戶評分?jǐn)?shù)據(jù),令records[i]=[u,i,rui,pui]删性,其中rui是用戶對物品i的實(shí)際評分亏娜,pui是算法預(yù)測出來的用戶u對物品i的評分,那么下面的代碼分別實(shí)現(xiàn)了RMSE和MAE的計(jì)算過程:
def RMSE(records):
return math.sqrt(sum([rui-pui]*(rui-pui) for u,i,rui,pui in records)/float(len(records)))
def MAE(records):
return sum([abs(rui-pui) for u,i,rui,pui, in records])/float(len(records))
Netflix認(rèn)為RMSE加大了對預(yù)測不準(zhǔn)的用戶物品評分的懲罰蹬挺,因此更加苛刻维贺。研究表明,對預(yù)測結(jié)果取整會降低MAE的誤差
TopN推薦一般是給用戶一個個性化的推薦列表巴帮。準(zhǔn)確率通過準(zhǔn)確率(precision)/召回率(recall)度量溯泣。(公式見課本26頁)
下面的代碼準(zhǔn)確計(jì)算量準(zhǔn)確率和召回率:
def PrecisionRecall(test, N):
hit = 0
n_recall = 0
n_precision = 0
for user, item in test.items():
rank = Recommend(user, N)
hit += len(rank & items)
n_recall += len(items)
n_precision += N
return [hit / (1.0 * n_recall), hit / (1.0 * n_precision)]
召回率曲線,選取不同的推薦列表長度N榕茧。
覆蓋率描述一個推薦系統(tǒng)對物品長尾的發(fā)掘能力垃沦。(公式見課本27頁)
熱門排行榜的推薦覆蓋率是很低的,它只會推薦那些熱門的物品用押,這些物品在總物品中占比例很小肢簿。一個好的推薦系統(tǒng)不僅需要比較高的用戶滿意度,也需要較高的覆蓋率只恨。信息論和經(jīng)濟(jì)學(xué)中有兩個著名的指標(biāo)可以用來定義覆蓋率译仗,第一個是信息熵,第二個是基尼系數(shù)官觅,見課本27頁纵菌。
下面代碼可以用來計(jì)算給定物品流行度分布后的基尼系數(shù):
def GiniIndex(p):
j = 1
n = len(p)
G = 0
for item, weight in sorted(p.items(), key=itemgetter(1)):
G += (2 * j - n - 1) * weight
return G / float(n-1)
推薦系統(tǒng)的初衷是為了消除馬太效應(yīng),使得各種物品都能被展示給對他們感興趣的某一類人群休涤。
多樣性描述了推薦列表中物品兩兩之間的不相似性咱圆。公式見28頁笛辟。給用戶的推薦列表也需要滿足用戶廣泛的興趣。
新穎性是指給用戶推薦那些他們以前沒有聽說過的物品序苏。如果推薦結(jié)果中物品的平均熱門程度較低手幢,那么推薦結(jié)果就可能有比較高的新穎性。
驚喜度是指如果推薦結(jié)果和用戶的歷史興趣不相似忱详,但卻讓用戶覺得滿意围来,那么就可以說推薦結(jié)果的驚喜度很高。而推薦的新穎性僅僅取決于用戶是否聽說過這個推薦結(jié)果匈睁。
信任度如果用戶信任該系統(tǒng)监透,那么就會增加用戶和推薦系統(tǒng)的交互。增加有兩種方法:一是增加推薦系統(tǒng)的透明度航唆,二是考慮社交網(wǎng)絡(luò)的信息胀蛮。
實(shí)時性首先推薦系統(tǒng)需要實(shí)時更新推薦列表來滿足用戶新的行為變化。其次推薦系統(tǒng)需要能夠加入系統(tǒng)的物品推薦給用戶糯钙。
健壯性衡量的是一個推薦系統(tǒng)抗作弊的能力粪狼。可以使用健壯性高的算法任岸,或者使用代價高的用戶行為再榄,或者數(shù)據(jù)清洗。
商業(yè)目標(biāo)一般來說演闭,就是平均一個用戶給公司帶來的盈利不跟。
一個推薦算法,可能在某種情況下性能比較好米碰,而增加評測維度的目的就是知道一個算法在什么情況下性能最好,比如用戶維度(活躍度购城,是否新用戶)吕座,物品維度(物品屬性,平均分)瘪板,時間維度(季節(jié)吴趴,周末)。