前面举例的user-item矩阵中的值为评分,这属于一种简单的显式情况,事实上,在实际应用中,更多的情况下收集的数据为观看时间,点击次数等用户的行为。对于这些数据的求解,我们一般按如下步骤
- 首先定义置信度:
其值代表某一商品对某一用户的重要性,其中r为点击次数:置信度默认为1,表示用户没有产生行为的商品;行为越多,置信度越大
- 重新定义评分矩阵:
- 重新定义目标函数:
总结起来就是置信度越大的你得预测的越准,要不损失就大了
求解过程依旧交替使用最小二乘法,固定Y优化X,再固定X优化Y
附:最小二乘法的解释(引用自ds)
一个简单的例子:身高与体重
假设我们收集了5个人的身高和体重数据,想找出身高与体重之间的关系。
| 人物 | 身高 (x) | 体重 (y) |
|---|---|---|
| A | 160 cm | 55 kg |
| B | 165 cm | 60 kg |
| C | 170 cm | 65 kg |
| D | 175 cm | 70 kg |
| E | 180 cm | 75 kg |
我们在坐标系上画出这五个点:
我们的任务: 找到一条直线 y = kx + b,能最好地拟合这五个点。其中 k 是斜率,b 是截距。
最小二乘法的工作:
- 任意画一条直线
y = kx + b。 - 计算每个数据点根据它的x坐标,在直线上对应的点 (x, kx+b),然后计算真实体重y与直线上对应点的高度 (kx+b) 的垂直距离,即
误差 = y - (kx + b)。 - 由于误差有正有负,我们将其平方,得到
误差² = [y - (kx + b)]²。 - 把所有5个点的误差平方加起来,得到总误差
S = Σ[y - (kx + b)]²。 - 通过数学方法(求导数并令其为零)找到一对最佳的
k和b,使得总误差S达到最小值。
对于上面这个简单的数据集,我们可以计算出最优解是 k = 1.0, b = -105。也就是说,最佳拟合直线是:
体重 = 1.0 × 身高 - 105