1. 程式人生 > >推薦系統--完整的架構設計和演算法(協同過濾、隱語義)

推薦系統--完整的架構設計和演算法(協同過濾、隱語義)

1. 什麼是推薦系統

推薦系統是利用電子商務網站向客戶提供商品資訊和建議,幫助使用者決定應該購買什麼產品,模擬銷售人員幫助客戶完成購買過程。個性化推薦是根據使用者的興趣特點和購買行為,向用戶推薦使用者感興趣的資訊和商品。

隨著電子商務規模的不斷擴大,商品個數和種類快速增長,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在資訊過載問題中的消費者不斷流失。

為了解決這些問題,個性化推薦系統應運而生。個性化推薦系統是建立在海量資料探勘基礎上的一種高階商務智慧平臺,以幫助電子商務網站為其顧客購物提供完全個性化的決策支援和資訊服務。

常見的推薦欄位例如:淘寶的猜你喜歡、看了又看、推薦商品,美團的首頁推薦、附近推薦等。

推薦系統是比較偏向於工程類的系統,要做得更加的精確,需要的不僅僅是推薦演算法,還有使用者意圖識別、文字分析、行為分析等,是一個綜合性很強的系統。

2. 總體架構

本節介紹的幾種推薦系統架構,並不是互相獨立的關係,實際的推薦系統可能會用到其中一種或者幾種的架構。在實際設計的過程中,讀者可以把本文介紹的架構作為一個設計的起點,更多地結合自身業務特點進行獨立思
考,從而設計出適合自身業務的系統。

根據響應使用者行為的速度不同,推薦系統可以大致分為基於離線訓練和線上訓練的推薦系統。

2.1 離線推薦

於離線訓練的推薦系統架構是最常見的一種推薦系統架構。這裡的“離線”訓練指的是使用歷史一段時間( 比如周或者幾周 )的資料進行訓練,模型迭代的週期較長(一般 以小時為單位 )。模型擬合的是使用者的中長期興趣。

如下圖所示, 一個典型的基於離線訓練的推薦系統架構由資料上報、離線訓練、線上儲存、實時計算和 A/B 測試這幾個模組組成。其中,資料上報和離線訓練組成了監督學習中的學習系統,而實時計算和 A/B 測試組成了預測系統。另外,除了模型之外,還有一個線上儲存模組,用於儲存模型和模型需要的特徵資訊供實時計算模組呼叫。圖中的各個模組組成了訓練和預測兩條資料流,訓練的資料流蒐集業務的資料最後生成模型儲存於線上儲存模組;預測的資料流接受業務的預測請求,通過 A/B 測試模組訪問實時計算模組獲取預測結果。

  1. 資料上報:據上報模組的作用是蒐集業務資料組成訓練樣本。一般分為收集、驗證、清洗和轉換幾個步驟。將收集的資料轉化為訓練所需要的樣本格式,儲存到離線儲存模組。

  2. 離線訓練:線訓練模組又細分為離線儲存和離線計算。實際業務中使用的推薦系統一般都需要處理海量的使用者行為資料,所以離線儲存模組需要有一個分散式的檔案系統或者儲存平臺來儲存這些資料。離線計算常見的操作有:樣本抽樣、特徵工程、模型訓練、相似度計算等。

  3. 線上儲存:因為線上的服務對於時延都有嚴格的要求。比如,某個使用者開啟手機 APP ,他肯定希望APP 能夠快速響應,如果耗時過長,就會影響使用者的體驗。一般來說,這就要求推薦系統在幾十毫秒以內處理完使用者請求返回推薦結果,所以,針對線上的服務,需要有一個專門的線上儲存模組,負責儲存用於線上的模型和特徵資料 。

  4. 實時推薦:實時推薦模組的功能是對來自業務的新請求進行預測。1.獲取使用者特徵;2.呼叫推薦模型;3.結果排序。

    在實際應用中,因為業務的物品列表太大,如果實時計算對每 個物品使用複雜的模型進行打分,就有可能耗時過長而影響使用者滿意度。所以,一種常見的做法是將推薦列表生成分為召回和排序兩步。召回的作用是從大量的候選物品中(例如上百萬)篩選出一批使用者較可能喜歡的候選集 (一般是幾百)。排序的作用是對召回得到的相對較小的候選集使用排序模型進行打分。更進一步,在排序得到推薦列表後,為了多樣性和運
    營的一些考慮,還會加上第三步重排過濾,用於對精排後的推薦列表進行處理。

  5. A/B測試:對於網際網路產品來說, A/B 測試基本上是一個必備的模組,對於推薦系統來說也不例外,它可以幫助開發人員評估新演算法對客戶行為的影響。除了 離線的指標外,一個新的推薦演算法上線之前 般都會經過 A/B 測試來測試新演算法的有效性。

下圖是與之對應的實際系統中各個元件的流轉過程。需要注意的是生成推薦列表就已經做完了召回和排序的操作,業務層直接呼叫API就可以得到這個推薦列表。

2.2 線上訓練

對於業務來說,我們希望使用者對於上 個廣告的反饋 (喜歡或者不 歡,有沒有點選 ,可以很快地用於下
一個廣告的推薦中。這就要求我們用另 種方法來解決這個問題,這個方法就是線上訓練。

基於線上訓練的推薦系統架構適合於廣告和電商等高維度大資料量且對實時性要求很高的場景 相比較基於離線訓練的推薦系統,基於線上訓練的推薦系統不區分訓練和測試階段,每個回合都在學習,通過實時的反饋來調整策略。 方面,線上訓練要求其樣本、特徵和模型的處理都是實時的,以便推薦的內容更快地反映使用者實時的喜好;另一方面,因為線上訓練井不需要將所有的訓練資料都儲存下來,所以不需要巨大的離線儲存開銷,使得系統具有很好的伸縮性,可以支援超大的資料量和模型。

  1. 樣本處理:和基於離線訓練的推薦系統相比,線上訓練在資料上報階段的主要不同體現在樣本處理上。,對於離線訓練來說,上報後的資料先是被儲存到一個分散式檔案系統,然後等待離線計算任務來對樣本進行處理;對於線上訓練來說,對樣本的去重、過濾和取樣等計算都需要實時進行。
  2. 實時特性:實時特徵模組通過實時處理樣本資料拼接訓練需要的特徵構造訓練樣本,輸入流式訓練模組用於更新模型。該模組的主要的功能是特徵拼接和特徵工程。
  3. 流式訓練:、流式訓練模組的主要作用是使用實時訓練樣本來更新模型。推薦演算法中增量更新部分的計算,通過流式計算的方式來進行更新。線上訓練的優勢之一,是可以支援模型的稀疏儲存。訓練方面,線上模型不一定都是從零開始訓練,而是可以將離線訓練得到的模型引數作為基礎,在這個基礎上進行增量訓練。
  4. 模型儲存和載入:模型一般儲存在引數伺服器中。模型更新後,將模型檔案推送到線上儲存,並由線上服務模組動態載入。

3. 特徵資料

要訓練推薦模型,就需要先收集使用者的行為資料生成特徵向量以後才能進行訓練,而一個特徵向量由特徵以及特徵的權重組成,在利用使用者行為計算特徵向量時需要考慮以下因素。

  1. 使用者行為的種類:在一個網站中,使用者可以對物品產生很多不同種類的行為。使用者可以瀏覽物品、單擊物品的連結、收藏物品、給物品打分、購買物品、評論物品、給物品打上不同的標籤、和好友分享物品、搜尋不同的關鍵詞等。這些行為都會對物品特徵的權重產生影響,但不同行為的影響不同,大多時候很難確定什麼行為更加重要,一般的標準就是使用者付出代價越大的行為權重越高。
  2. 使用者行為產生的時間:一般來說,使用者近期的行為比較重要,而使用者很久之前的行為相對比較次要。因此,如果使用者最近購買過某一個物品,那麼這個物品對應的特徵將會具有比較高的權重。
  3. 使用者行為的次數:有時使用者對一個物品會產生很多次行為。比如使用者會聽一首歌很多次,看一部電視劇的很多集等。因此使用者對同一個物品的同一種行為發生的次數也反映了使用者對物品的興趣,行為次數多的物品對應的特徵權重越高。
  4. 物品的熱門程度:如果使用者對一個很熱門的物品產生了行為,往往不能代表使用者的個性,因為使用者可能是在跟風,可能對該物品並沒有太大興趣,特別是在使用者對一個熱門物品產生了偶爾幾次不重要的行為(比如瀏覽行為)時,就更說明使用者對這個物品可能沒有什麼興趣,可能只是因為這個物品的連結到處都是,很容易點到而已。反之,如果使用者對一個不熱門的物品產生了行為,就說明了使用者的個性需求。因此,推薦引擎在生成使用者特徵時會加重不熱門物品對應的特徵的權重。
  5. 資料去燥:對樣本做去噪。對於資料中混雜的刷單等類作弊行為的資料,要將其排除出訓練資料,否則它會直接影響模型的效果;樣本中的缺失值也要做處理。
  6. 正負樣本均衡:一般我們收集使用者的行為資料都是屬於正樣本,造成了嚴重的不平衡。所以對於一個使用者,從他沒有過行為的物品中取樣出一些物品作為負樣本,但取樣時,保證每個使用者的正負樣本數目相當。
  7. 特徵組合:我們需要考慮特徵與特徵之間的關係。例如在美團酒店搜尋排序中,酒店的銷量、價格、使用者的消費水平等是強相關的因素,使用者的年齡、位置可能是弱相關的因素,使用者的ID是完全無關的因素。在確定了哪些因素可能與預測目標相關後,我們需要將此資訊表示為數值型別,即為特徵抽取的過程。除此之外,使用者在App上的瀏覽、交易等行為記錄中包含了大量的資訊,特徵抽取則主要是從這些資訊抽取出相關因素,用數值變數進行表示。常用的統計特徵有計數特徵,如瀏覽次數、下單次數等;比率特徵,如點選率、轉化率等;統計量特徵,如價格均值、標準差、分位數、偏度、峰度等。

4. 協同過濾演算法

協同過濾演算法起源於 1992 年,被 Xerox 公司用於個性化定製郵件系統。Xerox 司的使用者需要在數十種主題中選擇三到五種主題,協同過濾演算法根據不同的主題過濾郵件,最終達到個性化的目的。

協同過濾演算法分為基於物品的協同過濾和基於使用者的協同過濾,輸出結果為 TOPn 的推薦列表。

4.1 基於物品的協同過濾(ItemCF)

基於物品的協同過濾演算法的核心思想:給使用者推薦那些和他們之前喜歡的物品相似的物品。

基於物品的協同過濾演算法首先計算物品之間的相似度, 計算相似度的方法有以下幾種:

  1. 基於共同喜歡物品的使用者列表計算

    \[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 的使用者數。。可見上述的公式的核心是計算同時購買這件商品的人數比例 。當同時購買這兩個物品人數越多,他們的相似度也就越高。另外值得注意的是,在分母中我們用了物品總購買人數做懲罰,也就是說某個物品可能很熱門,導致它經常會被和其他物品一起購買,所以除以它的總購買人數,來降低它和其他物品的相似分數。

  2. 基於餘弦的相似度計算

    上面的方法計算物品相似度是直接使同時購買這兩個物品的人數。但是也有可能存在使用者購買了但不喜歡的情況 所以如果資料集包含了具體的評分資料 我們可以進一步把使用者評分引入到相似度計算中 。

    \[w_{ij}=cos\theta=\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。

  3. 熱門物品的懲罰

    對於熱門物品的問題,可以用如下公式解決:

    \[w_{ij}=\frac{|N(i)\cap{}N(j)|}{|N(i)|^\alpha*|N(j)|^{1-\alpha}}\]

    當 \(\alpha\in(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 降維方法

基於稀疏自編碼的矩陣分解

矩陣分解技術在推薦領域的應用比較成熟,但是通過上一節的介紹,我們不難發現矩陣分解本質上只通過一次分解來對 原矩陣進行逼近,特徵挖掘的層次不夠深入。另外矩陣分解也沒有運用到物品本身的內容特徵,例如書本的類別分類、音樂的流派分類等。隨著神經網路技術的興起,筆者發現通過多層感知機,可以得到更加深度的特徵表示,並且可以對內容分類特徵加以應用。首先,我們介紹一下稀疏自編碼神經網路的設計思路。

  1. 基礎的自編碼結構

    最簡單的自編碼結構如下圖,構造個三層的神經網路,我們讓輸出層等於輸入層,且中間層的維度遠低於輸入層和輸出層,這樣就得到了第一層的特徵壓縮。

    簡單來說自編碼神經網路嘗試學習中間層約等於輸入層的函式。換句話說,它嘗試逼近一個恆等函式。如果網路的輸入資料是完全隨機的,比如每一個輸入都是一個跟其他特徵完全無關的獨立同分布高斯隨機變 ,那麼這一壓縮表示將會非常難於學習。但是如果輸入資料中隱含著 些特定的結構,比如某些輸入特徵是彼此相關的,那麼這一演算法就可以發現輸入資料中的這些相關性。

  2. 多層結構

    基於以上的單層隱藏層的網路結構,我們可以擴充套件至多層網路結構,學習到更高層次的抽象特徵。

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 模型理解

  1. 如何給物品進行分類?
  2. 如何確定使用者對哪些類的物品感興趣,以及感興趣的程度?
  3. 對於一個給定的類,選擇哪些屬於這個類的物品推薦給使用者,以及如何確定這些物品在一個類中的權重?

為了解決上面的問題,研究人員提出:為什麼我們不從資料出發,自動地找到那些類,然後進行個性化推薦,隱語義分析技術因為採取基於使用者行為統計的自動聚類,較好地解決了上面的問題。隱語義分析技術從誕生到今天產生了很多著名的模型和方法,其中和推薦技術相關的有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 函式常見的運作形式有:

  1. 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. 邏輯迴歸

  2. GBDT

    使用梯度提升決策樹(GBDT) 的方案也可以解決這個排序的問題,只是模型與 LR 不一樣。GBDT作為整合模型,會使用多棵決策樹,每棵樹去擬合前一棵樹的殘差來得到很好的擬合效果。一個樣本輸入到一棵樹中,會根據各節點的條件往下走到某個葉子節點,將此節點值置為1,其餘置為0。詳細模型演算法見:3.2 GBDT

  3. GBDT+LR

    GBDT與LR的stacking模型相對於只用GBDT會有略微的提升,更大的好處是防止GBDT過擬合。升級為GBDT+LR後,線上效果提升了約5%,並且因為省去了對新特徵進行人工轉換的步驟,增加特徵的迭代測試也更容易了。

  4. 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}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j\]

    具有以下幾個優點
    ①前兩項為一個線性模型,相當於LR模型的作用
    ②第三項為一個二次交叉項,能夠自動對特徵進行交叉組合
    ③通過增加隱向量,模型訓練和預測的計算複雜度降為了O(N)
    ④支援稀疏特徵。

    幾個優點,使的GBDT+FM具有了良好的稀疏特徵支援,FM使用GBDT的葉子結點和稀疏特徵(內容特徵)作為輸入,模型結構示意圖如下,GBDT+FM模型上線後相比GBDT+LR在各項指標的效果提升在4%~6%之間。

  5. 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現狀

  1. Youtube於2016年推出DNN排序演算法。
  2. 上海交通大學和UCL於2016年推出Product-based Neural Network(PNN)網路進行使用者點選預測。PNN相當於在DNN層做了特徵交叉,我們的做法是把特徵交叉交給FM去做,DNN專注於深層資訊的提取。
  3. Google於2016年推出Wide And Deep Model,這個也是我們當前模型的基礎,在此基礎上使用FM替換了Cross Feature LR,簡化了計算複雜度,提高交叉的泛化能力。
  4. 阿里今年使用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 使用者冷啟動

使用者冷啟動主要解決如何給新使用者作個性化推薦的問題。當新使用者到來時,我 沒有他的行為資料,所以也無法根據他的歷史行為預 其興趣,從而無法藉此給他做個性化推薦。解決方法參考以下:

  1. 利用使用者的賬號資訊。
  2. 利用使用者的手機 IMEI 號進行冷啟動。
  3. 製造選工頁,讓使用者選擇自己感興趣的點後,即時生成粗粒度的推薦。

8.2 物品冷啟動

物品冷啟動主要解決如何將新的物品推薦給可能對它感興趣的使用者這一問題。解決方法參考以下:

  1. 利用物品的內容、分類資訊。
  2. 利用專家標註的資料。

8.3 系統冷啟動

系統冷啟動主要解決如何在一個新開發的網站上(還沒有使用者,也沒有使用者行為,只有一些物品的資訊)設計個性推薦系統,從而在產品剛上線時就讓使用者體驗到個性 推薦服務這一問題。

9. 參考文獻

  1. 推薦系統實踐--項亮
  2. 推薦系統與深度學習
  3. 美團機器學習實踐

【機器學習通俗易懂系列文章】


作者:@mantchs

GitHub:https://github.com/NLP-LOVE/ML-NLP

歡迎大家加入討論!共同完善此專案!群號:【541954936】