淘寶推薦系統:從千人一面到千人千面邏輯和算法(上篇)
應廣大朋友的要求,本人對本篇文章進行一次更新,將推薦系統的底層邏輯和部分算法模型進行整合歸納,由于內容篇幅較長,分為上下兩篇,請分別瀏覽!
互聯網技術的高速發展,給我們帶來了十足的便利性,回顧整個互聯網的發展歷程,從PC時代轉移到移動互聯網時代,從移動互聯網時代轉向IOT時代,從IOT時代又即將邁入AI時代,這些飛速發展的背后,其實是數據的采集,傳輸和處理的大變革。
而以我們當下為例,移動互聯網技術和智能手機的發展,讓采集用戶數據的能力變得空前強大,無時無刻,無所不在,而一旦擁有這些數據之后全行業的個性化推薦技術變得更加容易實現,不論是今日頭條的,還是淘寶美團的,無疑是這個時代的最大受益者。
不同于個人PC機,手機可以唯一錨定一個具體的自然人,而手機這類私人的專屬物品是與其他人很難共用的,那么你手機的型號,在手機上的瀏覽、交易等行為數據,就具有了極高的分析價值。
從電商平臺的角度來講,個性化推薦技術的本質是將當前最有可能成交的產品優先推薦給消費者,使流量得到更加充分的利用,最大限度的提高轉化效率。而推薦技術也隨著用戶個人數據的不斷豐富,在逐漸升級,從最基礎的千人一面,慢慢演化到千人千面,下面我就沿著這個演化史給大家具體介紹一下相關的推薦邏輯和模型算法。
NO1.千人一面的邏輯基礎和推薦算法
- 核心邏輯:物以類聚,也即推薦和當前商品相似、相關或其他維度的產品,每個人進來看到的商品推薦其實是完全一致的,俗稱千人一面;
- 使用環境:當前基本沒有什么用戶數據,但是商品數據豐富到足夠支持起所需的推薦邏輯。
1. 根據商品的分類或其他基礎屬性進行推薦(相似性推薦)
對于某一個商品來說,這是一種替代性的推薦方式,也即用戶不想買它的時候,還可以有其他的選擇。就比如說用戶正在瀏覽一個斯伯丁的籃球,看完描述之后發現不是自己理想的款式,規格材質不太對,但是在這個單品下方,出現了一個同類型的耐磨材質的籃球,OK!那么這個用戶可能就會把這個推薦的籃球帶回家。
這個例子中僅僅是依據商品的分類進行推薦,當然我們還可以根據實際情況加入商品的更多基礎屬性進行加權取值,算最后得分來進行推薦。
主要應用【加權求和法】
也就是選取商品的某些屬性,并且針對各種屬性的對于用戶選擇的重要性進行一個主觀的評估,然后賦上權值,進行累加計算,得出每種商品和其他商品的相似性,案例如下:
水杯類目中選擇三個屬性【材質】【樣式】【顏色】,其中【材質】重要等級為3,【樣式】重要等級為2,【顏色】重要等級為1
- 商品A(塑料,大肚杯,透明色)
- 商品B(陶瓷,直筒杯,透明色)
- 商品C(玻璃,直筒杯,白色)
比對的兩個商品每種屬性的相似度關系值:
- 材質是否相同(不同為0,相同為1)
- 樣式是否相同(不同為0,相同為1)
- 顏色是否相同(不同為0,相同為1)
在根據加權累加的公式,可以得到如下表格
那么之后我們就可以在A商品之后,推薦這個相似度分數比較高的其他同類目下的商品了,當然自身就不需要重復推薦了,以及長期推薦點擊量不高的產品,后面可以進行動態優化。
2. 根據商品的被動銷售級屬性進行推薦(相關性推薦)
根據商品最終在訂單中出現的概率來判斷商品間的相關性,目前還可以依賴于其他幾個維度來參考一同做判斷(被同時瀏覽的幾率,被同時加入購物車的幾率,被同時購買的幾率),以下采取訂單中是否通知購買來講解算法模型,簡單解釋一下就是想買A的人還可能想買C。
主要應用【置信度】等指標算法
商品的關聯性可以通過”置信度“,”支持度“,”提升度“三個指標來衡量。
難度較大的是從一個銷售記錄集中計算所有商品兩兩/三三之間的關聯性,以下范例以兩個商品之間的關聯性來講解。
- 計算A→B支持度,購買A還購買B這個組合的訂單占所有訂單的百分比。
- 計算A→B置信度,購買A還購買B這個組合的訂單占所有購買A的訂單的百分比。
- 計算A→B提升度,購買A還購買B的概率同不購買A只購買B商品的概率之商。
那么根據相關度算法,先從所有訂單中找出包含A商品的訂單個數N1,然后再查詢A的所有訂單中出現B的個數N2,則置信度X=N2/N1。
總訂單為3000單,其中包含A的訂單有1200單,B的訂單800單,C的訂單1500單,D的訂單600單,E的訂單 1000單
A的1200單中(包含B的有300單,包含C的有600單,包含D的有400單,包含E的有200單)
則C商品對于A的置信度最高,那么就可以優先推薦C商品,買了A商品的人最有可能還去買C,其實通常情況下,我們不可能僅僅單獨看置信度這一個指標,三個指標都需要綜合起來看,提升度大于1,具有強置信度(30%以上)和較高支持度(10%)的規則可以認為是比較合理靠譜的規則,計算其它2個指標的值就不在此贅述了。
NO2.千人十面的邏輯基礎和推薦算法
- 核心邏輯:人以群分,將有相似的屬性,相似行為的用戶分為一類人,然后這一類中的人某一個人喜歡A產品,那么其他人也有極大的可能喜歡A產品
- 使用環境:當前積累了一定的用戶數據之后,可以開始試試用這種模式
1、根據用戶基礎信息進行推薦
用戶注冊和后期行為過程中系統可以收集分析出一些固定數據,這類數據是長期穩定的,可以刻畫成一些人群特征,我們俗稱標簽,而整個推薦系統中最牛的位置,也在于標簽的大范圍深度應用,其中基礎標簽可能就是年齡標簽、性別、收入范圍、興趣愛好、星座、生活區域等,那么標簽完全相同的這一類人就極有可能有相同的喜好(一般還會把行為加入一起來判斷相似性)
比如一個用戶的標簽組成為:20—35之間、女性、低收入人群、愛寵人士、雙魚座……,最近剛好購買了一袋X品牌的狗糧,那么則另外一個標簽與她相符的人,也可能在某個時間段產生這個需求。
2、根據用戶行為數據進行推薦
比如在電商的場景下,常見的用戶行為就會有搜索、瀏覽、咨詢、加購、支付、收藏、評價、分享等等,那么通過記錄這些用戶行為數據,我們就可以對應進行推薦了。
①基于搜索關鍵詞進行推薦
對于一個新注冊的買家來購物,這時候大部分數據都全無,咋辦?因為這個買家除了具備一些基本的人群屬性外,購物行為和購物偏好方面是空的。好,這時候我們可以根據他搜索的關鍵詞來進行跟蹤推薦,依據搜索同樣關鍵詞的其他用戶最后達成的商品成交概率來進行合理推薦。
舉個例子:如連衣裙這個產品,在風格上有韓版的、歐美的、田園風格的等等。那么搜索引擎通過分析以前搜索“連衣裙”這個關鍵詞的其他消費者,發現70%以上的消費者最終都購買了“韓版”的,那么韓版就是一個高概率成交風格。所以,展現這一類型的商品在這個新用戶面前的。
②基于瀏覽記錄進行推薦
對于淘寶這種大型系統來說,在整個網站中和app中的所有瀏覽記錄的時間脈絡,它是全部有記錄,完全能夠做到判斷你在何時看到什么商品,同時瀏覽的行為背后即代表這關注,表明用戶對此商品感興趣,那么我們完全可以根據這一類商品的相似度進行關聯推薦,用戶所有瀏覽行為都是商品推薦的重要依據。
舉個例子:每次你搜索并且看完一些寶貝后,關閉淘寶,過一段時間再打開淘寶,你就可以看到在“猜你喜歡”模塊中出現之前瀏覽過的同類商品。
③基于購買記錄的推薦
其實這是很好理解的,因為你已經購買了,所以這證明了你對產品的認可,甚至是對這個店鋪的認可,尤其是在一些比如說衣服、視頻、鞋子、寵物用品等復購率較高的商品中。如果你在這個店鋪里面買過,那么你在搜索相關的關鍵詞的時候,這個店鋪符合要求的商品就會被優先展現(尤其是新上架的商品),方式是:購買過的店鋪。
舉個例子:淘寶中,你收藏的店鋪、瀏覽過的店鋪等等,都會以一種強個性化的方式得到優先推薦,而且還會給你添上標簽“購買過的店鋪”。在絕大多數類目里面,這種最高級別的推薦都是非常明顯的。
喜好度評分、向量余弦公式
基于用戶的協同過濾(user-based CF),通過用戶對不同類型的商品的喜好度進行評分,然后根據每類商品的喜好度評分構建一個多維向量,使用余弦公式有來評測用戶之間喜好度的相似性,基于此將其他相似用戶非常喜歡而該用戶還沒有了解的產品進行推薦。這部分推薦本質上是給用戶推薦其他相似用戶喜歡的內容,一句話概括:和你類似的人也喜歡這些商品。
關于喜好度的計算,先將用戶行為的權值定義清楚,假設定義如下:
- 搜索權值為1;
- 點擊流量權值為1;
- 加購權值為2;
- 咨詢權值為1;
- 完成支付權值為3;
- 好評權值為2;
- 分享權值為3;
那么在系統中加入埋點,產生用戶行為數據之后,我們將可以獲得用戶關于某類商品的喜好度具體分值,加權平均后分值區間為【0,13】
在假設商城類僅有5類商品:
- 對食品類目的商品喜好度(0~13分)
- 對家居類目的商品喜好度(0~13分)
- 對玩具類目的商品喜好度(0~13分)
- 對圖書類目的商品喜好度(0~13分)
- 對游戲類目的商品喜好度(0~13分)
一個用戶A:對食品的喜好度為3,對家居的喜好度為1,對玩具的喜好度為4,對圖書的喜好度為5,對游戲的喜好度為0,用戶A可以用向量表示為
一個用戶B:對食品的喜好度為3,對家居的喜好度為4,對玩具的喜好度為5,對圖書的喜好度為0,對游戲的喜好度為2,用戶A可以用向量表示為
接下來就要使用的【余弦函數】了,這邊要和大家解釋一下向量的概念(可能很多人高中數學已經忘記了),向量是空間中帶箭頭的線段,2個向量之間的夾角越小,表明它們的相似度越相近,多個屬性的向量表示為。
對于用戶A的對于所有類目商品的喜好度向量和用戶B的向量而言,他們的在多維空間的夾角可以用向量余弦公式計算:
余弦值的值域在【-1,1】之間,0表示完全垂直90°,-1表示夾角180°,1表示夾角為0°,系數越靠近1,向量夾角越小,兩件商品的相關性越高,。就剛才用戶A和用戶B的例子而言,我們可以知道他們的相似度為:
相似度系數推薦說明:
- 非常相似:0.8—1.0;
- 比較相似:0.6—0.8;
- 一般:0.4—0.6;
- 不太相似: ?0—0.4;
- 完全不相似:-1.0—0;
那么根據這個余弦值的結果,我們會發現用戶A和B在商品的喜好度上是比較相似的,所以在給A推薦商品時,我們就可以依照B喜歡的而A卻從未瀏覽過的商品進行推薦,或者是其他B喜歡的商品等。
總結
目前大部分推薦都是多重算法結合的,以上介紹為了邏輯清晰,所以都是單一說明,沒有進行組合,而現實中可能會依據相同標簽相似喜好度的人推薦同類型的產品等,接下來的【下篇】,我會重點為大家介紹關于區別于給用戶標簽化的推薦方法,更高階的是給商品、服務、店鋪等全方位的標簽化,同時還會介紹到標簽的標簽,比如標簽的場景失效,標簽的熱度衰減等!
#專欄作家#
囧囧有神(個人微信公眾號:jspvision),人人都是產品經理【2018年度最受歡迎】專欄作家,起點學院導師,成均館大學企業講師,混沌大學創新翰林。10年互聯網經驗,產品運營專家,Team Leader。
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
請問下篇在哪
快4年了,下篇呢???
快4年了,下篇呢???
三年過去了,說好的下篇呢
這都三年過去了 你說的下篇呢?
對食品類目的商品喜好度(0~13分),這個一定要是13嗎,即所有權重只和。常規情況下采用5分制或者10分制,這兩種有什么區別,謝謝!
樓主大大,這塊總結起來應該是基于物和基于人的協同,能不能再介紹下比如在畫像上的一些深耕的應用呢?
期待下篇
您好,這里有一個問題,相關度,如何算出來的。感覺重要程度 3 2 1, 是否相同是 1 0 的話,那么相關性 A對A 應該是6啊。。
抱歉 我的鍋,已經修改和調整了過來~
出下篇唄
請問用戶對某類商品的喜好度評分是怎么打出來的?
就沒有了下篇嗎。。