1.1.基于用户最近邻推荐的主要思想
基于用户的最近邻推荐(user-based nearest neighbor recommendation)主要思想是:
(1)将输入的评分数据集和当前用户ID作为输入,使用皮尔逊相关系数来表示两个用户之间的相关性,找出与当前用户过去行为历史具有相似行为或者偏好的K个其他用户,这些用户也叫对等用户或者叫最近邻;
(2)计算出当前用户和其他用户的相关性后,对当前用户未购买或者未见过的每个物品,利用用户的K个近邻对物品的评分进行预测,形成物品评分排序表;
(3)选择所需数量且物品评分最高的几个物品推荐给当前用户。
当然基于用户的最近邻推荐算法也有自己使用的前提,那就是如果用户过去有相似的偏好,那么该用户在未来还得会有相似的偏好,也就是用户的偏好不会随着时间变化。在这样的前提下,使用基于用户的最近邻推荐最为合理,推荐效果也会较为满意。
1.2.皮尔逊相关系数
在获取当前用户最近邻的时候不得不涉及到前面提到的皮尔逊相关系数,这个系数是用来求解用户之间相关性的公式,皮尔逊系数(Pearson Correlation Coefficient)表示两个用户之间相关性时,取值范围为[-1,+1],其中-1强负相关,+1表示强正相关,0表示不相关。公式为:

使用皮尔逊相关系数要求两个变量之间的标准差都不能为0,只有这样,该相关系数才有定义。该系数通常使用在以下的变量环境:
(1)两个变量之间是线性关系,并且都是连续的;
(2)两个变量的总体是正太分布的或者是单峰分布;
(3)两个变量的观察值是成对的且每对观测值是相互对立的。
当计算出用户的相关性后,就可以选择出最相似的N个近邻用户计算对物品的评分预测值,也就是说N个近邻用户对物品均有评分值,评分预测公式如下:
1.3.基于用户最近邻推荐案例
例如用户—评分矩阵如下表所示,我们来基于这个评分矩阵计算出小明对于物品F的评分:

(1)首先通过皮尔逊相关系数计算出小明与其他四位用户的相似度数值,由于计算过程是一样的,在这我仅计算小明与小赵之间的相似度,读者感兴趣可自行模仿过程计算小明和其他用户的相似度。
(2)小明的评分均值为=(10+6+8+8)/4 =8,小赵的评分均值
=(6+2+4+6+6)/5 =4.8,可得:
同理可得小明和小李、小王、小张之间的相似度分别为0.71,0.00,-0.89。假设选定N的参数为2,则由相似度数值可知与小明相似度最高的两位分别是小赵和小李,同样可以从折线图中比较直观地观察出相似度情况,折线图如下所示:
因此选取小赵和小李对物品F的评分来预测小明对于物品F的评分值,可得:
2.基于物品最近邻推荐
2.1.基于物品最近邻推荐思想
基于物品的最近邻推荐(item-based nearest neighbor recommendation)的思想是基于物品之间的相似度,而不是基于用户之间的相似度来进行评分值预测。
在基于物品的最近邻推荐算法中通常采用余弦相似度来计算两个物品之间的相似度,相似度取值范围为[0,1],值越接近1,相似度也就越高。当然也可以采用皮尔逊相关系数来计算物品之间的相似度,这就需要将上面用到的皮尔逊相关系数公式里的用户评分均值改为物品评分均值了,计算过程仍是一样的,在这就不赘述了。为考虑用户评分平均值之间的差异性,一般都使用改进余弦相似度公式来计算相似度,通过改进余弦相似度来在评分值中减去平均值,这样使得最终的取值范围跟皮尔逊相关系数的取值范围一致,也为[-1,+1]。改进余弦相似度公式如下:

2.3.基于物品最近邻推荐案例
同样用之前的案例评分矩阵进行计算,为了计算方便,将上述的用户—物品评分矩阵调整成均各自减去均值的评分矩阵,这样就省略一些不必要的计算,便于下面公式的计算,采用均值调整后的用户—评分矩阵如下表所示:

由改进余弦相似度公式可计算物品A和物品F之间的相似度为:

同理可计算出物品F与物品B、物品C、物品D之间的相似度分别为:-0.94,0.35,-0.48。
同样地假设选定参数N为2,则由物品F与各物品之间的相似度数值可知:与物品F相似度最高的两位分别是物品A和物品C,同样可以从折线图中比较直观地观察这几个物品的
相似度情况,折线图如下所示:
因此选取物品A和物品C评分来预测小明对物品F的评分值,可得:
基于协同过滤算法来完成推荐的主要方法就是采用最近邻推荐,最近邻的选择包括最近邻用户(对等用户)和最近邻物品(对等物品),这种方法是最经典、效果是较为稳定的、市面上较为普遍使用的推荐方法。所以,设计任何一个推荐系统都必须要先了解协同过滤算法。至于是基于用户最近邻推荐还是物品最近邻推荐就要看读者使用场景了,主要取决于评分矩阵的稀疏度,选择的评分矩阵越丰富,得到的推荐效果普遍较好。
参考资料:
https://developer.51cto.com/art/202006/619630.htm