libfm

机器学习算法实现解析——libFM之libFM的训练过程概述

家住魔仙堡 提交于 2020-08-08 15:41:05
本节主要介绍的是libFM源码分析的第四部分——libFM的训练。 FM模型的训练是FM模型的核心的部分。 4.1、libFM中训练过程的实现 在FM模型的训练过程中,libFM源码中共提供了四种训练的方法,分别为:Stochastic Gradient Descent(SGD),Adaptive SGD(ASGD),Alternating Least Squares(ALS)和Markov Chain Monte Carlo(MCMC),其中ALS是MCMC的特殊形式,实际上其实现的就是SGD,ASGD和MCMC三种训练方法,三者的类之间的关系如下图所示: ![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNTI3MTQwODEwMDQy?x-oss-process=image/format,png) FM模型训练的父类为 fm_learn ,其定义在文件 fm_learn.h 中, fm_learn_sgd 类和 fm_learn_mcmc 类分别继承自 fm_learn 类。其中, fm_learn_sgd 是基于梯度的实现方法, fm_learn_mcmc 是基于蒙特卡洛的实现方法。 fm_learn_sgd_element 类和 fm_learn_sgd