1.基础
1.1 LR
网络结构:
--->
LR 只考虑单个特征对模型的影响。
1.2 FM
考虑任意两个特征之间的关系
第一部分仍然为Logistic Regression,第二部分是通过两两向量之间的点积来判断特征向量之间和目标变量之间的关系。
直观上看,FM的复杂度是 O(kn2 )但是,FM的二次项可以化简,其复杂度可以优化到 O(kn)。由此可见,FM可以在线性时间对新样本作出预测。
1.3 RBM
能量函数:
2.FNN
2.1 模型
Factorisation-machine supported Neural Networks
用FM算法对底层field进行embeddding,在此基础上面建模就是FNN(Factorisation-machine supported Neural Networks)模型:
4层网络结构:
模型底层先用FM对经过one-hot binary编码的输入数据进行embedding,把稀疏的二进制特征向量映射到 dense real 层,之后再把dense real 层作为输入变量进行建模,这种做法成功避免了高维二进制输入数据的计算复杂度。
FM 层权重更新方式:
2.2 代码
├── README.md
├── data # 数据文件
│ ├── featindex.fm.txt 特征field(15)---特征名字---特征id的映射
│ ├── featindex.txt
│ ├── fm.model.txt fm模型输出的权重:w_0、feature_num、k(10); w、v、fieldname:featurename
│ ├── test.fm.txt 测试集
│ └── train.fm.txt 训练集
├── log
└── python
├── FNN.py FNN 模型
├── SNN_DAE.py SNN_DAE 模型
├── SNN_RBM.py SNN_RBM 模型
├── data_fm.py
├── dl_utils.py
├── fm.py fm模型:输出 fm.model.txt
├── sampling_based_denosing_autoencoder.py DA 模型
└── sampling_based_gaussian_binary_rbm_sparse.py RBM 模型
3.SNN
Sampling-based Neural Networks
网络结构:
4. 结果
数据集:iPinYou
那我们可以看出FNN的效果优于LR和 FM 模型。我们进一步考虑FNN与一般的神经网络的区别是什么?大部分的神经网络模型对向量之间的处理都是采用加法操作,而FM 则是通过向量之间的乘法来衡量两者之间的关系。
5. 其他
- tanh vs sigmod ?
This might be because the hyperbolic tangent often converges faster than the sigmoid function.