李科文 張必武 陳發(fā)燕 唐瑩
基金項目:西北民族大學(xué)2019本科生科研創(chuàng)新項目《基于混合推薦算法的網(wǎng)絡(luò)課程獲取系統(tǒng)》;項目編號:XBMU-BYL19154
摘 要:每當(dāng)我們打開淘寶時,你會發(fā)現(xiàn),首頁的推薦商品是你前幾天搜索過或者瀏覽過的商品的同類商品。打開今日頭條,每次他都能精準(zhǔn)的為你推送你想看到的新聞。又例如你喜歡看關(guān)于貓的視頻,在抖音、快手中看了很多條關(guān)于貓的視頻,那么你會發(fā)現(xiàn),你下面的視頻中,關(guān)于貓的視頻占比會非常之大。而這些,都是使用了各種種類的推薦算法,以此做到精準(zhǔn)的個性化推薦。例如,微博的熱搜榜,就是使用了基于熱度的推薦算法。當(dāng)然,不管是對于商品還是新聞(以下簡稱item)的推薦,不止是一種推薦算法在里面發(fā)揮作用。是多種推薦算法的融合、取權(quán),再推薦組合。
關(guān)鍵詞:推薦算法;熱搜榜
一、基于熱度的推薦算法
熱度推薦算法,是計算該item在全站中的熱度排名并將前幾名推薦給用戶的算法。
對于item的熱度值的計算公式可以是:總熱度=基礎(chǔ)熱度+用戶交互熱度-時間衰減熱度。不同item基礎(chǔ)熱度的取值不應(yīng)該是固定的、相同的。因為不同時期,用戶對不同item的興趣度不同。例如在網(wǎng)絡(luò)課程類APP的推薦中,當(dāng)英語四六級或計算機(jī)二級成績出來后。相關(guān)類課程視頻必定會受到?jīng)]通過的考試的喜愛,對于其的搜索勢必也會增加。因此,基礎(chǔ)熱度的取值應(yīng)當(dāng)不一樣,可以使用熱詞匹配的方法,將不同種類的item的基礎(chǔ)熱度區(qū)分,以達(dá)到更精準(zhǔn)的推薦。用戶交互熱度是指用戶對于某個item的交互行為產(chǎn)生的熱度,可以是點贊(fabulous)、分享(share)、收藏(favor)、評論(comment)等。當(dāng)用戶對一個item產(chǎn)生交互時,我們就可以根據(jù)交互種類分別乘以對應(yīng)的熱度分累加在之前的熱度上。當(dāng)然,不同種類的熱度分是需要根據(jù)交互的重要程度設(shè)定的。例如對于收藏的熱度分是要大于點贊的。并且不同種類的交互行為熱度分也需要根據(jù)用戶規(guī)模適當(dāng)增加或減少,應(yīng)當(dāng)按熱度分和用戶規(guī)模的比例。
有些item具有時效性,當(dāng)一段時間過去后,其重要性就會大大減少。因此需要一個時間衰減熱度,與之前算出來的熱度相減去來使過期item降低排名。而這個時間衰減熱度不應(yīng)該是線性的。參考牛頓冷卻定律,這個衰減公式應(yīng)該是一個指數(shù)函數(shù):
T(Time)=e
其中T1為當(dāng)前時間,T0為item發(fā)布時間。最終熱度也需要隨時間的發(fā)展而無限趨近為0。因此,最終的總熱度公式修改為:
總熱度=(基礎(chǔ)熱度+用戶交互熱度)/T(Time)
二、基于用戶的協(xié)同過濾推薦算法(ItemCF)
(一)用戶行為數(shù)據(jù)
對于用戶行為數(shù)據(jù)的獲取,最簡單的一種形式應(yīng)當(dāng)是日志。用戶對于單個item的點擊、收藏、好評等稱為顯性反饋行為,對于單個item的瀏覽、頻繁搜索等稱為隱形反饋行為。
(二)算法實現(xiàn)
這個算法是給用戶推薦和他品味差不多的其他用戶喜歡的item,主要包括:
1.找到和目標(biāo)用戶興趣相似的用戶集合。
2.找到這個集合中的用戶喜歡的,且目標(biāo)用戶沒有瀏覽過的item推薦給目標(biāo)用戶。
對用戶行為的相似度計算,我們是通過余弦公式或者jarccard進(jìn)行計算的:設(shè)N(u)為用戶U虛幻的物品集合,N(v)為用戶v喜歡的物品集合。通過jarccard公式,計算u和v的相似度為:
Wuv=
利用余弦公式計算相似度:
Wuv=
下面計算用戶兩兩之間的相似度矩陣
因為利用余弦公式,計算相似度的時間復(fù)雜度為O(N2),耗時巨大。因此需要建立一張item到用戶之間的倒排表來排除沒有任何聯(lián)系的用戶之間的相似度計算,再根據(jù)倒序表計算共同評分過的矩陣。設(shè)用戶A評價過的item有abd,B評價過的有ac,C評價過的有b、c,D評價過的有cde。則有如下表:
其中每個數(shù)值都代表余弦相似度中的分子部分,通過分子除以分母以得到最終的用戶興趣。就是可以通過上圖中的共同評分過的物品的矩陣轉(zhuǎn)換為用戶之間的相似度矩陣,且只用計算非零的部分。比如要計算A與B的用戶相似度時。AB矩陣值為1,即他們共同交集的物品為1。A總共評分過的物品個數(shù)為3,B共同評分過的物品個數(shù)為2,可計算出相似度為
篩選出k個與用戶目標(biāo)最相似的用戶
在計算出用戶之間的相似度后,通過以下公式給用戶推薦和他興趣最相似的K個用戶喜歡的物品。
S(u,K)是和用戶u興趣最相近的K個用戶,N(i)是對物品i有過行為的用戶集合,Wuv是用戶u和v的興趣相似度,rvi為1.例如,對目標(biāo)用戶A進(jìn)行推薦。選取K=3,用戶A對物品c,e沒有過行為,因此可以把這三個物品推薦給A,通過計算得用戶A對c的興趣為p(A,c)=WAB+WAD=0.7416,對e的興趣為p(A,c)=WAC+WAD=0.7416。
三、基于內(nèi)容的推薦算法(CB)
CB算法是最早被應(yīng)用到推薦算法中的,它是根據(jù)用戶過去喜歡的item,為用戶推薦與之類似的item。
它一般分為三個步驟:
1.物品表示:為每個item概括出一些特征(也就是item的content)來表示此item。
2.特征學(xué)習(xí):利用一個用戶過去喜歡和不喜歡的item的特征數(shù)據(jù),以此學(xué)習(xí)出此用戶的喜好特征(profile)。
3.生成推薦:通過比較上一步得到的用戶profile與候選的item的特征,為此用戶推薦一組相似度最大的item。
那么如何知道用戶的喜好呢,可以在用戶注冊后就讓用戶選擇感興趣的分類,這也是較為常見的做法。我們也會獲取用戶的歷史瀏覽的數(shù)據(jù),對于用戶歷史瀏覽較高的分類關(guān)鍵詞提取。對于item的特征獲取,我們可以在入庫時就為這個item添加分類標(biāo)簽。
結(jié)束語:
當(dāng)然,推薦算法不止這幾種,并且,對于以上推薦算法在項目中的使用,也需要反復(fù)的推敲,以達(dá)到精準(zhǔn)的個性化推薦。
作者簡介:李科文(1998-),男,漢族,西北民族大學(xué),學(xué)士。研究方向:推薦算法。