91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于內(nèi)容的推薦算法算是最早應(yīng)用于工程實(shí)踐的推薦算法,有大量的應(yīng)用案例

WpOh_rgznai100 ? 來(lái)源:lq ? 2019-07-18 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章我們主要關(guān)注的是基于內(nèi)容的推薦算法,它也是非常通用的一類(lèi)推薦算法,在工業(yè)界有大量的應(yīng)用案例。

本文會(huì)從什么是基于內(nèi)容的推薦算法、算法基本原理、應(yīng)用場(chǎng)景、基于內(nèi)容的推薦算法的優(yōu)缺點(diǎn)、算法落地需要關(guān)注的點(diǎn)等5個(gè)方面來(lái)講解。

希望讀者讀完可以掌握常用的基于內(nèi)容的推薦算法的實(shí)現(xiàn)原理,并且可以基于本文的思路快速將基于內(nèi)容的推薦算法落地到真實(shí)業(yè)務(wù)場(chǎng)景中。

01什么是基于內(nèi)容的推薦算法

首先我們給基于內(nèi)容的推薦算法下一個(gè)定義,讓讀者有初步的印象,后面更容易理解我們講的基于內(nèi)容的推薦算法。

所謂基于內(nèi)容的推薦算法(Content-Based Recommendations)是基于標(biāo)的物相關(guān)信息、用戶(hù)相關(guān)信息及用戶(hù)對(duì)標(biāo)的物的操作行為來(lái)構(gòu)建推薦算法模型,為用戶(hù)提供推薦服務(wù)。這里的標(biāo)的物相關(guān)信息可以是對(duì)標(biāo)的物文字描述的metadata信息、標(biāo)簽、用戶(hù)評(píng)論、人工標(biāo)注的信息等。用戶(hù)相關(guān)信息是指人口統(tǒng)計(jì)學(xué)信息(如年齡、性別、偏好、地域、收入等等)。用戶(hù)對(duì)標(biāo)的物的操作行為可以是評(píng)論、收藏、點(diǎn)贊、觀(guān)看、瀏覽、點(diǎn)擊、加購(gòu)物車(chē)、購(gòu)買(mǎi)等。基于內(nèi)容的推薦算法一般只依賴(lài)于用戶(hù)自身的行為為用戶(hù)提供推薦,不涉及到其他用戶(hù)的行為。

廣義的標(biāo)的物相關(guān)信息不限于文本信息,圖片、語(yǔ)音、視頻等都可以作為內(nèi)容推薦的信息來(lái)源,只不過(guò)這類(lèi)信息處理成本較大,不光是算法難度大、處理的時(shí)間及存儲(chǔ)成本也相對(duì)更高。

基于內(nèi)容的推薦算法算是最早應(yīng)用于工程實(shí)踐的推薦算法,有大量的應(yīng)用案例,如今日頭條的推薦有很大比例是基于內(nèi)容的推薦算法。

02基于內(nèi)容的推薦算法實(shí)現(xiàn)原理

基于內(nèi)容的推薦算法的基本原理是根據(jù)用戶(hù)的歷史行為,獲得用戶(hù)的興趣偏好,為用戶(hù)推薦跟他的興趣偏好相似的標(biāo)的物,讀者可以直觀(guān)上從下圖理解基于內(nèi)容的推薦算法。

圖1:基于內(nèi)容的推薦算法示意圖

從上圖也可以看出,要做基于內(nèi)容的個(gè)性化推薦,一般需要三個(gè)步驟,它們分別是:基于用戶(hù)信息及用戶(hù)操作行為構(gòu)建用戶(hù)特征表示、基于標(biāo)的物信息構(gòu)建標(biāo)的物特征表示、基于用戶(hù)及標(biāo)的物特征表示為用戶(hù)推薦標(biāo)的物,具體參考圖2:

圖2:基于內(nèi)容的個(gè)性化推薦的三個(gè)核心步驟

本節(jié)我們先簡(jiǎn)單介紹一下怎么基于上圖的步驟1、步驟2為用戶(hù)做推薦(即步驟3中給用戶(hù)做推薦的核心思想),然后分別對(duì)這三個(gè)步驟加以說(shuō)明,介紹每個(gè)步驟都有哪些方法和策略可供選擇。

▌1.基于用戶(hù)和標(biāo)的物特征為用戶(hù)推薦的核心思想

有了用戶(hù)特征和標(biāo)的物特征,我們?cè)趺唇o用戶(hù)做推薦呢?我認(rèn)為主要的推薦思路有如下三個(gè):

(1)基于用戶(hù)歷史行為記錄做推薦

我們需要事先計(jì)算標(biāo)的物之間的相似性,然后將用戶(hù)歷史記錄中的標(biāo)的物的相似標(biāo)的物推薦給用戶(hù)。

不管標(biāo)的物包含哪類(lèi)信息,一般的思路是將標(biāo)的物特征轉(zhuǎn)化為向量化表示,有了向量化表示,我們就可以通過(guò)cosine余弦相似度計(jì)算兩個(gè)標(biāo)的物之間的相似度了。

(2)用戶(hù)和標(biāo)的物特征都用顯式的標(biāo)簽表示,利用該表示做推薦

標(biāo)的物用標(biāo)簽來(lái)表示,那么反過(guò)來(lái),每個(gè)標(biāo)簽就可以關(guān)聯(lián)一組標(biāo)的物,那么根據(jù)用戶(hù)的標(biāo)簽表示,用戶(hù)的興趣標(biāo)簽就可以關(guān)聯(lián)到一組標(biāo)的物,這組通過(guò)標(biāo)簽關(guān)聯(lián)到的標(biāo)的物,就可以作為給用戶(hù)的推薦候選集。這類(lèi)方法就是所謂的倒排索引法,是搜索業(yè)務(wù)通用的解決方案。

(3)用戶(hù)和標(biāo)的物嵌入到同一個(gè)向量空間,基于向量相似做推薦

當(dāng)用戶(hù)和標(biāo)的物嵌入到同一個(gè)向量空間中后,我們就可以計(jì)算用戶(hù)和標(biāo)的物之間的相似度,然后按照標(biāo)的物跟用戶(hù)的相似度,為用戶(hù)推薦相似度高的標(biāo)的物。還可以基于用戶(hù)向量表示計(jì)算用戶(hù)相似度,將相似用戶(hù)喜歡的標(biāo)的物推薦給該用戶(hù),這時(shí)標(biāo)的物嵌入是不必要的。

講清楚了基于內(nèi)容的推薦的核心思想,那么下面我們分別講解怎么表示用戶(hù)特征、怎么表示標(biāo)的物特征以及怎么為用戶(hù)做推薦。

▌2.構(gòu)建用戶(hù)特征表示

用戶(hù)的特征表示可以基于用戶(hù)對(duì)標(biāo)的物的操作行為(如點(diǎn)擊、購(gòu)買(mǎi)、收藏、播放等)構(gòu)建用戶(hù)對(duì)標(biāo)的物的偏好畫(huà)像,也可以基于用戶(hù)自身的人口統(tǒng)計(jì)學(xué)特征來(lái)表達(dá)。有了用戶(hù)特征表示,我們就可以基于用戶(hù)特征為用戶(hù)推薦與他特征匹配的標(biāo)的物。構(gòu)建用戶(hù)特征的方法主要有如下5種:

(1)用戶(hù)行為記錄作為顯示特征

記錄用戶(hù)過(guò)去一段時(shí)間對(duì)標(biāo)的物的偏好。拿視頻行業(yè)來(lái)說(shuō),如果用戶(hù)過(guò)去一段時(shí)間看了A、B、C三個(gè)視頻,同時(shí)可以根據(jù)每個(gè)視頻用戶(hù)觀(guān)看時(shí)長(zhǎng)占視頻總時(shí)長(zhǎng)的比例給用戶(hù)的行為打分,這時(shí)用戶(hù)的興趣偏好就可以記錄為,其中S1、S2、S3分別是用戶(hù)對(duì)視頻A、B、C的評(píng)分。

該方案直接將用戶(hù)歷史操作過(guò)的標(biāo)的物作為用戶(hù)的特征表示,在推薦時(shí)可以將與用戶(hù)操作過(guò)的標(biāo)的物相似的標(biāo)的物推薦給用戶(hù)。

(2)顯式的標(biāo)簽特征

如果標(biāo)的物是有標(biāo)簽來(lái)描述的,那么這些標(biāo)簽可以用來(lái)表征標(biāo)的物。用戶(hù)的興趣畫(huà)像也可以基于用戶(hù)對(duì)標(biāo)的物的行為來(lái)打上對(duì)應(yīng)的標(biāo)簽。拿視頻推薦來(lái)舉例,如果用戶(hù)過(guò)去看了科幻和恐怖兩類(lèi)電影,那么恐怖、科幻就是用戶(hù)的偏好標(biāo)簽了。

每個(gè)標(biāo)的物的標(biāo)簽可以是包含權(quán)重的,而用戶(hù)對(duì)標(biāo)的物的操作行為也是有權(quán)重的,從而用戶(hù)的興趣標(biāo)簽是有權(quán)重的。

在具體推薦時(shí),可以將用戶(hù)的興趣標(biāo)簽關(guān)聯(lián)到的標(biāo)的物(具備該標(biāo)簽的標(biāo)的物)推薦給用戶(hù)。

(3)向量式的興趣特征

可以基于標(biāo)的物的信息將標(biāo)的物嵌入到向量空間中,利用向量來(lái)表示標(biāo)的物,我們會(huì)在后面講解嵌入的算法實(shí)現(xiàn)方案。有了標(biāo)的物的向量化表示,用戶(hù)的興趣向量就可以用他操作過(guò)的標(biāo)的物的向量的平均向量來(lái)表示了。

這里表示用戶(hù)興趣向量有很多種策略,可以基于用戶(hù)對(duì)操作過(guò)的標(biāo)的物的評(píng)分以及時(shí)間加權(quán)來(lái)獲取用戶(hù)的加權(quán)偏好向量,而不是直接取平均。另外,我們也可以根據(jù)用戶(hù)操作過(guò)的標(biāo)的物之間的相似度,為用戶(hù)構(gòu)建多個(gè)興趣向量(比如對(duì)標(biāo)的物聚類(lèi),用戶(hù)在某一類(lèi)上操作過(guò)的標(biāo)的物的向量均值作為用戶(hù)在這個(gè)類(lèi)別上的興趣向量),從而更好地表達(dá)用戶(hù)多方位的興趣偏好。

有了用戶(hù)的興趣向量及標(biāo)的物的興趣向量,可以基于向量相似性計(jì)算用戶(hù)對(duì)標(biāo)的物的偏好度,再基于偏好度大小來(lái)為用戶(hù)推薦標(biāo)的物。

(4)通過(guò)交互方式獲取用戶(hù)興趣標(biāo)簽

很多APP在用戶(hù)第一次注冊(cè)時(shí)讓用戶(hù)選擇自己的興趣標(biāo)簽,一旦用戶(hù)勾選了自己的興趣標(biāo)簽,那么這些興趣標(biāo)簽就是系統(tǒng)為用戶(hù)提供推薦的原材料。具體推薦策略與上面的(3)一樣。

(5)用戶(hù)的人口統(tǒng)計(jì)學(xué)特征

用戶(hù)在登陸、注冊(cè)時(shí)提供的關(guān)于自身相關(guān)的信息、通過(guò)運(yùn)營(yíng)活動(dòng)用戶(hù)填寫(xiě)的信息、通過(guò)用戶(hù)行為利用算法推斷得出的結(jié)論,如年齡、性別、地域、收入、愛(ài)好、居住地、工作地點(diǎn)等是非常重要的信息。基于這些關(guān)于用戶(hù)維度的信息,我們可以將用戶(hù)特征用向量化表示出來(lái),向量的維度就是可獲取的用戶(hù)特征數(shù)。

有了用戶(hù)特征向量就可以計(jì)算用戶(hù)相似度,將相似用戶(hù)喜歡的標(biāo)的物推薦給該用戶(hù)。

▌3.構(gòu)建標(biāo)的物特征表示

標(biāo)的物的特征,一般可以利用顯式的標(biāo)簽來(lái)表示,也可以利用隱式的向量(當(dāng)然one-hot編碼也是向量表示,但是不是隱式的)來(lái)刻畫(huà),向量的每個(gè)維度就是一個(gè)隱式的特征項(xiàng)。前面提到某些推薦算法需要計(jì)算標(biāo)的物之間的相似度,下面我們?cè)谥v標(biāo)的物的各種特征表示時(shí),也簡(jiǎn)單介紹一下標(biāo)的物之間的相似度計(jì)算方法。順便說(shuō)一下,標(biāo)的物關(guān)聯(lián)標(biāo)的物的推薦范式也需要知道標(biāo)的物之間的相似度。下面我們從4個(gè)方面來(lái)詳細(xì)講解怎么構(gòu)建標(biāo)的物的特征表示。

(1)標(biāo)的物包含標(biāo)簽信息

最簡(jiǎn)單的方式是將將標(biāo)簽按照某種序排列,每個(gè)標(biāo)簽看成一個(gè)維度,那么每個(gè)標(biāo)的物就可以表示成一個(gè)N維的向量了(N是標(biāo)簽的個(gè)數(shù)),如果標(biāo)的物包含某個(gè)標(biāo)簽,向量在相應(yīng)標(biāo)簽的分量上的值為1,否則為0,即所謂的one-hot編碼。有可能N非常大(如視頻行業(yè),N可能是幾萬(wàn)、甚至幾十萬(wàn)上百萬(wàn)),這時(shí)向量是稀疏向量(一般標(biāo)的物只有少量的幾個(gè)或者幾十個(gè)標(biāo)簽),我們可以采用稀疏向量的表示來(lái)優(yōu)化向量存儲(chǔ)和計(jì)算,提升效率。有了標(biāo)的物基于標(biāo)簽的向量化表示,很容易基于cosine余弦計(jì)算相似度了。

實(shí)際上標(biāo)簽不是這么簡(jiǎn)單的,有很多業(yè)務(wù)標(biāo)簽是分級(jí)的,比如電商(如淘寶),有多級(jí)的標(biāo)簽(見(jiàn)下面圖3),標(biāo)簽的層級(jí)關(guān)系形成一顆樹(shù)狀結(jié)構(gòu),這時(shí)該怎么向量化呢?最簡(jiǎn)單的方案是只考慮葉子節(jié)點(diǎn)的標(biāo)簽(也是最低層級(jí)的標(biāo)簽),基于葉子節(jié)點(diǎn)標(biāo)簽構(gòu)建向量表示。更復(fù)雜的方法,可以基于層級(jí)結(jié)構(gòu)構(gòu)建標(biāo)簽表示及計(jì)算標(biāo)的物相似度。

圖3:標(biāo)簽的層級(jí)表示關(guān)系

標(biāo)簽可以是通過(guò)算法獲取的,比如通過(guò)NLP技術(shù)從文本信息中提取關(guān)鍵詞作為標(biāo)簽。對(duì)于圖片/視頻,它們的描述信息(標(biāo)題等)可以提取標(biāo)簽,另外可以通過(guò)目標(biāo)檢測(cè)的方法從圖片/視頻中提取相關(guān)對(duì)象構(gòu)建標(biāo)簽。

標(biāo)簽可以是用戶(hù)打的,很多產(chǎn)品在用戶(hù)與標(biāo)的物交互時(shí)可以為標(biāo)的物打標(biāo)簽,這些標(biāo)簽就是標(biāo)的物的一種刻畫(huà)。標(biāo)簽也可是人工標(biāo)注的,像Netflix在做推薦時(shí),請(qǐng)了上萬(wàn)個(gè)專(zhuān)家對(duì)視頻從上千個(gè)維度來(lái)打標(biāo)簽,讓標(biāo)簽具備非常高的質(zhì)量?;谶@么精細(xì)優(yōu)質(zhì)的標(biāo)簽做推薦,效果一定不錯(cuò)。很多行業(yè)的標(biāo)的物來(lái)源于第三方提供商,他們?cè)谌腭v平臺(tái)時(shí)會(huì)被要求按照某些規(guī)范填寫(xiě)相關(guān)標(biāo)簽信息(比如典型的如電商)。

(2)標(biāo)的物具備結(jié)構(gòu)化的信息

有些行業(yè)標(biāo)的物是具備結(jié)構(gòu)化信息的,如視頻行業(yè),一般會(huì)有媒資庫(kù),媒資庫(kù)中針對(duì)每個(gè)節(jié)目會(huì)有標(biāo)題、演職員、導(dǎo)演、標(biāo)簽、評(píng)分、地域等維度數(shù)據(jù),這類(lèi)數(shù)據(jù)一般存在關(guān)系型數(shù)據(jù)庫(kù)中。這類(lèi)數(shù)據(jù),我們可以將一個(gè)字段(也是一個(gè)特征)作為向量的一個(gè)維度,這時(shí)向量化表示每個(gè)維度的值不一定是數(shù)值,但是形式還是向量化的形式,即所謂的向量空間模型(Vector Space Model,簡(jiǎn)稱(chēng)VSM)。這時(shí)我們可以通過(guò)如下的方式計(jì)算兩個(gè)標(biāo)的物之間的相似度。

假設(shè)兩個(gè)標(biāo)的物的向量表示分別為:

這時(shí)這兩個(gè)標(biāo)的物的相似性可以表示為:

其中代表的是向量的兩個(gè)分量之間的相似度??梢圆捎肑acard相似度等各種方法計(jì)算兩個(gè)分量之間的相似度。上面公式中還可以針對(duì)不同的分量采用不同的權(quán)重策略,見(jiàn)下面公式,其中是第t個(gè)分量(特征)的權(quán)重,具體權(quán)重的數(shù)值可以根據(jù)對(duì)業(yè)務(wù)的理解來(lái)人工設(shè)置,或者利用機(jī)器學(xué)習(xí)算法來(lái)訓(xùn)練學(xué)習(xí)得到。

(3)包含文本信息的標(biāo)的物的特征表示

像今日頭條和手機(jī)百度APP這類(lèi)新聞資訊或者搜索類(lèi)APP,標(biāo)的物就是一篇篇的文章(其中會(huì)包含圖片或者視頻),文本信息是最重要的信息形式,構(gòu)建標(biāo)的物之間的相似性有很多種方法。下面對(duì)常用的方法做一些講解說(shuō)明。

a. 利用TF-IDF將文本信息轉(zhuǎn)化為特征向量

TF-IDF通過(guò)將所有文檔(即標(biāo)的物)分詞,獲得所有不同詞的集合(假設(shè)有M個(gè)詞),那么就可以為每個(gè)文檔構(gòu)建一個(gè)M維(每個(gè)詞就是一個(gè)維度)的向量,而該向量中某個(gè)詞所在維度的值可以通過(guò)統(tǒng)計(jì)每個(gè)詞在文檔中的重要性來(lái)衡量,這個(gè)重要性的度量就是TF-IDF。下面我們來(lái)詳細(xì)說(shuō)明TF-IDF是怎么計(jì)算的。

TF即某個(gè)詞在某篇文檔中出現(xiàn)的頻次,用于衡量這個(gè)詞在文檔中的重要性,出現(xiàn)次數(shù)越多的詞重要性越大,當(dāng)然我們會(huì)提前將“的”、“地”、“啊”等停用詞去掉,這些詞對(duì)構(gòu)建向量是沒(méi)有任何實(shí)際價(jià)值的,甚至是有害的。TF具體計(jì)算公式如下,tk是第k個(gè)詞,dj是第j個(gè)文檔,下式中分子是tk在中出現(xiàn)的次數(shù),分母是dj中詞的總個(gè)數(shù)。

IDF代表的是某個(gè)詞在所有文檔中的“區(qū)分度”,如果某個(gè)詞只在少量幾個(gè)文檔中出現(xiàn),那么它包含的價(jià)值就是巨大的(所謂物以稀為貴),如果某個(gè)詞在很多文檔中出現(xiàn),那么它就不能很好地衡量(區(qū)分出)這個(gè)文檔。下面是IDF的計(jì)算公式,其中N是所有文檔的個(gè)數(shù),是包含詞的文檔個(gè)數(shù),這個(gè)公式剛好跟前面的描述是一致的:稀有的詞區(qū)分度大。

有了上面對(duì)TF和IDF的定義,實(shí)際的TF-IDF就是上面兩個(gè)量的乘積:

有了基于TF-IDF計(jì)算的標(biāo)的物的向量表示,我們就很容易計(jì)算兩個(gè)標(biāo)的物之間的相似度了(cosine余弦相似度)。

b. 利用LDA算法構(gòu)建文章(標(biāo)的物)的主題

LDA算法是一類(lèi)文檔主題生成模型,包含詞、主題、文檔三層結(jié)構(gòu),是一個(gè)三層的貝葉斯概率模型。對(duì)于語(yǔ)料庫(kù)中的每篇文檔,LDA定義了如下生成過(guò)程(generativeprocess):

[1]對(duì)每一篇文檔,從主題分布中抽取一個(gè)主題;

[2]從上述被抽到的主題所對(duì)應(yīng)的單詞分布中抽取一個(gè)單詞;

[3]重復(fù)上述過(guò)程直至遍歷文檔中的每一個(gè)單詞。

我們通過(guò)對(duì)所有文檔進(jìn)行LDA訓(xùn)練,就可以構(gòu)建每篇文檔的主題分布,從而構(gòu)建一個(gè)基于主題的向量(每個(gè)主題就是向量的一個(gè)分量,而值就是該主題的概率值),這樣我們就可以利用該向量來(lái)計(jì)算兩篇文檔的相似度了。主題模型可以理解為一個(gè)降維過(guò)程,將文檔的詞向量表示降維成主題的向量表示(主題的個(gè)數(shù)是遠(yuǎn)遠(yuǎn)小于詞的個(gè)數(shù)的,所以是降維)。想詳細(xì)了解LDA的讀者可以看參考文獻(xiàn)1、2。

c. 利用doc2vec算法構(gòu)建文本相似度

doc2vec或者叫做 paragraph2vec, sentence embeddings,是一種非監(jiān)督式算法,可以獲得 句子、段落、文章的稠密向量表達(dá),它是 word2vec 的拓展,2014年被Google的兩位大牛提出,并大量用于文本分類(lèi)和情感分析中。通過(guò)doc2vec學(xué)出句子、段落、文章的向量表示,可以通過(guò)計(jì)算向量之間距離來(lái)表達(dá)句子、段落、文章之間的相似性。

這里我們簡(jiǎn)單描述一下doc2vec的核心思想。doc2vec受word2vec啟發(fā),由它推廣而來(lái),我們先來(lái)簡(jiǎn)單解釋一下word2vec的思路。

word2vec通過(guò)學(xué)習(xí)一個(gè)唯一的向量表示每個(gè)詞,每個(gè)詞向量作為矩陣W中的一列(W是所有詞的詞向量構(gòu)成的矩陣),矩陣列可以通過(guò)詞匯表為每個(gè)詞做索引,排在索引第一位的放到矩陣W的第一列,如此類(lèi)推。將學(xué)習(xí)問(wèn)題轉(zhuǎn)化為通過(guò)上下文詞序列中前幾個(gè)詞來(lái)預(yù)測(cè)下一個(gè)詞。具體的模型框架如下圖:

圖4:word2vec算法框架,圖片來(lái)源于參考文獻(xiàn)5

簡(jiǎn)單來(lái)說(shuō),給定一個(gè)待訓(xùn)練的詞序列,詞向量模型通過(guò)極大化平均對(duì)數(shù)概率

將預(yù)測(cè)任務(wù)通過(guò)softmax變換看成一個(gè)多分類(lèi)問(wèn)題

上式中是詞i的歸一化的對(duì)數(shù)概率,具體用下式來(lái)計(jì)算,其中U、b是參數(shù),h是通過(guò)詞向量的拼接或者平均來(lái)構(gòu)建的

word2vec算法隨機(jī)初始化詞向量,通過(guò)隨機(jī)梯度下降法來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,最終得到每個(gè)詞的向量表示。

doc2vec類(lèi)似地,每個(gè)段落/文檔表示為向量,作為矩陣D的一列,每個(gè)詞也表示為一個(gè)向量,作為矩陣W中的一列。將學(xué)習(xí)問(wèn)題轉(zhuǎn)化為通過(guò)上下文詞序列中前幾個(gè)詞和段落/文檔來(lái)預(yù)測(cè)下一個(gè)詞。將段落/文檔和詞向量通過(guò)拼接或者平均來(lái)預(yù)測(cè)句子的下一個(gè)詞(下圖是通過(guò)“the”、“cat”、“sat”及段落id來(lái)預(yù)測(cè)下一個(gè)詞“on”)。在訓(xùn)練的時(shí)候我們固定上下文的長(zhǎng)度,用滑動(dòng)窗口的方法產(chǎn)生訓(xùn)練集。段落向量/句向量在上下文中共享。

圖5:doc2vec模型結(jié)構(gòu),圖片來(lái)源于參考文獻(xiàn)5

對(duì)算法原理感興趣的讀者可以看看參考文獻(xiàn)3、4、5。工程實(shí)現(xiàn)上有很多開(kāi)源框架有word2vec或者doc2vec的實(shí)現(xiàn),比如gensim中就有很好的實(shí)現(xiàn),作者公司就用gensim來(lái)做word2vec嵌入用于相似視頻的推薦業(yè)務(wù)中,效果非常不錯(cuò),讀者可以參考https://radimrehurek.com/gensim/models/doc2vec.html。

(4)圖片、音頻、或者視頻信息

如果標(biāo)的物包含的是圖片、音頻或者視頻信息,處理起來(lái)會(huì)更加復(fù)雜。一種方法是利用它們的文本信息(標(biāo)題、評(píng)論、描述信息、利用圖像技術(shù)提取的字幕等文本信息等等,對(duì)于音頻,可以通過(guò)語(yǔ)音識(shí)別轉(zhuǎn)化為文本)采用上面(3)的技術(shù)方案獲得向量化表示。對(duì)于圖像或者視頻,也可以利用openCV中的PSNR和SSIM算法來(lái)表示視頻特征,也可以計(jì)算視頻之間的相似度。另外一種可行的方法是采用圖像、音頻處理技術(shù)直接從圖像、視頻、音頻中提取特征進(jìn)行向量化表示,從而容易計(jì)算出相似度。總之,圖片、圖像、音頻都可以轉(zhuǎn)化為NLP問(wèn)題或者圖像處理問(wèn)題(見(jiàn)下面圖6),通過(guò)圖像處理和NLP獲得對(duì)應(yīng)的特征表示,從而最終計(jì)算出相似度,這里不詳細(xì)講解。

圖6:視頻/圖片問(wèn)題都可以轉(zhuǎn)化為

NLP或圖像處理問(wèn)題

▌4.為用戶(hù)做個(gè)性化推薦

有了上面用戶(hù)和標(biāo)的物的特征表示,剩下就是基于此為用戶(hù)做個(gè)性化推薦了,一般有5種方法和策略,下面我們來(lái)一一講解。這里的推薦就是完全個(gè)性化范式的推薦,為每個(gè)用戶(hù)生成不一樣的推薦結(jié)果。

(1)采用跟基于物品的協(xié)同過(guò)濾類(lèi)似的方式推薦

該方法采用基于用戶(hù)行為記錄的顯式特征表示用戶(hù)特征,通過(guò)將用戶(hù)操作過(guò)的標(biāo)的物最相似的標(biāo)的物推薦給用戶(hù),算法原理跟基于物品的協(xié)同過(guò)濾類(lèi)似,計(jì)算公式甚至是一樣的,但是這里計(jì)算標(biāo)的物相似度是基于標(biāo)的物的自身信息來(lái)計(jì)算的,而基于物品的協(xié)同過(guò)濾是基于用戶(hù)對(duì)標(biāo)的物的行為矩陣來(lái)計(jì)算的。

用戶(hù)u對(duì)標(biāo)的物s的喜好度sim(u,s)可以采用如下公式計(jì)算,其中U是所有用戶(hù)操作過(guò)的標(biāo)的物的列表,是用戶(hù)u對(duì)標(biāo)的物的喜好度,是標(biāo)的物與s的相似度。

有了用戶(hù)對(duì)每個(gè)標(biāo)的物的相似度,基于相似度降序排列,就可以取topN推薦給用戶(hù)了。

除了采用上面的公式外,我們?cè)谕扑]時(shí)也可以稍作變化,采用最近鄰方法(K-NearestNeighbor, KNN)。對(duì)于用戶(hù)操作/喜歡過(guò)的每個(gè)標(biāo)的物,通過(guò)kNN找到最相似的k個(gè)標(biāo)的物。

其中是給用戶(hù)u的推薦,是標(biāo)的物最近鄰(最相似)的k個(gè)標(biāo)的物。

(2)采用跟基于用戶(hù)協(xié)同過(guò)濾類(lèi)似的方法計(jì)算推薦

如果我們獲得了用戶(hù)的人口統(tǒng)計(jì)學(xué)向量表示或者基于用戶(hù)歷史操作行為獲得了用戶(hù)的向量化表示,那么我們可以采用跟基于用戶(hù)的協(xié)同過(guò)濾方法相似的方法來(lái)為用戶(hù)提供個(gè)性化推薦,具體思路如下:

我們可以將與該用戶(hù)最相似的用戶(hù)喜歡的標(biāo)的物推薦給該用戶(hù),算法原理跟基于用戶(hù)的協(xié)同過(guò)濾類(lèi)似,計(jì)算公式甚至是一樣的。但是這里計(jì)算用戶(hù)相似度是基于用戶(hù)的人口統(tǒng)計(jì)學(xué)特征向量表示來(lái)計(jì)算的(計(jì)算用戶(hù)向量cosine余弦相似度)或者是基于用戶(hù)歷史行為嵌入獲得的特征向量來(lái)計(jì)算的,而基于用戶(hù)的協(xié)同過(guò)濾是基于用戶(hù)對(duì)標(biāo)的物的行為矩陣來(lái)計(jì)算用戶(hù)之間的相似度。

用戶(hù)u對(duì)標(biāo)的物s的喜好度sim(u,s)可以采用如下公式計(jì)算,其中U是與該用戶(hù)最相似的用戶(hù)集合,是用戶(hù)對(duì)標(biāo)的物s的喜好度,是用戶(hù)與用戶(hù)u的相似度。

有了用戶(hù)對(duì)每個(gè)標(biāo)的物的相似度,基于相似度降序排列,就可以取topN推薦給用戶(hù)了。

與前面一樣我們也可以采用最近鄰方法(K-NearestNeighbor, KNN)。通過(guò)kNN找到最相似的k個(gè)用戶(hù),將這些用戶(hù)操作/喜歡過(guò)的每個(gè)標(biāo)的物推薦給用戶(hù)。

其中是給用戶(hù)u的推薦,是用戶(hù)相似的k個(gè)用戶(hù)。是用戶(hù)操作/喜歡過(guò)的標(biāo)的物的集合。

(3)基于標(biāo)的物聚類(lèi)的推薦

有了標(biāo)的物的向量表示,我們可以用kmeans等聚類(lèi)算法將標(biāo)的物聚類(lèi),有了標(biāo)的物的聚類(lèi),推薦就好辦了。從用戶(hù)歷史行為中的標(biāo)的物所在的類(lèi)別挑選用戶(hù)沒(méi)有操作行為的標(biāo)的物推薦給用戶(hù),這種推薦方式是非常直觀(guān)自然的。電視貓的個(gè)性化推薦就采用了類(lèi)似的思路。具體計(jì)算公式如下,其中是給用戶(hù)u的推薦,H是用戶(hù)的歷史操作行為集合,Cluster(s)是標(biāo)的物s所在的聚類(lèi)。

(4)基于向量相似的推薦

不管是前面提到的用戶(hù)的顯示的興趣特征(利用標(biāo)簽來(lái)衡量用戶(hù)興趣)或者是向量式的興趣特征(將用戶(hù)的興趣投影到向量空間),我們都可以獲得用戶(hù)興趣的向量表示。

如果我們獲得了用戶(hù)的向量表示和標(biāo)的物的向量表示,那么我們就可以通過(guò)向量的cosine余弦相似度計(jì)算用戶(hù)與標(biāo)的物之間的相似度。一樣地,有了用戶(hù)對(duì)每個(gè)標(biāo)的物的相似度,基于相似度降序排列,就可以取topN推薦給用戶(hù)了。

基于向量的相似的推薦,需要計(jì)算用戶(hù)向量與每個(gè)標(biāo)的物向量的相似性。如果標(biāo)的物數(shù)量較多,整個(gè)計(jì)算過(guò)程還是相當(dāng)耗時(shí)的。同樣地,計(jì)算標(biāo)的物最相似的K個(gè)標(biāo)的物,也會(huì)涉及到與每個(gè)其他的標(biāo)的物計(jì)算相似度,也是非常耗時(shí)的。整個(gè)計(jì)算過(guò)程的時(shí)間復(fù)雜度是,其中N是標(biāo)的物的總個(gè)數(shù)。

上述復(fù)雜的計(jì)算過(guò)程可以利用Spark等分布式計(jì)算平臺(tái)來(lái)加速計(jì)算。對(duì)于T+1級(jí)(每天更新一次推薦結(jié)果)的推薦服務(wù),利用Spark事先計(jì)算好,將推薦結(jié)果存儲(chǔ)起來(lái)供前端業(yè)務(wù)調(diào)用是可以的。

另外一種可行的策略是利用高效的向量檢索庫(kù),在極短時(shí)間(一般幾毫秒或者幾十毫秒)內(nèi)為用戶(hù)索引出topN最相似的標(biāo)的物。目前FaceBook開(kāi)源的FAISS庫(kù)(https://github.com/facebookresearch/faiss)就是一個(gè)高效的向量搜索與聚類(lèi)庫(kù),可以在毫秒級(jí)響應(yīng)查詢(xún)及聚類(lèi)需求,因此可以用于個(gè)性化的實(shí)時(shí)推薦。目前國(guó)內(nèi)有很多公司將該庫(kù)用到了推薦業(yè)務(wù)上。

FAISS庫(kù)適合稠密向量的檢索和聚類(lèi),所以對(duì)于利用LDA、Doc2vector算法構(gòu)建向量表示的方案是實(shí)用的,因?yàn)檫@些方法構(gòu)建的是稠密向量。而對(duì)于TF-IDF及基于標(biāo)簽構(gòu)建的向量化表示,就不適用了,這兩類(lèi)方法構(gòu)建的都是稀疏的高維向量。

(5)基于標(biāo)簽的反向倒排索引做推薦

該方法在《推薦系統(tǒng)產(chǎn)品與算法概述》這篇文章中也簡(jiǎn)單做了介紹,這里再簡(jiǎn)單說(shuō)一下,并且給出具體的計(jì)算公式。基于標(biāo)的物的標(biāo)簽和用戶(hù)的歷史興趣,我們可以構(gòu)建出用戶(hù)基于標(biāo)簽興趣的畫(huà)像及標(biāo)簽與標(biāo)的物的倒排索引查詢(xún)表(熟悉搜索的同學(xué)應(yīng)該不難理解)。基于該反向索引表及用戶(hù)的興趣畫(huà)像,我們就可以為用戶(hù)做個(gè)性化推薦了。該類(lèi)算法其實(shí)就是基于標(biāo)簽的召回算法。

具體推薦過(guò)程是這樣的(見(jiàn)下面圖7):從用戶(hù)畫(huà)像中獲取用戶(hù)的興趣標(biāo)簽,基于用戶(hù)的興趣標(biāo)簽從倒排索引表中獲取該標(biāo)簽對(duì)應(yīng)的標(biāo)的物,這樣就可以從用戶(hù)關(guān)聯(lián)到標(biāo)的物了。其中用戶(hù)的每個(gè)興趣標(biāo)簽及標(biāo)簽關(guān)聯(lián)到的標(biāo)的物都是有權(quán)重的。

圖7:基于倒排索引的電影推薦

假設(shè)用戶(hù)的興趣標(biāo)簽及對(duì)應(yīng)的標(biāo)簽權(quán)重如下,其中是標(biāo)簽,是用戶(hù)對(duì)標(biāo)簽的偏好權(quán)重。

假設(shè)標(biāo)簽關(guān)聯(lián)的標(biāo)的物分別為

......

其中、分別是標(biāo)的物及對(duì)應(yīng)的權(quán)重,那么

上式中U是用戶(hù)對(duì)標(biāo)的物的偏好集合,我們這里將標(biāo)的物看成向量空間的基,所以有上面的公式。不同的標(biāo)簽可以關(guān)聯(lián)到相同的標(biāo)的物(因?yàn)椴煌臉?biāo)的物可以有相同的標(biāo)簽),上式中最后一個(gè)等號(hào)右邊需要合并同類(lèi)項(xiàng),將相同基前面的系數(shù)相加。合并同類(lèi)項(xiàng)后,標(biāo)的物(基)前面的數(shù)值就是用戶(hù)對(duì)該標(biāo)的物的偏好程度了,我們對(duì)這些偏好程度降序排列,就可以為用戶(hù)做topN推薦了。

到此我們介紹完了基于內(nèi)容的推薦算法的核心原理,那么這些算法是怎么應(yīng)用到真實(shí)的產(chǎn)品中的呢?有哪些可行的推薦產(chǎn)品形態(tài)?這就是下節(jié)的主要內(nèi)容。

03基于內(nèi)容的推薦算法應(yīng)用場(chǎng)景

基于內(nèi)容的推薦是最古老的一類(lèi)推薦算法,在整個(gè)推薦系統(tǒng)發(fā)展史上具有舉足輕重的地位。雖然它的效果可能沒(méi)有協(xié)同過(guò)濾及新一代推薦算法好,但是它們還是非常有應(yīng)用價(jià)值的,甚至是必不可少的?;趦?nèi)容的推薦算法主要用在如下幾類(lèi)場(chǎng)景。

▌1.完全個(gè)性化推薦

就是基于內(nèi)容特征來(lái)為每個(gè)用戶(hù)生成不同的推薦結(jié)果,我們常說(shuō)的推薦系統(tǒng)就是指這類(lèi)推薦形態(tài)。上面一節(jié)第四部分已經(jīng)完整地講解了怎么為用戶(hù)做個(gè)性化推薦,這里不再贅述。

▌2.標(biāo)的物關(guān)聯(lián)標(biāo)的物推薦

標(biāo)的物關(guān)聯(lián)標(biāo)的物的推薦也是工業(yè)界最常用的推薦形態(tài),大量用于真實(shí)產(chǎn)品中。

上一節(jié)第三部分講了很多怎么構(gòu)建標(biāo)的物之間相似度的方法,其實(shí)這些方法可以直接用來(lái)做標(biāo)的物關(guān)聯(lián)標(biāo)的物的推薦,只要我們將與某個(gè)標(biāo)的物最相似的topN的標(biāo)的物作為關(guān)聯(lián)推薦即可。

▌3.配合其他推薦算法

由于基于內(nèi)容的推薦算法在精準(zhǔn)度上不如協(xié)同過(guò)濾等算法,但是可以更好的適應(yīng)冷啟動(dòng),所以在實(shí)際業(yè)務(wù)中基于內(nèi)容的推薦算法會(huì)配合其他算法一起服務(wù)于用戶(hù),最常用的方法是采用級(jí)聯(lián)的方式,先給用戶(hù)協(xié)同過(guò)濾的推薦結(jié)果,如果該用戶(hù)行為少?zèng)]有協(xié)同過(guò)濾推薦結(jié)果,就為該用戶(hù)推薦基于內(nèi)容的推薦算法產(chǎn)生的推薦結(jié)果。

▌4.主題推薦

如果我們有標(biāo)的物的標(biāo)簽信息,并且基于標(biāo)簽系統(tǒng)構(gòu)建了一套推薦算法,那么我們就可以將用戶(hù)喜歡的標(biāo)簽采用主題的方式推薦給用戶(hù),每個(gè)主題就是用戶(hù)的一個(gè)興趣標(biāo)簽。通過(guò)一些列主題的羅列展示,讓用戶(hù)從中篩選自己感興趣的內(nèi)容(見(jiàn)下面圖8)。Netflix的首頁(yè)大量采用基于主題的推薦模式。主題推薦的好處是可以將用戶(hù)所有的興趣點(diǎn)按照興趣偏好大小先后展示出來(lái),可解釋性強(qiáng),并且讓用戶(hù)有更多維度的自由選擇空間。

當(dāng)然,在真實(shí)產(chǎn)品中可以采用比下面圖8這種簡(jiǎn)單標(biāo)簽直接展示更好的方式。具體來(lái)說(shuō),我們可以為每個(gè)標(biāo)簽通過(guò)人工編輯生成一句更有表達(dá)空間的話(huà)(如武俠標(biāo)簽,可以采用“江湖風(fēng)云再起,各大門(mén)派齊聚論劍”這樣更有深度的表述),具體前端展示時(shí)映射到人工填充的話(huà)而不是直接展示原來(lái)的標(biāo)簽。

圖8:電視貓主題推薦(紅色圈圈中就是基于標(biāo)簽的用戶(hù)興趣)

▌5.給用戶(hù)推薦標(biāo)簽

另外一種可行的推薦策略是不直接給用戶(hù)推薦標(biāo)的物,而是給用戶(hù)推薦標(biāo)簽,用戶(hù)通過(guò)關(guān)注推薦的標(biāo)簽,自動(dòng)獲取具備該標(biāo)簽的標(biāo)的物。除了可以通過(guò)推薦的標(biāo)簽關(guān)聯(lián)到標(biāo)的物獲得直接推薦標(biāo)的物類(lèi)似的效果外,間接地通過(guò)用戶(hù)對(duì)推薦的標(biāo)簽的選擇、關(guān)注進(jìn)一步獲得了用戶(hù)的興趣偏好,這是一種可行的推薦產(chǎn)品實(shí)現(xiàn)方案。

04基于內(nèi)容的推薦算法的優(yōu)勢(shì)與缺點(diǎn)

基于內(nèi)容的推薦算法算是一類(lèi)比較直觀(guān)易懂的算法,目前在工業(yè)級(jí)推薦系統(tǒng)中有大量的使用場(chǎng)景,在本節(jié)我們對(duì)基于內(nèi)容的推薦算法的優(yōu)缺點(diǎn)加以說(shuō)明,方便讀者在實(shí)踐中選擇取舍,構(gòu)建適合業(yè)務(wù)場(chǎng)景的內(nèi)容推薦系統(tǒng)。

▌1.優(yōu)點(diǎn)

基于上面的介紹,基于內(nèi)容的推薦算法是非常直觀(guān)的,具體來(lái)說(shuō),它有如下6個(gè)優(yōu)點(diǎn)。

(1)可以很好的識(shí)別用戶(hù)的口味

該算法完全基于用戶(hù)的歷史興趣來(lái)為用戶(hù)推薦,推薦的標(biāo)的物也是跟用戶(hù)歷史興趣相似的,所以推薦的內(nèi)容一定是符合用戶(hù)的口味的。

(2)非常直觀(guān)易懂,可解釋性強(qiáng)

基于內(nèi)容的推薦算法基于用戶(hù)的興趣為用戶(hù)推薦跟他興趣相似的標(biāo)的物,原理簡(jiǎn)單,容易理解。同時(shí),由于是基于用戶(hù)歷史興趣推薦跟興趣相似的標(biāo)的物,用戶(hù)也非常容易接受和認(rèn)可。

(3)可以更加容易的解決冷啟動(dòng)

只要用戶(hù)有一個(gè)操作行為,就可以基于內(nèi)容為用戶(hù)做推薦,不依賴(lài)其他用戶(hù)行為。同時(shí)對(duì)于新入庫(kù)的標(biāo)的物,只要它具備metadata信息等標(biāo)的物相關(guān)信息,就可以利用基于內(nèi)容的推薦算法將它分發(fā)出去。因此,對(duì)于強(qiáng)依賴(lài)于UGC內(nèi)容的產(chǎn)品(如抖音、快手等),基于內(nèi)容的推薦可以更好地對(duì)標(biāo)的物提供方進(jìn)行流量扶持。

(4)算法實(shí)現(xiàn)相對(duì)簡(jiǎn)單

基于內(nèi)容的推薦可以基于標(biāo)簽維度做推薦,也可以將標(biāo)的物嵌入向量空間中,利用相似度做推薦,不管哪種方式,算法實(shí)現(xiàn)較簡(jiǎn)單,有現(xiàn)成的開(kāi)源的算法庫(kù)供開(kāi)發(fā)者使用,非常容易落地到真實(shí)的業(yè)務(wù)場(chǎng)景中。

(5)對(duì)于小眾領(lǐng)域也能有比較好的推薦效果

對(duì)于冷門(mén)小眾的標(biāo)的物,用戶(hù)行為少,協(xié)同過(guò)濾等方法很難將這類(lèi)內(nèi)容分發(fā)出去,而基于內(nèi)容的算法受到這種情況的影響相對(duì)較小。

(6)非常適合標(biāo)的物快速增長(zhǎng)的有時(shí)效性要求的產(chǎn)品

對(duì)于標(biāo)的物增長(zhǎng)很快的產(chǎn)品,如今日頭條等新聞資訊類(lèi)APP,基本每天都有幾十萬(wàn)甚至更多的標(biāo)的物入庫(kù),另外標(biāo)的物時(shí)效性也很強(qiáng)。新標(biāo)的物一般用戶(hù)行為少,協(xié)同過(guò)濾等算法很難將這些大量實(shí)時(shí)產(chǎn)生的新標(biāo)的物推薦出去,這時(shí)就可以采用基于內(nèi)容的推薦算法更好地分發(fā)這些內(nèi)容。

▌2.缺點(diǎn)

雖然基于內(nèi)容的推薦實(shí)現(xiàn)相對(duì)容易,解釋性強(qiáng),但是基于內(nèi)容的推薦算法存在一些不足,導(dǎo)致它的效果及應(yīng)用范圍受到一定限制。主要的問(wèn)題有如下4個(gè):

(1)推薦范圍狹窄,新穎性不強(qiáng)

由于該類(lèi)算法只依賴(lài)于單個(gè)用戶(hù)的行為為用戶(hù)做推薦,推薦的結(jié)果會(huì)聚集在用戶(hù)過(guò)去感興趣的標(biāo)的物類(lèi)別上,如果用戶(hù)不主動(dòng)關(guān)注其他類(lèi)型的標(biāo)的物,很難為用戶(hù)推薦多樣性的結(jié)果,也無(wú)法挖掘用戶(hù)深層次的潛在興趣。特別是對(duì)于新用戶(hù),只有少量的行為,為用戶(hù)推薦的標(biāo)的物較單一。

(2)需要知道相關(guān)的內(nèi)容信息且處理起來(lái)較難

內(nèi)容信息主要是文本、視頻、音頻,處理起來(lái)費(fèi)力,相對(duì)難度較大,依賴(lài)領(lǐng)域知識(shí)。同時(shí)這些信息更容易有更大概率含有噪音,增加了處理難度。另外,對(duì)內(nèi)容理解的全面性、完整性及準(zhǔn)確性會(huì)影響推薦的效果。

(3)較難將長(zhǎng)尾標(biāo)的物分發(fā)出去

基于內(nèi)容的推薦需要用戶(hù)對(duì)標(biāo)的物有操作行為,長(zhǎng)尾標(biāo)的物一般操作行為非常少,只有很少用戶(hù)操作,甚至沒(méi)有用戶(hù)操作。由于基于內(nèi)容的推薦只利用單個(gè)用戶(hù)行為做推薦,所以更難將它分發(fā)給更多的用戶(hù)。

(4)推薦精準(zhǔn)度不太高

基于工業(yè)界的實(shí)踐經(jīng)驗(yàn),相比協(xié)同過(guò)濾算法,基于內(nèi)容的推薦算法精準(zhǔn)度要差一些。

05算法落地需要關(guān)注的重要問(wèn)題

基于內(nèi)容的推薦算法雖然容易理解,實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單,但在落地到真實(shí)業(yè)務(wù)場(chǎng)景中,有很多問(wèn)題需要思考解決。下面這些問(wèn)題是在落地基于內(nèi)容推薦算法時(shí)必須思考的,這里將他們列舉出來(lái),并提供一些簡(jiǎn)單的建議,希望可以幫到讀者。

▌1.內(nèi)容來(lái)源的獲取

對(duì)于基于內(nèi)容的推薦來(lái)說(shuō),有完整的、高質(zhì)量的內(nèi)容信息是可以構(gòu)建精準(zhǔn)的推薦算法的基礎(chǔ),那我們有哪些方法可以獲取內(nèi)容來(lái)源呢?下面這些策略是主要獲取內(nèi)容(包括標(biāo)的物內(nèi)容和用戶(hù)相關(guān)內(nèi)容)來(lái)源的手段。

(1)標(biāo)的物“自身攜帶”的信息

標(biāo)的物在上架時(shí),第三方會(huì)準(zhǔn)備相關(guān)的內(nèi)容信息,如天貓上的商品在上架時(shí)會(huì)補(bǔ)充很多必要的信息。對(duì)于視頻來(lái)說(shuō),各類(lèi)metadata信息也是視頻入庫(kù)時(shí)需要填充的信息。我們要做的是增加對(duì)新標(biāo)的物入庫(kù)的監(jiān)控和審核,及時(shí)發(fā)現(xiàn)信息不全的情況并做適當(dāng)處理。

(2)通過(guò)爬蟲(chóng)獲取標(biāo)的物相關(guān)信息

通過(guò)爬蟲(chóng)爬取的信息可以作為標(biāo)的物信息的補(bǔ)充,特別是補(bǔ)充上面(1)不全的信息。有了更完整的信息就可以獲得更好的特征表示。

(3)通過(guò)人工標(biāo)注數(shù)據(jù)

往往人工標(biāo)注的數(shù)據(jù)價(jià)值密度高,通過(guò)人工精準(zhǔn)的標(biāo)注可以大大提升算法推薦的精準(zhǔn)度。但是人工標(biāo)注成本太大。

(4)通過(guò)運(yùn)營(yíng)活動(dòng)或者產(chǎn)品交互讓用戶(hù)填的內(nèi)容

通過(guò)抽獎(jiǎng)活動(dòng)讓用戶(hù)填寫(xiě)家庭組成、興趣偏好等,在用戶(hù)開(kāi)始注冊(cè)時(shí)讓用戶(hù)填寫(xiě)興趣偏好特征,這些都是獲取內(nèi)容的手段。

(5)通過(guò)收集用戶(hù)行為直接獲得或者預(yù)測(cè)推斷出的內(nèi)容

通過(guò)請(qǐng)求用戶(hù)GPS位置知道用戶(hù)的活動(dòng)軌跡,用戶(hù)購(gòu)物時(shí)填寫(xiě)收貨地址,用戶(hù)綁定的身份證和銀行卡等,通過(guò)用戶(hù)操作行為預(yù)測(cè)出用戶(hù)的興趣偏好,這些方法都可以獲得部分用戶(hù)數(shù)據(jù)。

(6)通過(guò)與第三方合作或者產(chǎn)品矩陣之間補(bǔ)充信息

目前中國(guó)有大數(shù)據(jù)交易市場(chǎng),通過(guò)正規(guī)的數(shù)據(jù)交易或者跟其他公司合作,在不侵犯用戶(hù)隱私的情況下,通過(guò)交換數(shù)據(jù)可以有效填補(bǔ)自己產(chǎn)品上缺失的數(shù)據(jù)。

如果公司有多個(gè)產(chǎn)品,新產(chǎn)品可以借助老產(chǎn)品的巨大用戶(hù)基數(shù),將新產(chǎn)品的用戶(hù)與老產(chǎn)品用戶(hù)關(guān)聯(lián)起來(lái)(id-maping或者賬號(hào)打通),這樣老產(chǎn)品上豐富的用戶(hù)行為信息可以賦能給新產(chǎn)品。

▌2.怎么利用負(fù)反饋

用戶(hù)對(duì)標(biāo)的物的操作行為不一定代表正向反饋,有可能是負(fù)向的。比如點(diǎn)開(kāi)一個(gè)視頻,看了不到幾秒就退出來(lái)了,明顯表明用戶(hù)不喜歡。有很多產(chǎn)品會(huì)在用戶(hù)交互中直接提供負(fù)向反饋能力,這樣可以收集到更多負(fù)向反饋。下面是今日頭條和百度APP推薦的文章,右下角有一個(gè)小叉叉(見(jiàn)下面圖9中紅色圈圈),點(diǎn)擊后展示上面的白色交互區(qū)域,讀者可以勾選幾類(lèi)不同的負(fù)向反饋機(jī)制。

圖9:負(fù)向反饋的交互形式:利用用戶(hù)負(fù)向反饋來(lái)優(yōu)化產(chǎn)品體驗(yàn)

負(fù)向反饋代表用戶(hù)強(qiáng)烈的不滿(mǎn),因此如果推薦算法可以很好的利用這些負(fù)向反饋就能夠大大提升推薦系統(tǒng)的精準(zhǔn)度和滿(mǎn)意度?;趦?nèi)容的推薦算法整合負(fù)向反饋的方式有如下幾種:

(1) 將負(fù)向反饋整合到算法模型中

在構(gòu)建算法模型中整合負(fù)向反饋,跟正向反饋一起學(xué)習(xí),從而更自然地整合負(fù)向反饋信息。

(2) 采用事后過(guò)濾的方式

先給用戶(hù)生成推薦列表,再?gòu)脑撏扑]列表中過(guò)濾掉與負(fù)向反饋關(guān)聯(lián)的或者相似的標(biāo)的物。

(3) 采用事前處理的方式

從待推薦的候選集中先將與負(fù)向反饋相關(guān)聯(lián)或者相似的標(biāo)的物剔除掉,然后再進(jìn)行相關(guān)算法的推薦。

▌3.興趣隨時(shí)間變化

用戶(hù)的興趣不是一成不變的,一般用戶(hù)的興趣是隨著時(shí)間變化的,那怎么在算法中整合用戶(hù)的興趣變化呢?可行的策略是對(duì)用戶(hù)的興趣根據(jù)時(shí)間衰減,最近的行為給予最大的權(quán)重。還可以分別給用戶(hù)建立短期興趣特征和長(zhǎng)期興趣特征,在推薦時(shí)既考慮短期興趣又考慮長(zhǎng)期興趣,最終推薦列表中整合兩部分的推薦結(jié)果。

對(duì)于新聞資訊等這類(lèi)時(shí)效性強(qiáng)的產(chǎn)品,能夠整合用戶(hù)的實(shí)時(shí)興趣變化可以大大提升用戶(hù)體驗(yàn),這也是現(xiàn)在信息流類(lèi)推薦產(chǎn)品大行其道的原因。

▌4.數(shù)據(jù)清洗

基于內(nèi)容的推薦算法依賴(lài)于標(biāo)的物相關(guān)的描述信息,這些信息更多的是以文本的形式存在,這就涉及到自然語(yǔ)言處理了,文本中可能會(huì)存在很多歧義、符號(hào)、臟數(shù)據(jù),我們需要事先對(duì)數(shù)據(jù)進(jìn)行很好的處理,才能讓后續(xù)的推薦算法產(chǎn)生好的效果。

▌5.加速計(jì)算與節(jié)省資源

在實(shí)際推薦算法落地時(shí),我們會(huì)事先為每個(gè)標(biāo)的物計(jì)算N(=50)個(gè)最相似的標(biāo)的物,事先將計(jì)算好的標(biāo)的物存起來(lái),減少時(shí)間和空間成本,方便后續(xù)更好地做推薦。同時(shí)也可以利用各種分布式計(jì)算平臺(tái)和快速查詢(xún)平臺(tái)(如Spark、FAISS庫(kù)等)加速計(jì)算過(guò)程。另外,算法開(kāi)發(fā)過(guò)程中盡量做到模塊化,對(duì)業(yè)務(wù)做抽象封裝,這可以大大提升開(kāi)發(fā)效率,并且可能會(huì)節(jié)省很多資源。

▌6.怎么解決基于內(nèi)容的推薦越推越窄的問(wèn)題

前面提到基于內(nèi)容的推薦存在越推越窄的缺點(diǎn),那怎么避免或者減弱這種影響呢?當(dāng)然用協(xié)同過(guò)濾等其他算法是一個(gè)有效的方法。另外,我們可以給用戶(hù)做興趣探索,為用戶(hù)推薦興趣之外的特征關(guān)聯(lián)的標(biāo)的物,通過(guò)用戶(hù)的反饋來(lái)拓展用戶(hù)興趣空間,這類(lèi)方法就是強(qiáng)化學(xué)習(xí)中的EE方法。如果我們構(gòu)造了標(biāo)的物的知識(shí)圖譜系統(tǒng),我們就可以通過(guò)圖譜拓展標(biāo)的物更遠(yuǎn)的聯(lián)系,通過(guò)長(zhǎng)線(xiàn)的相關(guān)性來(lái)做推薦,同樣可以有效解決越推越窄的問(wèn)題。

▌7.工程落地技術(shù)選型

本篇文章主要講的是基于內(nèi)容的推薦系統(tǒng)的算法實(shí)現(xiàn)原理,具體工程實(shí)踐時(shí),需要考慮到數(shù)據(jù)處理、模型訓(xùn)練、分布式計(jì)算等技術(shù),當(dāng)前很多開(kāi)源方案可以使用,常用的如Spark mllib,scikit-learn,Tensorflow,pytorch,gensim等,這些工具都封裝了很多數(shù)據(jù)處理、特征提取、機(jī)器學(xué)習(xí)算法,我們可以基于第二節(jié)的算法思路來(lái)落地實(shí)現(xiàn)。

▌8.業(yè)務(wù)的安全性

除了技術(shù)外,在推薦產(chǎn)品落地中還需要考慮推薦的標(biāo)的物的安全性,避免推薦反動(dòng)、色情、標(biāo)題黨、低俗內(nèi)容,這些就需要基于NLP或者CV技術(shù)對(duì)文本或者視頻進(jìn)行分析過(guò)濾。如果是UGC平臺(tái)型的產(chǎn)品,還需要考慮怎么激勵(lì)優(yōu)質(zhì)內(nèi)容創(chuàng)作者,讓好的內(nèi)容得到更多的分發(fā)機(jī)會(huì),同時(shí)對(duì)產(chǎn)生劣質(zhì)內(nèi)容的創(chuàng)作者采取一定的懲罰措施,比如限制發(fā)文頻率、禁止一段時(shí)間的發(fā)文權(quán)限等。

寫(xiě)在最后

本文作者基于自己的實(shí)踐經(jīng)驗(yàn)總結(jié)了常用的基于內(nèi)容的推薦算法及落地場(chǎng)景,并對(duì)基于內(nèi)容的推薦算法的優(yōu)缺點(diǎn)及實(shí)踐過(guò)程中需要關(guān)注的問(wèn)題進(jìn)行了分析討論?;趦?nèi)容的推薦算法一般用于推薦召回階段,通過(guò)內(nèi)容特征來(lái)為用戶(hù)選擇可能喜歡的內(nèi)容。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算
    +關(guān)注

    關(guān)注

    2

    文章

    460

    瀏覽量

    40005
  • 推薦算法
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    10282
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    491

    瀏覽量

    23282

原文標(biāo)題:一文全面了解基于內(nèi)容的推薦算法

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+一本介紹基礎(chǔ)硬件算法模塊實(shí)現(xiàn)的好書(shū)

    看下本書(shū)內(nèi)容簡(jiǎn)介,然后再瀏覽下各個(gè)章節(jié)的內(nèi)容。 從簡(jiǎn)介來(lái)看,本書(shū)也是關(guān)注最基礎(chǔ),最常用的那部分算法的電路實(shí)現(xiàn),比較貼合工程實(shí)踐,適合無(wú)基
    發(fā)表于 11-20 13:42

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡(jiǎn)介

    內(nèi)容簡(jiǎn)介這是一本深入解讀基礎(chǔ)算法及其電路設(shè)計(jì),以打通算法研發(fā)到數(shù)字IC設(shè)計(jì)的實(shí)現(xiàn)屏障,以及指導(dǎo)芯片設(shè)計(jì)工程師從底層掌握復(fù)雜電路設(shè)計(jì)與優(yōu)化方法為目標(biāo)的專(zhuān)業(yè)技術(shù)書(shū)。任何芯片(如WiFi芯片
    發(fā)表于 11-21 17:14

    PPEC電源DIY套件:圖形化算法編程,解鎖電力電子底層算法實(shí)踐

    智能化設(shè)計(jì)平臺(tái),為用戶(hù)提供了一個(gè)接觸和操作底層算法的便捷途徑。 用戶(hù)無(wú)需進(jìn)行復(fù)雜的代碼編寫(xiě),可以一鍵套用工程模版,也可以通過(guò)圖形化界面自定義控制算法,就能夠輕松在實(shí)驗(yàn)室有限的環(huán)境中制作實(shí)物電路,快速開(kāi)發(fā)
    發(fā)表于 08-14 11:30

    算法工程師需要具備哪些技能?

    算法工程師需要掌握一系列跨學(xué)科的技能,涵蓋數(shù)學(xué)基礎(chǔ)、編程能力、算法理論、工程實(shí)踐以及業(yè)務(wù)理解等多個(gè)方面。 以下是具體技能及學(xué)習(xí)建議: 線(xiàn)性代
    發(fā)表于 02-27 10:53

    應(yīng)用于聲音振動(dòng)的高級(jí)信號(hào)處理算法-超越FFT pdf

    應(yīng)用于聲音振動(dòng)的高級(jí)信號(hào)處理算法-超越FFT 議程高級(jí)信號(hào)處理算法時(shí)頻分析小波分析倒譜分析AR建模應(yīng)用實(shí)例軸承故障診斷, 儀表盤(pán)馬達(dá)質(zhì)量檢測(cè), 揚(yáng)聲器生產(chǎn)測(cè)試, … [/hide][此貼子已經(jīng)被作者于2009
    發(fā)表于 10-30 08:54

    算法工程師(通信 視頻 音頻 圖像)-廣東

    對(duì)所設(shè)計(jì)的算法的體驗(yàn)7)根據(jù)個(gè)人興趣在團(tuán)隊(duì)內(nèi)合理調(diào)配工作內(nèi)容資深音視頻算法工程師(工作地點(diǎn):廣東)職位要求: 1、熟練掌握C/C++,Matlab語(yǔ)言編程,具備較強(qiáng)的
    發(fā)表于 03-18 17:50

    推薦常用算法之——基于內(nèi)容的推薦

    推薦常用算法之-基于內(nèi)容的推薦(轉(zhuǎn)自-BreezeDeus博主)
    發(fā)表于 04-29 15:12

    基于內(nèi)容的推薦算法概覽

    為推薦系統(tǒng)選擇正確的推薦算法非常重要,而可用的算法很多,想要找到最適合所處理問(wèn)題的算法還是很有難度的。這些算法每種都各有優(yōu)劣,也各有局限,因此在作出決策前我們應(yīng)當(dāng)對(duì)其做以衡量。在
    發(fā)表于 10-09 18:42 ?0次下載
    基于<b class='flag-5'>內(nèi)容</b>的推薦<b class='flag-5'>算法</b>概覽

    人工魚(yú)群算法應(yīng)用于飼料配方優(yōu)化

    考慮到智能算法對(duì)各類(lèi)飼料配方優(yōu)化模型的廣泛適用性,首次將人工魚(yú)群算法( AFSA)應(yīng)用于飼料配方優(yōu)化。為滿(mǎn)足飼料配方優(yōu)化對(duì)收斂精度的要求,采用了一種基于共生系統(tǒng)的人工魚(yú)群算法運(yùn)行框架,
    發(fā)表于 12-08 16:16 ?0次下載
    人工魚(yú)群<b class='flag-5'>算法</b><b class='flag-5'>應(yīng)用于</b>飼料配方優(yōu)化

    貝葉斯統(tǒng)計(jì)的一個(gè)實(shí)踐案例讓你更快的對(duì)貝葉斯算法更多的了解

    為了大家可以對(duì)貝葉斯算法更多的了解,為大家整理過(guò)一篇關(guān)于貝葉斯算法的文章。今天將為大家介紹利用貝葉斯統(tǒng)計(jì)的一個(gè)實(shí)踐案例。通項(xiàng)目實(shí)踐達(dá)到學(xué)以
    的頭像 發(fā)表于 07-16 17:15 ?1.5w次閱讀

    怎樣才算是合格的算法工程

    Q1:計(jì)算機(jī)專(zhuān)業(yè)本科生,非ACMER。算法達(dá)到什么程度才算是合格,什么量化手段嗎?
    的頭像 發(fā)表于 06-17 17:38 ?3255次閱讀

    人臉識(shí)別的算法哪些

    人臉識(shí)別的算法哪些 人臉識(shí)別算法現(xiàn)在已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域,如安防、商業(yè)、醫(yī)療等。人臉識(shí)別算法可以分為傳統(tǒng)人臉識(shí)別
    的頭像 發(fā)表于 08-09 18:34 ?9112次閱讀

    深度學(xué)習(xí)算法工程師是做什么

    深度學(xué)習(xí)算法工程師是做什么 深度學(xué)習(xí)算法工程師是一種高級(jí)技術(shù)人才,是數(shù)據(jù)科學(xué)中創(chuàng)新的推動(dòng)者,也是實(shí)現(xiàn)人工智能應(yīng)用的重要人才。他們致力于開(kāi)發(fā)和實(shí)現(xiàn)深度機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:03 ?2308次閱讀

    機(jī)器學(xué)習(xí)哪些算法?機(jī)器學(xué)習(xí)分類(lèi)算法哪些?機(jī)器學(xué)習(xí)預(yù)判哪些算法?

    機(jī)器學(xué)習(xí)哪些算法?機(jī)器學(xué)習(xí)分類(lèi)算法哪些?機(jī)器學(xué)習(xí)預(yù)判哪些算法? 機(jī)器學(xué)習(xí)是一種人工智能技術(shù)
    的頭像 發(fā)表于 08-17 16:30 ?2954次閱讀

    深度識(shí)別算法包括哪些內(nèi)容

    :CNN是深度學(xué)習(xí)中處理圖像和視頻等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的主要算法。它通過(guò)卷積層、池化層和全連接層等組件,實(shí)現(xiàn)對(duì)圖像特征的自動(dòng)提取和識(shí)別。 應(yīng)用領(lǐng)域 :CNN在圖像識(shí)別、目標(biāo)檢測(cè)、視頻分析、人臉識(shí)別等領(lǐng)域取得了巨大成功,被廣泛應(yīng)用于
    的頭像 發(fā)表于 09-10 15:28 ?1395次閱讀