1. 程式人生 > >推薦系統學習筆記之四 Factorization Machines 因子分解機 + Field-aware Factorization Machine(FFM) 場感知分解機

推薦系統學習筆記之四 Factorization Machines 因子分解機 + Field-aware Factorization Machine(FFM) 場感知分解機

前言

Factorization Machines(FM) 因子分解機是Steffen Rendle於2010年提出,而Field-aware Factorization Machine (FFM) 場感知分解機最初的概念來自於Yu-Chin Juan與其比賽隊員,它們借鑑了辣子Michael Jahrer的論文中field概念,提出了FM的升級版模型。
FM的paper中主要對比物件是SVM支援向量機,與SVM相比,有如下幾個優勢

  • FM可以實現對於輸入資料是非常稀疏(比如自動推薦系統),而SVM會效果很差,因為訓出的SVM模型會面臨較高的bias。
  • FMs擁有線性的複雜度, 可以通過 primal 來優化而不依賴於像SVM的支援向量機。

在推薦系統和計算廣告領域,點選率CTR(click-through rate)和轉化率CVR(conversion rate)是衡量廣告流量的兩個關鍵指標。準確的估計CTR、CVR對於提高流量的價值,增加廣告收入有重要的指導作用。FM和FFM近年來表現突出,分別在由Criteo和Avazu舉辦的CTR預測競賽中奪得冠軍。

Factorization Machines 因子分解機

假如在某個電影播放網站有這麼一組實時資料:

MoviesClass Actor Director MoviesIsPlay?
Action A AA 1
Romantic B BB 0
Action A BB 1

其中MoviesIsPlay?是label,MoviesClass 、UserType、Actor、Director是特徵。以上這四種特徵都是categorical型別的,需要經過獨熱編碼(One-Hot Encoding)轉換成數值型特徵。

MoviesClass = Action MoviesClass = Romantic Actor = A Actor = B Director = AA Director = BB MoviesIsPlay = 1 MoviesIsPlay = 0
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 0 1 1 0

從該獨熱編碼表可以看出矩陣許多值都為0,資料十分稀疏,而且會導致資料維度增大,數量級從n增大到n2

而我們的目的是從該矩陣中獲取到特徵的某些關聯,比如MovieClass=action 與 actor=A 關聯比較大,電影播放量可很客觀,從而對使用者進行推薦。

先從線性迴歸和多項式迴歸開始建模,這裡我們以二階多項式模型(degree = 2時)為例:
xixj表示特徵xi和xj的組合,當xixj都非零時,組合特徵xixj才有意義。

y^(x):=w0+i=1nwixi+i=1nj=i+1nwijxixj
其中,n 代表樣本的特徵數量,xi是第 i 個特徵的值,w0wiwij是模型引數。

從此公式可以看出組合特徵一共有n(n-1)/2個,如果特徵n上百個,組合特徵上萬個,就是任意兩個wij相互獨立,樣本資料很稀疏,xixj為非零的項會非常的少,導致訓練樣本的不足,很容易導致引數 wij不準確,最終將嚴重影響模型的效能和穩定性。

那麼如何解決這些問題呢?上一篇部落格的矩陣分解提供了思路。在一個rating矩陣可以分解為user矩陣和item矩陣,每個user和item都可以採用一個隱向量表示,兩個向量的點積就是矩陣中user對item的打分。

類似地,所有二次項引數 wij 可以組成一個對稱陣 W,可以分解為W=VTVV 的第 j 列便是第 j 維特徵的隱向量,也就是說每個引數 wij=vi,vj,這就是FM模型的核心思想(不討論高階形式)。所以可以得到:

y^(x):=w0+i=1nwixi+i=1nj=i+1nvi,vjxixj
其中<>表示兩個向量的點積vi,vj:=f=1kvi,fvj,f
直觀上看,FM的複雜度是 O(kn2)。但是,通過下列等式,FM的二次項可以化簡,其複雜度可以優化到 O(kn)。由此可見,FM可以線上性時間對新樣本作出預測。
i=1nj=i+1nvi,vj

相關推薦

推薦系統學習筆記 Factorization Machines 因子分解 + Field-aware Factorization Machine(FFM) 感知分解

前言 Factorization Machines(FM) 因子分解機是Steffen Rendle於2010年提出,而Field-aware Factorization Machine (FFM) 場感知分解機最初的概念來自於Yu-Chin Juan與其比賽

推薦系統學習筆記三 LFM (Latent Factor Model) 隱因子模型 + SVD (singular value decomposition) 奇異值分解

Low Rank Matrix Factorization低階矩陣分解 在上一篇筆記之二裡面說到我們有五部電影,以及四位使用者,每個使用者對電影的評分如下,?表示未評分。 Movies\User User 1 User 2 User 3

Unity3DMecanim動畫系統學習筆記):Animation State

大致 面板 輸入 jpg any 動畫播放 速度 nsf 顯示 動畫的設置 我們先看看Animation Clip的一些設置: Loop time:動畫是否循環播放。 下面出現了3個大致一樣的選項: Root Transform Rotation:表示為播放動畫

ceph學習筆記PG

sds ceph cloud 對象 pg PG PG(Placement Group)單從名字上可理解為一個放置策略組,它是對象的集合,集合裏的所有對象具有相同的放置策略;對象的副本都分布在相同的OSD列表上。一個對象只能屬於一個PG,一個PG對應於放置在其上的OSD列表。一個OSD上可

Android異步載入學習筆記:利用緩存優化網絡載入圖片及ListView載入優化

角度 thread 下午 出發 easy code cat height back 假設不做不論什麽處理。直接用網絡載入圖片在網速快的情況下可能沒什麽不好的感覺。可是假設使用移動流量或是網絡不好的時候。問題就來了,要麽用戶會抱怨流量使用太多。要麽抱怨圖

Linux學習筆記————Linux常用命令 ( 待補充)

-h http “.” 現實 人性化 快捷 我們 包括 無法 一、Linux命令——文件、磁盤管理 1.文件管理 <1>查看文件信息:ls ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。 Linu

Linux 學習筆記 查看文件

lin 學習 文件內容 筆記 文件 內容 上下 post blog 一 cat cat filename 查看文件內容 cat -n filename 查看文件內容,帶上行號 cat -b filename 查看文件內容 ,空行不帶行號 二 more more file

項目管理學習筆記.風險管理

src analysis 方式 出現 ati 表示 statistic 1.2 esp 項目管理個人能力--風險管理 下圖是一個風險管理的示意表格

系統學習redis——redis數據類型hash類型及操作

。。 del code 操作 redis數據類型 src hms 添加 數據類型 hashes數據類型 Redis的hash是一個string類型的field(字段)和value的映射表。它的添加、刪除操作都是0/1(平均操作法)。hash特別適合用於存儲對象。相較於將對象

python學習筆記-多進程&多線程&異步非阻塞

running executor 服務器 RoCE 進行 break python buffer 創建 ProcessPoolExecutor對multiprocessing進行了高級抽象,暴露出簡單的統一接口。 異步非阻塞 爬蟲 對於異步IO請求的本質則是【非阻塞So

Memcached學習筆記:Memcache應用場景介紹

對於高併發高訪問的Web應用程式來說,資料庫存取瓶頸一直是個令人頭疼的問題。特別當你的程式架構還是建立在單資料庫模式,而一個數據池連線數峰 值已經達到500的時候,那你的程式執行離崩潰的邊緣也不遠了。很多小網站的開發人員一開始都將注意力放在了產品需求設計上,缺忽視了程式整體效能,可擴 展性等方面的考

Cocos Creator 系統學習筆記)--座標系統

座標系統: cc.Class({ extends: cc.Component, properties: { }, //座標系統 //cc.Vec2是一個建構函式,可以使用new來建立 /* * 1: cc.Vec2

Cocos Creator 系統學習筆記)--坐標系統

creator 分享圖片 on() bubuko 向量 xtend inter div type 坐標系統: cc.Class({ extends: cc.Component, properties: { }, /

Nordic nRF5 SDK 學習筆記, TWI (I2C) 匯流排

硬體: nRF52832 SDK: Ver 15.2.0 目標: TWI (I2C) 匯流排應用 (TWI MASTER 模式) 樣例: <InstallFolder>\examples\peripheral\twi_sensor TWI driv

MyBatis學習筆記--annotation註解

使用MyBatis註解開發,可以省去類配置檔案,簡潔方便。但是比較複雜的SQL和動態SQL還是建議書寫類配置檔案。 註解還是不推薦使用的。只是瞭解瞭解!簡單的CRUD可以使用註解。簡單寫寫。     把之前的例子改成使用註解的。   UserMapper

SpringSecurity學習筆記:攔截請求

在任何應用中,並不是所有請求都需要同等程度地保護起來。有些請求需要認證,有些則不需要。 對每個請求進行細粒度安全性控制的關鍵在於過載configure(HttpSecurity)方法。如下程式碼片段展現了過載的configure(HttpSecurity)方法,它為不同的UR

Zynq Linux移植學習筆記 fsbl

                這一篇講一講FSBL1、  FSBL簡介在zynq上執行程式的時候,載入過程中肯定需要用到一個檔案,那就是fsbl,fsbl的全稱為first stage boot loader,從字面上就能夠看出這是zynq啟動第一階段的載入程式,經過了fsbl這一階段,後面系統才能夠執行裸

機器學習筆記——線性迴歸原理以及推導

一元線性迴歸:   對於樣本[(x1,y1),(x2,y2),……(xn,yn)],xi為特徵,yi為標籤。(字幕i代表下標)   假定y與x有:                 

PMP學習筆記 第三章 單個專案管理過程

回顧上一章的知識,在上一章中,我們主要學習了以下概念: 1、專案生命週期:啟動專案;組織與準備;執行專案工作;結束專案。產品生命週期與專案生命週期的關係,專案的五個階段(啟動、規劃、執行、監控、收尾),階段與階段之間的三種關係(順序、交疊、迭代); 2、專案與運營的區別; 3

Netty4 學習筆記: Netty HTTP服務的實現

前言 目前主流的JAVA web 的HTTP服務主要是 springMVC和Struts2,更早的有JSP/servlet。 在學習Netty的時候,發現Netty 也可以作HTTP服務,於是便將此整理一篇博文,分享給大家。 開發準備 新增配置