我在一家电子商务公司工作,我负责根据客户的交易行为对我们的客户进行集群。我之前从未使用过聚类,所以我有一段艰难的时光。
1st)我收集了有关客户的数据,并且我选择了12个变量,这些变量很好地说明了这些客户的行为方式。数据集的每一行代表1个用户,其中列是我选择的12个功能。
第二次)我删除了一些异常值并构建了一个相关矩阵,以便检查冗余变量。结果证明其中一些是高度相关的(> 0.8相关)
3)我在所有12个变量上使用了sklearn的RobustScaler,以确保变量的变化不会发生太大的变化(StandardScaler在我的轮廓上表现不佳)
第4次)我在数据集上运行了KMeans,得到了2个簇的非常好的结果(轮廓> 70%)
5)我尝试在缩放之后/聚类之前进行PCA以将我的尺寸从12减小到2,令我惊讶的是,我的剪影开始达到30~40%,当我绘制数据点时,它'只是图中心的一个大质量。
我的问题是:
1)在sklearn上RobustScaler和StandardScaler之间的区别是什么?我什么时候应该使用它们?
2)我应该这样做:原始数据 - >清理数据 - >标准化 - > PCA / TSNE - >聚类?或者PCA应该在正常化之前到来吗?
3)是12 - > PCA的二维降低太极端了吗?这可能会导致可怕的轮廓评分。
非常感谢!
答案 0 :(得分:0)
避免比较不同投影或缩放的轮廓。内部措施往往过于敏感。
不要使用tSNE进行群集(谷歌有关stats.SE的讨论,请随时编辑此答案的链接)。这将导致错误的分离和错误的邻接;它是一种可视化技术。
PCA将缩小高方差轴,并放大低方差方向。可以预期,如果主轴是您感兴趣的,那么整体会降低质量(如果不是,则预计会有所帮助)。但是,如果PCA可视化只显示一个大斑点,那么0.7的轮廓应该是不可能的。对于如此高的轮廓,群集在PCA视图中应该是可分离的。