将聚类应用于数据聚合是否有意义?

数据挖掘 聚类 特征选择
2022-03-09 10:17:15

我想知道将聚类技术应用于数据聚合是否有意义,例如,我有三个不同的数据源,例如 S1 S2 和 S3,其中每个源共享一些公共列,但大多数不共享。将所有源与大数据框中的所有列分组并应用聚类技术是否有意义,而某些记录将仅具有不属于其相应服务一部分的列的空值。谢谢你。

更新:输入基本上是来自具有不同列的不同服务的日志,其中一些在所有服务之间共享。输出应该是代表具有相同行为的用户的一组记录。
日志由用户操作的第二个对应项收集。它们按小时为每个用户聚合以派生其他功能(根据我的说法,秒的粒度太多了)。
目标是检测异常行为。
问题是,我可以重新组合具有不同特征的不同数据框,而其中一些是共享的并在其上运行 K-mean。因为我的数据框看起来像这样(s* 代表服务,common_ 代表共同特征):

-------------------------------------------------------------
s1_f1 | s1_f2 | s2_f1 | s2_f2 | s3_f1 | common_f1 | common_f2
  1       OK     NULL    NULL    NULL     midday      less
  2       OK     NULL    NULL    NULL     midnight    more
 NULL    NULL     2       5      NULL     midday      less
 NULL    NULL     8       9      NULL     morning     less
 NULL    NULL    NULL    NULL    777      morning     more
 NULL    NULL    NULL    NULL    888      night       more
1个回答

由于特定来源缺少某些特征,因此缺失值不是随机缺失,而是系统缺失。在这种情况下,我建议不要对具有所有可用特征的组合数据集进行聚类。如果缺失值是随机出现的,您可以在执行聚类分析之前使用一些缺失值插补方法。但是,由于这些值系统性地缺失,因此难以解决插补问题。(您可以尝试预测那些缺失值,但恐怕这会在数据中添加很多不必要的噪音。)

我建议从以下两个选项之一中进行选择:

  1. 对组合数据集执行聚类,仅使用所有源中未丢失的那些特征。
  2. 执行三种不同的聚类分析,每个来源一个。这样,您可以确保使用尽可能多的功能(信息)。然后可以在每个源内确定“异常”行为的确定。这可能是一个额外的好处,因为它可以让您更具体地了解为什么使用可能是异常的,因为您有更多的功能可以用来解释这一点。然后,还可以对所有来源的结果进行汇总,以创建一份综合报告。