互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,給我們帶來了極大的便利。回顧整個互聯(lián)網(wǎng)行業(yè)的發(fā)展歷程,從PC時代到移動互聯(lián)網(wǎng)時代,從移動互聯(lián)網(wǎng)時代到IOT(物聯(lián)網(wǎng))時代,現(xiàn)在又即將從IOT時代邁入AI(人工智能)時代。這些飛速發(fā)展的背后,其實是對數(shù)據(jù)利用的巨大變革。
當(dāng)下,移動互聯(lián)網(wǎng)技術(shù)和智能手機的發(fā)展,使得采集用戶數(shù)據(jù)的能力變得空前強大,無時無刻,無所不在。擁有這些數(shù)據(jù)后,全行業(yè)的個性化推薦能力變得更加容易實現(xiàn),不論是淘寶京東,還是今日頭條,無疑是這個時代的最大受益者。
不同于個人電腦,手機這類私人專屬物品是與其他人很難共用的。從而手機的型號,以及在手機上的瀏覽、交易等行為數(shù)據(jù),就具有了極高的分析價值。
從電商平臺的角度來講,個性化推薦的本質(zhì)是根據(jù)不同的人群,將最有可能成交的商品優(yōu)先推薦給相應(yīng)的消費者,最大限度的提高購買轉(zhuǎn)化率,促進用戶購買下單。
當(dāng)然,對于淘寶這類電商平臺來說,個性化推薦也能充分利用有限的廣告位資源,將流量的價值最大化。隨著用戶個人數(shù)據(jù)的不斷豐富,推薦能力也在逐步升級,從基礎(chǔ)的千人一面逐漸演化到千人千面。下面描述千人千面的具體業(yè)務(wù)邏輯、技術(shù)方案和推薦算法,以及需要注意的問題。
電商千人千面業(yè)務(wù)邏輯
我們了解到千人千面的本質(zhì)是根據(jù)不同的人群,將最有可能成交的商品優(yōu)先推薦給相應(yīng)的消費者,最大限度上促進用戶購買下單。那么具體的商品展現(xiàn)邏輯是怎樣的呢?
千人千面,主要應(yīng)用于首頁、購物車、商品詳情頁、搜索列表等位置。
上面三個截圖分別是首頁、購物車和商品詳情頁,紅框部分的“為你推薦”即是根據(jù)用戶數(shù)據(jù)對用戶進行的個性化商品推薦,不同用戶展現(xiàn)的商品都不一樣,也就是所謂的“千人千面”。
上面這張截圖是搜索列表。其實搜索跟推薦也是分不開的,為了提高轉(zhuǎn)化率,搜索結(jié)果往往要依賴于用戶行為數(shù)據(jù)。我在搜索欄搜索“失眠”后,列表中顯示了阿膠漿,很眼熟。對了,幾天前我在App里瀏覽過阿膠漿,剛好阿膠漿其中一個功效就是助眠,所以搜索列表就顯示了這款商品。如果換一個用戶搜索,很可能會搜不到阿膠漿,至少大概率不會顯示在列表頂部。
如上圖所示,千人千面買家的購買和瀏覽行為決定著產(chǎn)品的展示順序,第一到第三層,很容易理解,也是大家常規(guī)對千人千面的基本認(rèn)識,那么,第四層級是什么意思呢?類似的標(biāo)簽?
其實每個消費者只要有在淘寶網(wǎng)上購買或是瀏覽過,平臺就會給用戶打上標(biāo)簽,比如年齡、客單價、喜好、關(guān)注點等。根據(jù)用戶標(biāo)簽的不同,每個用戶訪問APP時展示的商品就會有所差別。假設(shè)兩個男生從來沒有買過女性產(chǎn)品,第一次給女性買東西,搜索同一個關(guān)鍵詞比如“連衣裙 女”,他們看到的商品列表也不一樣,平臺會根據(jù)你以往的一些購買行為打上標(biāo)簽,比如用戶有“年輕、高客單價、愛名牌”等標(biāo)簽,那么展示給這個用戶的就會是年輕款、高客單價的連衣裙相關(guān)商品。也就是說:根據(jù)用戶的標(biāo)簽特征,將最有可能成交的商品優(yōu)先推薦給相應(yīng)的消費者,最大限度的提高購買轉(zhuǎn)化率,促進用戶購買下單。這就是千人千面的主要目的。
上面我們提到的用戶標(biāo)簽,我們也經(jīng)常稱之為“用戶特征”。我們一般會維護一個用戶特征數(shù)據(jù)庫,這是千人千面的基礎(chǔ)。在搜索和推薦時往往需要這些用戶特征數(shù)據(jù)。
推薦系統(tǒng)架構(gòu)
上面是一個簡單的推薦系統(tǒng)的架構(gòu)圖。推薦服務(wù)依賴于算法和規(guī)則,對于簡單的規(guī)則直接走規(guī)則引擎,對于較復(fù)雜的邏輯可以走算法,比如需要做機器學(xué)習(xí)或深度學(xué)習(xí)模型訓(xùn)練的場景。不管是規(guī)則引擎還是模型訓(xùn)練,都需要數(shù)據(jù)的支撐,用戶特征服務(wù)和商品服務(wù)會給他們提供最基礎(chǔ)的用戶特征數(shù)據(jù)和商品數(shù)據(jù)。
數(shù)據(jù)存儲,快速存取
數(shù)據(jù)存儲主要是指用戶特征數(shù)據(jù)的存儲,這個量比較大。至于商品數(shù)據(jù)一般不會太大,淘寶這種體量的平臺也不過三五千萬的商品數(shù)量。我們的用戶量大概有兩億多,月活躍用戶5000萬。為了保證系統(tǒng)的高性能,我們將數(shù)據(jù)存放在redis集群中,在Redis中做分片存儲。以userID做為Key,這個用戶的特征數(shù)據(jù)作為Value。以userID做為Redis分片的路由Key。為了減少Redis存儲空間,我們選用了protobuf作為數(shù)據(jù)存儲格式。Protobuf是google開源的,protobuf的序列化和反序列化性能很高,而且占用的空間比一般的格式要減少一半以上。
推薦算法
常見的個性推薦算法主要包括:基于內(nèi)容的推薦、基于協(xié)同過濾的推薦、基于知識的推薦等。在實際應(yīng)用中,很多電商平臺往往以多種推薦方式融合的方式,實現(xiàn)個性化推薦。
基于內(nèi)容的推薦(CB,Content-Based Recommendation)
基于內(nèi)容相關(guān)性為用戶推薦商品,利用內(nèi)容本身的特征進行推薦。從類目、品牌、商品屬性、商品標(biāo)題、商品標(biāo)簽等多個維度計算內(nèi)容相似度,將相似度最高的商品推薦給相關(guān)用戶。內(nèi)容的推薦是非常基礎(chǔ)的推薦方法,計算的是內(nèi)容本身的相關(guān)程度。
比如某個用戶在淘寶上瀏覽過男士襯衫,在淘寶的發(fā)現(xiàn)好貨就會給你推薦各種各樣的男士襯衣、男士T恤、男士西裝等,如果這個用戶繼續(xù)訪問男士七分袖襯衣,系統(tǒng)獲取到這個產(chǎn)品屬性,會繼續(xù)給你推薦七分袖的亞麻襯衣、七分袖麻料襯衣、五分袖襯衣、男士七分袖T恤等等。這就相當(dāng)于在商場身邊有個貼身的導(dǎo)購,你每試穿一次衣服又為你推薦一系列相關(guān)的衣服。
CB的基本實現(xiàn)原理
(1)提取商品特征
這個可以根據(jù)商品的一些數(shù)據(jù),比如類目、屬性、品牌、標(biāo)題、標(biāo)簽、商品組合、評分等因子進行提取。
(2)計算用戶喜歡的特征
根據(jù)用戶以前的喜歡的和不喜歡商品的特征進行計算,得出用戶喜歡的特征。用戶的特征由相關(guān)關(guān)鍵字組成,可以通過TF-IDF模型計算用戶行為的關(guān)鍵字,從而得出用戶的特征。
(3)相關(guān)商品推薦給用戶
根據(jù)用戶喜歡的特征,去商品庫進行選擇,找出相關(guān)性最大的多個商品進行推薦。現(xiàn)在我們提取出了商品的特征,又通過計算得出了用戶喜歡的特征,那么可以通過余弦相似度計算出商品間的相似度,做為個性化推薦的依據(jù)。簡單介紹一下余弦相似度,通過計算兩個向量的夾角余弦值來評估他們的相似度。如圖所示,夾角越小,兩個向量越相似;夾角越大,兩個向量越不同。
(4)最后根據(jù)用戶反饋的結(jié)果更新用戶喜歡的特征
用戶的喜好是不斷變化的,今天可能我關(guān)注襯衣,明天我又想看手機,所以系統(tǒng)需要根據(jù)用戶的變化不斷更新用戶的特征。
CB算法的優(yōu)點:
- 實現(xiàn)起來比較簡單,不需要復(fù)雜的算法和計算,可以很快實現(xiàn)用戶和商品的相關(guān)性
- 計算簡單快速
- 結(jié)果可解釋,很容易找到可解釋的相關(guān)特征
CB算法的缺點:
- 無法挖掘用戶的潛在興趣
- 分析特征有限,很難充分提取商品相關(guān)性
- 無法為新用戶產(chǎn)生推薦,在用戶行為較少時推薦不準(zhǔn)確
2. 基于協(xié)同過濾的推薦
通過基于內(nèi)容的推薦算法只能基本滿足用戶的推薦需求,但是卻做不到真正的千人千面。所以我們需要通過算法模型自動發(fā)掘用戶行為數(shù)據(jù),從用戶的行為中推測出用戶的興趣,從而給用戶推薦滿足他們需求的物品。
基于用戶行為分析的算法是個性化推薦系統(tǒng)的重要算法,這種算法一般被稱為“協(xié)同過濾算法”。協(xié)同過濾算法是指通過用戶行為分析,不斷獲取用戶互動信息,在用戶的推薦列表中不斷過濾掉不感興趣或者不匹配的商品,不斷提升推薦效果。
簡單來說,這種算法不單單只是根據(jù)自己的喜好,而且還引入了“鄰居”的喜好來進行推薦。這樣的推薦更加充分,而且可以深入挖掘用戶潛在的興趣。
上面說過協(xié)同過濾是基于用戶行為分析,所以需要引入下面的參數(shù)進行計算:
- 用戶標(biāo)識
- 商品/物品標(biāo)識
- 用戶行為的種類(包括瀏覽,點贊,收藏,加入購物車,下單等)
- 用戶行為的上下文(包括時間、地點等)
- 用戶行為的權(quán)重(包括瀏覽時長,購買頻次等)
- 用戶行為的內(nèi)容(比如評價分值,評論的文本內(nèi)容等)
協(xié)同過濾主要包括兩種:基于用戶的協(xié)同過濾,User-based CF;和基于商品的協(xié)同過濾,Item-based CF。下面我們就對這兩者進行說明。
(1)基于用戶的協(xié)同過濾User-based CF
系統(tǒng)通過分析某用戶和其他用戶的特征值,找出相近的特征用戶,然后根據(jù)特征用戶喜好的商品,從中找到一些商品推薦給該用戶。
以閱讀為例,比如用戶A一直看架構(gòu)方面的書籍,這樣系統(tǒng)可以找到和他有類似興趣的用戶,然后把這些用戶喜歡看的書(同時這些書用戶A沒有看過的)推薦給用戶A。簡言之就是計算出兩個用戶的相似度,然后給A推薦用戶B喜歡的東西。
User-based CF基本實現(xiàn)原理
1)找到和目標(biāo)用戶興趣相似的用戶
先給用戶行為定義分值,比如給瀏覽、收藏、加入購物車、購買、評分等行為定義分值,然后給各個行為打分,通過余弦相似度計算用戶相似度。
例如,我們有1001,1002,1003,1004,1005,1006這六個用戶,用戶對商品的行為包括瀏覽、收藏、下單等。我們需要對用戶行為賦予不同的權(quán)重分值,比如瀏覽為0.1分,收藏為0.5分,整體的行為分值表如下:
然后我們對這些用戶在不同商品上的行為進行統(tǒng)計,得出下表。下表展示了用戶對各個商品的偏好程度的分值,分值越高代表用戶對商品的感興趣程度越大。
我們可以根據(jù)余弦相似度計算用戶的相似度。具體公式如下:
我們現(xiàn)在要計算 1001 和 1002 兩個用戶的相似程度,并將數(shù)據(jù)帶入公式中:
通過計算我們得出 1001 和 1002 用戶余弦相似值約等于 0.863。相似值的范圍是從 -1 到 1,1 表示用戶之間完全相似,0 表示用戶之間是獨立的,-1 表示兩個用戶之間相似度正好相反,在 -1 到 1 之間的值表示其相似和相異。而我們剛剛得出的值是 0.863,表示用戶之間的相似度非常高。同理我們可以計算出 1001 用戶和其他用戶的相似值。
2)將集合中用戶喜歡的且目標(biāo)用戶沒有聽說過的商品推薦給目標(biāo)用戶
計算出用戶相似度后,在相似度高的用戶集合中選擇相關(guān)商品,將目標(biāo)用戶沒有瀏覽過的商品推薦給目標(biāo)用戶。
還是上面那個栗子,我們需要給用戶 1001 推薦沒有瀏覽過的商品,我們計算出和 1001 相似值較高的用戶集合,假設(shè)我們設(shè)定一個閾值 0.85,并把相似值在 0.85 以上的用戶喜好的商品推薦給目標(biāo)用戶,同時也涉及到推薦排序的問題。
我們根據(jù)以下公式進行推薦計算:
(其中S(u,k)指和用戶 u 興趣最接近的 k 個用戶集合,N(i)指對物品 i 有過行為的用戶集合,數(shù)學(xué)符號∩是取交集,W指用戶U和用戶V的相似度,R表示用戶V對物品的興趣)
我們需要先計算出與 1001 相似的用戶,通過計算得出 1002、1003、1004、1005、1006 用戶的相似值分別是0.863,0.875,0.779,0.812,0.916。我們?nèi)∠嗨浦翟?.85以上的用戶,包括1002,1003,1006。所以可以給用戶1001推薦自拍桿和白酒兩種商品,1001 推薦列表不包括這兩種商品。我們可以通過上面的公式來計算用戶對這兩種商品的感興趣程度然后再進行排序。
- 自拍桿=0.863*1+0.916*8=8.191
- 白 酒 =0.863*3=2.589
這樣我們可以將自拍桿和白酒排序,推薦給用戶 1001 時,會將自拍桿排在白酒的前面。
(2)基于商品的協(xié)同過濾Item-based CF
這種算法是亞馬遜最先提出來的,系統(tǒng)通過分析用戶標(biāo)簽數(shù)據(jù)和行為數(shù)據(jù),判斷出用戶喜好商品的類型,然后挑選一些類似的商品推薦給這些喜歡共同類型商品的用戶。
比如,該算法會因為你購買過“佛珠手串”而給你推薦“茶具”和“檀香”。該算法是目前在電商領(lǐng)域使用較多的算法。很多朋友會覺得item CF算法和基于內(nèi)容的推薦算法很類似,實際上 CF 算法并不基于商品的屬性和類目來計算相似度,它主要通過分析用戶行為來記錄內(nèi)容之間的相關(guān)性。所以算法不會計算 佛珠手串和茶具,檀香的相似度,而是喜歡佛珠手串的用戶也喜歡茶具和檀香,系統(tǒng)就判斷手串和茶具、檀香之間有相關(guān)性。
Item-based CF基本實現(xiàn)原理
1)計算內(nèi)容之間的相似度
計算商品間的相似度同樣會用到余弦相似度。兩個商品產(chǎn)生相似關(guān)系,是因為他們共同被很多用戶喜歡,商品相似度越高,說明這兩個商品都被很多用戶所喜歡。
這里同樣用到了余弦相似度,但是公式略有不同,其中,|N(i)| 是喜歡商品i的用戶集合,|N(j)|是喜歡商品j的用戶集合,|N(i)∩N(j)| 是同時喜歡商品i和商品j的用戶交集。
舉例說明,首先我們假定有3個用戶,分別為A、B、C,用戶A購買了A,C兩個商品,用戶B購買了A,B,C三個商品,用戶C只買了商品A。
- 商品A:用戶A 用戶B 用戶C
- 商品B:用戶B
- 商品C:用戶A 用戶B
根據(jù)上面公式進行計算,我們先進行商品A、商品B、商品C之間的相似度計算
從以上的結(jié)果可以看出,商品A和商品C相似度最高,所以在需要推薦的場景下,系統(tǒng)會優(yōu)先把商品C推薦給用戶C。
2)根據(jù)用戶的偏好,給用戶生成推薦列表。
計算完商品相似度,我們需要把商品推薦給用戶。如果用戶近期有多個行為記錄,我們先計算每條行為記錄的相似值,然后可以得出多個推薦列表,我們需要將這些列表做相似值的去重和排序,需要注意的是如果重復(fù)記錄在單個推薦列表相似值不高,但是多條推薦列表都有涉及到,這時我們需要提升其權(quán)重。然后根據(jù)相似值進行排序展示。
3. 其他推薦算法
除此之外,還有一些其他的推薦算法。比如基于知識的推薦,以及基于人口統(tǒng)計學(xué)的推薦。由于篇幅原因,在這里不詳細介紹了。
作者:二馬讀書
原文鏈接:
https://mp.weixin.qq.com/s/8Hnxa0I_TcG_E4zRAwxPyA
如果覺得本文對你有幫助,可以轉(zhuǎn)發(fā)關(guān)注支持一下