引入:
LFM(隐语义模型):协同过滤算法非常依赖于历史数据,而一般的推荐系统中,偏好数据又往往使稀疏的,这就需要对原始数据做降维处理,分解之后的矩阵,就代表了用户和物品的隐藏特征。
LFM降维方法就用 ----> 矩阵因子分解
矩阵因子分解的问题已经转化成一个标准的优化问题,需要求解P,Q使目标损失函数取最小值
最小化过程的求解,一般采取随机梯度下降算法或者交替最小二乘法来实现
说白了就是求矩阵因子分解的最优解,我们先用交替最小二乘法(ALS)求解。
正文:
ALS的思想是,由于两个矩阵P和Q都是未知,且通过矩阵乘法耦合在一起,为了使他们解耦,可以先固定Q,把P当作变量,通过损失函数最小化求出P,这就是以合经典的最小二乘法问题,在反过来固定求的P,把Q当作变量,求解Q,如此交替执行,知道误差满足阈值条件或者到达迭代上限。
ALS算法具体过程如下:
1、为Q指定一个初始值Q0,可以是0或者全剧平均数,
2、固定当前值Q0值,求解P0
3、固定当前值Q0值,求解P0
4、固定当前值Q0值,求解P0
5、…(重复以上过程)
6、知道损失函数的值C收件,迭代结束
求解过程:
以固定Q,求解P为例
由于每一个用户u都是相关独立的,当Q固定时,用户特征向量Pu应该取得的值与其他用户特征向量无关,所以每个Pu都可以单独求解
优化目标最小值C可以转化为:
那么我们的努比奥变成:求每一个用户特征向量Pu,试得Lu(Pu)取的最小值