推薦系統(tǒng) - FM模型

1. 模型演進 LR -> POLY2 -> FM -> FFM

1.1 LR模型 - 融合多種特征的推薦模型

  • 線性回歸模型數(shù)學表達式如下:
    \begin{align} \hat{y}(x) &= w_0 + \sum_{i=1}^{n} w_ix_i \\ &= \sum_{i=0}^{n} w_ix_i \end{align}
  • 邏輯回歸數(shù)學表達式如下:
    \hat{y}(x) = \frac{1}{1 + e^{-w^Tx}}
  • 邏輯回歸模型的優(yōu)缺點:(1)相比協(xié)同過濾模型僅利用用戶與物品的相互行為信息進行推薦,邏輯回歸模型能夠綜合利用用戶、物品、上下文等多種不同的特征,生成較為全面的推薦結果;(2)邏輯回歸的另外一種表現(xiàn)形式的感知機作為神經(jīng)網(wǎng)絡中最基礎的單一神經(jīng)元,是深度學習的基礎性結構;(3)可解釋性強:邏輯回歸的數(shù)學形式是各特征的加權合,再施以sigmoid函數(shù)。邏輯回歸的簡單數(shù)學形式非常符合人類對預估過程的直觀認知。(4)邏輯回歸模型的局限性:表達能力不強,無法進行特征交叉;需要人工進行特征交叉。

邏輯回歸模型參數(shù)估計參考:http://www.itdecent.cn/p/f7b6cd2f8567

1.2 POLY2模型 - 特征交叉的開始

  • 針對特征交叉問題,算法工程師經(jīng)常采用先手動組合特征,再通過各種分析手段帥選特征的方法,但該方法是比較低效率的;因此采用POLY2模型進行特征的“暴力”組合成了可行的選擇。
    \hat{y}(x) = w_0 + \sum_{i=1}^{n} w_ix_i + \color{blue}{\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i,j} x_i x_j}
  • 從上述公式可以看到,POLY2(多項式核SVM)對所有特征進行了兩兩交叉(x_i, x_j),并對所有的特征組合賦予權重w_{i,j} [標量]。POLY2通過暴力組合特征的方式,在一定程度上解決了特征組合的問題。POLY2模型本質(zhì)上仍是線性模型,其訓練方法與邏輯回歸并無區(qū)別,因此便于工程上的兼容。
  • POLY2模型存在兩個較大的缺陷: (1)在處理互聯(lián)網(wǎng)數(shù)據(jù)時,經(jīng)常采用one-hot編碼的方式處理類別數(shù)據(jù),致使特征向量極度稀疏,POLY2進行無選擇的特征交叉。原本就稀疏的特征向量更加稀疏,導致大部分交叉特征的權重缺乏有效的數(shù)據(jù)進行訓練,無法收斂。(2)權重參數(shù)的數(shù)量由 n 直接上升至 n^2,極大地增加了訓練復雜度。

1.3 FM模型 - 隱向量特征交叉

  • 為了解決POLY2模型的缺陷,2010年Rendle提出了FM模型;與POLY2相比,其主要的區(qū)別是用兩個向量的內(nèi)積(<v_i, v_j> [向量])取代了單一的權重系數(shù)w_{i,j}。具體來說,F(xiàn)M為每個特征學習了一個隱權重向量(latent vector),在特征交叉時,使用兩個特征隱向量的內(nèi)積作為交叉特征的權重。

\hat{y}(x) = w_0 + \sum_{i=1}^{n} w_ix_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \color{blue}{<v_i, v_j>} x_i x_j

向量內(nèi)積運算.png
  • 本質(zhì)上,F(xiàn)M引入隱向量的做法,與矩陣分解用隱向量代表用戶和物品的做法異曲同工。可以說,F(xiàn)M是將矩陣分解隱向量的思想進行了進一步擴展,從單純的用戶、物品隱向量擴展到所有特征上。 FM通過引入特征隱向量的方式,直接把POLY2模型n^2級別的權重參數(shù)數(shù)量減少到了nkk為隱向量維度,n>>k
  • 隱向量的引入使得FM能夠更好地解決數(shù)據(jù)稀疏性問題。 例如,在某商品推薦的場景下,樣本有兩個特征,分別是channel和brand。某訓練樣本的特征組合是(ESPN, Adidas)。在POLY2中,只有當ESPN和Adidas同時出現(xiàn)在一個訓練樣本時,模型才能學到這個組合特征對應的權重。而在FM中,ESPN的隱向量也可以通過(ESPN, Gucci) 樣本進行更新,Adidas的隱向量也可以通過(NBC, Adidas)樣本進行更新,這大幅度降低了模型對數(shù)據(jù)稀疏性的要求。甚至對于一個從未出現(xiàn)過的特征組合(NBC, Gucci),由于模型之前已經(jīng)分別學習過NBC和Gucci的隱向量,具備了計算該特征組合權重的能力,這是POLY2無法實現(xiàn)的。

1.4 FFM模型 - 引入特征域的概念

  • 相比FM模型,F(xiàn)FM模型引入了特征域感知(field-aware)這一概念,使模型的表達能力更強。假設樣本的n個特征屬于f個field,那么FFM的二次項有nf個隱向量。而在FM模型中,每一維特征的隱向量只有一個。FM可以看做FFM的特例,是把所有特征都歸屬到一個field的FFM模型。FFM模型公式如下:
    \hat{y}(x) = w_0 + \sum_{i=1}^{n} w_ix_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \color{blue}{<v_{i, f_j}, v_{j, f_i}>} x_i x_j
  • 上式中,f_j是第j個特征所屬的field;當x_ix_j進行特征交叉時,x_i從其f個隱向量中挑選出v_{i, f_j}與特征x_j進行交叉。如果隱向量長度為k,那么FFM的二次參數(shù)有\color{red}{n*f*k}個,遠遠多于FM模型的nk個。此外,由于隱向量與field相關,F(xiàn)FM二次項并不能夠化簡,其計算復雜度是\color{red}{O(k*n^2)}。
  • 【特征域的概念解釋】 簡單地講,“域”代表特征域,域內(nèi)的特征一般采用one-hot編碼形成的一段one-hot特征向量。例如,用戶的性別分為:男,女,未知三類。那么對于一個女性用戶來說,采用one-hot方式編碼的特征向量為[0,1,0],這個三維的特征向量就是一個“性別”特征域。將所有特征域拼接起來,就組成了樣本的整體特征向量。
  • FFM原理舉例說明,假設在訓練推薦模型過程中接收到的訓練樣本如下。其中Publisher、Advertiser、Gender就是三個特征域,ESPN、NIKE、Male分別是這三個特征域的特征值(需要轉化成one-hot特征); 如果按照FM的原理,特征ESPN、NIKE和Male都有對應的隱向量w_{ESPN}, w_{NIKE}, w_{Male},那么ESPN特征與NIKE特征、ESPN特征與Male特征做交叉的權重應該是<w_{ESPN}, w_{NIKE}><w_{ESPN}, w_{Male}>,其中ESPN對應的隱向量w_{ESPN}在兩次特征交叉過程中是不變的。而在FFM中,ESPN與NIKE、ESPN與Male交叉時候特征是不一樣的,分別是<w_{ESPN, A}, w_{NIKE, P}><w_{ESPN, G}, w_{Male, P}>;這就是FM和FFM主要的差別。
    image.png

2. 如何提升FM計算效率?

  • 對于FM模型二階項(\sum_{i=1}^{n} \sum_{j=i+1}^{n} <v_i, v_j> x_i x_j)的時間復雜度為: \color{red}{O(k*n^2)},對二階項進行改寫后的時間復雜度為:\color{red}{O(k*n)},其中n是特征數(shù)量,k表示隱向量維度。

\begin{align} & \sum_{i=1}^{n} \sum_{j=i+1}^{n} \color{blue}{<v_i, v_j>} x_i x_j \\ & =\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} <v_i, v_j> x_i x_j - \frac{1}{2} \sum_{i=1}^{n}<v_i, v_i>x_i x_i \tag{step1}\\ & =\frac{1}{2} \left( \sum_{i=1}^{n} \sum_{j=1}^{n} \sum_{f=1}^{k} v_{i,f} v_{j,f} x_i x_j - \sum_{i=1}^{n} \sum_{f=1}^{k} v_{i,f} v_{i,f} x_i x_i \right) \tag{step2}\\ & =\frac{1}{2} \sum_{f=1}^{k} \left( \left(\sum_{i=1}^{n} v_{i,f}x_i \right) \left( \sum_{j=1}^{n} v_{j,f}x_j \right) - \sum_{i=1}^{n} v_{i,f}^2 x_i^2 \right) \tag{step3}\\ & =\frac{1}{2} \sum_{f=1}^{k} \left( \left(\sum_{i=1}^{n} v_{i,f}x_i \right)^2 - \sum_{i=1}^{n} v_{i,f}^2 x_i^2 \right) \tag{step4} \\ \end{align}

  • 【step1】計算說明如下:FM二階項計算的是下面所有黃色正方形相加之和;


    step1計算說明.png
  • 【step2】比較好理解,就是把<v_i, v_j>的計算展開:\sum_{f=1}^{k} v_{i,f} v_{j,f}
  • 【step3】計算說明如下:可以假設 n=4, k=2;
    step3計算說明.png
  • 【step4】說明:\left(\sum_{i=1}^{n} v_{i,f}x_i \right)\left( \sum_{j=1}^{n} v_{j,f}x_j \right)是相等的,因為是在隱向量的第f維,對所有特征求和;
    step4計算說明.png

3. MF與FM模型的關系?

  • MF(Matrix Factorization,矩陣分解)模型是在推薦系統(tǒng)領域資深的協(xié)同過濾模型。核心思想是通過兩個低維小矩陣(一個代表用戶embedding矩陣,一個代表物品embedding矩陣)的乘積計算,來模擬真實用戶點擊或評分產(chǎn)生的大的協(xié)同信息稀疏矩陣。當訓練完成,每個用戶和物品得到對應的低維embedding表達后,如果要預測某個用戶User_iItem_j的評分的時候,只要它們做個內(nèi)積運算<User_i, Item_j>,這個得分就是預測得分。
    矩陣分解模型.png
  • 本質(zhì)上,MF模型是FM模型的特例,MF可以認為是只有User ID和Item ID這兩個特征Fields的FM模型;MF將這兩類特征通過矩陣分解,來達到將這兩類特征embedding化表達的目的。FM可以看做是MF模型的進一步擴展,除了User ID和Item ID這兩類特征外,很多其它類型的特征,都可以進一步融入FM模型里,它將所有這些特征轉化為embedding低維向量表達,并計算任意兩個特征embedding的內(nèi)積,就是特征組合的權重。
    MF與FM的關系.png

參考資料

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容