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