推薦演算法之FFM:原理及實現簡介
推薦系統一般可以分成兩個模組,檢索和排序。比如對於電影推薦,檢索模組會針對使用者生成一個推薦電影列表,而排序模組則負責對這個電影列表根據使用者的興趣做排序。當把FFM演算法應用到推薦系統中時,具體地是應用在排序模組。
FFM演算法,全稱是Field-aware Factorization Machines,是FM(Factorization Machines)的改進版。這個改進原理上比較簡單,所以我想先把FM講清楚。
我們知道推薦演算法中,最廣為人知的是協同過濾演算法,協同過濾一般分為基於使用者的協同過濾和基於物品的協同過濾,而除此之外,還有基於隱語義的協同過濾。我們來考慮一個電影評分的問題,使用者對於電影的評分,可以構成一個評分矩陣
其中
其中R是使用者對電影的評分的集合,
我們來看一下廣泛應用在排序場景裡的邏輯迴歸,為了學習出不同特徵之間的關聯,邏輯迴歸的使用中往往會引入高階特徵。比如說性別跟手機品牌的關係,通過引入(性別+手機品牌)的二階特徵,模型可以學習到不同性別對不同手機品牌的興趣。但如果訓練樣本中沒有出現(女性+錘子),模型也就無法學習到女性對於錘子的興趣程度。那麼如果說我就是想知道女性對於錘子的興趣呢?考慮上面的隱語義模型,如果我們把女性和錘子這些特徵對映到隱語義空間,通過學習女性和路虎各自對應的向量,就可以用這兩個向量的內積得到這個興趣。這樣嘗試就得到了FM。(這裡使用興趣這個詞是不太嚴謹的,更準確地講是這個二階特徵的權重)
邏輯迴歸模型可以寫成:
其中
就得到了FM模型,其中
FM模型相對於邏輯迴歸有了更好的泛化能力,可以學習出訓練樣本中沒有的交叉特徵的權重。而另一方面,在效能上也有很好的表現,使用邏輯迴歸的時候,對於有
接下來,我們看下使用邏輯迴歸時特徵處理的過程。對於分類特徵,會做熱獨編碼。比如手機品牌有華為小米蘋果等等,那麼當用戶手機品牌為華為時,特徵可以表示為{fea_mobile_huawei=1, fea_mobile_xiaomi=0, fea_mobile_apple=0…….}這樣的形式。那麼這樣處理之後,fea_mobile_huawei可以稱為特徵(feature),而對於手機品牌在熱獨編碼後對應的多個特徵,可以稱為域(field)。回頭看一下基於隱語義的協同過濾模型,裡面實際可以看做是涉及了兩個域,即使用者域和電影域,這個模型只涉及了兩個域的互作用。對於FM模型呢,每個向量都是同時跟多個域互作用,比如手機品牌會同時跟使用者的性別、推薦的商品等等域互作用。FFM演算法的作者認為,兩個域之間的互作用應該獨立出來,也就是手機品牌跟使用者性別互作用有一個對應的向量,而跟推薦的商品互作用時也有一個對應的向量,這也就是所謂的field-aware。FFM模型可以通過修改上面的
其中
相關推薦
推薦演算法之FFM:原理及實現簡介
推薦系統一般可以分成兩個模組,檢索和排序。比如對於電影推薦,檢索模組會針對使用者生成一個推薦電影列表,而排序模組則負責對這個電影列表根據使用者的興趣做排序。當把FFM演算法應用到推薦系統中時,具體地是應用在排序模組。 FFM演算法,全稱是Field-aware
Vue 進階系列(三)之Render函式原理及實現
Vue進階系列彙總如下,歡迎閱讀,歡迎加高階前端進階群一起學習(文末)。 Vue 進階系列(一)之響應式原理及實現 Vue 進階系列(二)之外掛原理及實現 Render函式原理 根據第一篇文章介紹的響應式原理,如下圖所示。 在初始化階段,本質上發生在auto run函式中,然後通過r
Vue 進階系列之響應式原理及實現
什麼是響應式Reactivity Reactivity表示一個狀態改變之後,如何動態改變整個系統,在實際專案應用場景中即資料如何動態改變Dom。 需求 現在有一個需求,有a和b兩個變數,要求b一直是a的10倍,怎麼做? 簡單嘗試1: let a = 3; let b
多模字串匹配演算法之AC自動機—原理與實現
簡介: 本文是博主自身對AC自動機的原理的一些理解和看法,主要以舉例的方式講解,同時又配以相應的圖片。程式碼實現部分也予以明確的註釋,希望給大家不一樣的感受。AC自動機主要用於多模式字串的匹配,本質上是KMP演算法的樹形擴充套件。這篇文章主要介紹AC自動機的工作原理,並在此
九大排序演算法之插入排序(原理及實現)
1、演算法思路:每趟將一個待排序的元素作為關鍵字,按照其關鍵字值得大小插入到已經排好的部分的適當位置上,知道插入完成。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)開始以第一個元素49為關鍵字,看成一個序列,其餘數看成另
九大排序演算法之選擇排序(原理及實現)
1、演算法思想:選擇排序,從頭至尾掃描序列,找出最小的一個元素,和第一個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到一個有序序列。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)在進行選擇排
演算法:CLH鎖的原理及實現
一、背景 1.1 SMP(Symmetric Multi-Processor) 對稱多處理器結構,它是相對非對稱多處理技術而言的、應用十分廣泛的並行技術。在這種架構中,一臺計算機由多個CPU組成,並共享記憶體和其他資源,所有的CPU都可以平等地訪問記憶體、I/O
寫程式學ML:Logistic迴歸演算法原理及實現(三)
2.2 利用Logistic演算法預測病馬死亡率 由於採集資料是諸多原因,採集的資料有可能不完整。但有時候資料相當昂貴,扔掉和重新獲取都是不可取的,所以必須採用一些方法來解決這個問題。 處理資料中缺失值的做法: 1> 使用可用特徵的均值來填補缺失值; 2&g
寫程式學ML:樸素貝葉斯演算法原理及實現(一)
[題外話]近期申請了一個微信公眾號:平凡程式人生。有興趣的朋友可以關注,那裡將會涉及更多更新機器學習、OpenCL+OpenCV以及影象處理方面的文章。 1、樸素貝葉斯演算法的原理 樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。 和決策樹模型相比,樸素貝葉斯
寫程式學ML:Logistic迴歸演算法原理及實現(一)
[題外話]近期申請了一個微信公眾號:平凡程式人生。有興趣的朋友可以關注,那裡將會涉及更多更新機器學習、OpenCL+OpenCV以及影象處理方面的文章。 1、Logistic迴歸演算法的原理 假設現在有一些資料點,我們用一條直線對這些點進行擬合(該線稱為最佳擬合直線),這個
寫程式學ML:樸素貝葉斯演算法原理及實現(二)
[題外話]近期申請了一個微信公眾號:平凡程式人生。有興趣的朋友可以關注,那裡將會涉及更多更新機器學習、OpenCL+OpenCV以及影象處理方面的文章。 2、樸素貝葉斯演算法的實現 2.1 樸素貝葉斯演算法的實現 按照樸素貝葉斯演算法的原理,我們需要實現一個樸素貝葉
寫程式學ML:決策樹演算法原理及實現(四)
[題外話]近期申請了一個微信公眾號:平凡程式人生。有興趣的朋友可以關注,那裡將會涉及更多更新機器學習、OpenCL+OpenCV以及影象處理方面的文章。 2.3 決策樹的測試 書中使用隱形眼鏡資料集對決策樹進行了測試。 建立測試檔案contactLenses4Deci
寫程式學ML:Logistic迴歸演算法原理及實現(二)
2、Logistic迴歸演算法的實現 2.1 Logistic演算法的實現 首先,我們實現梯度上升演算法。 Sigmoid函式的定義如下: #sigmoid函式的實現 def sigmoid(inX): return 1.0 / (1 + exp(-inX))
資訊摘要演算法之二:SHA1演算法分析及實現
SHA演算法,即安全雜湊演算法(Secure Hash Algorithm)是一種與MD5同源的資料加密演算法,該演算法經過加密專家多年來的發展和改進已日益完善,現在已成為公認的最安全的雜湊演算法之一,並被廣泛使用。1、概述SHA演算法能計算出一個數位資訊所對應到的,長度固定
推薦演算法之: DeepFM及使用DeepCTR測試
## 演算法介紹 左邊deep network,右邊FM,所以叫deepFM ![DeepFm](https://gitee.com/jadepeng/pic/raw/master/pic/2020/10/15/1602764397990.png) 包含兩個部分: - Part1: FM(Fac
Vue 進階系列(二)之外掛原理及實現
Vue進階系列彙總如下,歡迎閱讀,歡迎加群討論(文末)。 Vue 進階系列(一)之響應式原理及實現 Vue 進階系列(二)之外掛原理及實現 使用方法 外掛的詳細使用方法詳情看Vue官網 Vue官網之外掛Plugins 概括出來就是 1、通過Vue.use(MyPlugin)使用,
.NetCore 中介軟體之AddAuthentication服務說明及實現原理簡述
如果你使用過.NetCore開發過程序,你會很清楚,在其中我們經常會用到一些如下的程式碼 services.AddAuthentication(options => { options.DefaultAuthentic
機器學習系列:k 近鄰法(k-NN)的原理及實現
本內容將介紹機器學習中的 k k k 近鄰法(
轉 vue實現雙向資料繫結之原理及實現篇 vue的雙向繫結原理及實現
轉自:canfoo#! vue的雙向繫結原理及實現 前言 先上個成果圖來吸引各位: 程式碼: &nb
機器學習之線性迴歸原理及sklearn實現
1、線性迴歸問題 以房價預測為例,佔地面積為變數x1,房屋年齡為變數x2,房屋價格為預測變數y。 為什麼叫線性迴歸問題,因為目標函式是一個線性迴歸函式。什麼是目標函式? (1)、目標函式:目標函式是我們需要的最終結果,及