天天看點

推薦系統學習筆記之四 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
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 1 1 1
1 1 1 1
1 1 1 1

從該獨熱編碼表可以看出矩陣許多值都為0,資料十分稀疏,而且會導緻資料次元增大,數量級從 n n增大到n2n^2。

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

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

為了使用FFM方法,所有的特征必須轉換成“field_id:feat_id:value”格式,field_id代表特征所屬field的編号,feat_id是特征編号,value是特征的值。數值型的特征比較容易處理,隻需配置設定單獨的field編号,如使用者評論得分、商品的曆史CTR/CVR等。categorical特征需要經過One-Hot編碼成數值型,編碼産生的所有特征同屬于一個field,而特征的值隻能是0或1,如使用者的性别、年齡段,商品的品類id等。

除此之外,還有第三類特征,如使用者浏覽/購買品類,有多個品類id且用一個數值衡量使用者浏覽或購買每個品類商品的數量。這類特征按照categorical特征處理,不同的隻是特征的值不是0或1,而是代表使用者浏覽或購買數量的數值。按前述方法得到field_id之後,再對轉換後特征順序編号,得到feat_id,特征的值也可以按照之前的方法獲得。

參考文獻

  1. https://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html
  2. http://www.52caml.com/head_first_ml/ml-chapter9-factorization-family/
  3. http://www.csie.ntu.edu.tw/~r01922136/slides/ffm.pdf
  4. https://github.com/guestwalk/libffm FFM C++實作