从零开始的深度学习入门(3)

30 阅读2分钟

前面举例的user-item矩阵中的值为评分,这属于一种简单的显式情况,事实上,在实际应用中,更多的情况下收集的数据为观看时间,点击次数等用户的行为。对于这些数据的求解,我们一般按如下步骤

  1. 首先定义置信度:

cui=1+αruic_{ui} = 1 + \alpha r_{ui}

其值代表某一商品对某一用户的重要性,其中r为点击次数:置信度默认为1,表示用户没有产生行为的商品;行为越多,置信度越大

  1. 重新定义评分矩阵:

pui={1rui>00rui=0p_{ui} = \begin{cases} 1 & r_{ui} > 0 \\ 0 & r_{ui} = 0 \end{cases}

  1. 重新定义目标函数:

G(x,y)=(u,icui(puixuTyi)2)+λ(uxu2+iyi2)G(x_*, y_*) = \left( \sum_{u,i} c_{ui} (p_{ui} - x_u^T y_i)^2 \right) + \lambda \left( \sum_{u} ||x_u||^2 + \sum_{i} ||y_i||^2 \right)

总结起来就是置信度越大的你得预测的越准,要不损失就大了

求解过程依旧交替使用最小二乘法,固定Y优化X,再固定X优化Y

附:最小二乘法的解释(引用自ds)

一个简单的例子:身高与体重

假设我们收集了5个人的身高和体重数据,想找出身高与体重之间的关系。

人物身高 (x)体重 (y)
A160 cm55 kg
B165 cm60 kg
C170 cm65 kg
D175 cm70 kg
E180 cm75 kg

我们在坐标系上画出这五个点:

我们的任务:  找到一条直线 y = kx + b,能最好地拟合这五个点。其中 k 是斜率,b 是截距。

最小二乘法的工作:

  1. 任意画一条直线 y = kx + b
  2. 计算每个数据点根据它的x坐标,在直线上对应的点 (x, kx+b),然后计算真实体重y与直线上对应点的高度 (kx+b) 的垂直距离,即 误差 = y - (kx + b)
  3. 由于误差有正有负,我们将其平方,得到 误差² = [y - (kx + b)]²
  4. 把所有5个点的误差平方加起来,得到总误差 S = Σ[y - (kx + b)]²
  5. 通过数学方法(求导数并令其为零)找到一对最佳的 k 和 b,使得总误差 S 达到最小值

对于上面这个简单的数据集,我们可以计算出最优解是 k = 1.0b = -105。也就是说,最佳拟合直线是:
体重 = 1.0 × 身高 - 105