Mahout聚类中距离度量

Mahout聚类中距离度量

7.4 Exploring distance measures(距离度量扩展)

在上面的简单聚类示例中,我们用的是EuclideanDistanceMeasure(欧式距离)来计算点之间的距离。虽然它在我们上节的聚类实例中被证明是有效的度量方法,但在Mahout包中还有其他相似的度量方法实现。这些类被命名为 DistanceMeasure(距离度量) 的实现,计算两个向量之间定义的距离。距离短意味着两向量相似性高,反之距离短意味着相似度低,相似性和距离是相关的概念。

7.4.1 欧几里德距离度量
欧氏距离,是所有距离度量方法中最简单的。这是最直观,最符合我们的“距离”的正常的理念。例如,给定的两点在一个平面上,欧几里德距离度量可以用一把尺子来衡量它们之间的距离计算。在数学上,两个n维向量的欧几里德距离公式如下:

Mahout中用EuclideanDistanceMeasure这个类来实现这个距离

7.4.2 平方的欧几里德距离度量
顾名思义,这个距离测量的值就是欧几里德距离度量的返回值的平方。其n维向量的计算距离公式如下:

Mahout中用SquaredEuclideanDistanceMeasure这个类来实现这个距离

7.4.3 曼哈顿距离度量
不同于欧几里得距离,曼哈顿距离度量下,任意两点之间的距离是其坐标的绝对差异的总和。图7.6比较在XY平面上的两个点之间的欧氏距离和曼哈顿距离。这个距离测量的名字来源于曼哈顿的街道网格布局。任何一个新的纽约客知道,你不能从第二大道的第二街直通建筑物步行到第六大道的第六街。真正的步行距离会比4*4块多,在数学上,两个n维向量的曼哈顿距离公式如下:

Mahout中用ManhattanDistanceMeasure这个类来实现这个距离

7.4.4 余弦距离度量
余弦距离要求我们把点当作向量来看,在这些向量之间有一个夹角,如图7.7所示

当这个角度很小的时候,矢量在某种程度上指向同一方向,因此在一定意义上这些点是“关闭”的。余弦距离计算这个角度的余弦,其中余弦值接近1表示角度很小,余弦值减小表示角度会越来越大。为了给一个适当的距离,这是0,它减去1的余弦值时关闭和更大另有。

两个n维向量的余弦距离公式如下:

请注意,这跟两个向量的长度并没有关系,所有点的起始都在同一方向。还要注意的是余弦距离测量范围从0.0(沿同一方向的两个向量)至2.0(沿相反方向的两个向量)。Mahout中CosineDistanceMeasure这个类来实现这个距离

7.4.5 Tanimoto距离度量
余弦距离不考虑向量的长度,这对某些数据集可能很合适,但对长度上含有价值信息的向量聚类就不合适。例如,考虑三个向量(1.0,1.0),B(3.0,3.0)和C(3.5,3.5)。尽管他们在指向同一个方向,任何两个向量的余弦??距离都是0.0。余弦距离捕获不到B和C在一定意义上更接近的信息。欧几里德距离度量将反映这一点,但它又没有考虑向量之间的角度,事实上它们是在同一方向上的。有时候我们想要的是两个信息都能被反映出来的距离。
Tanimoto距离又称Jaccard的距离测量,能捕捉角度和点之间的相对距离有关的信息。两个n维向量的余弦距离公式如下:

7.4.6 加权距离度量
Mahout还提供了WeightedDistanceMeasure类,用欧几里德距离和曼哈顿距离实现。加权距离度量是Mahout的高级特征,它能让你在不同维上赋予不同的权重,以此对距离度量信息产生影响,WeightedDistanceMeasure在向量格式化中需要序列化为文件。

例如,当在XY平面上计算点之间的距离时,假设我们希望x坐标的值是两倍值,则所有的x值需要增加一倍。为了做一个加权距离测量,我们将构建一个在x方向为2.0而y方向为1.0的权重向量。这两维对距离的影响是不同的,距离值一般会因x值的变化而更敏感。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值