1.1_用户偏好的计算
2020-11-21 本文已影响0人
蓝冻
计算用户偏好,也即计算前文所述的这些系数。
假设用户历史评分文件是一个 m 乘 n 的矩阵R,其中 m 表示用户的个数。R中某些位置的值为空,意味着对应的用户与物品之间没产生过联系。
首先,对某一用户A,我们需要计算一下他的平均打分值 p ,后面要用。以电影评分为例,即把他所给出的电影评分值累加,再除以他所评价过的电影数目。如果用户A对应着矩阵R的第一行,则相当于把矩阵R第一行中的非空值进行累加,再除以非空值的数目。(预告:如果物品数非常多,而用户A评价过的电影数却很少,即历史评分文件对应的矩阵R非常稀疏,在这种矩阵计算过程中我们却不得不把所有物品给遍历一次,这样计算量很大,有什么方法对计算过程进行优化吗?)
其次,计算用户A对某一属性的系数,例如属性①。对所有属性进行遍历,就可以得到用户A的偏好了。我们先看一下对一个属性的系数是如何计算的。
执行对某一属性对应的系数的计算,还是离不开该用户对物品的评分数据。以电影评分为例,假设属性①的取值只能为 0 或 1 ,则我们需要筛选出在该用户评分过的电影中,属性①取值为 1 的那些电影,假设数目为 k 。则该用户对于属性①的系数为:
其中,表示该用户对筛选出的 k 部电影中的第 i 部的评分。
最后,我们遍历所有用户,就得到了所有用户的偏好矩阵 S 了。S 的维度是 m 乘 v ,v 表示所有属性的数目。
我们可以写一个函数来实现这篇文章所述的功能。
思考,倘若某些属性的取值为连续数值,而不是 0 和 1 ,那么我们该如何计算这些系数呢?