内核概率矩阵分解-实施?

时间:2018-08-22 16:11:49

标签: python data-science matrix-factorization

我正在尝试实现本文提到的内核化概率矩阵分解。 KPMF Paper。我已经将两个更新函数编码为两个单独的方法。我不知道这是否是正确的实现。有人可以帮助我了解实施是否正确吗?以下是两个功能: enter image description here

 def run_U(self,U,V,R,en,su):
    Uhat = np.zeros(U.shape)
    for i in range(U.shape[0]):
        en.fill(0)
        for z in range(U.shape[1]):
            fty = 0
            en[0,i] = 1
            gty = (en.dot(su)).dot(U[:,z])
            for k in range(len(V)):
                if R[i,k] != 0:
                    fty += (R[i,k] - (U[i,:].dot((V[k,:]).T)))*(V[k,z].T)
                else:
                    fty = 0
            Uhat[i,z] = gty+fty
    return Uhat

def run_V(self,U,V,R,em,sv):
    Vhat = np.zeros(V.shape)
    for i in range(V.shape[0]):
        em.fill(0)
        for z in range(V.shape[1]):
            fty = 0
            em[0,i] = 1
            gty = (em.dot(sv)).dot(V[:,z])
            for k in range(len(U)):
                if R[k,i] != 0:
                    fty += (R[k,i] - (U[k,:].dot((V[i,:]).T)))*(U[k,z].T)
                else:
                    fty = 0
            Vhat[i,z] = gty + fty
    return Vhat 

0 个答案:

没有答案