❶ 推薦系統排序演算法--FM模型
在計算廣告和推薦系統中,CTR預估(click-through rate)是非常重要的一個環節,判斷一個商品的是否進行推薦需要根據CTR預估的點擊率來進行。在進行CTR預估時,除了單特徵外,往往要對特徵進行組合。對於特徵組合來說,業界常用的方法有人工特徵工程 + LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR、FM(Factorization Machine)和FFM(Field-aware Factorization Machine)模型。最近幾年也出現了很多基於FM改進的方法,如deepFM,FNN,PNN,DCN,xDeepFM等。
FM(Factorization Machine)主要是為了解決數據稀疏的情況下,特徵怎樣組合的問題。已一個廣告分類的問題為例,根據用戶與廣告位的一些特徵,來預測用戶是否會點擊廣告。數據如下:(本例來自美團技術團隊分享的paper)
clicked是分類值,表明用戶有沒有點擊該廣告。1表示點擊,0表示未點擊。而country,day,ad_type則是對應的特徵。對於這種categorical特徵,一般都是進行one-hot編碼處理。
將上面的數據進行one-hot編碼以後,就變成了下面這樣 :
因為是categorical特徵,所以經過one-hot編碼以後,不可避免的樣本的數據就變得很稀疏。舉個非常簡單的例子,假設淘寶或者京東上的item為100萬,如果對item這個維度進行one-hot編碼,光這一個維度數據的稀疏度就是百萬分之一。由此可見, 數據的稀疏性 ,是我們在實際應用場景中面臨的一個非常常見的挑戰與問題。
one-hot編碼帶來的另一個問題是 特徵空間變大 。同樣以上面淘寶上的item為例,將item進行one-hot編碼以後,樣本空間有一個categorical變為了百萬維的數值特徵,特徵空間一下子暴增一百萬。所以大廠動不動上億維度,就是這么來的。
普通的線性模型,我們都是將各個特徵獨立考慮的,並沒有考慮到特徵與特徵之間的相互關系。但實際上,大量的特徵之間是有關聯的。最簡單的以電商為例,一般女性用戶看化妝品服裝之類的廣告比較多,而男性更青睞各種球類裝備。那很明顯,女性這個特徵與化妝品類服裝類商品有很大的關聯性,男性這個特徵與球類裝備的關聯性更為密切。如果我們能將這些有關聯的特徵找出來,顯然是很有意義的。
一般的線性模型為:
從上面的式子很容易看出,一般的線性模型壓根沒有考慮特徵間的關聯。為了表述特徵間的相關性,我們採用多項式模型。在多項式模型中,特徵 與 的組合用 表示。為了簡單起見,我們討論二階多項式模型。具體的模型表達式如下:
為了簡單起見,我們只考慮二階交叉的情況,具體的模型如下:
式中, 表示樣本的特徵數量, 表示第 個特徵,與線性模型相比,FM的模型就多了後面特徵組合的部分。
從FM公式可以看出,組合特徵的參數一共有 n(n−1)/2個,任意兩個參數都是獨立的。然而,在數據稀疏性普遍存在的實際應用場景中,二次項參數的訓練是很困難的。其原因是,每個參數 的訓練需要大量 和 都非零的樣本;由於樣本數據本來就比較稀疏,滿足 和 都非零」的樣本將會非常少。訓練樣本的不足,很容易導致參數 不準確,最終將嚴重影響模型的性能。
那麼,如何解決二次項參數的訓練問題呢?矩陣分解提供了一種解決思路。在model-based的協同過濾中,一個rating矩陣可以分解為user矩陣和item矩陣,每個user和item都可以採用一個隱向量表示。比如在下圖中的例子中,我們把每個user表示成一個二維向量,同時把每個item表示成一個二維向量,兩個向量的點積就是矩陣中user對item的打分。
類似地,所有二次項參數 可以組成一個對稱陣 (為了方便說明FM的由來,對角元素可以設置為正實數),那麼這個矩陣就可以分解為 , 的第 列便是第 維特徵的隱向量。換句話說,每個參數 ,這就是FM模型的核心思想。因此,FM的模型方程為(本文不討論FM的高階形式)
其中, 是第 維特徵的隱向量, 代表向量點積。隱向量的長度為 ,二次項的參數數量減少為 個,遠少於多項式模型的參數數量。另外,參數因子化使得 的參數和 的參數不再是相互獨立的,因此我們可以在樣本稀疏的情況下相對合理地估計FM的二次項參數。具體來說, 和 的系數分別為 和 ,它們之間有共同項 。也就是說,所有包含「 的非零組合特徵」(存在某個 ,使得 )的樣本都可以用來學習隱向量 vivi,這很大程度上避免了數據稀疏性造成的影響。而在多項式模型中, 和 是相互獨立的。
顯而易見,FM的模型公式是一個通用的擬合方程,可以採用不同的損失函數用於解決回歸、二元分類等問題,比如可以採用MSE(Mean Square Error)損失函數來求解回歸問題,也可以採用Hinge/Cross-Entropy損失來求解分類問題。當然,在進行二元分類時,FM的輸出需要經過sigmoid變換,這與Logistic回歸是一樣的。直觀上看,FM的復雜度是 。但是,通過下面的等式,FM的二次項可以化簡,其復雜度可以優化到 。由此可見,FM可以在線性時間對新樣本作出預測。
我們再來看一下FM的訓練復雜度,利用SGD(Stochastic Gradient Descent)訓練模型。模型各個參數的梯度如下:
其中, 是隱向量 的第 個元素。由於 只與 有關,而與 無關,在每次迭代過程中,只需計算一次所有 的 ,就能夠方便地得到所有 的梯度。顯然,計算所有 的 的復雜度是 ;已知 時,計算每個參數梯度的復雜度是 ;得到梯度後,更新每個參數的復雜度是 ;模型參數一共有 個。因此,FM參數訓練的復雜度也是 。綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。
libFM
論文: Factorization Machines
論文: Factorization Machines with Follow-The-Regularized-Leader for CTR prediction in Display Advertising
推薦系統遇上深度學習(一)--FM模型理論和實踐
FM(Factorization Machines)的理論與實踐
深入FFM原理與實踐-美團
推薦好文: 深度學習在CTR預估中的應用
❷ 常見的推薦演算法
根據用戶興趣和行為,向用戶推薦所需要的信息,幫助用戶在海量的信息中快速發現自己真正需要的東西。 所以推薦系統要解決的問題用戶沒用明確的需求以及信息存在過載 。推薦系統一般要基於以下來搭建:
1、根據業務來定義自身產品的熱門標准
2、用戶信息:比如性別、年齡、職業、收入等
3、用戶行為
4、社會化關系
1、非個性化推薦
在冷啟動方面我們精彩用非個性化推薦來解決問題。常見的有:熱門推薦,編輯推薦,最新推薦等。下面是3個場景下的排序介紹:
熱門推薦:根據業務類型確定排名核心指標,比如閱讀數,其次要考慮避免馬太效應,所以增加1個維度:時間。一般情況一個內容的熱度是隨著時間不斷下降的,所以需要設定重力因子G,它決定熱度隨著時間流逝下降的速度。熱度初始值由閱讀數決定,我們假設R為閱讀書,距離發帖時間的時間為T,重力因子為G,熱度為rank。 根據熱度隨著時間而不斷下降,且是非線性的,所以我們用指數函數來表達時間和熱度的關系:rank=R/(T)^G,下圖為熱度的基本曲線:
通過該函數,我們可以隨意調整參數來控制曲線的平坦和陡峭,如果G越大,曲線越陡峭說明熱度下降越快。如果我們要調整熱度初始值,可對R進行調整,比如R1=R^0.8,來縮短每篇文章的初始熱度值
編輯推薦:一般由編輯在後台進行設置
最新推薦:如果無其他規則,一般按內容更新時間/創建時間來倒序
2、基於用戶基本信息推薦(人口統計學)
根據系統用戶的基本信息如:領域、職位、工作年齡、性別和所在地等。根據這些信息給用戶推薦感興趣或者相關的內容。
常見的用戶基本信息有:性別,年齡,工作、收入、領域、職位、所在地,手機型號、網路條件、安裝渠道、操作系統等等。根據這些信息來關聯我們數據源,比如年齡-關聯電影表、收入-關聯商品類型表,性別-文章關聯表等等。然後設定權重,給予個性化的推薦。
步驟1:用戶建模,收集用戶基本信息,建立興趣圖譜,標簽體系樹狀結構然後配上權重
步驟2:內容建模,細分內容的元數據,將步驟1的用戶標簽和元數據連接,然後進行推薦
2、基於內容基本的推薦
根據推薦物品或者信息的元數據,發現物品或者信息的相關性, 然後基於用戶以往的喜好記錄 ,推薦給用戶相似的物品。
內容的一些基本屬性:tag、領域、主題、類型、關鍵字、來源等
3、基於協同過濾的推薦
這種演算法基於一種物以類聚人以群分的假設, 喜歡相同物品的用戶更有可能具有相同的興趣 。基於協同過濾推薦系統一般應用於有用戶評分的系統中,通過分數去刻畫用戶對於物品的喜好。根據維度可分為2種:
1、基於用戶:找到和你相似的人推薦他們看過而你沒有看過的內容
比如下面,系統判斷甲乙2個用戶是相似的,那麼會給甲推薦短視頻相關內容,會給乙推薦數據分析相關內容
甲:產品經理、運營、數據分析
乙:產品經理、運營、短視頻
丙:比特幣、創業、矽谷
步驟1:找到和目標用戶興趣相似的用戶集合
步驟2:找到集合中用戶喜歡的且目標用戶沒有被推薦過的內容
2、基於物品:以物為本建立各商品之間相似度關系矩陣,用戶看了x也會看y
比如下面,甲和乙分別不約而同看了產品經理和數據分析,說明喜歡產品經理和數據分析的用戶重合度高,說明兩個內容相似。所以給喜歡產品經理的人推薦數據分析,給喜歡數據分析的人推薦產品經理。
這么理解:喜歡產品經理的人有m人,喜歡數據分析有n人,其中m中有80%用戶與n中80%的用戶是一樣的,就意味著喜歡產品經理的用戶也會喜歡數據分析。
產品經理:甲、乙,丁
數據分析:甲、乙,戊
增長黑客:甲、丙
喜歡物品A的用戶,可能也會喜歡與物品A相似的物品B,通過歷史行為計算出2個物品的相似度(比如m人喜歡A,n人喜歡B,有k人喜歡A又喜歡B,那麼A和B的相似度可計算為k/m或者n,因為k屬於m和n),這個推薦和內容推薦演算法區別是內容推薦演算法是根據內容的屬性來關聯, 而基於物品的協同過濾則是根據用戶的行為對內容進行關聯
4、基於用戶社交關系推薦
用戶與誰交朋友或者關系好,在一定程度上朋友的需求和自身的需求是相似的。所以向用戶推薦好友喜歡的東西。本質上是好友關系鏈版的基於用戶的協調過濾
5、推薦思路的拓展
根據不同使用場景進行不同的推薦,可細分的場景包括用戶使用的:時間、地點、心情、網路環境、興趣、上下文信息以及使用場景。每個場景的推薦內容都不一樣,所以往往一個系統都是由多種推薦方式組成,比如加權混合。
加權混合:用線性公式將幾種不同的推薦按照一定權重組合起來,具體權重值需要反復測試調整。例子:加權混合=推薦1結果*a+推薦2結果*b+...+推薦n結果*n,其中abn為權重,和為1
下面分享一張來自知乎的圖,供學習,侵刪:
基於用戶信息的推薦 與 基於用戶的協同過濾:
兩者都是計算用戶的相似度, 但基於用戶信息的推薦只考慮用戶本身信息來計算相似度,而基於用戶的協同過濾是基於用戶歷史偏好來計算相似度
基於內容的信息推薦 與 基於物品的協同過濾:
兩者都是計算物品的相似度, 但是基於內容的信息推薦只考慮物品本身的屬性特徵來計算相似度,而基於物品的協同過濾是基於用戶歷史偏好來計算相似度
基於用戶信息的推薦特點:
1、不需要歷史數據,對用戶基本信息建模
2、不依賴於物品,所以其他領域可無縫接入
3、因為用戶基本信息一般變化不大,所以推薦效果一般
基於內容信息的推薦特點:
1、物品屬性有限,很難獲得有效又全的數據
2、需要獲取用戶喜歡的歷史內容,再來推薦與內容相似的東西,所以有冷啟動問題
基於用戶/基於物品的協同過濾推薦特點:
1、需要獲取用戶的歷史偏好,所以有冷啟動問題
2、推薦效果依賴於大數據,數據越多,推薦效果就越好
❸ 優先順序排序:ICE模型
ICE模型通過將大量的實驗想法放在影響范圍(Impact),成功概率(Confidence),實現程度(Ease)三個維度下進行粗略的評分,得到增長實驗假設的優先順序進行排序。
ICE 各項指標的打分依據:
案例:ICE 模型打分表
從上述打分,可以得到「酒店詳情頁加入「全網最低價」的文案提醒」這個實驗想法的優先順序最高。可以優先進行增長實驗。
大多數實驗都沒有覆蓋足夠的用戶,絕大多數核心產品團隊只關注核心用戶。然而
因此如果僅關注核心用戶,那麼實驗的影響力會十分局限。所以擴大增長實驗的影響力的本質就是盡可能的覆蓋更多的用戶。在這里我們可以通過主動擴大群體覆蓋面,關注非核心用戶和從流量高的頁面或路徑進行多次實驗的方法擴大實驗的影響范圍。
提升容易程度即降低實驗成本,最好的方式就是通過 MVP的方式以最低成本驗證實驗假設。而設計增長實驗MVP時需要考慮如何投入最小資源,最快證明實驗假設。實驗是否可以提供可信的有效的結果,不能因為過度的實驗簡化和成本縮減而影響了實驗的可信有效程度。
案例:通過 MVP 驗證實驗假設:根據不同的用戶畫像,制定個性化注冊流程。更好的滿足用戶需求。
這里要注意的是ICE模型僅僅是一個優先順序排序的參考框架。並不是一門絕對精確的排序演算法。不要消耗太多的時間成本去追求完美,而要不斷的提高實驗頻率和次數來確保實驗性價比。
參考: https://www.yuque.com/kas/pm/kwgh7a#Y0TmG