推荐系统学习笔记之四 Factorization Machines 因子分解机 + Field-aware Factorization Machine(FFM) 场感知分解机

2021-06-11 14:53:33 浏览数 (1)

前言

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 n增大到n2n^2。

而我们的目的是从该矩阵中获取到特征的某些关联,比如MovieClass=action 与 actor=A 关联比较大,电影播放量可很客观,从而对用户进行推荐。

为了使用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 实现

0 人点赞