利用反演距离进行K-means聚类
K-means clustering using Inversion Distance
首先,我想弄清楚如何应用这个算法来解决一个家庭作业项目。所以,我不是在寻找作业的解决方案,只是帮助完成解决问题的算法。
我正在尝试使用K-means聚类来聚类一个大的(2^6)数组集。这些数组是序列[0,1,2…31]的唯一排列。但是,我不使用欧几里得距离,而需要使用反转距离。
k-means的第一步是从数据集中随机选择k=10个点。然后,我计算数据集中每个值到每个随机k点的反转距离。这给出了初始集群。
现在,我不知道下一步如何从欧氏距离转换成反演距离。我怎样才能找到每一个簇的中心(根据反演距离),以便重复聚类步骤?
作为一个伴随问题,欧几里得距离是一个很好的近似(或等效)反演距离吗?我不相信,但我不知道如何去证明它。
提前感谢大家
一般来说,你不能使用非欧几里得距离的k-means。你可以试着用它们来运行算法,但是对于算法终止时收敛的意义几乎没有什么可说的。
正如你在维基百科条目中看到的,欧几里得距离是该算法固有的。它通过在E和M类型的步骤之间交替工作(如EM算法),并且对于欧几里得距离,可以证明这两个步骤都是最小化相同的目标函数。对于其他距离,尽管代码看起来相同,但它通常不成立。
参见交叉验证中的问题。
如果你有一个不同的距离,你应该使用其他的东西,例如,分层聚类或k-medoids
相关文章:
- K 均值聚类 R 树提升
- C++中的聚类示例
- 两个数组之间的数据聚类和比较
- TSP 的聚类分析算法
- 如何使用opencv c++的聚类来根据面积和高度对连接的组件进行分类
- 用于聚集层次聚类的OpenCV机器学习库
- K 表示视频所有帧的直方图聚类
- OpenCV 聚类袋的单词 k 表示
- 用自适应MeanShift对特征空间-SURF描述符进行聚类
- 在std::list中合并(将两个项目融合在一起,用融合替换)项目的算法(即破坏性聚类)
- 使用OpenCV的Kmeans聚类中的mahalanobis距离
- (C++)K-Means聚类问题
- 使用Kmean找到具有最高数量元素的聚类
- 利用反演距离进行K-means聚类
- 从给定的点云数据中提取一组特征和聚类数据
- 逻辑错误:平均质心计算不正确,无限执行,'entries '函数 - K 表示一组点的聚类,以C++为单位
- c++: k均值聚类g矩阵
- 改进的k -均值聚类(Ward准则)速度提高
- 基于Flann openv的分层聚类
- 如何为聚类分析创建n维测试数据