一文讀懂無處不在的智能推薦系統
推薦系統是人與信息的連接器,用已有的連接去預測未來用戶和物品之間會出現的連接。推薦系統本質上處理的是信息,它的主要作用是在信息生產方和信息消費方之間搭建起橋梁,從而獲取人的注意力。
對于智能推薦系統相信大家已經不再陌生了,現在它已經在內容分發平臺、電商、廣告、音視頻等互聯網產品中隨處可見。
一、為什么越來越多產品需要做推薦系統?
主要有以下兩方面的原因:
(1)信息過載
互聯網上每天都在產生海量的信息,用戶想要迅速和準確地找到他們感興趣的內容或商品越來越困難。如果用戶的目標明確,他可以使用搜索(其實搜索也是有關鍵字的推薦、推薦是無關鍵字的搜索),但很多時候我們的用戶是沒有明確目標的。這時候如果產品能夠高效匹配用戶感興趣的內容或商品,就能提高用戶體驗和粘性,獲取更多的商業利益。
(2)長尾效應
絕大多數用戶的需求往往是關注主流內容和商品,而忽略相對冷門的大量“長尾”信息, 導致很多優秀的內容或商品沒有機會被用戶發現和關注。如果大量長尾信息無法獲取到流量,信息生產者就會離開平臺,影響平臺生態的健康發展。
二、認識推薦系統
推薦系統定義:推薦系統是人與信息的連接器,用已有的連接去預測未來用戶和物品之間會出現的連接。
推薦系統本質上處理的是信息,它的主要作用是在信息生產方和信息消費方之間搭建起橋梁,從而獲取人的注意力。
世界是一個數字化的大網,從人類角度來看里面只有兩類節點:人和其他。萬事萬物有相互連接的大趨勢,比如:人和人傾向于有更多社會連接,于是有了各種社交產品;比如:人和商品有越來越多的消費連接,于是有了各種電商產品;比如:人和資訊有越來越多的閱讀連接,于是有了信息流產品。
一個完整的推薦系統通常由以下部分組成:用戶端前臺展示、后臺日志系統、推薦算法引擎。
▲個人繪制的推薦系統架構圖
- 前臺展示:就是你在app或網頁上看到的推薦、猜你喜歡、你的個性化歌單、經常一起購買的商品等部分展示的內容。
- 后臺日志系統:用戶數據、用戶行為數據、內容數據等日志數據采集、存儲、清洗和分析,從而建立畫像體系,包括用戶畫像和物品畫像。
- 推薦算法引擎:各種算法模型、模型訓練配置、推薦效果評估體系。
搭建推薦系統所需投入:
首先要搭建團隊,其中算法工程師是必不可少的,當前也是薪酬較高的;其次還要購置存儲和計算資源,如果不是云產品你可能還要自己購置硬件設備;然后還有長時間的數據積累和算法優化。
推薦系統是一個需要長期持續投入的東西,從投入/產出比和時間成本上來說,產品經理不要隨便拍大腿就要做一個智能推薦系統。
如何判斷一個產品是否需要推薦系統?
第一,看看產品的目的。如果一款產品的目的是建立越多連接越好,那么它最終需要一個推薦系統。
典型的目的不是建立連接的產品就是工具類產品,單純為提高人類某些工作的效率而存在,比如:AXURE、ERP……雖然如今很多產品都從工具切入想做成社區,但至少在工具屬性很強時不需要推薦系統。
第二,看看產品現有的連接。如果你的產品中物品很少,少到用人工就可以應付過來,用戶產生的連接不多,這時候不適合搭建推薦系統。應該要有長尾效應才可能讓推薦系統發揮效果。
三、推薦算法-協同過濾基本原理
推薦系統里最經典的算法非協同過濾莫屬。協同過濾又稱基于領域的算法,核心在于協同,互幫互助。其又可以分為兩類:基于用戶的協同過濾算法(UserCF)、基于物品的協同過濾算法(ItemCF)。
(1)基于用戶的協同過濾算法(UserCF)
當一個用戶需要個性化推薦時,可以先通過用戶的相似度計算找到和他有相似興趣的其他用戶,然后把那些用戶喜歡而他沒有聽說過的物品推薦給他,這種方法稱為基于用戶的協同過濾算法。
如用戶A曾經看過《增長黑客》、《流量池》和《原則》,用戶B曾經看過《增長黑客》和《原則》,當我們給B推薦時,推薦系統計算出A和B的相似度比較高,而A曾經讀過的《流量池》用戶B沒有讀過,因此就將《流量池》推薦給B用戶,這就是經典的基于用戶的協同過濾。
由上面的描述可知,基于用戶的協同過濾算法主要包括兩個步驟:
- 找到和目標用戶興趣相似的用戶集合;
- 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶。
(2)基于物品的協同過濾算法(ItemCF)
介紹基于物品的協同過濾之前,先來看下基于用戶的協同過濾可能帶來的問題。
- 用戶數據量比較大時,需要計算的用戶之間的相似度會比較多,計算量大。
- 構建用戶向量時是使用用戶對已消費過的物品的評分/行為來構建的,用戶的興趣是會隨時間改變的,導致計算相似用戶的頻率較高。
- 數據比較稀疏,用戶和用戶之間有共同的消費行為實際上是比較少的,而且一般都是一些熱門物品,對發現用戶興趣幫助也不大。
基于物品的協同過濾算法,給用戶推薦那些和他們之前喜歡的物品相似的物品。
用戶A、B和C分別喜歡的物品如圖所示,則計算物品2與物品1的相似度的公式為:
- 物品2與物品1的相似度=同時喜歡物品1和物品2的用戶數/喜歡物品1的用戶數=2/3;
- 物品3與物品1的相似度=0;
- 物品4與物品1的相似度=1;
- 如果對一個喜歡了物品1的用戶D進行推薦,則推薦的優先級為4>2>3。
基于物品的協同過濾算法主要包括的步驟:
- 計算物品之間的相似度;
- 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
以上只是協同過濾算法的基本原理,現實中的算法模型要遠比這個復雜,而且很少采用單一模型,基本是組合模型。我也是剛剛才開始做推薦系統,至于更為復雜的矩陣分解、基于機器學習的推薦算法等后續我自己搞明白再單獨成文分享給大家。
四、推薦系統的冷啟動
推薦系統需要已有的連接去預測未來用戶和物品之間會出現的連接。
對于BAT(百度騰訊阿里)、TMD(頭條美團滴滴)這樣的巨頭他們已經積累了大量的用戶數據,在某個產品上智能推薦的時候不存在冷啟動的問題。
對于很多沒有大量用戶數據的產品來說,如何在這種情況下設計推薦系統并且讓用戶對推薦結果滿意,從而愿意使用推薦系統,就是冷啟動的問題。
冷啟動問題主要分兩大類:
(1)用戶冷啟動
用戶冷啟動主要解決如何給新用戶或者不活躍用戶做個性化推薦的問題。當新用戶到來時,我們沒有他的行為數據,所以也無法根據他的歷史行為預測其興趣,從而無法借此給他做個性化推薦。
(2)物品冷啟動
物品冷啟動主要解決如何將新的物品或展示次數較少的物品推薦給可能對它感興趣的用戶這一問題。
一般來說,可以參考如下方式來解決冷啟動的問題:
- 利用用戶注冊時提供的年齡、性別等數據做粗粒度的個性化推薦;
- 利用用戶的社交網絡賬號登錄(需要用戶授權),導入用戶在社交網站上的好友信息,然后給用戶推薦其好友喜歡的物品;
- 要求新注冊用戶在首次登錄時選擇一些興趣標簽,根據收集到的用戶興趣信息,給用戶推薦同類的物品;
- 給新用戶或不活躍用戶推薦熱門排行榜,然后等到用戶數據收集到一定的時候,再切換為個性化推薦。
五、評估推薦系統的效果
推薦系統推薦質量的高低可以通過如下指標進行評估,作為推薦系統的反饋結果他們也是算法模型迭代優化的依據。這些指標有些可以定量計算,有些只能定性描述。
(1)預測準確度
準確度表現在用戶對推薦內容的點擊率,點擊后的各種主動行為(購買、分享等),停留時長等。
(2)覆蓋率
覆蓋率是描述一個推薦系統對物品長尾的發掘能力。最簡單的定義是,推薦系統推薦出來的物品占總物品的比例。
(3)多樣性
良好的推薦系統不僅僅能夠準確預測用戶的喜好,而且能夠擴展用戶的視野,幫助用戶發現那些他們可能會感興趣,但不那么容易發現的東西。
比如:你在某個電商網站買了一雙鞋子,然后你每次登錄這個網站他都給你推薦鞋子,這種情況你就會對推薦系統很失望,這就是典型的不具備多樣性。假如知道了用戶的喜好,推薦系統大部分給他推薦感興趣的,小部分去試探新的興趣是更優的策略。
(4)新穎性
新穎的推薦是指給用戶推薦那些他們以前沒有聽說過的物品。
(5)驚喜度
如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那么就可以說推薦結果的驚喜度很高。與新穎性的區別是推薦的新穎性僅僅取決于用戶是否聽說過這個推薦結果。
(6)信任度
如果你有兩個朋友,一個人你很信任,一個人經常滿嘴跑火車,那么如果你信任的朋友推薦你去某個地方旅游,你很有可能聽從他的推薦,但如果是那位滿嘴跑火車的朋友推薦你去同樣的地方旅游,你很有可能不去。這兩個人可以看做兩個推薦系統,盡管他們的推薦結果相同,但用戶卻可能產生不同的反應,這就是因為用戶對他們有不同的信任度。
(7)實時性
推薦系統的實時性,包括兩方面:一是實時更新推薦列表滿足用戶新的行為變化;二是將新加入系統的物品推薦給用戶。
(8)健壯性
任何能帶來利益的算法系統都會被攻擊,最典型的案例就是搜索引擎的作弊與反作弊斗爭。健壯性衡量了推薦系統抗擊作弊的能力。
參考資料:
- 項亮.《智能推薦實踐》;
- 邢無刀.《推薦系統三十六計》。
作者: felixxiao,微信公眾號:PMfelix
本文由 @felixxiao 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
深入淺出,很有幫助
寫的真不錯!
總結的很好,期待新的文章!