距离和相似度度量
- 格式:docx
- 大小:55.91 KB
- 文档页数:4
KNN算法在机器学习领域中被广泛应用,它是一种监督学习算法,用于分类和回归。
KNN算法的核心思想是基于已知类别的数据集,通过测量新数据点与已知类别数据点之间的距离来进行分类。
在KNN算法中,常用的距离度量有欧氏距离和余弦相似度。
在本文中,我们将深入探讨这两种距离度量的特点和应用,以便更好地理解它们在KNN算法中的作用。
1. 欧氏距离欧氏距离是最常见的距离度量方式之一,它衡量的是两个点之间的直线距离。
在二维空间中,欧氏距离的计算公式为:\[d(x,y) = \sqrt{(x1-y1)^2 + (x2-y2)^2}\]其中,\(x\)和\(y\)分别是两个点的坐标,\(x1\)和\(y1\)是\(x\)和\(y\)的第一个维度的坐标,\(x2\)和\(y2\)是\(x\)和\(y\)的第二个维度的坐标。
2. 余弦相似度余弦相似度是衡量两个向量方向的夹角的相似程度,它不考虑向量的大小。
在KNN算法中,常用余弦相似度来衡量特征向量之间的相似程度。
余弦相似度的计算公式为:\[similarity = \frac{A \cdot B}{||A|| \times ||B||}\]其中,\(A\)和\(B\)分别是两个特征向量,\(A \cdot B\)是\(A\)和\(B\)的点积,\(||A||\)和\(||B||\)分别是\(A\)和\(B\)的范数。
3. 欧氏距离和余弦相似度的比较欧氏距离和余弦相似度在KNN算法中的作用略有不同。
欧氏距离更适用于数值型特征,它能够更好地反映不同特征之间的绝对距离。
而余弦相似度更适用于文本分类、推荐系统等领域,它能够更好地反映特征向量之间的相对方向。
4. 个人观点和理解在实际应用中,选择欧氏距离还是余弦相似度取决于数据的特征和具体情况。
在处理数值型特征时,欧氏距禿更能反映特征之间的绝对距离,更适合于KNN算法的分类。
而在处理文本分类、推荐系统等领域时,余弦相似度能更好地反映特征向量之间的相对方向,更适合于KNN算法的应用。
欧几里得相似度和欧式距离是在数学和计算机科学领域经常被用到的概念。
它们的相关性在数据分析、机器学习和图像处理等领域中发挥着重要作用。
本文将对欧几里得相似度和欧式距离的概念进行介绍,并探讨它们之间的正比关系。
一、欧几里得相似度的概念和应用1. 欧几里得相似度(Euclidean similarity)是指在多维空间中两个向量之间的相似程度。
它通常用于衡量两个向量之间的相似性或相异性,是一种常用的相似性度量方法。
2. 欧几里得相似度的计算公式为:\[similarity = \frac{1}{1 + distance}\]其中,distance表示两个向量之间的欧式距离。
3. 欧几里得相似度在数据挖掘和信息检索中有着广泛的应用。
在文本分类和推荐系统中,可以利用欧几里得相似度来衡量文档或用户之间的相似性,从而进行相关性分析和推荐。
二、欧式距离的概念和计算方法1. 欧式距离(Euclidean distance)是指在多维空间中两点之间的直线距离。
它是最常用的距离度量方法之一,在数学和计算机科学领域都有广泛的应用。
2. 欧式距离的计算公式为:\[distance = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}\]其中,\(x_i\)和\(y_i\)分别表示两个向量的第i个分量。
3. 欧式距离在数据挖掘、图像处理和模式识别等领域中被广泛应用。
在聚类算法中,可以利用欧式距离来衡量不同样本之间的相异性,从而进行聚类分析。
三、欧几里得相似度与欧式距离的正比关系1. 欧几里得相似度和欧式距离之间存在着正比关系。
从上文中可以看出,欧几里得相似度的计算公式中包含了欧式距离的倒数。
也就是说,当两个向量之间的欧式距离越小,它们之间的相似度越大,反之亦然。
2. 举例说明:假设两个向量A和B之间的欧式距离为1,那么它们之间的欧几里得相似度为0.5。
如果将A向量与一个其他向量C进行比较,发现A与C之间的欧式距离为2,即A与C之间的相异程度更大,这也意味着A与C之间的欧几里得相似度为0.333,更小于A与B之间的相似度。
简述聚类方法的基本原理聚类方法是一种将数据分为若干组或簇的无监督学习方法。
其基本原理是通过计算数据之间的相似度或距离来确定数据之间的关系,并将相似的数据归为一类。
聚类方法可以帮助我们发现数据中的隐藏模式和结构,用于数据挖掘、模式识别和数据分析等领域。
本文将介绍聚类方法的基本原理和常用的算法。
聚类方法的基本原理可以归纳为以下几点:1. 相似度度量:聚类方法首先需要确定数据之间的相似度或距离。
相似度度量可以采用欧氏距离、曼哈顿距离、余弦相似度等方法。
这些度量方法用于衡量数据之间的相似程度,相似度越高则数据彼此越相似。
2. 簇中心初始化:聚类方法通常需要初始化一些簇中心,作为聚类的起始点。
常用的初始化方法有随机选择、均匀分布和采样等。
3. 簇分配:接下来,聚类方法将数据对象分配给最接近的簇中心。
一般而言,距离簇中心最近的数据将被归为该簇。
4. 簇更新:在完成数据分配后,聚类方法将更新簇中心以更好地代表该簇的数据。
常用的更新方法是计算簇内数据的均值或中心点作为新的簇中心。
5. 迭代过程:聚类方法通常需要进行多次迭代,直到收敛为止。
在每次迭代中,簇分配和簇更新的过程都会重复执行。
聚类方法有许多不同的算法,以下是常见的聚类算法:1. K-means算法:K-means算法是最常用的聚类算法之一。
它通过将数据分为K个簇,并在每次迭代中更新簇中心来实现聚类。
K-means算法的思想是最小化数据点与彼此所属簇中心的距离之和,从而使得簇内数据足够紧密,簇间数据尽可能分开。
2. 层次聚类算法:层次聚类算法是一种基于树状结构的聚类方法。
它通过不断地合并或分割簇来实现聚类。
层次聚类算法可以分为凝聚层次聚类和分裂层次聚类两种类型。
凝聚层次聚类从每个数据点开始,逐步合并最相似的簇,直到形成一个完整的层次结构。
分裂层次聚类从所有数据点作为一个簇开始,逐步分裂最不相似的簇,直到形成一个完整的层次结构。
3. 密度聚类算法:密度聚类算法基于数据点的密度来进行聚类。
欧式距离度量相似度
欧式距离度量相似度是一种常用的度量两个向量之间相似度的方法。
欧式距离是基于欧几里德几何中的距离概念而衍生出来的。
对于欧式距离度量相似度,首先计算两个向量之间的欧式距离,
公式如下:
d(x, y) = √sum((x_i - y_i)^2)
其中,x和y分别代表两个向量,x_i和y_i分别代表向量x和y 的第i个元素。
然后,将欧式距离转换为相似度,一种常用的方法是通过取倒数
得到相似度分数:
similarity = 1 / (1 + d(x, y))
相似度分数越接近于1,表示两个向量越相似;相似度分数越接
近于0,表示两个向量越不相似。
欧式距离度量相似度的优点是容易理解和计算,而且在很多应用
中都取得了良好的效果。
然而,它也有一些缺点,比如对于高维稀疏
数据的相似度计算可能不准确,因为欧式距离会受到维度之间的差异
影响。
欧式距离还要求特征空间是线性的,而在某些非线性的情况下,欧式距离可能无法准确度量相似度。
在实际应用中,需要根据具体情
况选择合适的相似度度量方法。
机器学习中距离和相似性度量方法距离和相似性度量是机器学习中一种重要的数学工具,用于衡量数据集中样本之间的相似性或差异。
在许多机器学习算法中,距离和相似性度量方法被广泛应用于分类、聚类、降维等任务中,帮助机器学习模型更好地理解和处理数据。
下面将介绍一些常见的距离和相似性度量方法。
1. 欧几里得距离(Euclidean distance):欧几里得距离是最常用的距离度量方法之一,用于计算两个向量之间的直线距离。
对于两个n维向量x和y,欧几里得距离可以表示为:d(x, y) = sqrt((x1-y1)^2 + (x2-y2)^2 + ... + (xn-yn)^2)2. 曼哈顿距离(Manhattan distance):曼哈顿距离是另一种常见的距离度量方法,用于计算两个向量之间的路径距离。
对于两个n维向量x和y,曼哈顿距离可以表示为:d(x, y) = ,x1-y1, + ,x2-y2, + ... + ,xn-yn3. 闵可夫斯基距离(Minkowski distance):闵可夫斯基距离是欧几里得距离和曼哈顿距离的推广,可以根据参数p的不同取值决定使用欧几里得距离还是曼哈顿距离。
对于两个n维向量x和y,闵可夫斯基距离可以表示为:d(x, y) = ((,x1-y1,^p) + (,x2-y2,^p) + ... + (,xn-yn,^p))^1/p4. 切比雪夫距离(Chebyshev distance):切比雪夫距离是曼哈顿距离的推广,用于计算两个向量之间的最大绝对差距。
对于两个n维向量x和y,切比雪夫距离可以表示为:d(x, y) = max(,x1-y1,, ,x2-y2,, ..., ,xn-yn,)5. 余弦相似度(Cosine similarity):余弦相似度是一种广泛用于文本和稀疏数据的相似性度量方法。
对于两个n维向量x和y,余弦相似度可以表示为:sim(x, y) = (x·y) / (,x,*,y,)其中,x·y表示向量x和y的点积,x,和,y,表示向量x和y的范数。
聚类使用距离相似度聚类是一种常用的数据分析技术,通过将具有相似特征的数据点分组,将数据点划分为不同的类别。
在聚类过程中,距离相似度是一个重要的概念,它用于确定数据点之间的相似程度。
本文将介绍聚类使用距离相似度的原理和应用。
一、距离相似度的概念距离相似度是衡量两个数据点之间的相似程度的指标。
常用的距离相似度度量方法有欧氏距离、曼哈顿距离、余弦相似度等。
1. 欧氏距离(Euclidean Distance)是最常用的距离度量方法,它表示两个数据点之间的直线距离。
欧氏距离的计算公式为:d(x,y) = √((x1-y1)²+(x2-y2)²+...+(xn-yn)²)。
2. 曼哈顿距离(Manhattan Distance)是指两个数据点在坐标系上的绝对轴距之和。
曼哈顿距离的计算公式为:d(x,y) = |x1-y1|+|x2-y2|+...+|xn-yn|。
3. 余弦相似度(Cosine Similarity)用于衡量两个向量的相似性。
余弦相似度的计算公式为:cosθ = A·B / (||A|| ||B||),其中A和B分别表示两个向量。
聚类使用距离相似度的原理是基于数据点之间的相似性来进行分组。
在聚类算法中,首先需要选择一个合适的距离相似度度量方法。
然后,通过计算数据点之间的距离相似度,将相似度较高的数据点划分到同一类别中。
常用的聚类算法有K-means算法、层次聚类算法、DBSCAN算法等。
这些算法在聚类过程中都会使用距离相似度作为数据点之间的相似性度量。
K-means算法是一种迭代的聚类算法,它将数据点分为K个不同的类别。
在K-means算法中,首先需要随机选择K个初始聚类中心,然后根据距离相似度将数据点分配到离其最近的聚类中心。
接下来,重新计算每个聚类的中心点,并重复以上步骤,直到聚类中心不再发生变化为止。
层次聚类算法是一种自底向上的聚类算法,它通过计算数据点之间的距离相似度来构建一个层次化的聚类树。
数据挖掘中的度量方法在数据挖掘中,我们经常需要知道个体间差异的大小,进而进行分类或聚类。
相似度是描述两个个体数据的相似性,在数据挖掘中常用距离进行度量:距离近代表相似度高,相反距离远表示相似度低。
相似性是主观的而且十分依赖具体的领域和应用。
例如,两个人是因为他们姓氏相同而相似还是因为他们居住在同一座城市里而相似?相似性度量方法众多,但是没有任何一种方法能够度量所有数据,因此,根据不同的数据特性选择不同的度量方法显得尤为重要,对发掘出的数据内在联系影响极大。
接下来我们将列举一些数据挖掘中用距离度量的相似性度量方法,一般定义一个距离函数d(x, y),需要满足以下四个基本原则:到自己的距离为0:d(x, x) = 0。
距离非负:d(x, y) >= 0。
对称性:d(x, y) = d(y, x)。
三角形法则:d(x, z) + d(z, y) >= d(x, y)。
1. 闵可夫斯基距离(Minkowski distance )闵可夫斯基距离(Minkowski distance )是衡量数值点之间距离的一种非常常见的方法,假设数值点 P 和 Q 坐标如下:1212(,,...,),(,,...,)n n n P x x x Q y y y ==∈则P 和Q 之间的闵可夫斯基距离为:1/1p n p md i i i D x y =⎛⎫=- ⎪⎝⎭∑其中p=2时表示欧几里得距离(Euclidean distance ),p=1时表示曼哈顿距离(Manhattan distance )。
如图1所示,假设在曼哈顿街区乘坐出租车从 P 点到 Q 点,白色表示高楼大厦,灰色表示街道,绿色的斜线表示欧几里得距离,在现实中是不可能的。
其他三条折线表示了曼哈顿距离,这三条折线的长度是相等的。
而当p 趋近于无穷大时,上式则转化为切比雪夫距离(Chebyshev distance ),取极限有:1/11lim max p n np i i i i p i i x y x y →∞==⎛⎫-=- ⎪⎝⎭∑图1 欧几里得距离与曼哈顿距离示例闵可夫斯基距离比较直观,但是它与数据的分布无关,具有一定的局限性,如果 x 方向的幅值远远大于 y 方向的值,这个距离公式就会过度放大 x 维度的作用。
相似度度量方法
相似度度量方法主要有:
1. 相关系数:衡量变量之间的接近程度。
2. 相似系数:衡量样品之间的接近程度。
对于定性数据,可以用样本的匹配系数、一致度等来衡量样品之间的接近程度。
3. 欧式距离:最不需要多解释的相似度度量基础。
4. 闵可夫斯基距离:p=1是曼哈顿距离,p=2是欧式距离,p→∞是切比雪夫距离。
5. 标准化的欧式距离。
6. 加权的欧式距离(weighted Euclidean similarity)。
7. 余弦相似度(Cosine similarity):用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小,相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
8. 杰卡得相似系数(Jaccard similarity):主要用于计算符号度量或布尔值度量的个体间的相似度。
9. 皮尔森相关系数(Pearson Correlation Coefficient):通过Peason相关系数来度量两个用户的相似性。
可以根据数据类型、需求等选择合适的相似度度量方法。
相似度度量之后准备进攻推荐算法,今天先从相似度度量开始。
总结了一下在机器学习时候用的所有用到的相似度度量以及使用代码,后续还会继续更新。
所介绍的相似度如下:1. 欧氏距离2. 曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离5. 标准化欧氏距离6. 马氏距离7. 夹角余弦8. 汉明距离9. 杰卡德距离 & 杰卡德相似系数10. 相关系数 & 相关距离11. 信息熵曼哈顿距离曼哈顿距离也叫出租车距离,用来标明两个点在标准坐标系上的绝对轴距总和。
公式如下:想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。
实际驾驶距离就是这个“曼哈顿距离”。
而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。
欧氏距离和曼哈顿距离的区别在于:它们对向量之间差异的计算过程中,各个维度差异的权值不同。
比如两个向量A(1,2),B(4,8),它们的:欧氏距离 L_o = 6.7;曼哈顿距离 L_m = 9;向量各个属性之间的差距越大,则曼哈顿距离越接近欧式距离。
### 曼哈顿距离# 计算两点之间的距离def ManhattanDist(A,B):return sum(abs(A-B))# return math.sqrt(sum([(a - b)**2 for (a,b) in zip(A,B)]))X = np.array([1,2,3,4])Y = np.array([3,3,2,7])print(ManhattanDist(X,Y))欧氏距离欧氏距离就是欧几里得距离(Euclidean Distance)欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。
公式如下:欧氏距离虽然很有用,但也有明显的缺点。
它将样本的不同属性(即各指标或各变量量纲)之间的差别等同看待,这一点有时不能满足实际要求。
不确定变量间的距离和相似度研究的开题报告
一、研究背景
在数据分析和机器学习中,我们常常需要计算变量之间的距离或相似度,以便进行分类、聚类或其他数据处理操作。
然而,不同的变量类型(如数值型、离散型、文
本型等)和不同的距离或相似度度量方法都会对结果产生影响,因此如何选择合适的
距离或相似度度量方法是一个重要的问题。
二、研究内容
本研究旨在探索用于不确定变量间距离和相似度计算的方法,并比较它们的性能。
具体研究内容如下:
1. 对不同类型的变量(包括数值型、离散型、文本型等)进行距离和相似度计算,探索不同计算方法的适用范围及优缺点。
2. 对不同的距离或相似度度量方法进行比较,包括欧几里得距离、曼哈顿距离、余弦相似度、Jaccard相似度等常用方法,以及一些较新的方法如Mahalanobis距离和Gower相似度等。
3. 通过实验验证不同方法的性能,包括分类、聚类等任务的准确度、效率等方面的比较。
三、研究意义
本研究对于数据分析和机器学习领域有着重要的意义。
首先,众所周知,在实际应用中,变量往往具有不确定性,例如测量误差、不完整数据等,因此研究不确定变
量的距离和相似度计算方法能够提高数据处理的准确性和鲁棒性。
其次,通过对各种距离和相似度度量方法的比较,可以为数据分析和机器学习领域的研究者提供有用的参考和指导,避免使用不合适的方法导致错误甚至失误。
最后,本研究还可以为其他领域和相关研究提供参考,例如计算机视觉、自然语言处理等领域都需要对不同类型的数据进行相似性计算,对于它们来说,本研究中使
用的方法和思路也将是有价值的。
曼哈顿距离相似度曼哈顿距离相似度是一种常用的相似度度量方法,它是以曼哈顿距离为基础计算得出的相似度。
曼哈顿距离又称为城市街区距离或L1距离,它是两点在每个维度上距离的绝对值之和,可以用以下公式表示:d(x,y) = ∑|xi - yi |其中x和y为两个n维向量,|xi - yi|表示在第i维上x的值减去y的值取绝对值。
曼哈顿距离相似度计算的是两个向量之间的相似度。
当两个向量越相似,它们在曼哈顿距离相似度上的值越小,越接近0。
相反,当两个向量越不相似,它们在曼哈顿距离相似度上的值越大。
曼哈顿距离相似度的优点是计算简单,且不受维度的影响,在高维空间下仍然能够有效地计算相似度。
曼哈顿距离相似度的缺点是无法捕捉向量之间的方向信息,它只能计算向量之间的距离。
曼哈顿距离相似度在机器学习、数据挖掘、图像处理等领域广泛应用。
例如,在推荐系统中,可以将用户和商品的特征向量表示为n维向量,然后用曼哈顿距离相似度计算用户之间或商品之间的相似度,从而进行推荐。
在图像处理中,可以用曼哈顿距离相似度计算图像之间的相似度,从而进行图像检索和分类等任务。
曼哈顿距离相似度的计算可以通过numpy库中的pdist函数进行实现。
pdist函数可以计算一个矩阵中所有向量之间的距离,返回一个向量。
例如,下面的代码可以计算一个5个向量、每个向量长度为3的矩阵中所有向量之间的曼哈顿距离相似度:```pythonimport numpy as npfrom scipy.spatial.distance import pdist, squareform# 生成一个5x3的随机矩阵X = np.random.rand(5, 3)# 计算矩阵中所有向量之间的曼哈顿距离相似度distances = pdist(X, 'cityblock')# 将距离转换为矩阵形式distance_matrix = squareform(distances)print(distance_matrix)```输出的结果类似于:```[[0. 1.95165402 1.18311311 2.23343779 1.24511565][1.95165402 0. 1.10720753 1.30869075 1.62816432][1.18311311 1.10720753 0. 1.87501352 1.06419347][2.23343779 1.30869075 1.87501352 0. 1.92833393][1.24511565 1.62816432 1.06419347 1.92833393 0. ]]```其中,矩阵的每个元素表示矩阵中对应位置的向量之间的曼哈顿距离相似度。
在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurement),这时通常采用的方法就就是计算样本间的“距离”(Distance)。
采用什么样的方法计算距离就是很讲究,甚至关系到分类的正确与否。
对常用的相似性度量作一个总结。
1、欧氏距离2、曼哈顿距离3、切比雪夫距离4、闵可夫斯基距离5、标准化欧氏距离6、马氏距离7、夹角余弦8、汉明距离9、杰卡德距离& 杰卡德相似系数10、相关系数& 相关距离11、信息熵12、兰氏距离13、斜交空间距离14、最大-最小相似度15、指数相似度16、KL距离1、欧氏距离(EuclideanDistance)欧氏距离就是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。
(1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:(2)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的欧氏距离:也可以用表示成向量运算的形式:(4)Matlab计算欧氏距离Matlab计算距离主要使用pdist函数。
若X就是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。
例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离X= [0 0 ; 1 0 ; 0 2]D= pdist(X,'euclidean')结果:D=1、00002、0000 2、23612、曼哈顿距离(ManhattanDistance)又称绝对值距离从名字就可以猜出这种距离的计算方法了。
想象您在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离就是两点间的直线距离不?显然不就是,除非您能穿越大楼。
实际驾驶距离就就是这个“曼哈顿距离”。
而这也就是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(CityBlock distance)。
常见的距离算法和相似度(相关系数)计算方法在统计学和机器学习中,距离算法和相似度计算是常用的工具。
它们用于测量样本之间的差异或相似程度,从而用于聚类、分类、回归等任务。
本文将介绍几种常见的距离算法和相似度计算方法。
一、距离算法1.闵可夫斯基距离:闵可夫斯基距离是一种广义的距离度量方法,包括欧几里德距离和曼哈顿距离作为特例。
对于两个n维样本x和y,闵可夫斯基距离的定义为:D(x,y) = √(Σ(xi-yi)^p)^1/p其中p是一个可调参数,当p=1时,闵可夫斯基距离等同于曼哈顿距离;当p=2时,闵可夫斯基距离等同于欧几里德距离。
2.曼哈顿距离:曼哈顿距离又称为城市街区距离,是指在笛卡尔坐标系中两点之间的水平方向和垂直方向的距离总和。
对于两个二维样本(x1,y1)和(x2,y2),曼哈顿距离的定义为:D(x,y)=,x1-x2,+,y1-y23.欧几里德距离:欧几里德距离是最常见的距离度量方法,也称为直线距离。
对于两个n维样本x和y,欧几里德距离的定义为:D(x,y) = √(Σ(xi-yi)^2)4.切比雪夫距离:切比雪夫距离是指两个样本在每个维度上差值的最大绝对值。
对于两个n维样本x和y,切比雪夫距离的定义为:D(x,y) = max(,xi-yi,)5.杰卡德距离:杰卡德距离主要用于比较两个集合的相似度,特别适用于处理二元变量或稀疏数据。
对于两个集合A和B,杰卡德距离的定义为:D(A,B)=1-,A∩B,/,A∪B1.皮尔逊相关系数:皮尔逊相关系数是一种常用的方法,用于测量两个变量之间的线性关系程度。
对于两个n维向量x和y,皮尔逊相关系数的定义为:ρ(x,y) = Σ((xi-μx)(yi-μy))/(√(Σ(xi-μx)^2)√(Σ(yi-μy)^2))其中,μx和μy分别是向量x和y的均值。
2.余弦相似度:余弦相似度是一种常用的方法,用于测量两个向量之间的夹角余弦值。
对于两个n维向量x和y,余弦相似度的定义为:cosθ = (x·y)/(∥x∥∥y∥)其中,·表示向量的点积,∥x∥和∥y∥表示向量的模。
距离和相似性度量相似性度量或者距离函数对于像聚类,邻域搜索这样的算法是非常重要的。
前面也提到,网页去重复也是相似性应用的一个例子。
然而,如何定义个合适的相似或者距离函数,完全依赖于手头的任务是什么。
一般而言,定义一个距离函数d(x,y),需要满足以下几个准则:1. d(x,x) = 0 ;//到自己的距离为02. d(x,y)>=0 // 距离要非负3. 对称性,d(x,y) = d(y,x) //如果A到B距离是a,那么B 到A的距离也应该是a4. 三角形法则(两个之和大于第三边)d(x,k)+ d(k,y) >= d(x,y) 满足这4个条件的距离函数很多,一般有几类是比较常见的,通常来自比较直观的形象,如平面的一个两点的直线距离。
下面讨论应用比较广泛的几类距离或相似性度量函数,欧拉距离,余弦函数cosine,Pearson函数,Jaccard index,edit distance。
如果一个对象d(如:一篇文档)表示成一个n维的向量(d1,d2,….,dn),每一个维度都为对象的一个特征,那么这些度量函数极容易得到应用。
1.范数和欧拉距离欧拉距离,来自于欧式几何(就是我们小学就开始接触的几何学),在数学上也可以成为范数。
如果一个对象对应于空间的一个点,每一个维度就是空间的一个维度。
特殊情况,如果n=1,那么,小学我们就学过,直线上两个点的距离是|x1-x2|。
推广到高纬情况,一个很自然的想法是,把每一个维度的距离加起来不就可以呢。
这就形成了传说中的一范数:看,是不是很简单。
有一范数就有二范数,三范数。
无穷范数。
其实,二范数来的更加直观,我们都知道二维空间,三维空间的两点的距离公式。
他就是二范数,在二维三维上的形式了。
好了,一鼓作气,p范数(p-norm)无穷范数:空间两点的距离公式(2-范数),是最常用的距离公式,他就是传说中的欧拉距离。
多简单。
2. cosine similarity cosine similarity是备受恩宠啊,在学向量几何的时候,应该接触过这个神奇的公式分子是两个向量的点积,||A||是向量的长度,这个公式神奇的地方是,随着角度的变化的,函数是从-1,1变化的。
相似度算法(转载)在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的⼤⼩,进⽽评价个体的相似性和类别。
最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)。
当然衡量个体差异的⽅法有很多,最近查阅了相关的资料,这⾥整理罗列下。
为了⽅便下⾯的解释和举例,先设定我们要⽐较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, …x n),Y=(y1, y2, y3, … y n)。
下⾯来看看主要可以⽤哪些⽅法来衡量两者的差异,主要分为距离度量和相似度度量。
距离度量 距离度量(Distance)⽤于衡量个体在空间上存在的距离,距离越远说明个体间的差异越⼤。
欧⼏⾥得距离(Euclidean Distance) 欧⽒距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。
公式如下: 因为计算是基于各维度特征的绝对数值,所以欧⽒度量需要保证各维度指标在相同的刻度级别,⽐如对⾝⾼(cm)和体重(kg)两个单位不同的指标使⽤欧式距离可能使结果失效。
明可夫斯基距离(Minkowski Distance) 明⽒距离是欧⽒距离的推⼴,是对多个距离度量公式的概括性的表述。
公式如下: 这⾥的p值是⼀个变量,当p=2的时候就得到了上⾯的欧⽒距离。
曼哈顿距离(Manhattan Distance) 曼哈顿距离来源于城市区块距离,是将多个维度上的距离进⾏求和后的结果,即当上⾯的明⽒距离中p=1时得到的距离度量公式,如下:切⽐雪夫距离(Chebyshev Distance) 切⽐雪夫距离起源于国际象棋中国王的⾛法,我们知道国际象棋国王每次只能往周围的8格中⾛⼀步,那么如果要从棋盘中A格(x1, y1)⾛到B格(x2, y2)最少需要⾛⼏步?扩展到多维空间,其实切⽐雪夫距离就是当p趋向于⽆穷⼤时的明⽒距离: 其实上⾯的曼哈顿距离、欧⽒距离和切⽐雪夫距离都是明可夫斯基距离在特殊条件下的应⽤。
在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。
最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)。
当然衡量个体差异的方法有很多,最近查阅了相关的资料,这里整理罗列下。
为了方便下面的解释和举例,先设定我们要比较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, … x n),Y=(y1, y2, y3, … y n)。
下面来看看主要可以用哪些方法来衡量两者的差异,主要分为距离度量和相似度度量。
距离度量
距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差异越大。
欧几里得距离(Euclidean Distance)
欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。
公式如下:
因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
明可夫斯基距离(Minkowski Distance)
明氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述。
公式如下:
这里的p值是一个变量,当p=2的时候就得到了上面的欧氏距离。
曼哈顿距离(Manhattan Distance)
曼哈顿距离来源于城市区块距离,是将多个维度上的距离进行求和后的结果,即当上面的明氏距离中p=1时得到的距离度量公式,如下:
切比雪夫距离(Chebyshev Distance)
切比雪夫距离起源于国际象棋中国王的走法,我们知道国际象棋国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1, y1)走到B格(x2, y2)最少需要走几步?扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的明氏距离:
其实上面的曼哈顿距离、欧氏距离和切比雪夫距离都是明可夫斯基距离在特殊条件下的应用。
马哈拉诺比斯距离(Mahalanobis Distance)
既然欧几里得距离无法忽略指标度量的差异,所以在使用欧氏距离之前需要对底层指标进行数据的标准化,而基于各指标维度进行标准化后再使用欧氏距离就衍生出来另外一个距离度量——马哈拉诺比斯距离(Mahalanobis Distance),简称马氏距离。
相似度度量
相似度度量(Similarity),即计算个体间的相似程度,与距离度量相反,相似度度量的值越小,说明个体间相似度越小,差异越大。
向量空间余弦相似度(Cosine Similarity)
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间
差异的大小。
相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
公式如下:
皮尔森相关系数(Pearson Correlation Coefficient)
即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。
公式如下:
Jaccard相似系数(Jaccard Coefficient)
Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。
如果比较X与Y的Jaccard相似系数,只比较x n和y n中相同的个数,公式如下:
调整余弦相似度(Adjusted Cosine Similarity)
虽然余弦相似度对个体间存在的偏见可以进行一定的修正,但是因为只
能分辨个体在维之间的差异,没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但
从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值
的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负
值并且差异不小,但显然更加符合现实。
欧氏距离与余弦相似度
欧氏距离是最常见的距离度量,而余弦相似度则是最常见的相似度度量,很多的距离度量和相似度度量都是基于这两者的变形和衍生,所以下面重点比较下两者在衡量个体差异时实现方式和应用环境上的区别。
借助三维坐标系来看下欧氏距离和余弦相似度的区别:
从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。
如果保持A 点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。
上面都是对距离度量和相似度度量的一些整理和汇总,在现实的使用中选择合适的距离度量或相似度度量可以完成很多的数据分析和数据挖掘的
建模,后续会有相关的介绍。
来源:网站数据分析»《距离和相似度度量》。