常见的相似或相异程度计算方法

如何衡量数据点之间的相似或相异程度是聚类算法的基础问题,会直接影响聚类分析的效果,最直观的方法是使用距离函数或者相似性函数。

常见的相似或相异程度计算方法。

1.计算公式

1.Minkowski distance

很多距离计算方法都可以归结为基于向量p范数的距离,即Minkowski distance。

dij=(sumsh=1|xihxjh|p)1/pdij=(sumh=1s|xihxjh|p)1/p

2.Euclidean distance

参数p = 2,Minkowski distance退化为Euclidean distance,使用Euclidean distance的聚类算法大多只能发现低维空间中呈超球分布的数据,并且对数据集中的噪声比较敏感。

dij=(sumsh=1|xihxjh|2)1/2dij=(sumh=1s|xihxjh|2)1/2

3.City-block distance

参数p = 1,Minkowski distance演变为City-block distance,City-block distance可以有效提高模糊聚类算法对噪声或者孤立点的鲁棒性。

dij=sumsh=1|xihxjh|dij=sumh=1s|xihxjh|

4.Sup distance

参数p = 无穷,Minkowski distance演变为Sup distance。

dij=maxh|xihxjh|dij=maxh|xihxjh|

5.Cosine similarity

sij=xTixj||xi||||xj||sij=xiTxj||xi||||xj||

6.Mahalanobis distance

Mahalanobis distance为原特征空间中的数据在线性投影空间欧式距离,使用Mahalanobis distance能够使得聚类算法成功发现数据集里成超椭球型分布的类簇,但是Mahalanobis distance会带来较大的计算量。

dij=(xixj)TS1(xixj)dij=(xixj)TS1(xixj)

7.Alternative distance

Alternative distance对数据集里的噪声不敏感。

dij=1exp(β||xixj||2)dij=1exp(β||xixj||2)

8.Feature weighted distance

dij=(sumsh=1wah|xihxjh|)1/2dij=(sumh=1swha|xihxjh|)1/2

2.代码

代码,

import numpy as np
a = np.array([1,2,3,4])
b = np.array([4,3,2,1])print aprint b#Euclidean distancedistEu = np.sqrt(np.sum((a-b)**2))print "Euclidean distance = ",distEu#City-block distancedistCb = np.sum(np.abs(a-b))print "City-block distance = ",distCb#Sup distancedistSup = max(np.abs(a-b))print "Sup distance = ",distSup#Cosine similaritycosineSimi = np.dot(a,b) / (np.sqrt(np.sum(a**2)) * np.sqrt(np.sum(b**2)))print "Cosine similarity = ",cosineSimi#Alternative distancebeta = 0.5distAlter = 1 - np.exp(-beta * np.sqrt(np.sum((a - b)**2)))print "Alternative distance = ",distAlter#Feature weighted distanceweigh = np.array([0.5,0.3,0.1,0.1])
distFea = np.sqrt(np.dot(weigh,np.abs(a-b)))print "Feature weighted distance = ",distFea

输出,

[1 2 3 4]
[4 3 2 1]Euclidean distance =  4.472135955City-block distance =  8Sup distance =  3Cosine similarity =  0.666666666667Alternative distance =  0.89312207434Feature weighted distance =  1.48323969742
时间: 2024-10-13 13:12:40

常见的相似或相异程度计算方法的相关文章

POJ 3764 The xor-longest Path ( 字典树应用—— 求连续段相异或最大最小的线性算法)(好题)

题意:已知:给出n个结点的树,定义:两结点间的权值为两点之间所有边相异或的值.求:树中的某两点间的最大权值. 思路:先说简单一点的题:有道CowXor,是一串线性序列,求某连续段异或的最大值,这题的思路是先求前i项序列相异或的值Si,所以x到y的连续异或就是Sx^Sy ,因为a^b = (a ^ c) ^ (b ^ c). 这题同样是这个思路把线性拓展到树上,先求任何点到某一定点的连续异或值,比如选根结点0,所以这时候有两种情况,1.x,y的路径通过了根结点,显然正确.2.x,y的路径不通过根结

Java与C++相异的地方

继承标识:Java使用extends/implement,C++使用: super:调用父类的某些东西 instanceof:RTTI机制(A is instanceif B) final:类似于C++中的const,static 区别001:extends and implement implement-->描述的是Class与Interface的关系 extends-->描述的是Class与Class的关系 区别002:abstract class and interface (1)抽象类

灰色系统理论与应用

现实生活中的很多实际问题的内部结构,参数以及特征等并不是完全已知的,人们只能根据思维逻辑推断来构造模型研究.这种部分信息已知而部分信息未知的系统被称为灰色系统.作为实际问题的研究,灰色系统是最为常见,本文主要围绕灰色系统展开一系列的学习. 一 灰色系统概述 1.灰色系统 听到灰色系统,相信大家肯定会想为什么要是“灰色”系统,那是不是也有个白色.黑色系统?对,确实如此,白色系统用来指那些信息完备,发展变化规律明显,定量描述较方便,结构和参数较具体的系统:对应的黑色系统就是那些内部结构完全未知的系统

k-means聚类学习

4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法.聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例.本文首先介绍聚类的基础——距离与相异度,然后介绍一种常见的聚类算法——k均值和k中心点聚类,最后会举一个实例:应用聚类方法试

K均值聚类--利用k-means算法分析NBA近四年球队实力

分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法.聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例.本文首先介绍聚类的基础--距离与相异度,然后介绍一种常见的聚类算法--k-means算法,并利用k-means算法分析NBA近四年球队实力.因为本人比较喜欢观看NBA比赛,所以用这

k-means均值聚类算法(转)

4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法.聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例.本文首先介绍聚类的基础——距离与相异度,然后介绍一种常见的聚类算法——k均值和k中心点聚类,最后会举一个实例:应用聚类方法试

机器学习六--K-means聚类算法

想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,想想如果给你50个G这么大的文本,里面已经分好词,这时需要将其按照给定的几十个关键字进行划分归类,监督学习的方法确实有点困难,而且也不划算,前期工作做得太多了. 这时候可以考虑使用聚类算法,我们只需要知道这几十个

读书笔记-基于IP的物联网架构技术与应用

最近在看<基于IP的物联网架构,技术与应用>这边书,将自己的读书笔记,记录于此. 一.什么是智能物件? 定义:智能物件是装备了传感器,微处理器,通信装置和电源的设备. 重要属性:与现实世界的交互 和 通信能力 面临挑战: 节点级挑战:能耗.体积大小.成本.资源限制,电源效率,计算能力 网络级挑战:规模大数据量多,网络大小影响(smart object networks)的路由协议设计.路由可以集中生成,即由一个中央服务器为整个网络计算路由图,也可以是分布式的,即每个节点独立决定每条消息发送到哪

理解机器学习算法的一点心得

从Andrew ng的公开课开始,机器学习的算法我接触到的也越来越多,我觉得机器学习算法和传统算法的最大不同就是:不会要求一个问题被100%求解,也就意味着不会有完美的解法,这也是著名的"Essentially, all models are wrong, but some are useful."所表达的意思.正因为如此,机器学习算法往往不会有一个固定的算法流程,取而代之的把问题转化为最优化的问题,无论是ML(maximum likelihood),MAP(Maximum a Pos