MATLAB聚类算法:各类距离计算方法详解

需积分: 50 37 下载量 54 浏览量 更新于2024-09-10 2 收藏 108KB DOCX 举报
在MATLAB中进行聚类分类时,距离计算方法的选择对于算法性能至关重要。本文主要讨论了样本点间和类间距离的多种计算方式,这些方法广泛应用于诸如K-means、层次聚类等算法。 首先,样本之间的距离计算有以下几种: 1. **欧氏距离(Euclidean)**:这是最基本的直线距离,衡量两点之间的直线距离。在标准欧氏距离(Seuclidean)中,引入了标准化因子,考虑了特征的尺度差异。 2. **马氏距离(Mahalanobis)**:考虑到数据的协方差结构,通过调整距离以补偿不同特征之间的相关性。 3. **绝对值距离(Cityblock)**:当p=1时的闵科夫斯基距离,适用于处理离散或有缺失值的数据。 4. **闵科夫斯基距离(Minkowski)**:包括欧氏距离(p=2)、切比雪夫距离(p=∞),以及介于两者之间的任意p值下的距离。 5. **切比雪夫距离(Chebychev)**:以最大特征值衡量距离,对极端值敏感。 6. **余弦距离(Cosine)**:基于样本向量的相似性,更多关注方向而不是大小。 7. **相关性距离(Correlation)**:衡量两个变量的线性相关程度,而非实际距离。 8. **汉明距离(Hamming)**:用于二进制数据,计算对应位置上不同元素的数量。 9. **Jaccard距离(Jaccard)**:用于衡量集合的相似度,基于交集与并集的比例。 10. **斯皮尔曼等级相关距离(Spearman)**:适用于等级数据,类似于皮尔逊相关系数,但对异常值更稳健。 类间距离的计算方法则涉及以下几种: - **单链(Single Linkage)**:通过最小化类内样本间的距离来连接类。 - **全链(Complete Linkage)**:通过最大化类内样本间的距离来连接类。 - **组平均(Average Linkage)**:取两类所有样本对平均距离作为连接距离。 - **重心法(Centroid Linkage)**:计算类别重心之间的欧氏距离。 - **中间距离(Median Linkage)**:加权重心之间的欧氏距离,通过加权平均考虑合并类别的权重。 - **离差法(Ward's Method)**:通过减少类内平方和增量来连接类,类似最小化均方误差。 - **加权平均法(Weighted Average)**:递归地计算合并类别的平均距离。 值得注意的是,离差法有时会引入2倍因子,使得类间距离等于欧氏距离。此外,由于重心距离和中间距离可能导致非单调性问题,即合并后的类与第三个类的距离可能小于合并前两者的距离,因此在某些情况下可能需要使用其他距离计算方法来构建更具稳定性(单调性)的聚类树。