假定有几团体区分看了如下电影并且给电影有如下评分(5分***,没看过的不评分),咱们目的是要向A用户介绍一部电影:
协同过滤的全体思绪只要两步,十分便捷:寻觅相似用户,介绍电影
寻觅相似用户
所谓相似,其实是关于电影品味的相似,也就是说须要将A与其余几位用户做比拟,判别是不是品味相似。有很多种方法可以用来判别相似性,(与我之前写的K-Means文章中判别两点能否相似的方法是分歧的)这篇文章用“欧几里德距离”来做相似性判定。
咱们把每一部电影看成N维空间中的一个维度,这样每个用户关于电影的评分相当于维度的坐标,那么每一个用户的一切评分,相当于就把用户固定在这个N维空间的一个点上,而后应用欧几里德距离计算N维空间两点的距离:每一个电影的评分求差值,而后求每个差值的平方,而后求平方的和,而后在开平方。距离越短说明品味越凑近。本例中A只看过两部电影(《老炮儿》和《唐人街探案》),因此只能经过这两部电影来判别品味了,那么计算A和其余几位的距离:
而后咱们做一个变换,变换方法为:相似性 =1/(1+欧几里德距离),这个相似性会落在【0,1】区间内,1示意齐全品味一样,0示意齐全品味不一样。这时咱们就可以找到哪些人的品味和A最为凑近了,计算后如下:
相似性:B-0.27,C-0.28,D-0.27,E-0.50,F-0.25,G-0.47
可见,E的口味与A最为凑近,其次是G
介绍电影
要做电影加权评分介绍。意思是说,品味相近的人关于电影的评估对A选用电影来说愈减轻要,详细做法可以列一个表,计算加权分:
把相似性和关于每个电影的实践评分相乘,就是电影的加权分
加权后,还要做大批的计算:总分是每个电影加权分的总和,总相似度是对这个电影有评分的人的相似性综合,介绍度是总分/总相似性,目的是扫除看电影人数关于总分的影响
论断在最终一行,就是电影的介绍度(由于是依据品味相反的人打分加权算出的分,可以近似以为假设A看了这部电影,预期的评分会是多少)。
有了电影的加权得分,通常做法还要设定一个阈值,假设超越了阈值再给用户介绍,要不怎样介绍都是烂片,假设这里咱们设置阈值为4,那么最终介绍给A的电影就是《寻龙诀》。
咱们如今的做法是向用户介绍电影。当然还可以从另外角度来思索:假设咱们把一开局的评分表的行列互换,其余环节都不变,那么就变成了把电影介绍给适合的受众。因此,要依据不同场景选用不同的思索维度。