SVD算法python实现
之前看到一篇实现SVD算法的blog,但是实现方法没有用到矩阵。为了更直观简便高效的实现SVD算法,在这里基于numpy重新写了一遍。
原blog转载较多,已经找不到原作者了,参考以下地址:
http://blog.csdn.net/recsysml/article/details/12287513
这里用到的算法是优化下面这个目标函数:
代码如下:
参数: mat - 输入矩阵, feature - latent factor数量
def svd(mat, feature, steps=500, gama=0.02, lamda=0.3):
slowRate = 0.99
preRmse = 1000000000.0
nowRmse = 0.0
user_feature = numpy.matrix(numpy.random.rand(mat.shape[0], feature))
item_feature = numpy.matrix(numpy.random.rand(mat.shape[1], feature))
for step in range(steps):
rmse = 0.0
n = 0