內容的個性推薦體系如何搭建?


內容的個性推薦體系如何搭建?


內容的個性推薦體系如何搭建?

看到題主這個腦圖,基本是可以有個初步結論:題主對推薦的理解可能非常淺顯,知道推薦大概有什麼東西,但不知道怎麼具體落地。也沒有想怎麼做視頻的推薦。很多功能點不是剛開始就需要考慮的,很多需要仔細考慮的卻沒有考慮。

關於推薦的一些通用的基礎知識,我之前倒是總結過一些,想了解的話可以看一下:

【推薦系統那些事兒·一】從天貓雙11到餘弦公式 - 知乎專欄

【推薦系統那些事兒·二】常用推薦策略介紹 - 知乎專欄

【推薦系統那些事兒·三】推薦策略設計的Notes - 知乎專欄

關於裡面提到的一些基礎知識不再重複。只是擴展下,如果讓我來做這個視頻推薦,我會怎麼想這個問題,以及怎麼做這個項目。

1. 視頻推薦的特殊性

視頻領域或者說內容領域,和商品、電影、書籍、音樂還不太一樣。主要有是時效性要求高,推薦需要考慮多推薦新的好的視頻,在最需要推薦的時候,往往缺少足夠多的數據。而商品、電影,書籍、音樂則對時效性不那麼強。而內容類的推薦,給予標籤的推薦會更通用一些。

2. 是否需要個性化推薦?

是否需要個性化推薦,需要在做個性化推薦之前思考清楚。很多公司覺得個性化推薦能解決一切問題,這是戰略上很偷懶的行為。換個角度,如果你就每天更新100個視頻,你分成10個大類,每個類更新平均10個差不多就行了。然後排序就按照播放量排序就OK。

基本思路是,如果信息比較少,一個feed流就OK,如果信息比較多,則做分類,如果信息更多,分類無法處理,那麼搜索推薦才應該被考慮。

如果場景是在詳情頁的推薦,那是不是同分類的推薦就基本OK,或者簡單協同過濾也就基本OK。

3. 實現的路徑

一個成功的推薦系統應該是什麼樣子,什麼機器學習,及時反饋,驚喜感,大家都能拽幾個詞。然後,我們怎麼做到這步?卻很少有人去真正想。一個牛逼的藍圖,必須有如何實現的路徑。一開始畫個這種看似面面俱到,但其實一年半載出不來的東西是肯定是不行的。

4. 一個可能的方案


內容的個性推薦體系如何搭建?

簡要描述下:

對於內容庫的搭建,前期根本沒有能力做太多機器學習的挖掘性工作,人工分類就夠了。如果真的是PGC或者UGC的話,這個視頻量其實不會太多。

對用戶的分類基本是根據用戶消費了哪些方面的內容打分類標籤。分類標籤粒度也應該是和體量相匹配。

算法設計主要是基於用戶分類標籤和內容分類標籤的匹配。用戶消費過A標籤的內容可以給用戶A標籤,同時也可以推薦A標籤關聯性極高的B標籤的內容,比如:用戶有遊戲視頻的標籤,也可以根據標籤間關聯性推薦動漫標籤下內容。關聯關係既可以人工標註,也可以簡單的算法計算,比如CF。最終結合業務指標進行打分。

上線之前一定要有離線評估,離線評估指標是算法調整的指導性指標。真實上線前也需要有合理的AB test,對於實驗方案和指標都需要認真考慮。

5. 寫在最後

構建個性化推薦有若干種方法,不同公司也有不同公司具體的情況。而不管什麼方法,不管什麼公司,在做個性化推薦的時候,都會發現一堆各種各樣的坑。這些坑不會在論文裡,也不會在書裡。通用方法不經打磨很難使用在具體的場景和業務。而機器學習也未必比部分人工規則有太大的優勢。

這個答案說到底,也只是個分析問題的參考。

如果非要說給題主什麼建議的話,那就是:多看看有用的案例,多掂量自己的業務場景,多掂量自己的機器計算能力,多掂量自己的業務人員水平。

最近2年多的時間一直在做QQ音樂個性化推薦和用戶畫像建設的相關工作,也分享下我對內容型產品之一視頻類產品個推的理解吧。

1.想清楚做個推的原因。是跟隨趨勢還是順勢而為?

自從alpha狗橫空出世,AI領域就變得火爆異常,只要是個內容型產品都會有個個推夢。但,是不是每個產品都需要,都適合做個性化推薦呢,恐怕很少人去仔細思考過。其實在國內,有個推需求的產品還是不太多的。比如音樂,每個人都喜歡聽到自己感興趣的音樂,那是不是一定要是冷門小眾的歌曲,才能彰顯自己獨特品味?其實不然,大家可以回想下從小我們聽歌,喜歡一首歌更多是因為某個明星,某個熱門趨勢,覺得自己不聽就會low的慣性去聽。而等到慢慢長大,這時候追星慢慢淡去,更多的是自己對音樂的理解,所以慢慢才會形成自己的口味,去選擇性的聽音樂。因此,對於不同階段的人群,對於內容的需求是不一樣的。通過數據我們也驗證過,對於年齡較小的用戶,對新熱的感知度較高,而對個性化的需求並不算太強烈。因此,當你要對自己的內容型產品做個性化時,一定要想清楚幾點:我的數據多麼?我的用戶他們的需求真的很多樣性麼?如果是,那麼可以繼續思考下去,切勿跟風,畢竟一個好的個推系統有很多種做法,成本投入很大,一定要事先了解清楚這些才開始做,不然大概率事倍功半。

2.理清楚想做的內容型產品的特點,因地制宜。

視頻有別於其他內容載體:

1)和音樂相比,它更偏一次性消費,很少被用戶重複消費,因此更多應該考慮用戶對某一類的喜好,而非某一個內容的喜好;

2)和新聞相比,部分非新聞快訊的節目及時性不需要很強,於是可以讓你的算法可以用時間換空間,通過離線計算獲得更精準的結果。

對自己的內容型產品瞭解有助於後續和開發團隊定下來一些規範,比如運算效率,讓團隊達成共識。

3.建立內容庫,以精為重,通過一些技巧解決標籤生成難的問題。

推薦系統做的好不好,一個好的內容庫佔了一半的功勞。好的內容庫並不是應該大而信息不全,而應該維護好每個類別下精品數據的標籤準確性和覆蓋率。音樂產品動輒幾千萬曲庫,視頻產品動輒幾億條視頻,與其平均施力維護一個大的內容庫,還不如維護一個1/10,甚至1/100的庫保證其標籤或基礎信息的準確性來的好。

比如打標籤也是做任何做推薦系統都必須要經歷的。那其實除了人為縮小內容庫範圍方法之外,我們也可以嘗試利用用戶的ugc行為幫我們打上標籤。比如每個視頻app都有播單(可以將喜歡的視頻加入成為列表,並改成自己喜歡的列表名),那其實我們可以遍歷所有用戶的播單,對於每一個視頻,抽出包含它的播單並進行切詞分析後,那麼我們就可以知道哪些是“喜劇”,哪些是“恐怖片”之類的了。如下方的七品芝麻官,可能沒有打上標籤,但被1000個播單都認為是喜劇,所以喜劇的概率就接近100%,此時自動生成一個“喜劇”標籤給這個影片就無可厚非了。


內容的個性推薦體系如何搭建?

而對於短視頻等,我們也可以通過對標題進行文本分析,切詞提取關鍵詞形成這個視頻的標籤。從而豐富視頻的維度。


內容的個性推薦體系如何搭建?

更神奇的如google,最近還推出了一個解決方案,通過分析視頻截圖畫面判斷內容究竟是什麼,從而來判斷視頻包含什麼人物,來給視頻建立豐富的標籤索引。

人工智能里程碑:谷歌率先實現視頻內容識別_騰訊網觸屏版

所以其實方法有很多,關鍵是去結合自身業務特點去想,總能想到一些快速豐富標籤的思路。

4.為每個用戶建立用戶畫像,形成推薦的基礎。

每個用戶都會有自己相對穩定的偏好,因此如果我們對用戶建模,大概瞭解到他喜歡什麼樣類型的視頻(是喜劇還是恐怖劇,是韓劇還是日劇),喜歡什麼類型的演員(青春活力,實力演技)容易被什麼樣的標題吸引(標題主題),那麼我們可以直接根據用戶的畫像,推薦他感興趣的類型,但又還沒有看過的內容。比如最近一個月,系統通過統計我的行為發現,我愛看推理劇,那麼,推薦一部《神探伽利略》就可能會讓我感覺驚喜了。再比如系統知道我是個ACG愛好者,那麼推薦給我沒看過的新番熱番其實都是一個不錯的選擇,至少會比純粹的編輯挑選會好太多。

5.不同的用戶生命週期挑選不同的算法,不斷的根據數據反饋調優。

推薦系統的算法有太多,協同推薦,決策樹,邏輯迴歸等等無法一一列舉,但這裡需要一點的是沒有一個算法是萬能的,多個算法根據業務邏輯交替使用或許最終的效果會好很多。

1)比如對於一個視頻新用戶,你沒有任何過往他的觀影記錄,但是他有登錄QQ,那麼你可以拿到他的一些基礎屬性比如年代,性別,地域等等,這些對於內容型產品來說都是不錯的推薦特徵維度。通過這個就可以進行簡單的推薦,如小學生推動漫,成年人推電影,而男性推薦更多電玩,警匪,科幻類的電影,女性更偏向推言情,韓劇等,這樣可以使得原本統一的首頁變成稍微個性化,也讓用戶容易發現當前可能更感興趣的內容。

可能有人會有疑問,只有大廠才會有如此特徵便利,但據我所知,不少push sdk和手機廠商也在開始做這塊的數據,他不依賴於用戶填寫,而依賴於用戶手機上其他信息,比如裝了一個辣媽幫,美麗說,蘑菇街的應用,則大概率是一個女性,如果你裝了暴漫,b站則大概率是一個acg愛好者。再如今日頭條早期登錄微博,也是抓取用戶首頁微博通過切詞,主題詞分析得到用戶偏好,從而進行推薦。或者你可以如即刻一樣,給用戶一個初始化選擇,同樣可以達到目的。


內容的個性推薦體系如何搭建?

一切都是建立在瞭解用戶需求的基礎上,推薦才可能得以展開。

2)對於一個有一定播放或收藏記錄的用戶,那我們除了可以根據用戶畫像進行類別上的推薦,也可以通過協同推薦等方法找到用戶喜歡的內容最為相似的內容,幫助用戶發現。

協同推薦方法在知乎上不少的介紹,感興趣的可以翻翻,大致原理就是如果兩個視頻被一群人同時喜歡,那麼他們很大概率是相似的。通過這個方法我們則幫助用戶在留存這個階段進一步拓展視野。

3)而當用戶在視頻平臺已經累積有很多行為的時候,傳統的推薦已經不能再滿足,此刻我們則要思考如何給他驚喜感。比如推薦相似,不如一個同好的專家用戶推薦一部冷門佳作會讓他來電。

我們可以嘗試去計算某個垂直分類(如喜劇)用戶中最愛的視頻排名,挑出大盤排名靠後,但愛看喜劇的人推薦的內容,這種往往和大盤有很大不同,但是推薦出來卻有新意,不妨一試。


內容的個性推薦體系如何搭建?

總而言之,推薦系統是一個複雜的綜合體,需要從不同維度去考慮,從而結合多個算法合一提升推薦效果。

6.善用離線測試和abtest,讓推薦效果更有說服力。

算法完善後一般要做離線驗證,我們可以用上一個月的觀影和收藏行為作為輸入計算出推薦結果,和這個月用戶實際收藏行為進行對比,看看命中率如何,不斷調優。

同時,發佈外網後,也可以根據後臺尾號進行灰度髮量,觀察不同的兩組之間收藏率,播放率的差異,評價上線算法效果的好壞。

對於一個內容推薦體系的搭建大致如以上所說,看上去都是通用框架,但落地和調優細節會有太多差異,但這也是不同推薦系統之間的核心競爭力吧。因此當開始著手搭建自己公司的推薦系統前,都要考慮再三,投入的人力,時間,用戶需求迫切程度和了解程度都直接影響你的系統是否能搭建完成。

做推薦是有套路的。

1. 推薦的本質是什麼?

題主想到的一些點都挺沾邊的,例如冷啟動、內容庫、數據收集,但犯了至少兩個錯誤:1)題主的圖是串不起一個推薦流程的;2)想要跑通一個推薦流程,核心並不是推薦算法,而是內容和數據。

內容就是你要提供給用戶的東西,例如你的視頻庫,UGC、PGC什麼的。用戶最根本的目的還是消費優質內容。沒有好的內容庫,是推不出東西的。

數據指的是用戶的行為數據。沒米是做不了飯的,沒有數據任何算法都是走不通的。很多高大上的詞,用戶畫像什麼的,本質上都是對用戶行為數據的抽象而已。另外,給內容打標籤、打質量係數分也可以用用戶行為數據。

推薦的本質,就是根據用戶行為數據,提供更滿足用戶的內容。

2. 一個怎樣的產品才能做推薦?

在我看來,至少包括兩個要素:

1)足夠大量的內容和數據

內容不夠多的話,做榜單就行了,做個毛線推薦。

數據不夠大的話,再好的算法訓練出來都一坨翔。

做推薦准入門檻很高,是個貴族遊戲。

2)產品形態有推薦的原動力

什麼意思呢?一言難盡。

產品經理喜歡拷問一些諸如“為什麼要做推薦?做推薦對產品有啥用?是不是有些用戶不喜歡推薦”之類的問題,在我看來這是蛋疼問題,推得好數據一定會更好,問題就是你的產品未必能推得好啊。

推薦應該是個研發主導的事情,首先要拷問的是這個產品的數據流是否能否支撐某種推薦模型,要拿什麼、怎麼訓練、出些啥、可以幹啥。如果數據流最多做做協同,那硬要做feed流一定會死很慘。

滿足有推薦的原動力的產品,我可以舉幾個例子:

1)用戶幫你打標籤,例如知乎、網易雲音樂。形成這樣的產品形態不容易,一旦形成就可以四兩撥千斤。

2)搜索滲透高的產品很適合做推薦,搜索是挖掘推薦數據的大金礦。

3)外部數據(如爬蟲)能起很大作用的產品,例如各種圖文信息流產品。

一個產品純靠推薦來運作是很難的,往往是搜索、分類、榜單、用戶、外部數據等所有加起來給推薦提供訓練數據。我廠現在走大中臺戰略,倒是讓許多本來不好做推薦的產品也能給你推了。

3. 推薦的大套路

1)收集數據

收集數據永遠是第一步。需要了解手中的數據是怎麼來的,到底是用戶幹了啥產生的。並且最好建立感性的認知,這樣對後續的ETL、算法選擇、調參、模型解釋等各個環節都有很大幫助。

2)建立指標

一定要先建指標,否則是沒辦法驗證推薦效果的。常見的有CTR、PV、UV、人均等,結合自己產品形態來設計。

3)實現推薦流程

到這裡才是算法選擇和工程實現。一般來說,能做推薦的產品規模都不會太小,所以會遇到各種高併發、分佈式存儲與計算等工程問題。推薦算法只是推薦整個流程的一個小塊,做推薦的往往需要算法、大數據、數據分析、產品思維等多種能力,非常苛刻。

4)不斷地優化

就是不停地ABTest、調參、更新策略、更新算法,一步一步提高指標。

4. 推薦的小套路

四個字,熱推多補。

熱指的是榜單內容,多用於冷啟動。

推指根據短期、實時反饋的數據進行的即時推薦,效果最顯著。

多指多樣性,不能老是推用戶愛看的,這樣會收斂。你永遠需要補充一些用戶沒看過的來讓用戶發現新的大陸。

補指補充,指的是根據長期數據、近線計算的用戶畫像推薦的內容,可以起到良好的補充作用。

以熱推多補作為指導思想,建立推薦模型、推薦策略。

5. 關於視頻推薦

不巧我正好是做視頻推薦的。視頻有些特別的屬性,例如啊:

1)視頻的打標籤和分類是個難題,主要原因是文本極少以及標題黨問題。一般視頻入庫的時候會有一些簡單的信息補充,但是用處有限。

2)另一個蛋疼問題是鑑黃,你懂的。

如果你能在面試時靠譜地解答這兩個問題,基本上就穩了。

如有有同學有興趣往推薦的方向發展,一定要有非常紮實的基礎。再重複一次,推薦算法真的只是其中非常小的一塊,不是搞清楚LR和協同就能做推薦的。


分享到:


相關文章: