我一直在尝试在推荐系统中实现随机梯度下降,遵循以下方程:
我的代码如下:
for step in range(max_iter): e = 0 for x in range(len(R)): for i in range(len(R[x])): if R[x][i] > 0: exi = 2 * (R[x][i] - np.dot(Q[:,i], P[x,:])) qi, px = Q[:,i], P[x,:] qi += _mu_2 * (exi * px - (2 * _lambda_1 * qi)) px += _mu_1 * (exi * qi - (2 * _lambda_2 * px)) Q[:,i], P[x,:] = qi, px
我的输出结果似乎不太对,但我无法确切指出问题所在。请帮助我找出代码中的问题。
非常感谢你的支持
回答:
在更新qi和px时,你应该交换mu1和mu2。