Data Algorithm》读书笔记之十 —— 基于内容的电影推荐

Edwin Chen blog

关联度
1.对于每一个电影A 和B,找出同时对A 和B 评分的所有人。
2.用评分建立一个电影A向量和一个电影B向量
3.计算这两个向量之间的关联度(关联度是一种度量两个电影关联或相关程度的方法)
4.只要一个人看过一个电影,就可以推荐与这个电影关联度最高的电影

MapReduce step 1的输出:
User1 movie1 1 10
User1 movie2 2 20
User1 movie3 3 30

MapReduce step 2的输出:
01.Mapper的输出
User1 <movie1 1 10>
User1 <movie2 2 20>
User1 <movie3 3 30>

02.Reducer的输入
User1 [<movie1 1 10>
,<movie2 2 20>
,<movie3 3 30>]

<movie1,movie2> <1 10 2 20 2 1 4>
<movie1,movie3> <1 10 3 30 3 1 9>
<movie2,movie2> <2 20 3 30 6 4 9>

MapReduce step 3
01.Mapper
输入的数据类型: (tuple2,tuple7)
tuple2 = (movie1,movie2)
tuple7 =(rating1,numOfRateS1,rating2,numOfRateS2,ratingProduct,rating1Squared,rating2Squared)
是一个恒等映射器。

所谓恒等映射器就是接收的键值对 和 发出的键值对是一样的

相似度度量
皮尔逊积矩相关系数、杰卡德相似系数和余弦相似系数。
皮尔逊关联度:
correlation(X,Y) = …
相似度度量算法:
正则关联度
欧氏距离
曼哈顿距离

皮尔逊相关系数广泛用于度量两个变量X和Y之间的相关程度,其值介于-1与1之间。

  • 系数的值为1意味着X和Y可以很好的由直线方程来描述,所有的数据点都很好的落在一条直线上,且Y随着X的增加而增加。
  • 系数的值为−1意味着所有的数据点都落在直线上,且 Y 随着 X 的增加而减少。
  • 系数的值为0意味着两个变量之间没有线性关系

相关系数反映的是变量之间的线性关系和相关性的方向,而不是相关性的斜率,也不是各种非线性关系。

皮尔逊系数是对称的:
corr(X,Y) = corr(Y,X)

重要的数学特性:两个变量的位置和尺度的变化并不引起该系数的改变。即我们如果把 移动到 和把Y移动到 ,其中a、b、c和d是常数,并不会改变两个变量的相关系数(该结论在总体和样本皮尔逊相关系数中都成立)。