将预测评分矩阵分解为用户特征矩阵和项目特征矩阵,预测评分计算式为:
目标函数为:
根据梯度下降计算,参数更新式为:
该算法的Python代码为:
import math
import random
import matplotlib.pyplot as plt
# 求平均值
def Average(fileName):
fi = open(fileName, 'r')
result = 0.0
cnt = 0
for line in fi:
cnt += 1
arr = line.split()
result += int(arr[2].strip())
return result / cnt
# 计算矩阵点积
def InerProduct(v1, v2):
result = 0
for i in range(len(v1)):
result += v1[i] * v2[i]
return result
'''
定义预测评分计算式
参数声明:
av:平均值
bu: 用户评分与用户平均