import numpy as np
1.模型实现
"""
input
rate_matrix: M行N列 的评分矩阵,值为P*Q.
P: 初始化用户特征矩阵M*K.
Q: 初始化物品特征矩阵K*N.
latent_feature_cnt: 隐特征的向量个数
max_iteration:最大迭代次数
alpha:步长
lamda:正则化系数
output
分解之后的P和Q
"""
def LFM_grad_desc(rate_matrix, latent_feature_cnt = 5, max_iteration=3000, alpha=0.0002, lamda=0.004):
row_count = len(rate_matrix)
collumn_count = len(rate_matrix[0])
P = np.random.rand(row_count, latent_feature_cnt)
Q = np.random.rand(collumn_count, latent_feature_cnt)
Q_T = Q.T
for step in range(max_iteration):
for i in range(row_count):
for j