https://github.com/coreylynch/pyFM
这
是
一个
python
实现
的
分解
机
[1]。使用
自适应
正则化
作为
一
种
学习
方法
,
适应
正规化
训练
模型
参数
时
,
自动
使用
随机
梯度
下降
。
详情
,
请参阅
[2]
。
从
libfm.org
:
"分解
机
(FM)
是
允许
通过
来
模拟
大多数
分解
模型
的
特征
工程
的
泛型
方法
。
这
种方式
,
分解
机
"
相结合
特征
工程
概论
凭借
优势
的
分解
模型
估计
的
大
域
分类
变量
之间
的
相互作用
。
[1] Steffen Rendle (2012): Factorization Machines with libFM, in ACM Trans. Intell. Syst. Technol., 3(3), May.
[2] Steffen Rendle: Learning recommender systems with adaptive regularization. WSDM 2012: 133-142
依赖:numpy 和
sklearn
训练过程
使用此方法最简单的方式是——将你的训练数据描述成标准的python字典格式,即the dict elements map each instance's categorical and real valued variables to its values.然后使用sklearn的sklearn DictVectorizer 将字典转换为使用one-hot编码过的设计矩阵。
例如:
from pyfm import pylibfm from sklearn.feature_extraction import DictVectorizer import numpy as np train = [ { "user": "1", "item": &