K均值聚类算法中,对枚举类型,有序类型,是怎样定义距离的?

先看一下K-means聚类算法的步骤:
1、从D中随机取k个元素,作为k个簇的各自的中心。
2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
4、将D中全部元素按照新的中心重新聚类。
5、重复第4步,直到聚类结果不再变化。
6、将结果输出。
一般计算相异度的方式是采取各种距离(欧式、马氏、切比雪夫、闵式),但是不管什么距离都绕不开
K均值聚类算法中,对枚举类型,有序类型,是怎样定义距离的?

所以,通常情况下,如果一定要以k-means去算有序变量的话,是采用根据业务经验赋权重的方式,比如低度活跃:中度活跃:高度活跃=低度活跃用户.订单数.sum()/中度活跃用户.订单数.sum():到度活跃用户.订单数.sum(),但通常效果不好。
我提供一个“曲线”思路,比如低度活跃:中度活跃:高度活跃,我们可以把活跃度这个变量拆分成三个哑变量,是否低活、是否中活、是否高活,再利用支持混合变量距离的算法,举几个常见的: k-prototypes: 结合了K-Means和K-Modes两种算法,能够处理混合型数据 ; ROCK: 也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响
【K均值聚类算法中,对枚举类型,有序类型,是怎样定义距离的?】 整理了常见的聚类方法:
K均值聚类算法中,对枚举类型,有序类型,是怎样定义距离的?

希望对你有所帮助,:)


    推荐阅读