基本问题
这是我的基本问题:我正在尝试对包含一些带有计数的非常倾斜的变量的数据集进行聚类。这些变量包含许多零,因此对于我的聚类过程来说信息量不是很大——这可能是 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-means 无法为这个变量找到一个好的分区。
另一方面,如果我标准化我的变量(减去均值,除以标准差),绿色变量由于其小的方差而“爆炸”,并且从比其他变量大得多的范围内取值,这使它看起来更多对 k-means 来说比实际更重要。
下一个想法是转换 sk(r)ewed green 变量。
转换偏态变量
如果我通过应用平方根来转换绿色变量,它看起来不那么偏斜。(这里绿色变量以红色和绿色绘制以确保混淆。)
红色:原始变量;蓝色:按平方根变换。
假设我对这种转换的结果感到满意(我不满意,因为零点仍然强烈地扭曲分布)。我现在是否也应该缩放红色和蓝色变量,尽管它们的分布看起来不错?
底线
换句话说,我是否通过一种方式处理绿色来扭曲聚类结果,但根本不处理红色和蓝色?最后,所有三个变量都属于一起,所以它们不应该以相同的方式处理吗?
编辑
澄清一下:我知道 k-means 可能不是基于计数的数据的方法。然而,我的问题实际上是关于因变量的处理。选择正确的方法是另一回事。
我的变量的内在约束是
count_red(i) + count_blue(i) + count_green(i) = n(i)
,其中n(i)
是客户的总购买次数i
。
(或者,等效地,count_red(i) + count_blue(i) + count_green(i) = 1
当使用相对计数时。)
如果我以不同方式转换变量,这对应于对约束中的三个项赋予不同的权重。如果我的目标是最佳地分离客户组,我是否必须关心违反此约束?还是“目的证明手段合理”?