推薦系統(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)形式的感知機作為神經網絡中最基礎的單一神經元狰闪,是深度學習的基礎性結構永淌;(3)可解釋性強:邏輯回歸的數(shù)學形式是各特征的加權合,再施以sigmoid函數(shù)见秤。邏輯回歸的簡單數(shù)學形式非常符合人類對預估過程的直觀認知砂竖。(4)邏輯回歸模型的局限性:表達能力不強,無法進行特征交叉鹃答;需要人工進行特征交叉乎澄。

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

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

  • 針對特征交叉問題,算法工程師經常采用先手動組合特征测摔,再通過各種分析手段帥選特征的方法置济,但該方法是比較低效率的解恰;因此采用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模型本質上仍是線性模型,其訓練方法與邏輯回歸并無區(qū)別檀轨,因此便于工程上的兼容胸竞。
  • POLY2模型存在兩個較大的缺陷: (1)在處理互聯(lián)網數(shù)據時,經常采用one-hot編碼的方式處理類別數(shù)據参萄,致使特征向量極度稀疏卫枝,POLY2進行無選擇的特征交叉。原本就稀疏的特征向量更加稀疏拧揽,導致大部分交叉特征的權重缺乏有效的數(shù)據進行訓練剃盾,無法收斂。(2)權重參數(shù)的數(shù)量由 n 直接上升至 n^2淤袜,極大地增加了訓練復雜度痒谴。

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

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

\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

向量內積運算.png
  • 本質上漱贱,F(xiàn)M引入隱向量的做法,與矩陣分解用隱向量代表用戶和物品的做法異曲同工夭委。可以說幅狮,F(xiàn)M是將矩陣分解隱向量的思想進行了進一步擴展,從單純的用戶株灸、物品隱向量擴展到所有特征上崇摄。 FM通過引入特征隱向量的方式,直接把POLY2模型n^2級別的權重參數(shù)數(shù)量減少到了nkk為隱向量維度慌烧,n>>k
  • 隱向量的引入使得FM能夠更好地解決數(shù)據稀疏性問題逐抑。 例如,在某商品推薦的場景下屹蚊,樣本有兩個特征厕氨,分別是channel和brand进每。某訓練樣本的特征組合是(ESPN, Adidas)。在POLY2中腐巢,只有當ESPN和Adidas同時出現(xiàn)在一個訓練樣本時品追,模型才能學到這個組合特征對應的權重。而在FM中冯丙,ESPN的隱向量也可以通過(ESPN, Gucci) 樣本進行更新肉瓦,Adidas的隱向量也可以通過(NBC, Adidas)樣本進行更新,這大幅度降低了模型對數(shù)據稀疏性的要求胃惜。甚至對于一個從未出現(xiàn)過的特征組合(NBC, Gucci)泞莉,由于模型之前已經分別學習過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)}冀膝。
  • 【特征域的概念解釋】 簡單地講,“域”代表特征域霎挟,域內的特征一般采用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矩陣)的乘積計算鲜漩,來模擬真實用戶點擊或評分產生的大的協(xié)同信息稀疏矩陣。當訓練完成集惋,每個用戶和物品得到對應的低維embedding表達后孕似,如果要預測某個用戶User_iItem_j的評分的時候,只要它們做個內積運算<User_i, Item_j>刮刑,這個得分就是預測得分喉祭。
    矩陣分解模型.png
  • 本質上,MF模型是FM模型的特例为朋,MF可以認為是只有User ID和Item ID這兩個特征Fields的FM模型臂拓;MF將這兩類特征通過矩陣分解,來達到將這兩類特征embedding化表達的目的习寸。FM可以看做是MF模型的進一步擴展胶惰,除了User ID和Item ID這兩類特征外,很多其它類型的特征霞溪,都可以進一步融入FM模型里孵滞,它將所有這些特征轉化為embedding低維向量表達,并計算任意兩個特征embedding的內積鸯匹,就是特征組合的權重坊饶。
    MF與FM的關系.png

參考資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市殴蓬,隨后出現(xiàn)的幾起案子匿级,更是在濱河造成了極大的恐慌,老刑警劉巖染厅,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痘绎,死亡現(xiàn)場離奇詭異,居然都是意外死亡肖粮,警方通過查閱死者的電腦和手機孤页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涩馆,“玉大人行施,你說我怎么就攤上這事』昴牵” “怎么了蛾号?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涯雅。 經常有香客問我须教,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任轻腺,我火速辦了婚禮,結果婚禮上划乖,老公的妹妹穿的比我還像新娘贬养。我一直安慰自己,他們只是感情好琴庵,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布误算。 她就那樣靜靜地躺著,像睡著了一般迷殿。 火紅的嫁衣襯著肌膚如雪儿礼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天庆寺,我揣著相機與錄音蚊夫,去河邊找鬼。 笑死懦尝,一個胖子當著我的面吹牛知纷,可吹牛的內容都是我干的。 我是一名探鬼主播陵霉,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琅轧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踊挠?” 一聲冷哼從身側響起乍桂,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎效床,沒想到半個月后睹酌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡扁凛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年忍疾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谨朝。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡卤妒,死狀恐怖,靈堂內的尸體忽然破棺而出字币,到底是詐尸還是另有隱情则披,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布洗出,位于F島的核電站士复,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜阱洪,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一便贵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冗荸,春花似錦承璃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至程癌,卻和暖如春舷嗡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嵌莉。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工进萄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烦秩。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓垮斯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親只祠。 傳聞我的和親對象是個殘疾皇子兜蠕,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容