我有一个关于k-means聚类的问题。我们有一个包含120,000个观测值的数据集,需要使用R计算k-means聚类解决方案。问题是k-means通常使用欧几里德距离。我们的数据集由3个连续变量、11个序数(Likert0-5)(我认为像处理连续变量一样处理它们)和5个二进制变量组成。你有什么关于距离度量的建议,我们可以使用k-means方法来处理“大”数据集吗?我们坚持使用k-means,所以我真的希望你们中有一个人有好主意。
干杯,
马丁
发布于 2018-08-22 02:32:30
一种方法是对特征进行归一化,然后只使用11维欧几里德距离。将二进制值转换为0/1 (嗯,它是R,所以无论如何它都是这样做的),然后从那里开始。
我看不出这种方法有什么直接的问题,除了11维的k-means肯定很难解释。你可以尝试使用降维技术,希望让k-means输出更容易阅读,但你对数据集的了解远远超过我们,所以我们帮助你的能力是有限的。
发布于 2018-08-22 08:06:21
你当然也可以把这些二进制变量编码为0,1。
统计中最佳实践是不将likert尺度变量视为数字,因为其分布不均匀。
但我不认为你会得到有意义的k-means聚类。该算法都是关于计算手段的。这在连续变量上是有意义的。离散变量通常缺乏“分辨率”才能很好地工作。然后三个均值降级为一个“频率”,然后数据应该以非常不同的方式处理。
不要用锤子来选择问题。也许你的数据不是钉子;即使你想用kmeans来做,它也不会解决你的问题……相反,阐述您的问题,然后选择正确的工具。那么,考虑到您的数据,什么是好的集群?除非你有一个方程式来衡量这一点,否则处理数据不会解决任何问题。
发布于 2018-08-22 11:42:07
将变量编码为二进制并不能解决根本问题。相反,它只会帮助增加数据维度,这是一个额外的负担。统计学中的最佳实践是不要将原始数据更改为任何其他形式,例如从连续到分类,反之亦然。但是,如果你这样做,即数据转换,那么它必须与要解决的问题同步,并且必须提供有效的理由。
继续下去,正如其他人所说的,首先尝试降低数据集的维度。检查问题,如,missing values,outliers,zero variance,principal component analysis (continuous variables),correspondence analysis (for categorical variables)等。这可以帮助你降低维数。毕竟,数据预处理任务构成了分析的80%。
关于混合数据类型的距离度量,您应该知道k中的mean只适用于continuous变量。所以,我不理解对混合数据类型使用k-means算法的logic?考虑选择其他算法,如k-modes。k-modes是k-means的扩展。它不使用距离,而是使用不相似性(即,量化两个对象之间的总不匹配:该数字越小,两个对象越相似)。它使用的不是方法,而是模式。模式是元素的向量,它最小化了向量本身与数据的每个对象之间的不同之处。
https://stackoverflow.com/questions/51954240
复制相似问题