Python 从零开始预测电影收视率的SGD算法

Python 从零开始预测电影收视率的SGD算法,python,recommendation-engine,sgd,Python,Recommendation Engine,Sgd,根据这个方程,我必须计算导数w.r.tb,我在下面做了 优化方程 def衍生工具数据库(用户id、项目id、评级、U、V、mu、alpha): ''在此函数中,我们将计算dL/db_i'' 返回(2*alpha*np.sum(user_id))-(2*np.sum((rating-mu-user_id-item_id-np.dot(U,V))) 但是对于这个问题 U1,Sigma,V1=randoming_svd(邻接矩阵,n_分量=2,n_iter=5,randoming_状态=24) U

根据这个方程,我必须计算导数w.r.tb,我在下面做了

优化方程

def衍生工具数据库(用户id、项目id、评级、U、V、mu、alpha):
''在此函数中,我们将计算dL/db_i''
返回(2*alpha*np.sum(user_id))-(2*np.sum((rating-mu-user_id-item_id-np.dot(U,V)))
但是对于这个问题

U1,Sigma,V1=randoming_svd(邻接矩阵,n_分量=2,n_iter=5,randoming_状态=24)
U1.shape=(943,2)
V1.shape=(21681)
α=0.01
mu=3.529
值=导数_db(312,98,4,U1,V1,mu,alpha)
我应该得到答案=-0.931
但是我得到了一个巨大的数字。

我需要对我的函数进行哪些更正?

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

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

谢谢你的回复,现在我得到了它,它正在工作now@bruce如果这解决了您的问题,请将其标记为答案,并在其左侧加上绿色复选框,以帮助您自己(+2个代表)和社区(无需审查此问题;问题已解决!)!