k-means算法是为欧几里得距离设计的,它恰好满足三角不等式。
使用其他距离函数是有风险的,因为可能会导致算法无法收敛。然而,原因并不是三角不等式,而是平均值可能不能最小化距离函数(算术平均值只能最小化平方和,而不能最小化任意距离!)。
对于k-means算法,有一些更快的方法利用三角不等式来避免重新计算。但如果你坚持使用经典的MacQueen或Lloyd k-means算法,那么你就不需要使用三角不等式。
只要小心使用其他距离函数,以免陷入无限循环。你需要证明平均值最小化了到聚类中心的距离。如果你无法证明这一点,它可能无法收敛,因为目标函数不再单调递减!所以你真的应该尝试证明你的距离函数的收敛性!
就像维数是向量空间中线性独立向量的最大数量一样,在线性代数中有4个主要子空间(行空间、列空间、零空间和左零空间)-你可以使用曼哈顿距离(不需要三角化)或欧几里得距离(需要三角化)来计算表格数据的距离。但无论如何,在笛卡尔坐标系(也称为2D [行-列])中,考虑到点之间的向量之间的cos()(在使用三角化时 - 通常使用K-means进行操作)。
正如cos(90˚C)=0(ref“越接近0 - 两个向量越接近正交”)- 因此,是的,需要三角不等式。如果您的点在一个轴上相似[cos=0](它们之间没有角度),那么距离就是它们在一个空间中的纯距离,并且在另一个空间中为0,这是由于cos(90˚C)=0。因此,要创建特征的投影矩阵,最好考虑三角不等式(就像K-Means使用欧几里得距离而不是曼哈顿距离所做的那样)。
p.s. cos(90˚C)=0 导致维度诅咒,指向此处
P.P.S. 小心:欧氏距离(在K-means中)提供误导性信息有关异常值(k-medians似乎更好使用,k-medoids似乎有争议)
P.P.P.S 对于分类任务,你可以不关心距离[点击链接](只关心最佳交叉验证结果),仅对于聚类任务关心你选择的距离和算法