【问题标题】:SGD algorithm from scratch to predict movie ratingSGD算法从零开始预测电影评分
【发布时间】:2021-04-27 05:38:56
【问题描述】:

根据这个等式,我必须计算我在下面所做的 w.r.t 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
但我得到了一个巨大的数字。
我应该在我的函数中进行哪些更正?

【问题讨论】:

    标签: python recommendation-engine sgd


    【解决方案1】:

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

    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
    

    【讨论】:

    • 感谢您的回复,现在我知道了,它现在可以工作了
    • @bruce 如果这解决了您的问题,请将其标记为答案,并在其左侧使用绿色复选标记以帮助您自己(+2 代表)和社区(无需查看此问题;它已解决! )!
    【解决方案2】:
    def derivative_db(user_id,item_id,rating,U,V,mu,alpha):
    '''In this function, we will compute dL/db_i'''
       U1 = U[user_id]
       V1 = V.T[item_id]
       a = alpha * 2 *(b_i[user_id]) - 2 * np.sum((rating - mu - b_i[user_id] - c_j[item_id] - np.dot(U1 , V1)))
       return a
    

    【讨论】:

    • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 2015-02-19
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多