首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

机器学习中的相似性度量(2)

机器学习中的相似性度量(2)

5. 标准化欧氏距离 (Standardized Euclidean distance )
  (1)标准欧氏距离的定义
  标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:
  而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是:

  标准化后的值 =  ( 标准化前的值  - 分量的均值 ) /分量的标准差
  经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:

  如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)
  (2)Matlab计算标准化欧氏距离
  例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1)
  X = [0 0 ; 1 0 ; 0 2]
  D = pdist(X, 'seuclidean',[0.5,1])
  结果:
  D = 2.0000    2.0000    2.8284


6. 马氏距离(Mahalanobis Distance)
  (1)马氏距离定义
       有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:

       而其中向量Xi与Xj之间的马氏距离定义为:

       若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:

  也就是欧氏距离了。
  若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。
  (2)马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。
  (3) Matlab计算(1 2),( 1 3),( 2 2),( 3 1)两两之间的马氏距离
  X = [1 2; 1 3; 2 2; 3 1]
  Y = pdist(X,'mahalanobis')
  结果:
  Y = 2.3452    2.0000    2.3452    1.2247    2.4495    1.2247
7. 夹角余弦(Cosine)
  有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
  (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:

  (2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
  类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。

  即:

  夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
  夹角余弦的具体应用可以参阅参考文献[1]。
  (3)Matlab计算夹角余弦
  例子:计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦
  X = [1 0 ; 1 1.732 ; -1 0]
  D = 1- pdist(X, 'cosine')  % Matlab中的pdist(X, 'cosine')得到的是1减夹角余弦的值
  结果:
  D = 0.5000   -1.0000   -0.5000
8. 汉明距离(Hamming Distance)
  (1)汉明距离的定义
  两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
  应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。
  (2)Matlab计算汉明距离
  Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。
  例子:计算向量(0,0)、(1,0)、(0,2)两两间的汉明距离
  X = [0 0 ; 1 0 ; 0 2];
  D = PDIST(X, 'hamming')
  结果:
  D = 0.5000    0.5000    1.0000
9. 杰卡德相似系数(Jaccard similarity coefficient)
  (1) 杰卡德相似系数
  两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。

  杰卡德相似系数是衡量两个集合的相似度一种指标。
  (2) 杰卡德距离
  与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:

  杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
  (3) 杰卡德相似系数与杰卡德距离的应用
  可将杰卡德相似系数用在衡量样本的相似度上。
  样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。
  p :样本A与B都是1的维度的个数
  q :样本A是1,样本B是0的维度的个数
  r :样本A是0,样本B是1的维度的个数
  s :样本A与B都是0的维度的个数
  那么样本A与B的杰卡德相似系数可以表示为:
  这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
而样本A与B的杰卡德距离表示为:

  (4)Matlab 计算杰卡德距离
  Matlab的pdist函数定义的杰卡德距离跟我这里的定义有一些差别,Matlab中将其定义为不同的维度的个数占“非全零维度”的比例。
  例子:计算(1,1,0)、(1,-1,0)、(-1,1,0)两两之间的杰卡德距离
  X = [1 1 0; 1 -1 0; -1 1 0]
  D = pdist( X , 'jaccard')
  结果
  D = 0.5000    0.5000    1.0000
继承事业,薪火相传
返回列表