推薦系統–完整的架構設計和演算法(協同過濾、隱語義)
- 2019 年 10 月 3 日
- 筆記
1. 什麼是推薦系統
推薦系統是利用電子商務網站向客戶提供商品資訊和建議,幫助用戶決定應該購買什麼產品,模擬銷售人員幫助客戶完成購買過程。個性化推薦是根據用戶的興趣特點和購買行為,向用戶推薦用戶感興趣的資訊和商品。
隨著電子商務規模的不斷擴大,商品個數和種類快速增長,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在資訊過載問題中的消費者不斷流失。
為了解決這些問題,個性化推薦系統應運而生。個性化推薦系統是建立在海量數據挖掘基礎上的一種高級商務智慧平台,以幫助電子商務網站為其顧客購物提供完全個性化的決策支援和資訊服務。
常見的推薦欄位例如:淘寶的猜你喜歡、看了又看、推薦商品,美團的首頁推薦、附近推薦等。
推薦系統是比較偏向於工程類的系統,要做得更加的精確,需要的不僅僅是推薦演算法,還有用戶意圖識別、文本分析、行為分析等,是一個綜合性很強的系統。
2. 總體架構
本節介紹的幾種推薦系統架構,並不是互相獨立的關係,實際的推薦系統可能會用到其中一種或者幾種的架構。在實際設計的過程中,讀者可以把本文介紹的架構作為一個設計的起點,更多地結合自身業務特點進行獨立思
考,從而設計出適合自身業務的系統。
根據響應用戶行為的速度不同,推薦系統可以大致分為基於離線訓練和在線訓練的推薦系統。
2.1 離線推薦
於離線訓練的推薦系統架構是最常見的一種推薦系統架構。這裡的「離線」訓練指的是使用歷史一段時間( 比如周或者幾周 )的數據進行訓練,模型迭代的周期較長(一般 以小時為單位 )。模型擬合的是用戶的中長期興趣。
如下圖所示, 一個典型的基於離線訓練的推薦系統架構由數據上報、離線訓練、在線存儲、實時計算和 A/B 測試這幾個模組組成。其中,數據上報和離線訓練組成了監督學習中的學習系統,而實時計算和 A/B 測試組成了預測系統。另外,除了模型之外,還有一個在線存儲模組,用於存儲模型和模型需要的特徵資訊供實時計算模組調用。圖中的各個模組組成了訓練和預測兩條數據流,訓練的數據流搜集業務的數據最後生成模型存儲於在線存儲模組;預測的數據流接受業務的預測請求,通過 A/B 測試模組訪問實時計算模組獲取預測結果。
-
數據上報:據上報模組的作用是搜集業務數據組成訓練樣本。一般分為收集、驗證、清洗和轉換幾個步驟。將收集的數據轉化為訓練所需要的樣本格式,保存到離線存儲模組。
-
離線訓練:線訓練模組又細分為離線存儲和離線計算。實際業務中使用的推薦系統一般都需要處理海量的用戶行為數據,所以離線存儲模組需要有一個分散式的文件系統或者存儲平台來存儲這些數據。離線計算常見的操作有:樣本抽樣、特徵工程、模型訓練、相似度計算等。
-
在線存儲:因為線上的服務對於時延都有嚴格的要求。比如,某個用戶打開手機 APP ,他肯定希望APP 能夠快速響應,如果耗時過長,就會影響用戶的體驗。一般來說,這就要求推薦系統在幾十毫秒以內處理完用戶請求返回推薦結果,所以,針對線上的服務,需要有一個專門的在線存儲模組,負責存儲用於線上的模型和特徵數據 。
-
實時推薦:實時推薦模組的功能是對來自業務的新請求進行預測。1.獲取用戶特徵;2.調用推薦模型;3.結果排序。
在實際應用中,因為業務的物品列表太大,如果實時計算對每 個物品使用複雜的模型進行打分,就有可能耗時過長而影響用戶滿意度。所以,一種常見的做法是將推薦列表生成分為召回和排序兩步。召回的作用是從大量的候選物品中(例如上百萬)篩選出一批用戶較可能喜歡的候選集 (一般是幾百)。排序的作用是對召回得到的相對較小的候選集使用排序模型進行打分。更進一步,在排序得到推薦列表後,為了多樣性和運
營的一些考慮,還會加上第三步重排過濾,用於對精排後的推薦列表進行處理。 -
A/B測試:對於互聯網產品來說, A/B 測試基本上是一個必備的模組,對於推薦系統來說也不例外,它可以幫助開發人員評估新演算法對客戶行為的影響。除了 離線的指標外,一個新的推薦演算法上線之前 般都會經過 A/B 測試來測試新演算法的有效性。
下圖是與之對應的實際系統中各個組件的流轉過程。需要注意的是生成推薦列表就已經做完了召回和排序的操作,業務層直接調用API就可以得到這個推薦列表。
2.2 在線訓練
對於業務來說,我們希望用戶對於上 個廣告的回饋 (喜歡或者不 歡,有沒有點擊 ,可以很快地用於下
一個廣告的推薦中。這就要求我們用另 種方法來解決這個問題,這個方法就是在線訓練。
基於在線訓練的推薦系統架構適合於廣告和電商等高維度大數據量且對實時性要求很高的場景 相比較基於離線訓練的推薦系統,基於在線訓練的推薦系統不區分訓練和測試階段,每個回合都在學習,通過實時的回饋來調整策略。 方面,在線訓練要求其樣本、特徵和模型的處理都是實時的,以便推薦的內容更快地反映用戶實時的喜好;另一方面,因為在線訓練井不需要將所有的訓練數據都存儲下來,所以不需要巨大的離線存儲開銷,使得系統具有很好的伸縮性,可以支援超大的數據量和模型。
- 樣本處理:和基於離線訓練的推薦系統相比,在線訓練在數據上報階段的主要不同體現在樣本處理上。,對於離線訓練來說,上報後的數據先是被存儲到一個分散式文件系統,然後等待離線計算任務來對樣本進行處理;對於在線訓練來說,對樣本的去重、過濾和取樣等計算都需要實時進行。
- 實時特性:實時特徵模組通過實時處理樣本數據拼接訓練需要的特徵構造訓練樣本,輸入流式訓練模組用於更新模型。該模組的主要的功能是特徵拼接和特徵工程。
- 流式訓練:、流式訓練模組的主要作用是使用實時訓練樣本來更新模型。推薦演算法中增量更新部分的計算,通過流式計算的方式來進行更新。在線訓練的優勢之一,是可以支援模型的稀疏存儲。訓練方面,在線模型不一定都是從零開始訓練,而是可以將離線訓練得到的模型參數作為基礎,在這個基礎上進行增量訓練。
- 模型存儲和載入:模型一般存儲在參數伺服器中。模型更新後,將模型文件推送到線上存儲,並由線上服務模組動態載入。
3. 特徵數據
要訓練推薦模型,就需要先收集用戶的行為數據生成特徵向量以後才能進行訓練,而一個特徵向量由特徵以及特徵的權重組成,在利用用戶行為計算特徵向量時需要考慮以下因素。
- 用戶行為的種類:在一個網站中,用戶可以對物品產生很多不同種類的行為。用戶可以瀏覽物品、單擊物品的鏈接、收藏物品、給物品打分、購買物品、評論物品、給物品打上不同的標籤、和好友分享物品、搜索不同的關鍵詞等。這些行為都會對物品特徵的權重產生影響,但不同行為的影響不同,大多時候很難確定什麼行為更加重要,一般的標準就是用戶付出代價越大的行為權重越高。
- 用戶行為產生的時間:一般來說,用戶近期的行為比較重要,而用戶很久之前的行為相對比較次要。因此,如果用戶最近購買過某一個物品,那麼這個物品對應的特徵將會具有比較高的權重。
- 用戶行為的次數:有時用戶對一個物品會產生很多次行為。比如用戶會聽一首歌很多次,看一部電視劇的很多集等。因此用戶對同一個物品的同一種行為發生的次數也反映了用戶對物品的興趣,行為次數多的物品對應的特徵權重越高。
- 物品的熱門程度:如果用戶對一個很熱門的物品產生了行為,往往不能代表用戶的個性,因為用戶可能是在跟風,可能對該物品並沒有太大興趣,特別是在用戶對一個熱門物品產生了偶爾幾次不重要的行為(比如瀏覽行為)時,就更說明用戶對這個物品可能沒有什麼興趣,可能只是因為這個物品的鏈接到處都是,很容易點到而已。反之,如果用戶對一個不熱門的物品產生了行為,就說明了用戶的個性需求。因此,推薦引擎在生成用戶特徵時會加重不熱門物品對應的特徵的權重。
- 數據去燥:對樣本做去噪。對於數據中混雜的刷單等類作弊行為的數據,要將其排除出訓練數據,否則它會直接影響模型的效果;樣本中的缺失值也要做處理。
- 正負樣本均衡:一般我們收集用戶的行為數據都是屬於正樣本,造成了嚴重的不平衡。所以對於一個用戶,從他沒有過行為的物品中取樣出一些物品作為負樣本,但取樣時,保證每個用戶的正負樣本數目相當。
- 特徵組合:我們需要考慮特徵與特徵之間的關係。例如在美團酒店搜索排序中,酒店的銷量、價格、用戶的消費水平等是強相關的因素,用戶的年齡、位置可能是弱相關的因素,用戶的ID是完全無關的因素。在確定了哪些因素可能與預測目標相關後,我們需要將此資訊表示為數值類型,即為特徵抽取的過程。除此之外,用戶在App上的瀏覽、交易等行為記錄中包含了大量的資訊,特徵抽取則主要是從這些資訊抽取出相關因素,用數值變數進行表示。常用的統計特徵有計數特徵,如瀏覽次數、下單次數等;比率特徵,如點擊率、轉化率等;統計量特徵,如價格均值、標準差、分位數、偏度、峰度等。
4. 協同過濾演算法
協同過濾演算法起源於 1992 年,被 Xerox 公司用於個性化訂製郵件系統。Xerox 司的用戶需要在數十種主題中選擇三到五種主題,協同過濾演算法根據不同的主題過濾郵件,最終達到個性化的目的。
協同過濾演算法分為基於物品的協同過濾和基於用戶的協同過濾,輸出結果為 TOPn 的推薦列表。
4.1 基於物品的協同過濾(ItemCF)
基於物品的協同過濾演算法的核心思想:給用戶推薦那些和他們之前喜歡的物品相似的物品。
基於物品的協同過濾演算法首先計算物品之間的相似度, 計算相似度的方法有以下幾種:
-
基於共同喜歡物品的用戶列表計算
[w_{ij}=frac{|N(i)cap{}N(j)|}{sqrt{|N(i)|*|N(j)|}}]
在此,分母中 N(i) 是購買物品 i 的用戶數,N(j) 是購買物品 j 的用戶數,而分子 (N(i)cap{}N(j)) 是同時購買物品i 和物品 j 的用戶數。。可見上述的公式的核心是計算同時購買這件商品的人數比例 。當同時購買這兩個物品人數越多,他們的相似度也就越高。另外值得注意的是,在分母中我們用了物品總購買人數做懲罰,也就是說某個物品可能很熱門,導致它經常會被和其他物品一起購買,所以除以它的總購買人數,來降低它和其他物品的相似分數。
-
基於餘弦的相似度計算
上面的方法計算物品相似度是直接使同時購買這兩個物品的人數。但是也有可能存在用戶購買了但不喜歡的情況 所以如果數據集包含了具體的評分數據 我們可以進一步把用戶評分引入到相似度計算中 。
[w_{ij}=costheta=frac{N_i*N_j}{||N_i||||N_j||}=frac{sum_{k=1}^{len}(n_{ki}*n_{kj})}{sqrt{sum_{k=1}^{len}n_{ki}^2}*sqrt{sum_{k=1}^{len}n_{kj}^2}}]
其中 (n_{ki}) 是用戶 k 對物品 i 的評分,如果沒有評分則為 0。
-
熱門物品的懲罰
對於熱門物品的問題,可以用如下公式解決:
[w_{ij}=frac{|N(i)cap{}N(j)|}{|N(i)|^alpha*|N(j)|^{1-alpha}}]
當 (alphain(0,0.5)) 時,N(i) 越小,懲罰得越厲害,從而會使熱 物品相關性分數下降。
4.2 基於用戶的協同過濾(UserCF)
基於用戶的協同過濾(User CF )的原理其實是和基於物品的協同過濾類似的。所不同的是,基於物品的協同過濾的原理是用戶 U 購買了 A 物品,推薦給用戶 U 和 A 相似的物品 B、C、D。而基於用戶的協同過濾,是先計算用戶 U 與其他的用戶的相似度,然後取和 U 最相似的幾個用戶,把他們購買過的物品推薦給用戶U。
為了計算用戶相似度,我們首先要把用戶購買過物品的索引數據轉化成物品被用戶購買過的索引數據,即物品的倒排索引:
建立好物品的倒排索引後,就可以根據相似度公式計算用戶之間的相似度:
[w_{ab}=frac{|N(a)cap{}N(b)|}{sqrt{|N(a)|*|N(b)|}}]
其中 N(a) 表示用戶 a 購買物品的數量,N(b) 表示用戶 b 購買物品的數量,N(a)∩N(b) 表示用戶 a 和 b 購買相同物品的數量。有了用戶的相似數據,針對用戶 U 挑選 K 個最相似的用戶,把他們購買過的物品中,U 未購買過的物品推薦給用戶 U 即可。
4.3 矩陣分解
上述計算會得到一個相似度矩陣,而這個矩陣的大小和緯度都是很大的,需要進行降維處理,用到的是SVD的降維方法,具體可以參考我之前寫的降維方法:2.5 降維方法
基於稀疏自編碼的矩陣分解
矩陣分解技術在推薦領域的應用比較成熟,但是通過上一節的介紹,我們不難發現矩陣分解本質上只通過一次分解來對 原矩陣進行逼近,特徵挖掘的層次不夠深入。另外矩陣分解也沒有運用到物品本身的內容特徵,例如書本的類別分類、音樂的流派分類等。隨著神經網路技術的興起,筆者發現通過多層感知機,可以得到更加深度的特徵表示,並且可以對內容分類特徵加以應用。首先,我們介紹一下稀疏自編碼神經網路的設計思路。
-
基礎的自編碼結構
最簡單的自編碼結構如下圖,構造個三層的神經網路,我們讓輸出層等於輸入層,且中間層的維度遠低於輸入層和輸出層,這樣就得到了第一層的特徵壓縮。
簡單來說自編碼神經網路嘗試學習中間層約等於輸入層的函數。換句話說,它嘗試逼近一個恆等函數。如果網路的輸入數據是完全隨機的,比如每一個輸入都是一個跟其他特徵完全無關的獨立同分布高斯隨機變 ,那麼這一壓縮表示將會非常難於學習。但是如果輸入數據中隱含著 些特定的結構,比如某些輸入特徵是彼此相關的,那麼這一演算法就可以發現輸入數據中的這些相關性。
-
多層結構
基於以上的單層隱藏層的網路結構,我們可以擴展至多層網路結構,學習到更高層次的抽象特徵。
5. 隱語義模型
5.1 基本思想
推薦系統中一個重要的分支,隱語義建模。隱語義模型LFM:Latent Factor Model,其核心思想就是通過隱含特徵聯繫用戶興趣和物品。
過程分為三個部分,將物品映射到隱含分類,確定用戶對隱含分類的興趣,然後選擇用戶感興趣的分類中的物品推薦給用戶。它是基於用戶行為統計的自動聚類。
隱語義模型在Top-N推薦中的應用十分廣泛。常用的隱語義模型,LSA(Latent Semantic Analysis),LDA(Latent Dirichlet Allocation),主題模型(Topic Model),矩陣分解(Matrix Factorization)等等。
首先通過一個例子來理解一下這個模型,比如說有兩個用戶A和B,目前有用戶的閱讀列表,用戶A的興趣涉及偵探小說,科普圖書以及一些電腦技術書,而用戶B的興趣比較集中在數學和機器學習方面。那麼如何給A和B推薦圖書呢?
對於UserCF,首先需要找到和他們看了同樣書的其他用戶(興趣相似的用戶),然後在給他們推薦那些用戶喜歡的其他書。
對於ItemCF,需要給他們推薦和他們已經看的書相似的書,比如用戶B 看了很多數據挖掘方面的書,那麼可以給他推薦機器學習或者模式識別方面的書。
還有一種方法就是使用隱語義模型,可以對書和物品的興趣進行分類。對於某個用戶,首先得到他的興趣分類,然後從分類中挑選他可能喜歡的物品。
5.2 模型理解
- 如何給物品進行分類?
- 如何確定用戶對哪些類的物品感興趣,以及感興趣的程度?
- 對於一個給定的類,選擇哪些屬於這個類的物品推薦給用戶,以及如何確定這些物品在一個類中的權重?
為了解決上面的問題,研究人員提出:為什麼我們不從數據出發,自動地找到那些類,然後進行個性化推薦,隱語義分析技術因為採取基於用戶行為統計的自動聚類,較好地解決了上面的問題。隱語義分析技術從誕生到今天產生了很多著名的模型和方法,其中和推薦技術相關的有pLSA,LDA,隱含類別模型(latent class model), 隱含主題模型(latent topic model), 矩陣分解(matrix factorization)。
LFM通過如下公式計算用戶 u 對物品 i 的興趣:
[preference(u,i)=r_{ui}=p_u^Tq_i=sum_{f=1}^Fp_{u,k}q_{i,k}]
這個公式中 (p_{u,k}) 和 (q_{i,k}) 是模型的參數,其中 (p_{u,k}) 度量了用戶 u 的興趣和第 k 個隱類的關係,而(q_{i,k})度量了第 k 個隱類和物品 i 之間的關係。那麼,下面的問題就是如何計算這兩個參數。
對最優化理論或者機器學習有所了解的讀者,可能對如何計算這兩個參數都比較清楚。這兩個參數是從數據集中計算出來的。要計算這兩個參數,需要一個訓練集,對於每個用戶u,訓練集里都包含了用戶u喜歡的物品和不感興趣的物品,通過學習這個數據集,就可以獲得上面的模型參數。
6. 排序演算法
在工業應用中,推薦系統通常可分為兩部分,召回和排序。協同過濾屬於召回的演算法,從召回中得到一個比較小的推薦列表,然後經過排序之後才會輸出到最終的推薦列表裡,是一個有序的推薦列表。
這個過程會從幾千萬 item 中篩選出幾百或者上千的候選集,然後在排序階段選出30個給到每位用戶。這個排序可理解為一個函數,F(user, item, context),輸入為用戶、物品、環境,輸出一個0到1之間的分數,取分數最高的幾首。這一過程通常稱為 CTR 預估。那麼 F 函數常見的運作形式有:
-
Logistic Regression
最簡單的是邏輯回歸(Logistic Regression),一個廣義線性模型。拿某 user 的用戶畫像(一個向量)比如
[3, 1]
,拼接上某 item 的物品畫像比如[4, 0]
,再加上代表 context 的向量[0, 1, 1]
後得到[3, 1, 4, 0, 0, 1, 1]
,若該 user 曾與該 item 發生過聯繫則 label 為1,這些加起來是一個正樣本,同時可以將用戶「跳過」的 item 或熱門的卻沒有與用戶產生過聯繫的 item 作為負樣本,label 為0。按照這樣的輸入和輸出就可以訓練出排序演算法了。詳細模型見:2. 邏輯回歸 -
GBDT
使用梯度提升決策樹(GBDT) 的方案也可以解決這個排序的問題,只是模型與 LR 不一樣。GBDT作為集成模型,會使用多棵決策樹,每棵樹去擬合前一棵樹的殘差來得到很好的擬合效果。一個樣本輸入到一棵樹中,會根據各節點的條件往下走到某個葉子節點,將此節點值置為1,其餘置為0。詳細模型演算法見:3.2 GBDT
-
GBDT+LR
GBDT與LR的stacking模型相對於只用GBDT會有略微的提升,更大的好處是防止GBDT過擬合。升級為GBDT+LR後,線上效果提升了約5%,並且因為省去了對新特徵進行人工轉換的步驟,增加特徵的迭代測試也更容易了。
-
GBDT+FM
GBDT是不支援高維稀疏特徵的,如果將高維特徵加到LR中,一方面需要人工組合高維特徵,另一方面模型維度和計算複雜度會是O(N^2)級別的增長。所以設計了GBDT+FM的模型如圖所示,採用Factorization Machines模型替換LR。
Factorization Machines(FM)模型如下所示:
[hat{y}(x)=w_0+sum_{i=1}^nw_ix_i+sum_{i=1}^nsum_{j=i+1}^n<v_i,v_j>x_ix_j]
具有以下幾個優點
①前兩項為一個線性模型,相當於LR模型的作用
②第三項為一個二次交叉項,能夠自動對特徵進行交叉組合
③通過增加隱向量,模型訓練和預測的計算複雜度降為了O(N)
④支援稀疏特徵。幾個優點,使的GBDT+FM具有了良好的稀疏特徵支援,FM使用GBDT的葉子結點和稀疏特徵(內容特徵)作為輸入,模型結構示意圖如下,GBDT+FM模型上線後相比GBDT+LR在各項指標的效果提升在4%~6%之間。
-
DNN+GBDT+FM
GBDT+FM模型,對embedding等具有結構資訊的深度特徵利用不充分,而深度學習(Deep Neural Network)能夠對嵌入式(embedding)特徵和普通稠密特徵進行學習,抽取出深層資訊,提高模型的準確性,並已經成功應用到眾多機器學習領域。因此我們將DNN引入到排序模型中,提高排序整體品質。
DNN+GBDT+FM的ensemble模型架構如圖所示,FM層作為模型的最後一層,即融合層,其輸入由三部分組成:DNN的最後一層隱藏層、GBDT的輸出葉子節點、高維稀疏特徵。DNN+GBDT+FM的ensemble模型架構介紹如下所示,該模型上線後相對於GBDT+FM有4%的效果提升。
使用分散式的TensorFlow進行訓練,使用基於TensorFlow Serving的微服務進行在線預測,DNN+GBDT+FM的ensemble模型使用的是Adam優化器。Adam結合了The Adaptive Gradient Algorithm(AdaGrad)和Root Mean Square Propagation(RMSProp)演算法。具有更優的收斂速率,每個變數有獨自的下降步長,整體下降步長會根據當前梯度進行調節,能夠適應帶噪音的數據。實驗測試了多種優化器,Adam的效果是最優的。
工業界DNN ranking現狀
- Youtube於2016年推出DNN排序演算法。
- 上海交通大學和UCL於2016年推出Product-based Neural Network(PNN)網路進行用戶點擊預測。PNN相當於在DNN層做了特徵交叉,我們的做法是把特徵交叉交給FM去做,DNN專註於深層資訊的提取。
- Google於2016年推出Wide And Deep Model,這個也是我們當前模型的基礎,在此基礎上使用FM替換了Cross Feature LR,簡化了計算複雜度,提高交叉的泛化能力。
- 阿里今年使用attention機制推出了Deep Interest Network(DIN)進行商品點擊率預估,優化embedding向量的準確性,值得借鑒。
7. 評估測試
7.1 A/B測試
新的推薦模型上線後要進行A/B測試,將它和舊的演算法進行比較。
AB測試是一種很常用的在線評測演算法的實驗方法。它通過一定的規則將用戶隨機分成幾組,並對不同組的用戶採用不同的演算法,然後通過統計不同組用戶的各種不同的評測指標比較不同演算法,比如可以統計不同組用戶的點擊率,通過點擊率比較不同演算法的性能。對AB測試感興趣的讀者可以瀏覽一下網站http://www.abtests.com/ ,該網站給出了很多通過實際AB測試提高網站用戶滿意度的例子,從中我們可以學習到如何進行合理的AB測試。
切分流量是AB測試中的關鍵,不同的層以及控制這些層的團隊需要從一個統一的地方獲得自己AB測試的流量,而不同層之間的流量應該是正交的。
「正交性」是從幾何中借來的術語。如果兩條直線相交成直角,他們就是正交的。用向量術語來說,這兩條直線互不依賴。
下圖是一個簡單的AB測試系統。用戶進入網站後,流量分配系統決定用戶是否需要被進行AB測試,如果需要的話,流量分配系統會給用戶打上在測試中屬於什麼分組的標籤。然後用戶瀏覽網頁,而用戶在瀏覽網頁時的行為都會被通過日誌系統發回後台的日誌資料庫。此時,如果用戶有測試分組的標籤,那麼該標籤也會被發回後台資料庫。在後台,實驗人員的工作首先是配置流量分配系統,決定滿足什麼條件的用戶參加什麼樣的測試。其次,實驗人員需要統計日誌資料庫中的數據,通過評測系統生成不同分組用戶的實驗報告,並比較和評測實驗結果。
當完成了AB測試後,根據指標結果,如果優於之前的推薦演算法,那麼舊的演算法就可以替換成新的了。
7.2 其它評估方法
模型準備就緒後,一般會先通過離線指標來評估模型的好壞, 然後再決定能否上線測試。離線演算法評估常見的指標包括準確率、覆蓋度 、多樣性、新穎性和 UC 等。在線測試一般通過 A/B 測試進行,常見的指標有點擊率、用戶停留時間、 廣告收入等,需要注意分析統計顯著性。同時,需要注意短期的指標和長期的指標相結合, 一些短期指標的提升有時候反而會導致長期指標下降 比如 ,經常推薦美女或者搞笑類的內容會帶來短期的點擊率提高,但是可能會引起長期的用戶粘性下降。設計者需要從自己的產品角度出發,根據產品的需要制定評估指標,這樣才能更好地指導推薦系統的優化方向。常見的評價指標如下:
8. 推薦系統冷啟動問題
冷啟動( cold start )在推薦系統中表示該系統積累數據量過少,無法給新用戶作個性化推薦的問題,這是產品推薦的一大難題。每個有推薦功能的產品都會遇到冷啟動的問題。一方面,當新商品時上架 會遇到冷啟動的問題,沒有收集到任何一個用戶對其瀏覽、點擊或者購買的行為,也無從判斷如何將商品進行推薦;另一方面,新用戶到來的時候,如果沒有他在應用上的行為數據,也無法預測其興趣,如果給用戶的推薦千篇律,沒有亮點,會使用戶在一開始就對產品失去興趣,從而放棄使用。所以在冷啟動的時候要同時考慮用戶的冷啟動和物品的冷啟動。
基本上,冷啟動題可以分為以下三類。
8.1 用戶冷啟動
用戶冷啟動主要解決如何給新用戶作個性化推薦的問題。當新用戶到來時,我 沒有他的行為數據,所以也無法根據他的歷史行為預 其興趣,從而無法藉此給他做個性化推薦。解決方法參考以下:
- 利用用戶的帳號資訊。
- 利用用戶的手機 IMEI 號進行冷啟動。
- 製造選工頁,讓用戶選擇自己感興趣的點後,即時生成粗粒度的推薦。
8.2 物品冷啟動
物品冷啟動主要解決如何將新的物品推薦給可能對它感興趣的用戶這一問題。解決方法參考以下:
- 利用物品的內容、分類資訊。
- 利用專家標註的數據。
8.3 系統冷啟動
系統冷啟動主要解決如何在一個新開發的網站上(還沒有用戶,也沒有用戶行為,只有一些物品的資訊)設計個性推薦系統,從而在產品剛上線時就讓用戶體驗到個性 推薦服務這一問題。
9. 參考文獻
作者:@mantchs