解構電商、O2O:挖掘用戶的「潛意識」-推薦系統

人人都是產品經理 發佈 2022-07-23T10:54:19.025064+00:00

編輯導語:隨著人們日益提高的生活水平,對於商品的要求也都趨於個性化,個性化的推薦系統也就順勢而生。這篇文章作者詳細拆解了推薦系統的運作方式以及用戶的「潛意識」,感興趣的小夥伴一起來看看吧~

編輯導語:隨著人們日益提高的生活水平,對於商品的要求也都趨於個性化,個性化的推薦系統也就順勢而生。這篇文章作者詳細拆解了推薦系統的運作方式以及用戶的「潛意識」,感興趣的小夥伴一起來看看吧~

隨著人們日益提高的生活水平,對於商品的要求也都趨於個性化。每個人對於商品的喜好都有著自己的習慣,而抓住習慣並養成也是電商平台推廣宣傳的有效手段,就這樣推薦系統應運而生。

推薦顧名思義按照用戶的喜好和行為推薦可以滿足用戶訴求和需要的商品以求達到用戶購買的目的。廣義上來講所有主動推送給用戶的商品信息都可以視作推薦的範疇,而這裡面具有商業變現能力的商品推薦又叫做廣告。廣告的管理一般會由單獨的廣告系統負責,下文講述的推薦主要指除廣告以外的商品推薦內容。

一、推薦的基礎信息

推薦系統從根本上是為了解決營銷選品決策的問題,所有就需要有一些指標來衡量和評估效果為後續的推薦策略參數調整和方式進行優化提過依據。常見的推薦系統的指標和搜索的比較類似包括準確率、召回率以及新穎度等。

  • 準確率(Precision):表示召回的商品中推薦正確的商品占整體召回商品的百分比。
  • 召回率(Recall):表示召回的商品占整體商品的百分比。
  • 新穎度:表示推薦長尾區間的商品情況,如果推薦商品都是熱門商品,即新穎度很低,反之則新穎度較高。
  • CTR:點擊率,也是廣告系統的衡量指標之一。
  • CVR:轉化率,指從用戶點擊推薦商品到完成購買的轉化率。公式為CVR=(轉化量/點擊量)*100%

我們接下來看下推薦系統在電商平台用戶端都有哪些常見展現形式,如下圖:

推薦的使用一般多放在售前環節通過瀏覽時的推薦提高用戶的購買率,少部分頁會放在購買完成後提示用戶增加二次消費的機率。電商是全天候的售賣平台,但在實際消費的時候用戶會有不同的購買場景。不同的購買場景對於推薦的要求也是有差異的。

  • 時間維度:包括節假期、促銷周期等,對於020甚至還需要更細分的時間劃分,比如早中晚、加班等。不同的時間維度用戶對於購買的訴求不一樣,推薦給用戶的商品也不應該完全相同。
  • 地點維度:地點維度更多會影響到發貨的周期,本地倉庫/商家是否有貨確定是否可以早一點送到用戶的手裡。

推薦系統要達到場景推薦差異化的情況就要根據不同情況的獲取不同的數據進行分析處理。推薦系統的底層數據源和搜索一樣都是來自於各個業務系統的,推薦系統本身並不會產生業務數據。推薦系統主要是分析人與物之間的關係,所以數據都是圍繞這兩個點進行延伸。

人指的就是用戶本身的信息。包括用戶自身的基礎信息比如用戶名、聯繫方式、地址、收藏。還有消費信息比如訂單信息、會員信息等。這些信息可以對於用戶在系統中的實體進行初步的構建,以便推薦系統可以通過這些信息分析出人的「特性「。

而物品也就是商品信息。商品數據主要是商品的基礎信息、促銷信息。初次之外對於埋點的數據也需要進行統計,結合上述內容一起分析。埋點信息包括訪問數據,點擊數據等。

很多時候一些新的用戶和新上架商品並沒有歷史的數據可以追溯,這樣就無法提取特徵,也就是我們常說的「冷啟動「。冷啟動的問題也會影響到使用哪種推薦策略,因為不同的推薦策略可能對於數據量的要求也不一樣。

某一些策略則依賴於大量的數據進行分析,這個時候沒有處理冷啟動的問題就無法積累數據。為了應對冷啟動的問題人們也找到了一些方法,根本思路就是通過變形或者轉化來獲取特殊的數據源來解決無數據的問題。

第一種方式提供相對穩定的數據篩選結果,最為常見的例子就是熱銷排行榜。這種方式是假定所有用戶屬於一個整體的集合,在這個集合下最關注的商品就是熱銷品。

考慮到人群的從眾心理在新用戶前期通過推薦熱銷商品其實是一種相對穩妥的方式,實際證明新用戶在冷啟動階段對於熱銷品有更大的購買動力,而老用戶則也會更多考慮長尾推薦。在數據收集到一定程度後再將推薦數據轉化為更為精細的個性化推薦內容。很多平台的發現頁面就是通過這種方式去處理早期數據不全的情況。

第二種則是利用用戶前期註冊時留下的信息進行判斷。目前很多平台都會在初始階段讓用戶填寫一些個人信息和興趣愛好,這種手段在音樂或閱讀類平台用的會比較多。

通過用戶填寫的信息來初步構建特徵進行商品推薦的匹配。除了用戶本身在平台填寫的信息外,目前絕大多數都會使用第三方登錄,比如微信、支付寶等。通過第三方登錄在用戶授權的情況下也可以導入部分用戶行為數據輔助分析用戶特徵。

但這種推薦由於信息的匱乏會造成顆粒度很粗,導致可能很大一部分用戶看到的商品是完全一樣,但實際上他們本身的群體還是有一定區別的。

此外也可以結合上面兩種情況來獲取信息。比如提供一些特定分類如熱銷品的商品讓用戶進行選擇喜好,根據用戶的選擇匹配相似的商品數據。這樣對於冷啟動時可以更好的提供相對精準的推薦數據。

不過這個方法對於前期提供選擇的商品集合有一定的要求,不能過分的從單一的分類中獲取商品,平台要提供更品類豐富的選項以便後續分析時候可以更加準確。

上面講到的是新用戶冷啟動的數據獲取方案,除了用戶的冷啟動還有商品的冷啟動。對於上新的商品我們缺乏對於商品購買人群的數據特徵,就需要通過冷啟動獲取關聯數據如下圖。獲取數據的思路和用戶基本類似,最基礎的方式就是提供特殊標籤如新品。通過標籤提高權重已達到展示推薦的目的。

此外由於商品的信息是由內部運營人員進行錄入,所以我們可以通過人為的方式獲取到更多商品的基礎信息。推薦系統可以通過關鍵詞或者標籤Tag的方式獲取商品的關鍵信息,計算新品與老品之間的相似度來進行推薦。

同時我們也可以通過獲取第三方的數據來判斷用戶情況,如手機安裝時獲取已安裝應用情況判斷性別、年齡、愛好等信息。總結下來冷啟動主要是通過三個方向獲取數據:引導用戶自填、運營人工分類、第三方獲取。

二、推薦策略的「演變」

判斷用戶喜歡的商品進行推薦就是建立人、商品的關係。所有上述提到的元數據都需要根據推薦策略進行關聯。推薦的策略發展至今已經由簡單的概率分析延伸為現在比較流行的深度學習。我們講到推薦的核心就是建立人與商品的關係,關係靠近的則是認為他們相關度更高,關係較遠則認為相關度更低。

在人與商品的關係中還包含人與人、商品與商品的關係,由此構建出一個關係圖譜。比如我們常說的用戶畫像就是設定人與人關係的基礎數據。按照人和商品我們可以建立一個二維的坐標。

根據坐標遠近來判斷相關度進而產生推薦的商品信息。由於推薦系統比一般的電商業務系統對於算法的要求要高,所以這裡我們更多從產品維度來介紹下推薦策略和算法的一些情況。如果大家想深入了解一些算法可以自行研究。

上面說到推薦策略即是判斷人、商品之間的各種關係,關係越近則認為匹配度越高。那如何去判斷關係的遠近呢?對於這個核心的問題推薦系統也一直在進行發展演變,人們隨著技術的提升思路也變的越來越智能化。

在沒有系統推薦的時候,推薦系統更多是承載人工配置商品的過程。通過人工設定固定商品進行推薦,目前在一些不具備推薦算法能力的平台依然會使用此類方法。這樣的方式固然可以實現推薦商品,但效率和效果卻無法讓人恭維,於是就出現了基於內容的推薦策略。

基於內容推薦的思路是將所有的商品、內容、人等基礎實體進行標籤標記。系統通過標記不同的商品屬性特徵進行分類,當用戶進行購買時系統通過購買的商品進行判斷具備相同屬性或者相似屬性的商品集合,再通過消重、過濾等規則完成最終的推薦列表。

基於內容推薦實際上是來判斷商品與商品的固定關係,我們以一個實例看下策略的處理方式。假定平台上有一個圖書商品庫(包括商品A、B、C三個商品),我們基於圖書的相關信息為所有圖書制定標籤特徵,包括但不限於圖書名稱關鍵詞、圖書作者、圖書分類、圖書定價、圖書關鍵字等。通過標籤整理我們看到三個商品的特徵集為:

如果用戶購買商品B,則購買完成以後可以推薦商品A給用戶,因為商品A和商品B具備相同或相似的屬性(包括書名關鍵詞、作者、分類)。而商品C則和商品B相差較遠所以不進行推薦。

這裡面的判斷規則一般是通過加權的方式來判斷多個屬性最終是否和購買商品的特徵相似和相同,其中加權以及消重等規則和搜索使用的方法類似。特別說明下推薦策略做加權同樣需要考慮詞頻的因素,一般使用的概念是TF-IDF(termfrequency–inverse document frequency)。

TF為詞頻即關鍵詞在當前文本中出現的次數,這裡包括所有特徵屬性。IDF為逆文本頻率指數,指在所有文本屬性中出現次數的倒數。計算方式是TF X IDF,這項指標表示我們認為在當前文本中出現的高頻詞是高權重的,但如果該關鍵詞在所有文檔出現頻率也高則認為該詞不具備特殊意義故而權重是很低的。

如上表中的經濟詞彙如果只在當前文本特徵中出現次數較高,則是屬於高權重。如果在所有語料文本中都出現很多次,則認為他不應該是代表特定意義只是一個通用的詞彙,權重應該降低。

基於內容過濾規則比較簡單,初期搭建時可以快速實現推薦功能的自動化節省人力。但問題也是明顯的,首先需要通過對所有的商品構建特徵標籤工作量巨大,同時由於推薦策略的顆粒度和構建特徵的多少有直接關係,所以會造成顆粒度過於粗糙推薦商品不準確的問題。如果平台本身不具備太多推薦算法的能力,可以通過人工配置加基於內容推薦的方式獲取推薦的基本自動化能力。

基於固定的內容無法獲取更加精準的推薦商品,那麼我們可以換個角度來看待這個問題。我們把從商品與商品的固定關係轉變成參考人和商品、商品和商品之間的變化關係來進行推薦策略的構建,也即是說基於用戶的行為來判斷商品的關係。

用戶的行為具有複雜多變的特性,但不代表沒有規律可循。常見基於用戶行為的策略主要分為幾種:關聯規則和協同過濾。

關聯規則是指通過收集每個用戶一段的購買數據,可以得出買過商品A的所有用戶以及這些用戶同時買了哪些其他商品,然後將這些商品合併就得出了一個同時被購買商品列表的排序。基於商品列表進行消重、去除低關聯商品等行為最終實現推薦商品列表輸出。關聯規則的核心策略就是診斷關聯度進行處理,關聯度有兩個常用指標:支持度和置信度

  • 支持度(Support):買過商品A,同時買過商品B的人數 / 總的人數
  • 置信度(Confidence):買過商品A,同時買過商品B的人數 / 買過商品A的人數

計算公式關聯度 = support * confidence。下面我們舉一個例子看下算法是如何運行的。Alice購買了商品item1,這個時候我們想計算item5是否應該推薦。根據公式我們來計算下支持度和置信度。支持度support=2/4,置信度confidence=2/2,需要說明的是計算時要刨除alice本人。這樣我們可以得到support=0.5,confidence=1,所以item5對於item1的關聯度就是0.5*1=0.5。

從上面的例子我們可以看到通過關聯度可以推薦到購買時被人們最常用的組合是哪些。對於一些品類單一的商品結構是非常適用的,策略的邏輯本身並不複雜對於技術要求也不會特別高。但從計算量上來看,需要對所有的商品進行遍歷計算才能獲取所有的指標。對於離線的數據挖掘成本來說有些過於的大了。

顯而易見關聯規則作為主要的算法是有些不符合的,那我們就需要尋找一個效率更高、成本更低的算法來作為主要的推薦算法,協同過濾就是目前主流的推薦算法。協同過濾主要原理是運用群體的協同智慧,志在通過一個群體的喜好判斷來確定單體的特徵和情況。這個群體既可以是用戶群體,也可以是商品群體。

協同過濾有幾個基本的假設:

  • 用戶會對物品給出評價(隱性或顯性)
  • 用戶偏好一定時間內不會發生變化

協同過濾的處理主要包括兩個部分:評測和群體搜索。我們來看下協同過濾的處理流程。如下圖:

獲取所有的用戶數據信息,用戶信息包括用戶自行填寫的內容、評價、消費記錄等信息。對於新用戶的情況可以通過上文講到的冷啟動的方式獲取數據。同時要對用戶的數據進行一些基本的預處理。

主要的預處理為降噪和歸一化。降噪主要是剔除一些異常數據,比如用戶的誤操作、未支付訂單等。而歸一化的目的是為了保證所有的用戶信息在進行推薦計算的時候不會受到極值的影響出現過大偏差。

比如訂單的數量就遠大於收藏的數量,需要將這樣的信息通過處理變為一個相對合理的區間範圍,一般會將歸一化的數據分布變為[0,1]區間內。常用的歸一化方法也有很多,比如對數歸一、指數歸一等。歸一化的概念和地圖的比例尺有些相似,目的是在保證相對關係的情況下將所有樣本縮放到一定範圍內以便進行計算。

數據處理完畢後推薦系統就會根據信息對用戶或商品進行評估打分。這裡面主要是基於已知的用戶或者商品集合的信息判斷與當前用戶或商品的相似度。推薦算法基於不同的相似度得到每個集合的分值,根據計算的分值判斷與當前用戶或商品的臨近群體。通過將臨近群體和當前商品或用戶進行比對完成推薦結果的輸出。

關於相似度的計算也是推薦算法的核心,相似度主要是指當前群體和已知群體之間的臨近程度。關於臨近算法也是隨著技術逐步發展起來的。這裡面我們以kNN算法為例看下臨近算法的原理。

kNN(全稱 k-NearestNeighbor K臨近算法)意思是k個最近的鄰居,指是每個樣本都可以用它最接近的k個鄰居來代表。策略的思路是通過指定一個數量範圍K,判斷最相似的K個商品內具備的共有特徵,則認為查詢的商品或用戶的本身也具有這個特徵。簡單的說就是認為你跟你附近K個最近的群體具有相同特徵。

由下圖我們可以看到首先我們會將所有的樣本數據與當前需要比對的樣本進行距離測算,根據測算距離生成一個由近及遠的列表。在所有樣本比對完畢後將當前列表選取K個樣本並判斷當前樣本中多數項的屬性特徵,將該屬性特徵賦予被比對的商品完成推薦結果輸出。我們通過圖來看下臨近算法運行的原理。

當範圍K選取的是C1值時,則認為當前比對樣本的特徵應該是圓形,因為在範圍內圓形占多數項。而當我們把範圍K的值調整為C2時,我們發現比對樣的特徵變為了正方形。所以kNN的臨近算法會因為K的範圍選取產生結果的巨大變化。如下圖

而目前的主流協同過濾雖然還是使用計算相似度來進行推薦,但策略上已經發生了變化。按維度分包括基於用戶維度和基於商品維度。基於用戶維度(User-Based: Row similarity )是指以用戶為參照物判斷和當前用戶相似的用戶群體的喜好,從而得到相似用戶群體中包含且當前用戶未曾購買的商品進行推薦。

如果我們把用戶和商品關系列一個矩陣,則按用戶維度也可以看做是行相似性。下表可以看到用戶A購買時,我們通過查詢比對發現用戶A和用戶C是相似群體,所以根據用戶C的特徵推薦商品D給用戶A。

基於商品維度(Item-Based:Colunm similarity)也叫做基於項目維度,通常指除人以外的實體。項目在電商平台則代表商品維度,而新聞、音樂類平台則代表其他的實體。與基於用戶維度不同的地方,基於項目維度是以商品(下文將項目統一稱作商品)為參照物判斷找到和當前物品偏好相似的物品,然後根據用戶歷史的拍好情況推薦相似品。

我們還用上述的這個關係矩陣來看基於商品維度的處理方式。購買商品A的用戶和商品D的人群很相似,所以當用戶購買A時,我們可以推薦商品D給用戶。所以基於商品維度又叫做列相似性。

兩種維度的算法都各有優缺點,衡量使用的標準主要是選取參照物叫少的維度。例如電商平台相對於龐大的用戶群體來說商品相對固定,商品之間的關係變化也較少,所以使用以商品為參照物可以大大減少計算的量級和複雜度。而新聞類則相反,用戶相對內容更為穩定,則使用用戶為參照處理起來更為便捷。

同時基於商品維度的算法相對於基於用戶維度的算法,結果集更為穩定,但豐富性相對較低。所以如何取捨要依賴於平台對於推薦的實際業務要求。更多的時候可以使用混合算法,即按照一定的配比從多種算法上獲取商品進行去重、加權、排序。

一般來說在使用協同過濾算法時候有幾個技巧:

  • 低頻的物品可以做過濾,減少雜質對於整體計算的影響
  • 降低高頻熱門物品的權重,避免出現大量推薦重複顯示高頻商品的問題。
  • 打分的分值可以根據時間的遞進進行衰減,即越靠近現在越高

這裡簡單介紹幾種算法的公式,具體的算法細節可以自行百度。產品層面知悉就可以了。

Cosine-basedSimilarity(Cosine相似度):常用於計算文檔數據相似度。

Pearson Correlation Similarity (皮爾遜相關度):計算兩個定距變量的相似度。

AdjustedCosine Similarity (校正Cosine相似度):修正了餘弦相似度算法對於絕對數值不敏感的部分。

三、推薦系統架構

推薦系統按照處理流程的劃分也有若干層。從效果來看業務特徵加特殊特徵的精細度決定效果的最終上限。結構如下圖

  • 特徵層:負責沉澱所有特徵內容。
  • 樣本層:提供樣本選取和訓練。
  • 模型層:提供模型算法。
  • 召回層:負責召回數據。
  • 排序層:提供打分、排序、去重等功能

作者:高暉

關鍵字: