Factorization Machine

作者: 冒绿光的盒子 | 来源:发表于2018-08-30 17:24 被阅读4次

    Factorization Machine---因子分解机

    ①target function的推导

    logistics regression algorithm model中使用的是特征的线性组合,最终得到的分割平面属于线性模型,但是线性模型就只能处理线性问题,所以对于非线性的问题就有点难处理了,对于这些复杂问题一般是两种解决方法①对数据本身进行处理,比如进行特征转换,和函数高维扩展等等。②对算法模型本身进行扩展,比如对linear regression加上正则化惩罚项进行改进得到lasso regression或者是ridge regression。
    Factorization Machine就是一种对logistics regression的一种改进,线性的部分权值组合是不变的,在后面增加了非线性的交叉项。
    target function:y_{score} = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n<v_i, v_j>x_ix_j <v_i, v_j> = \sum_{f=1}^kv_{i,f}*v_{j,f}
    v_i表示的是系数矩阵V的第i维向量,v_i=(v_{i,1},v_{i,2},v_{i,3},...v_{i,k}),k的大小称为是度,度越大代表分解出来的特征就越多。对于每一个特征都会对应有一个k维的向量。前两部分是传统的线性模型,后一个部分就是将脸刚刚互不相同的特征分量之间的相互关系考虑进来了。也就是不同特征之间的吸引程度。
    如果使用男女恋爱来解释这个模型,得分score是男生对女生的一个喜欢程度,w_0代表的就是底分,可以看成是男生对于女生的第一感觉。对于第二部分可以看成是女生的优秀程度,第三部分就相当于是男女之间的事交互关系了,也就是男女之间的感觉,如果两个男生对于同一个女生的感觉是一致的,那么他们的v就是一致的,从本质上说,因子分解机也是探索一种相似性,其与协同过滤算法是类似的,但是这两者的区别在于,因子分解机同时考虑了男生和男生间的相似性以及女生和女生间的相似性,但是协同过滤要么只考虑男生之间的相似性,要么只考虑女生之间的相似性。

    优化求解target function

    y_{score} = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n<v_i, v_j>x_ix_j <v_i, v_j> = \sum_{f=1}^kv_{i,f}*v_{j,f}对于原始的target function计算复杂度是O(n^2),采用公式((a+b+c)^2-a^2-b^2-c^2)/2的公式。于是化简一波:


    这样就成功的把复杂度降到了

    最后附上GitHub代码:
    https://github.com/GreenArrow2017/MachineLearning/tree/master/MachineLearning/Factorization%20Machine

    相关文章

      网友评论

        本文标题:Factorization Machine

        本文链接:https://www.haomeiwen.com/subject/auqrwftx.html