一、为什么要用FM算法
在计算广告和推荐系统中,CTR预估(click-through rate)是非常重要的一个环节,判断一个商品的是否进行推荐需要根据CTR预估的点击率来进行。而在处理这类数据时,我们常常会使用one-hot编码(例如对用户ID、商品ID等),但这样就带了一个问题,数据太过稀疏。在面对如此稀疏的数据时,我们仅仅考虑每一个特征显然是不够的。这个时候,考虑特征之间的组合就显得尤为重要。
二、算法主体
普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系:
当我们考虑特征之间的组合时,我们稍微改动一下上面的公式就可以得到我们想要的算法:
但这个公式有个问题,对于稀疏数据来说,xi和xj都不为0的情况太少,这样将导致无法通过训练很好地得到ωij。
所以,将wij拆成两块来训练得到:
通过2xy = (x+y)^2 – x^2 – y^2的思路简化计算的复杂度:
使用梯度下降求解:
这样就得到了FM算法