当前位置: 首页 > 文档资料 > Angel 中文文档 >

Factorization Machine(FM)

优质
小牛编辑
121浏览
2023-12-01

Factorization Machines

因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。它可对任意的实值向量进行预测。其主要优点包括: 1) 可用于高度稀疏数据场景;2) 具有线性的计算复杂度。

1. 算法介绍

Factorization Model

  • Factorization Machine Model

其中:的个数

  • ml.fm.rank:embedding中vector的长度
  • ml.inputlayer.optimizer:优化器类型,可选"adam","ftrl"和"momentum"
  • ml.data.label.trans.class: 是否要对标签进行转换, 默认为"NoTrans", 可选项为"ZeroOneTrans"(转为0-1), "PosNegTrans"(转为正负1), "AddOneTrans"(加1), "SubOneTrans"(减1).
  • ml.data.label.trans.threshold: "ZeroOneTrans"(转为0-1), "PosNegTrans"(转为正负1)这两种转还要以设一个阈值, 大于阈值的为1, 阈值默认为0
  • ml.data.posneg.ratio: 正负样本重采样比例, 对于正负样本相差较大的情况有用(如5倍以上)
  • 提交命令 可以通过下面的命令提交FM算法:

    ../../bin/angel-submit \
      -Dml.epoch.num=20 \
      -Dangel.app.submit.class=com.tencent.angel.ml.core.graphsubmit.GraphRunner \
      -Dml.model.class.name=com.tencent.angel.ml.classification.FactorizationMachines \
      -Dml.feature.index.range=$featureNum \
      -Dml.model.size=$featureNum \
      -Dml.data.validate.ratio=0.1 \ 
      -Dml.data.type=libsvm \
      -Dml.learn.rate=0.1 \
      -Dml.reg.l2=0.03 \
      -Daction.type=train \
      -Dml.fm.field.num=11 \
      -Dml.fm.rank=8 \
      -Dml.inputlayer.optimizer=ftrl \
      -Dangel.train.data.path=$input_path \
      -Dangel.workergroup.number=20 \
      -Dangel.worker.memory.mb=20000 \
      -Dangel.worker.task.number=1 \
      -Dangel.ps.number=20 \
      -Dangel.ps.memory.mb=10000 \
      -Dangel.task.data.storage.level=memory \
      -Dangel.job.name=angel_l1
    
  • 项目地址:https://github.com/Angel-ML/angel
    官网:https://angelml.ai/