首页 > 解决方案 > SGD算法从零开始预测电影评分

问题描述

基于这个等式,我必须计算我在下面所做的 wrt b 的导数

优化方程 优化方程

def derivative_db(user_id,item_id,rating,U,V,mu,alpha):
    '''In this function, we will compute dL/db_i'''
    return (2*alpha*np.sum(user_id))-(2*np.sum((rating-mu-user_id-item_id-np.dot(U,V))))

但对于查询

U1, Sigma, V1 = randomized_svd(adjacency_matrix, n_components=2,n_iter=5, random_state=24)
U1.shape = (943,2)
V1.shape = (2,1681)

alpha=0.01
mu = 3.529

value=derivative_db(312,98,4,U1,V1,mu,alpha)

我应该得到答案 = -0.931
,但我得到了一个巨大的数字。
我应该在我的功能中进行哪些更正?

标签: pythonrecommendation-enginesgd

解决方案


你实际上误解了它。尝试使用以下代码,它将适用于您的作业。

def derivative_db(user_id,item_id,rating,U,V,mu,alpha):
    '''In this function, we will compute dL/db_i'''
    db=2*alpha*(b_i[user_id])-2*(rating-mu-b_i[user_id]-c_j[item_id]-np.dot(U[user_id],V[:,item_id].T))
    return db

推荐阅读