Spark MLlib 笔记

RDD

RDD可以看成一个简单的“数组”,对其进行 操作也只需要调用有限的数组中的方法即可。

它与一般数组的区别在 于:RDD是分布式存储,可以更好地利用现有的云数据平台,并在内存中运行。

RDD是Resilient Distributed Datasets的简称,翻译成中文为“弹性分布式数据集”,

这个语义揭示了RDD实质上是存储在不同节点计算机中 的数据集。

分布式存储最大的好处是可以让数据在不同的工作节点上并 行存储,

以便在需要数据的时候并行运算,从而获得最迅捷的运行效率。

RDD工作原理图

RDD可以将其看成一个分布在不同节点 中的分布式数据集,并将数据以数据块(Block)的形式存储在各个节点的计算机中,

整体布局如图3-2所示。

RDD的相互依赖

协同过滤算法

协同过滤(Collaborative Filtering)算法是一种基于群体用户或者物 品的典型推荐算法,

也是目前常用的推荐算法中最常用和最经典的算法。

可以这么说,协同过滤算法的确认就是标准推荐算法作为一种可行 的机器推荐算法标准步入正轨。

协同过滤算法主要有两种:

  • 通过考察具有相同爱好的用户对相同物品的评分标准 进行计算;
  • 考察具有相同特质的物品从而推荐给选择了某件物品 的用户。

总体来说,协同过滤算法就是建立在基于某种物品和用户之间相互 关联的数据关系之上。

基于用户的推荐

对于基于用户相似性的推荐,用简单的一个词表述,那就是“志趣相投”。

基于物品的推荐

“物以类聚”

相似度度量

基于欧几里得距离的相似度计算

欧几里得距离(Euclidean distance)是最常用计算距离的公式,它 表示三维空间中两个点的真实距离。

欧几里得相似度计算是一种基于用户之间直线距离的计算方式。

在 相似度计算中,不同的物品或者用户可以将其定义为不同的坐标点,而 特定目标定位为坐标原点。

使用欧几里得距离计算两个点之间的绝对距离,公式如下:

补充:

由于在欧几里得相似度计算中,最终数值的大小与相似 度成反比,

因此在实际应用中常常使用欧几里得距离的倒数作为相似度值,即1/d+1作为近似值。

从公式可以看到,作为计算结果的欧式值显示的是两点之间的直线 距离,

该值的大小表示两个物品或者用户差异性的大小,即用户的相似 性如何。

如果两个物品或者用户距离越大,则可以看到其相似度越小, 距离越小则相似度越大。

来看一个例子,表5-1是一个用户与其他用户 打分表:

如果需要计算用户1和其他用户之间的相似度,通过欧几里得距离 公式可以得出:

参考

感谢帮助!

  • Spark MLlib机器学习实践(第2版)