個性化推薦技術

  • 2019 年 11 月 21 日
  • 筆記

文章作者:姚凱飛 Club Factory 推薦算法負責人 內容來源:作者授權發佈 出品社區:DataFun 註:歡迎轉載,轉載請註明出處。

在這個時代背景下,信息爆炸與長尾問題普遍發生,而解決方案之一是個性化推薦技術,那具體什麼是個性化推薦,怎麼去實現這一過程呢?這一章讀者朋友需要做到的是讀完以後,對個性化推薦技術有一個全局宏觀的認識,對於細節不用過多地苛求。

1. 個性化的具象表現-以購物APP(淘寶)為例:

在日常生活中,你在打開淘寶購物可能會遇到以下若干情形: 

  1. 和好友同時打開app後發現,為什麼兩個人首頁各個頻道入口的圖片以及文字不一致?
  2. 為什麼同樣搜索可愛小背心,你和好友竟然出現不一樣的商品列表?
  3. 為什麼我剛剛瀏覽了褲子以後,首頁各個頻道的展現變了?
  4. 為什麼在對比好友的以上界面,我更喜歡我自己的界面?

註:這裡頻道的概念是指淘搶購/有好貨/必買清單等電商頻道概念,不理解的讀者可以打開APP 以上情形背後的答案就是個性化推薦技術,當然也包含了相關的搜索技術。那淘寶是如何做到的呢,其實這背後就是涉及了數據的收集,挖掘計算,以及個性化呈現。

所以基於上面的問題我們又會問:

  1. 淘寶是如何知道我喜歡什麼並且可能想要買什麼的?
  2. 為什麼它能做到每個人都不一樣?
  3. 為什麼它要這麼做? 我們一個個來回答

2. 淘寶是如何知道的?

回答這個問題,其實背後是一套機器學習的方法在支撐,所以我們先要弄清楚什麼是機器學習。

2.1 機器學習概述

    我們先看看什麼是人的學習,這裡主題是人。學習,是指通過閱讀、聽講、思考、研究、實踐等途徑獲得知識或技能的過程。學習分為狹義與廣義兩種:狹義:通過閱讀、聽講、研究、觀察、理解、探索、實驗、實踐等手段獲得知識或技能的過程,是一種使個體可以得到持續變化(知識和技能,方法與過程,情感與價值的改善和升華)的行為方式。廣義:是人在生活過程中,通過獲得經驗而產生的行為或行為潛能的相對持久的行為方式。學習後的主體在未來的生活中可以將過去學習到的知識,技能應用於生產生活,來開展工作。

那從字面上來理解,機器學習就是將主體換為機器,並且它通過某種途徑來獲取知識或者技能的過程,並應用於未來的生活工作。人獲取知識的外化載體是書本,音頻,視頻等,傳輸通道是人的感官,處理中心是大腦,而對應於機器外化載體也同樣可以有以上各類信息源,並且使用各類外放設備收集信息,處理中心是CPU與存儲共同維護。

人的學習有兩個基本方法,一個是演繹法,一個是歸納法,這兩種方法分別對應人工智能中的兩種系統:專家系統和機器學習系統。所謂演繹法,是從已知的規則和事實出發,推導新的規則、新的事實,這對應於專家系統。專家系統也是早期的人工智能系統,它也稱為規則系統,找一組某個領域的專家,如醫學領域的專家,他們會將自己的知識或經驗總結成某一條條規則、事實,例如某個人體溫超過37度、流鼻涕、流眼淚,那麼他就是感冒,這是一條規則。當這些專家將自己的知識、經驗輸入到系統中,這個系統便開始運行,每遇到一些新情況,會將之變為一條條事實。當將事實輸入到專家系統時,專家會根據規則或事實進行推導、梳理,並得到最終結論,這便是專家系統。而歸納法是從現有樣本數據中不斷地觀察、歸納、總結出規律和事實,對應機器學習系統或統計學習系統,側重於統計學習,從大量的樣本中統計、挖掘、發現潛在的規律和事實。

舉個栗子可能更容易讓人理解這一過程,並且對於已經對機器學習有一定了解的同學,我們順便講講什麼是特徵工程裏面的交叉特徵與線性/非線性模型

a. 數據–>單特徵(low level 特徵)+線性模型–>預測

假設有一對情侶,你是主人公(女友),2個月前,朋友給你介紹了一個男友,他是工作狂。為了互相了解,你們每周末都會一起約會吃飯;已經約會有8周了,每周吃飯男友都會比約定時間晚到10分鐘-30分鐘,所以你每次約會也會比約定時間晚10-30分鐘,並且你總結了一個規律:如果約會前打電話他說在公司,那麼基本都是晚到30分鐘左右,如果他說在家裡,那麼基本會晚到10分鐘。

b. 數據–>交叉特徵(high level 特徵)+線性模型+單特徵(low level 特徵)+非線性模型–>預測

以上情形沒有維持多久,男友的遲到時間變多了,有時在公司他會遲到15分鐘,但是有時在家裡卻會遲到20分鐘,所以有時你到了以後等了很久男友才來,然後經過詢問遲到15分鐘和遲到20分鐘的具體情況,你又得出了一個結論:如果男友在家並且不開車過來,那一般就要20分鐘了,如果男友在公司但是他開車過來那就只要15分鐘。

c. 數據–>交叉特徵(high level 特徵)+單特徵(low level 特徵)+非線性模型—>預測

不過又過了沒多久,男友的遲到時間又變了,這次基本上遲到時間在10-45分鐘之間,並且非常不規律,然後你總結了經驗覺得是不是我要去分析分析本質的原因,然後看看晚到多久合適,於是得到了以下可能對男友遲到時間有用的因素(特徵):出發地在哪,是否開車,是否下雨,出發的時間等等。於是最終你通過分析發現沒有找到非常強的規律:下雨(不下雨),男友HH:MM從家(公司)出發,開車(不開車)的情況下晚到具體的時間,但是你分析到下雨天男友在公司晚於17點出發的情況下遲到時間一般在30-45分鐘,不下雨天男友在家早於17點出發的情況下遲到時間一般在10-20分鐘,以及等等情況。不過你還是想再精確一點,於是你請教了你的好朋友–一個算法工程師,經過他的一番數據挖掘,他告訴你了一個公式,只要按着他的公式計算你晚到的時間即可。

你很想知道他是怎麼做到的,於是你開開始請教他。他告訴你其實上面的種種因素都可以作為一個變量,每個變量有一個權重;比如天氣的權重是8,當下雨則遲到時間加8分鐘,不下雨則不加;再比如開不開車的權重為10,不開車遲到時間加10分鐘,開車的時候不加等等。 然後進一步的問題就是這個權重怎麼得來的呢?那麼學到以上決策機制流程的就需要以下幾個要素:

  1. 數據:男友歷次遲到的時間,以及遲到前的狀態(天氣,位置,出發時間等等)
  2. 特徵工程:比如上面的地點和是否開車的二維聯合就是特徵工程(交叉特徵)
  3. 算法:使用決策樹(非線性)還是線性回歸(線性)等等其它算法
  4. 學習到模型:主要指上面各個特徵的權重組成的公式

註:這裡涉及到一個問題就是權重為多少才是對的權重呢?其實這裡就涉及了一個模型評估的問題。舉個例子,如果利用你學習到的權重模型A與模型B比較,A模型在後面的十次約會中累積誤差為10分鐘,而B模型為15分鐘,則A模型的權重比B好。當然具體算法模型的迭代過程,我們在未來會講到。

延伸:

上面的例子講訴的就是在機器學習整個框架下,有深挖特徵和深挖算法兩種;做特徵就是針對具體問題構造各種可能對問題結果有影響的因素(包括單特徵與交叉特徵);深挖算法其實是嘗試不同的算法,比如線性與非線性(淺層學習與深度學習算法)。目前業界比較代表的做法是LR+深層特徵,DNN+淺層特徵。其實上面的三個約會的例子的漸進性其實在這裡也正好對應了機器學習中的反饋學習及強化學習,根據男友遲到的時間,女生在動態的調整自己晚到的時間。

2.2 機器學習過程中的幾個注意點

  • 從感知到認知

感知的一個重要體現就是數據的獲取與收集(可類比人對信息的獲取,如眼睛),認知強調理解

  • 從學習到決策

學習:對已有數據應用相關算法進行規則/模型的計算歸納;決策:遇到新的問題時,使用學到的知識進行學習

  • 算法和數據哪個更重要

數據秒殺一切算法,但真正推動社會的進步的是算法,而不是數據。數據就好像是工業革命時期的煤炭,非常重要,蒸汽機就像是算法,最後大家記住的是瓦特發明了蒸汽機,而不是英國的煤礦。

2.3 機器學習常見的概念

  • 監督學習

監督學習的數據比較特殊,舉個栗子,比如你在中學學習英語,在老師的幫助下練習英語發音,數據是你的發音和這個發音的對錯/準確程度(對錯/準確程度是老師告訴你的),然後算法就是你去嘗試去模擬數據(發音)的規律,不斷根據英語單詞的拼寫規律來學習發音,最終你學習到了基於拼寫及句子的上下文調整發音。

  • 無監督學習

無監督學習的數據中沒有人告訴你對錯信息,舉個栗子,今天老師給你了一個碗,裏面有黑米有紅米,讓你對這個碗里的米分個類,你可能根據顏色分類,也可能根據大小、重要分類,都沒有問題,因為老師沒說按什麼分,對不對這個問題。

  • 降維

降維是從更基本的維度來看問題,舉個栗子,<nike 空軍一號>這雙鞋,對其降維可以是nike這個運動品牌,也可以是運動鞋這個類目

  • 泛化

泛化就是你學到的規則/模型的普適程度。

舉個栗子吧,今天老師讓你看了20個西瓜,並告訴你熟不熟,然後給你一個西瓜,問你只看外觀,這個西瓜熟不熟,你可能根據以下來判斷:

可能你是這麼做的:看錶皮,你發現20個瓜裏面,瓜皮表面光滑、花紋清晰、紋路明顯、底面發黃的瓜都是熟的,但是不滿足任何一個條件的都是不熟的。 所以你學到的模型如下:如果瓜皮表面光滑、花紋清晰、紋路明顯、底面發黃的,就說明是熟瓜;其它的是不熟的瓜。 但是其實有時候,紋路不明顯,但其他條件滿足的時候也會有一部分是熟的瓜。所以你學到的模型具有一定泛化性能,但不具有很高的泛化性能。如下圖,目標是藍線,你從data裏面學到了左右兩條紅線,左邊的有一些誤差,右邊的無誤差,但是對於真實的目標而言,左邊更好,因為日常問題中,你沒法獲取所有的數據,所有會出現泛化這個問題。

2.4 機器學習最難的是什麼

機器學習最難的一步,就是把現實生產生活中的問題, 提煉成一個機器學習問題 。這基於對問題本身的深刻洞察。 如何從一個全新的領域, 去提取機器學習可以有助解決的最重要的問題。

2.5 淘寶的機器學習

由上面機器學習相關的介紹可以類推淘寶app為什麼能夠知道你喜歡什麼,是基於一個假設條件的:一個人歷史的購物行為及偏好,會在未來的行為中也有跡可循。所以利用機器學習我們通過用戶歷史交互數據(特徵包括:誰在什麼時間買了什麼東西,這個東西的名字叫什麼,什麼顏色,價格多少等等)。 比較有用的可以對未來推薦有指導意義的特徵包括:

  • 購買力

一個平時只買100元左右牛仔褲的用戶,未來短期內買10000元和10元的褲子的概率遠遠低於買100左右或者200左右的概率,所以推薦的時候會更優先給你看到100-200左右的褲子

  • 性別

平時在淘寶上只買男性或男女通用商品的用戶,未來短期內買女性商品概率遠遠低於男性和男女通用商品的概率

  • 年齡

一個一直購買20-25歲左右服飾的用戶,未來短期內購買其它年齡段的概率遠遠小於20-25歲年齡段的概率

  • 等等

註:以上特徵均會在最後預測用戶可能喜歡什麼中有用,但是注意一個人也可能很違背之前的購物行為,比如一個只夠買20-25歲衣服的女性,突然買了一個嬰兒的衣服,可能從這個節點是她小孩誕生或者是給姐姐的小孩買禮物等等,這一瞬時購物興趣的變化一般由實時推薦cover。

3. 為什麼能夠做到每個人不一樣

參看上面的公式你會發現,如果在機器學習階段考慮一些跟人相關的因素(特徵),那這個因素的不同值就會影響結果輸出。比如我們現在根據用戶對他購物的商品的評分數據,來預測一個他從未買過的商品的評分,背後影響用戶評分的因素可能包括以下幾個:價格,售前/後,物流,商家主營類目是否和用戶購買的類目相同,其它用戶的評分(如果其他用戶評分高則一定程度上代表了這個商品的好壞)等等。比如物流和價格這類因素(特徵),如果和用戶這個特徵做交叉後,其實會有非常迥異的權重值,而這一切是每個用戶的購買力和用戶體驗耐受力等不同帶來的。所以如果你考慮了用戶的特徵則這就會影響每個人的推薦結果不一樣。

4. 為什麼淘寶要這麼做

至於為什麼淘寶會去花這麼多資源做個性化,可以概括為以下三點:獲取新的認知,創造新的智慧,產生有價值的決策;從歷史數據中探索用戶的消費需求,舊數據中挖掘新認知,從新認知出髮結合機器學習算法創造新的智慧,最後幫助用戶發現他感興趣的商品,將最適合的商品呈現給他。

  • 長尾挖掘

打破80%的用戶只買20%的商品的規律,更好地降低長尾商品的比例。因為在電商產品中,在非個性化的商品展示過程中,往往爆款商品擁有更多的流量,這樣其實不能很好的照顧到高質量長尾用戶和高質量長尾商品。舉個例子,在淘寶的某個頻道,有很多褲子,A褲子100元近5天的銷量可能1w件,B褲子1000元近5天的銷量是100件,在不考慮其它因素的情況下,非個性化模型(或運營排序)一般會偏向於A褲子在B褲子前面,但是如果這個用戶在平台歷史購物行為都是集中在高價格商品(名牌包包等),則如果你個性化的考慮每個人的這個偏好,那麼有可能B褲子就在前面了,而且用戶可能真的更喜歡B褲子。

  • 流量利用

在APP或網站有限的商品曝光機會下,為每個展現的商品爭取最大的點擊/成交等。因為用戶在平台上地時間是有限的,如果能在海量的商品中,為用戶找到他感興趣地商品,那麼平台將在這有限地流量資源下收穫更大的價值。舉個例子,有可能用戶在某個頻道下,看了A,然後看了B,再看了C,最終買了D,並且ABCD這四個商品都是有一定關係地商品,那麼平台能否在一開始在我看完A以後就幫我找到C,並在A下面推薦D商品。在最大限度挖掘用戶購物需求的情況下,最大限度縮短用戶購物的時間。

  • 用戶體驗

為每個用戶創造極致的用戶體驗。極致的用戶體驗是用戶信任依賴平台,在每次購物過程中,希望平台能夠幫助其快速,準確地找到其想要地商品。這一過程中包括了基於用戶歷史興趣的再延伸,也有基於用戶角色的行為探索。比如用戶每隔25-30天會購買尿不濕,未來平台是否能夠在23-33之間快速捕捉用戶購買尿不濕的需求;再比如用戶在平台上第一次瀏覽電腦,我基於用戶的其它購物行為(比如用戶之前在平台上經常買20-25歲的衣服,並且大部分郵寄的地址為大學宿舍),是否平台可以在接下來的瀏覽中為用戶呈現適合學生族高性價的電腦。

5. 推薦技術概述

  • 推薦在電商購買決策過程中的作用

電子商務網站向客戶提供商品信息和建議,幫助用戶決定應該購買什麼產品,模擬銷售人員幫助客戶完成購買過程,經典配圖

上圖隱含的2個重要的推薦系統的核心功能:

路徑優化(弱化主動篩選功能):從看了A再看B再看C最後買了C 到 看了A, 推薦系統推薦C,用戶下單

興趣發現(貼心小秘書):從你上淘寶不知道買什麼的時候,告訴你你可能喜歡什麼 常用的推薦產品

  • 推薦系統是怎麼做到的類比人的行為

其實推薦系統做的事可以類比於生活中的貼心男友或者女友,那我們就當他是男友吧,來看看他是怎麼做的     

上知天文,下通地理:下雨了,男友知道你沒帶傘,把傘送到送到了公司

察言觀色:女朋友一直在看寶寶,尤其是LV的,生日那天買了一個

人情練達:看到和你玩的好的幾個閨蜜都買了某款口紅,沒過幾天就買了這款口紅

念念不忘:你經常說的偶像、崇拜的人他會記住,時不時買幾個他們的新作品

體貼入微:他知道你大姨媽來的時候比較喜歡吃甜品,所以到了那幾天他都會帶你去吃

緊跟時尚:新品發佈,只要是你有興趣的那個方向的產品,都會買給你

  • 推薦系統怎麼來做到上面這些方面呢

上下文:

推薦系統會在給你推薦商品時將考慮你所在的城市、天氣、季節等因素;梅雨天傘比平時好賣,夏天空調需求比秋天高等,北方人比南方人更喜歡保濕的化妝品

用戶畫像:

男-女/經期時間/甜品這些都可以做成標籤,作為推薦的依據,上次你買的姨媽巾/紙尿褲/奶粉多少天會用完,19歲男生一般不會(低概率)買女性比基尼

協同過濾:

基於用戶:在茫茫購物的人海中,總有那麼一些人是跟你非常像的(類似上面的閨蜜);推薦系統根據你們的行為(瀏覽、點擊、購買)計算跟你最像的那些用戶,當他們看了/買了什麼的時候,他就可能會推薦這些商品。

基於商品:在茫茫商品中,總有一些商品他們的屬性、描述很像,或者他們經常被一起購買;推薦系統將會計算物品與物品之間的相似或關聯程度,當你看了某個商品的時候,他將會把最相似/最相關的那幾個商品推薦給你。

基於模型(這個比較抽象):利用數學建模的手段,評估你的購買意圖,將模型計算出來的得分最高的推薦給你

基於內容:在茫茫商品中,總有一些商品他們的屬性、描述很像;當你看了某些商品後,推薦系統會將內容上最相似的那些上商品推薦給你

其它:基於統計/知識等 目前主流推薦系統都是以上各個策略的混合

6. 什麼樣的產品推薦效果明顯

稀疏性,多樣性,時效性的平衡,目前推薦更多地還是錦上添花,沒有一定量的數據,效果將大打折扣。

稀疏性:穩定的流量與穩定的交互比例(pv/uv)

穩定的流量與穩定的交互比例保證了數據的稠密性,單用戶和單商品有足夠的數據可以完成機器學習,並且保證一定的置信度。當有新用戶(新商品)加入系統時,由於系統中缺乏用戶(商品)歷史反饋信息,所以完全無法推斷用戶的偏好,也就無法做出預測

時效性:能夠獲得快速反饋

用戶行為數據越快被反饋的產品推薦效果更明顯:因為用戶的興趣是變化的,通過機器學習來推敲用戶的興趣所需的物料就是數據,如果你能夠快速地反饋用戶行為數據,那算法模型就能夠實時地捕捉用戶變化着地興趣,當然效果就自然而然明顯。

多樣性:條目的類別多樣

多樣的類別可以從不同的角度滿足用戶,商品量越大,類目越多,推薦的價值就越大。

多樣性與稀疏性:條目增長相對穩定

如果產品本身條目增長不穩定,那麼大量新條目地湧入會使冷啟動非常明顯,而條目增長過緩會導致多樣性問題,推薦無法很好地從有限的池子中挑選適合用戶的條目。

7. 未來電商不能只做成交

圍繞商品更新,商品質量,商品與買家的匹配程度,推薦應該從以下四點出發來優化

  • 提升買家用戶的體驗,提高選購決策質量與效率實現優質買家的差異化服務
  • 提高商品的有效曝光機會與轉化率,提升賣 家用戶的效果與效益
  • 利益均衡機制,均衡曝光機會,提升曝光商 品及商家的覆蓋率
  • 提升買家留存率與賣家續簽率,提升買賣家的忠誠度,提升商品點擊機率

瀏覽與成交之間存在着巨大鴻溝,未來推薦將幫助平台挖掘消費的深度,在各個特定場景下提升推薦轉換;拓寬消費的廣度,提升推薦對物料的覆蓋,提升對用戶的覆蓋,各個場景的擴充,做到淺層消費到深層消費再到擴展消費。

圍繞着商品與人的連接以及相應的商業訴求,讓連接匹配的質量更高,連接的廣度更寬,同時通過機制設計促進整個商業和生態的健康發展,成為整個新商業發展的引擎驅動。

作者介紹:

姚凱飛,Club Factory 推薦算法負責人。碩士畢業於上海交通大學,前阿里推薦算法工程師,多年電商及視頻推薦經驗,目前在出海電商Club Factory負責推薦算法工作。