K-means真的不能使用曼哈顿距离吗?

问题

说到k-means聚类算法,想必大家已经对它很熟悉了,它是基于距离计算的经典无监督算法,但是有一次在我接受面试时,面试官问了我一个问题:“k-means为什么不能使用曼哈顿距离计算,而使用欧式距离进行计算?”,当时我顿时懵了,心想:‘难道不都可以吗?’,我只能说都可以,然后面试官给了我一个眼神,“你回去查查吧,看看到底为什么”,然后我就回家啦。这是我后来在网上找到的回答,如下图:

k-means基本思想:

1.在样本数据中随机设置n个聚类中心(Xi,Yi),假设数据只有二维;

2.计算样本数据距离聚类中心(Xi,Yi)距离Di,并各自归属到距离自己最近的中心点;

3.各个汇聚到一起的簇计算各自的平均值,将新的平均值作为新的中心点;

4.然后重复2、3两步,直到中心点的移动范围小于阈值或达到循环最大次数。

距离公式

欧式距离也叫欧几里得距离,也是最广泛使用的距离计算公式,指n维空间中两点间的直线距离

曼哈顿距离指同一坐标系下两点差的绝对值之和

多说一个,余弦距离指空间中原点与两点连线所夹角度的大小

分析

那到底k-means、knn能不能用曼哈顿计算呢,如第一张图片所示,这是别人的答案,表示曼哈顿具有维度限制,真的是这样吗,我认为并不是这样的,大家都知道曼哈顿距离可以计算二维空间两点距离,那么尝试在三维空间进行计算,由此可以推广到高维空间,如下手画图所示:

一个2x2x2的立方体,坐落在三维坐标轴上,点A(2,2,0),点C(0,0,2),求AC的曼哈顿距离,根据曼哈顿公式计算得:

|0-2|+|0-2|+|2-0|=6,显而易见,实际距离也是6,路线有很多条,但结果都是一样的。

结论

综上所述,曼哈顿距离适合k-means,只是各种距离算法可能需要在不同业务场景或数据下选择使用。

原文地址:https://www.cnblogs.com/tttzqf/p/12399027.html

时间: 2024-10-18 07:42:03

K-means真的不能使用曼哈顿距离吗?的相关文章

HDOJ 4666 Hyperspace 最大曼哈顿距离

二进制转化,求最大曼哈顿距离.... Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1123    Accepted Submission(s): 530 Problem Description The great Mr.Smith has invented a hyperspace particle gen

BZOJ 2735: 世博会 主席树+切比雪夫距离转曼哈顿距离

2735: 世博会 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 124  Solved: 51[Submit][Status][Discuss] Description 四年一度的世博会又要举办了,Q国很荣幸成为了这次世博会的主办方.Q国主席QQ从全国各地收集了N件物品排成 一排,作为Q国馆的展出物.对于相邻摆放的一些物品,如果过于相似会让人觉得无聊,如果差别过大又会让人觉 得突兀.为了让人们对这次世博会的展出满意,QQ需要知道一些相邻物品的“

!HDU 4311 最小曼哈顿距离-思维&卡时间-(横纵坐标分开算,排序)

题意:有n个点,求以这n个点中的某一点为起点,到各点的曼哈顿距离和最小是多少 分析: 暴力枚举又要超时,这种题一般都是考思维了,多半都是用技巧找到一个高效的方法.个人觉得这题跟上一篇文章的题是一个类型.这种思想要记住. 这题也是用"分治",虽说题目要求的是曼哈顿距离,但是我们为什么真的就要一步到位的求呢,可以横纵坐标分开求,先x排序,然后遍历一遍,求出横坐标的距离,然后y排序,遍历一遍求出坐标的距离加在刚才求得的x的距离上,就是曼哈顿距离了. 这里有一个非常巧妙但是其实很显而易见的东西

hdu4311 曼哈顿距离

http://acm.hdu.edu.cn/showproblem.php?pid=4311 Problem Description It has been ten years since TJU-ACM established. And in this year all the retired TJU-ACMers want to get together to celebrate the tenth anniversary. Because the retired TJU-ACMers ma

Hdu 4312-Meeting point-2 切比雪夫距离,曼哈顿距离,前缀和

题目: http://acm.hdu.edu.cn/showproblem.php?pid=4312 Meeting point-2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1231    Accepted Submission(s): 691 Problem Description It has been ten years s

Hdu 4311-Meeting point-1 曼哈顿距离,前缀和

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4311 Meeting point-1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3426    Accepted Submission(s): 1131 Problem Description It has been ten years s

POJ 3241 Object Clustering 二维平面曼哈顿距离最小生成树

题目链接:点击打开链接 题意: 给定二维平面上的n个点坐标,常数k 下面n行给出坐标 求一个最小生成树,问第k大的边是多少. 任意两个点间建一条边的花费是其曼哈顿距离. 思路:转自:点击打开链接 一.曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下: 给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价. 朴素的算法可以用O(N2)的Prim,或者处理出所有边做Kruskal,但在这里总边数有O(N2)条,所以Kruskal的复杂度变成了O(N2logN

POJ 3241 Object Clustering 曼哈顿距离最小生成树

题目大意:求出曼哈顿距离最小生成树上的第k大边权. 思路:首先,你要了解:http://blog.csdn.net/acm_cxlove/article/details/8890003 也就是说,我们以每一个点为中心,把平面分成8个部分,每一个部分我们只需要离这个点最近的点.然后加上建一条边连接这个边和最近的点.然后就是MST. 听说这个算法是莫队算法的基础,我现在就去学. CODE: #include <cstdio> #include <cstring> #include &l

曼哈顿距离MST

https://www.cnblogs.com/xzxl/p/7237246.html 讲的不错 /* 曼哈顿距离最小生成树 poj 3241 Object Clustering 按照上面的假设我们先考虑y周顺时针45°的情况 dis(i,j)=x[j]-x[i]+y[j]-y[i]=x[j]+y[j]-(x[i]+x[j]) dis取决于x[j]+y[j] 所以排序的关键字就是x+y 然后我们按y-x离散化 然后维护 y-x大于当前点 的点中 x+y最小的点 时间复杂度NlogN 最大生成树的