推荐算法之逻辑回归模型族
作者:互联网
目录
1.协同过滤算法族的不足
之前的协同过滤算法族局限在于,它仅仅关注用户与物品的交互信息(受限于共现矩阵),而忽视了用户,物品,场景点信息,这使得协同过滤算法在进行推荐的时候忽视许多其他有用的信息。机器学习针对这一问题提出了很好的解决办法,我们将根据推荐算法质量逐步介绍一些逻辑回归算法族模型。
2.逻辑回归算法
逻辑回归模型能够利用用户、物品、上下文等多种不同的特征,生产较为“全面”的推荐结果。其数学模型如下:
在逻辑回归中,比如用户的年龄、性别、物品属性、物品描述、当前时间、当前地点等起都可以作为输入的特征,所有特征线性组合以后经过一个sigmoid函数计算其值得推荐的概率。
优化函数:
优点:结合了多种特征进行推荐,比较符合人的思维。
缺点:仅仅考虑单一特征,未考虑组合特征。
3.Poly2算法
在正式介绍Poly2模型之前,我们先要搞清楚,什么是组合特征。
科比 | 霍华德 | 纳什 | 保罗-加索尔 | 西部第七 |
兰多夫 | 康利 | 鲁迪-盖伊 | 马克-加索尔 | 西部第五 |
若两方球队打比赛,如果单单从个人实力上来看(单一特征),也许科比队的可能就赢了,但是兰多夫与康利在一起搭档时,会爆发出更大的可能性(特征组合),因此兰多夫队胜利。在之前的逻辑回归仅仅考虑了单一特征,而未考虑交叉特征。Poly2算法在逻辑回归的基础上,引入了二阶交叉特征,起数学模型如下所示:
我们可以发现,Poly2算法改进逻辑回归只考虑单一特征的问题,但是Poly算法也带来了另外一个问题,即数据稀疏的问题。
我们在实际应用场景中,对于类别的数据,我们会将其进行one-hot编码。如下一个简单的例子:
点击 | 性别 | 星期 |
1 | 男 | 星期一 |
0 | 女 | 星期二 |
我们进行one-hot编码将类别数据转为数值型数据,即:
点击 | 男 | 女 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 | 星期日 |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
若我们考虑组合特征,则:
点击 | 男 | 女 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 | 星期日 | 点击&星期一 | 点击&星期二 | ... |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
由于ohe-hot编码本身对类别数据就会产生大量的0,特征交叉以后组合特征使得特征数变多了很多,这会引入大量的0造成特征稀疏的问题,更致命的是,很可能导致交叉权重系数无法更新。以下给出详细推导过程:
其损失函数依旧是交叉熵,即:
我们分别计算权重系数的偏导数:
观察交叉特征的梯度,最后推导的结果为:,其中由于组合特征数据的稀疏性大概率为0,进而导致梯度为0,这就会造成在梯度更新的时候无法更新。而FM算法便是针对这个问题进行改进。
4.FM算法
针对Poly2算法存在的交叉特征权重系数梯度无法更新问题,FM提出为每个特征向量计算一个隐特征向量,如下图所示:
Poly2:
feature1&feature2 | feature1&feature3 | feature2&feature3 | |
权重系数 | (标量) |
FM:
feature1&feature2 | feature1&feature3 | feature2&feature3 | |
隐特征 向量(k纬) | 0.56 0.12 . . . 0.34 | 0.12 0.43 . . . 0.87 | 0.98 0.32 . . . 0.45 |
每个交叉特征权重系数为这进行交叉的两个特征内积所得,因此原来的Poly2数学模型为:
而FM模型数学模型为:
即。而隐特征向量的实现如下图所示:
即将权重系数矩阵用一个矩阵来表示(因为是实对称矩阵,只要k足够大,一定存在矩阵,使其满足),这一步就是矩阵分解的思想,在协同过滤中,将共现矩阵分解为用户矩阵和物品矩阵,这里有异曲同工之妙,即将交叉特征权重系数矩阵分解为交叉特征隐向量矩阵,其中隐特征向量的维度为()。
现在的数学模型中包含了向量,进一步简化FM的数学模型,将向量中的每个元素都挖出来,简化数学模型:
解释:我们知道权重系数与交叉特征进行线性组合,最后得到一个标量。观察上图,每个权重系数的是由于一个矩阵中的两个向量内积所得,而对于一个交叉权重系数矩阵,由于其为实对称矩阵,因此我们在实际的计算中仅仅取上三角部分(对角线上的元素不需要)。而:,为了取出上三角只要减去其对角线上的元素:
并除以2得到交叉特征与特征线性组合的标量。
我们知道向量的内积就是对应元素相乘求和,即:。因此,进一步优化:
所以,FM最终的数学模型可以写为
其损失函数与前面一样,依旧为交叉熵:
此时我们在去求其偏数:
其中,只要有一个特征不为0,其值为0的可能性很小(若都为0,我们也不关心,说明两种特征都没激活,无需更新)。这也是隐向量的引入使得FM能够更好第解决数据稀疏性问题。
举例来说,在某商品推荐的场景下,样本有两个特征,分别是频道(channel)和品牌(brand),某训练样本的特征组合是(ESPN,Adidas)。在POLY2中,只有当ESPN和Adidas同时出现在一个训练样本中时,模型才能学习到这个组合特征对应的权重;而在FM中,ESPN的隐向量也可以通过(ESPN,Gucci)样本进行更新,Adidas的隐向量也可以通过(NBC,Adidas)样本进行更新,这大幅度降低了模型对数据稀疏性的要求。甚至对于一个从未出现过的特征组合(NBC,Gucci),由于模型之前已经分别学习过NBC和Gucci的隐向量,具备了计算该特征组合权重的能力,这是POLY2无法实现的。相比POLY2,FM虽然丢失了某些具体特征组合的精确记忆能力,但是泛化能力大大提升。
5.FFM
FFM算法在FM算法的基础上,又提出了一个性别域的概念,举出下面例子来说:
标签:逻辑,7D%,5Csum,模型,算法,3D1%,7Bi%,_%,i% 来源: https://blog.csdn.net/weixin_38544305/article/details/117561435