基本问题
这是我的基本问题:我正在尝试将包含一些非常偏斜的变量与计数的数据集聚类。变量包含许多零,因此对于我的聚类过程不是很有帮助-这很可能是k-means算法。
很好,您说的是,只需使用平方根,Box Cox或对数转换变量即可。但是由于我的变量是基于分类变量的,所以我担心我可能会通过处理一个变量(基于分类变量的一个值)而使其他变量(基于分类变量的其他值)而产生偏差。 。
让我们更详细些。
数据集
我的数据集代表物品的购买。这些项目具有不同的类别,例如颜色:蓝色,红色和绿色。然后,例如由顾客将购买分组在一起。这些客户中的每一个都由我的数据集的一行代表,因此我必须以某种方式汇总客户的购买量。
我这样做的方式是通过计算购买次数,其中该商品是某种颜色。因此,而不是一个变量color
,我结束了三个变量count_red
,count_blue
和count_green
。
这是一个示例说明:
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
实际上,最终我不使用绝对计数,而是使用比率(每个客户购买的所有项目中绿色项目的分数)。
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
结果是相同的:对于我的一种颜色,例如绿色(没人喜欢绿色),我得到了一个包含许多零的左偏变量。因此,k均值无法为该变量找到良好的分区。
另一方面,如果我对变量进行标准化(减去均值,除以标准差),则绿色变量会因其较小的方差而“爆炸”,并且取值范围比其他变量大得多,这使其看起来更对于k均值来说,比实际重要。
下一个想法是转换sk(r)ewed绿色变量。
转换偏斜变量
如果我通过应用平方根来变换绿色变量,则它看起来不太偏斜。(此处绿色变量以红色和绿色绘制,以确保混淆。)
红色:原始变量;蓝色:由平方根转换而成。
假设我对这种转换的结果感到满意(但我不满意,因为零仍然严重扭曲了分布)。尽管红色和蓝色变量的分布看起来不错,但我现在还应该缩放它们吗?
底线
换句话说,我是否通过一种方式处理绿色而不是完全处理红色和蓝色来扭曲聚类结果?最后,这三个变量都属于同一变量,难道不应该以相同的方式处理它们吗?
编辑
需要说明的是:我知道k均值可能不是基于计数的数据的方法。但是,我的问题实际上是关于因变量的处理。选择正确的方法是另一回事。
我变量的固有约束是
count_red(i) + count_blue(i) + count_green(i) = n(i)
,n(i)
是客户的购买总数i
。
(或者等效地,count_red(i) + count_blue(i) + count_green(i) = 1
当使用相对计数时。)
如果我对变量进行不同的变换,则相当于对约束中的三个项赋予不同的权重。如果我的目标是最佳地分离客户群,那么我是否需要担心违反此约束?还是“目的证明手段”?
count_red
,count_blue
和count_green
与数据计数。对?那么,什么是行-项目?然后您要对项目进行聚类?