网盛创新研究院 - AI、区块链、云计算、大数据技术的研究与应用交流平台!

网盛创新研究院/百科/正文

域分解机

相关新闻/

Related Info

符号说明:


x表示样本特征数据

y表示样本目标数据

第i个训练样本为(xi,yi),为了方便也可以用x=xi表示第i个样本

1 基于域的分解机模型(FFM)


1.1 线性模型

                               360截图20190311093926609.jpg

C1表示x零元素索引的集合

1.2 二次多项式模型

                                 360截图20190311093919328.jpg                   

C2表示x中非零的组合元素索引的集合

1.3 分解机模型

                          360截图20190311093913015.jpg

w是二维矩阵,wi表示第i行向量,长度为k,k是用户自定义的参数,也称之为隐变量

1.4 域分解机模型

                           360截图20190311093737140.jpg

因为线性项

                                               360截图20190311093730015.jpg

在训练过程中非常容易计算,所以可以先将其忽略,只需要研究

                                           360截图20190311093723843.jpg

将其写成另一种形式

                                    360截图20190311093715437.jpg

1.5 基于FFM的逻辑回归模型


1.5.1-1,1损失的逻辑回归模型         

                         360截图20190311093539031.jpg

其中

                            360截图20190311093531625.jpg

                           360截图20190311093524562.jpg

其为每个样本的损失函数。


L(xp,yp)对参数w的导数为:

                     360截图20190311093446687.jpg

在式(8)的导数计算公式中,

                                        360截图20190311093410609.jpg

是标量,对于每个样本只要按照式(7)计算即可,第二项

                                                        λw

用惩罚参数乘以对应的参数即可,比较麻烦的就是

                                                 360截图20190311093331718.jpg

的计算。

1.5.2 ∅(w,xp)的求导过程$


为了便于理解首先对

⟨                                        360截图20190311093254687.jpg

中的

                                                      wi,fp,j

                                                      wj,fp,i

分别的偏导数如下

                               360截图20190311093151312.jpg

所以∅(w,xp)对wi,fp,j和wj,fp,i的偏导数分别如下

                                  360截图20190311093126640.jpg

                                    训练模型时需要注意的问题:在式(12)和式(13)中会存在

                                              wj,fp,i(xt,ixt,j+xq,ixq,j+⋯)

                                    在训练时不需要合并这些项,只要把这些项当成更新参数

                                                      wj,fp,i

                                     的多个样本即可,这在编程实现中将非常有用。

假设有如下的例子,五个特征,两个域

            360截图20190311085016984.jpg

                                                        图1

按照式(7),去掉下标p,计算图1中所示的分解模型,如下按照式(7),去掉下标p,计算图1中所示的分解模型,如下

          360截图20190311085157296.jpg

从上式中抽取i=1,fj=1和i=3,fj=2

                                        360截图20190311085258078.jpg

在模型学习时,需要迭代公式

                                                          w=w+ηg,

η,g分别为学习率和梯度向量,则在计算

                                                          w3,f2

时有两种方式:

方式1:

                                       360截图20190311085545453.jpg

方式2:

                                        360截图20190311085735078.jpg

因为采用的是AdaGrad所以学习率η在方式二中是变化的。因为采用的是AdaGrad所以学习率η在方式二中是变化的。

在学习过程中是采用方式1还是方式2呢?答案是方式2。因为在计算实际问题时可能特征分布在多个域中,如果按照方式1则需要把每个域中的信息累加起来,结果是编程上非常麻烦,如果按照方式2,非常符合SGD的思想,把w4,f1x3x4和w5,f1x3x5看成两个样本,再带回到x3x4x3x4组合时更新下w3,f2,当访问到x3x5x3x5组合时再次更新下w3,f2,在实际编程中,具体更新哪些参数可以通过相应的索引进行访问,非常方便。



标签:
关于我们创新研究院大讲堂服务介绍
© 生意宝(002095) 版权所有  浙公网安备 33010002000015号 工商执照 浙ICP证  网络工商