数据聚类

概念信息

CLUSTER 命令

聚类操作可基于一个或多个数值键域中的类似值对表中的记录进行分组。类似值是整个数据集的上下文中相互接近的值。这些类似值代表聚类,一旦将其识别出来,可以揭示数据中的模式。

说明

如果您想要使聚类成为您的分析项目的常规部分,建议您学习 Galvanize 学校课程在 Analytics 中使用 CLUSTER 命令发现数据组 (ACL 361)(要求客户登录)。

聚类与其他 Analytics 分组命令有何不同

聚类与其他 Analytics 分组命令有下列不同之处:

  • 聚类不要求对预先存在的数据类别(如交易类型或贸易商类别代码)或者具有硬性数值边界的预定义层进行分组。相反,聚类基于数据本身内的类似数值类型值即彼此接近的值对数据进行分组。
  • 基于一个以上的域进行聚类会输出未嵌套(不分层)的结果。

选择要作为聚类依据的域

数据聚类使您可以发现数据中的、采用其他方法可能不知道存在的有机分组。特别需要指出的是,如果不借助于机器学习,则难以识别基于多个数值域的聚类(多维聚类)。在这个意义上,聚类是探索性的,并且是一个无人监督机器学习的范例。

但是,要使输出聚类有意义,您选择进行聚类的域之间必须存在有意义的关系。

将单个域作为聚类依据

将单个数值域作为聚类依据相当简单。您专注于单个值集,并且聚类操作基于值之间的接近度或近似度对这些值进行分组。例如,您可以对金额域进行聚类,以便弄清楚这些金额在整个值范围中的何处集中。

与分层等传统方法相比,聚类的优点是您无须事先就哪里可能存在集中进行任何假设,也无须创建主观性的数值边界。对于任何给定的聚类个数,聚类操作都可以发现边界位于何处。

将多个域作为聚类依据

当您将两个或更多个域作为聚类依据时,您需要问您自己这些域之间存在什么样的关系。您可以使用聚类来测试假设。例如,一家公司可能关注员工变动率,而管理层认为员工变动主要发生在比较年轻的低薪员工中间。

您可以使用聚类来发现下列因素之间是否存在密切的关系:

  • 员工留任时间长度和员工年龄(二维聚类)
  • 员工留任时间长度、员工年龄和薪资(三维聚类)

说明

对于此分析,您需要避免包括任何与该假设不存在明显关联的域,如请病假的天数。

评估输出聚类

聚类算法总是输出一个包含指定数量的聚类的表。输出表中的每个记录都将在某个聚类中。

此时,您需要评估这些聚类是否具有分析重要性或意义。算法对某个聚类中的记录进行分组并不必然意味着该分组具有重要性。您需要问一下自己这些聚类是否构成显著模式。它们是否揭示了某种事实?

提示

通过在报告工具中将聚类输出表绘制为散点图,并且为每个聚类分配一种不同的颜色,可以最轻松地快速评估输出聚类的总体性质。

下列特征可帮助您评估输出聚类的意义:

  • 聚类紧凑性聚类中的单个值全都相当接近于质心还是有点分散?聚类越紧凑,构成该聚类的值之间的关系越密切。
  • 聚类大小是否大多数值都被包含在一两个大型聚类中?如果是,则与其值相对均匀分布在多个聚类中的数据集相比,该数据集严重扭曲。
  • 异常值考虑无法被包含在任一重大聚类中的值。这些异常值可能代表值得进一步审查的条目。还要考虑“内部异常值”,即被包括在重大聚类中但位于该聚类边界的值。

说明

上述特征都是聚类评估的主观方法。存在各种聚类评估数学方法,但它们超出了 Analytics 帮助的范围。

聚类算法如何工作

Analytics 中的聚类使用 K 均值聚类算法,这是一种流行的机器学习算法。您可以在互联网上找到详细的 K 均值聚类介绍。

下面给出了该算法的摘要。

选择聚类个数 (K 值)

要确定在对数据进行聚类时使用的最佳聚类个数,可能需要进行一些测试和试验。对于任何给定的数据集,没有一个准确的答案。

我可以将字符域或日期时间域作为聚类依据吗?

一般情况下,您不能将字符域或日期时间域作为聚类依据。聚类算法只接受数字,并且它使用数字(欧氏距离、均值)执行计算。

步骤

说明

如果机器学习菜单选项被禁用,则 Python 引擎很可能未安装。有关详细信息,请参见安装 ACL for Windows

为聚类算法指定设置

  1. 打开包含您想要聚类的数据的表。
  2. 从 Analytics 主菜单中选择机器学习 > 聚类
  3. 聚类个数 (K 值)中,指定要用来对数据进行分组的聚类个数。
  4. 最大迭代数中,为该聚类算法所执行的迭代数指定一个上限。
  5. 初始化数量中,指定生成随机形心的初始集的次数。
  6. 可选。选择种子,然后输入一个数字。

指定数据预处理方法

如果您按一个以上的键域进行聚类,则在使用它们进行聚类之前,应该使用预处理功能标准化这些域的规模。

不同数值域的规模和单位经常各不相同。例如,包含每年美元数的薪水域可能介于 20000 和 100000 之间,而包含年数的年龄域可能介于 18 和 70 之间。如果您使用薪水域和年龄域在没有按比例缩放的情况下进行聚类,则输出聚类将在本质上是薪水聚类(由于薪水数字相对于年龄数字而言过于庞大而被扭曲),而不是薪水/年龄聚类。

预处理提供下面介绍的方法,以将所有聚类键域中的所有值按比例缩放,以使它们在聚类处理过程中具有同等权重。

预处理选项 描述
标准化

键域值被以均值零 (0) 为中心集中化并且被按比例缩放,即将这些值转换为其 z 分数等效值(标准分数)。

z 分数是对将每个域的原始值与原始均值分开的标准偏差数的衡量。在按比例缩放的域中,均值由零 (0) 表示,z 分数或正或负,具体取决于它们代表的原始值是大于还是小于该域的原始均值。

说明

如果键域主要包含非零值(“密集矩阵”),请使用此选项。

缩放到单位方差

键域值被通过除以其标准偏差来按比例缩放,但它们未被以均值零 (0) 为中心集中化。

说明

如果一个或多个键域包含大量零 (0) 值(“稀疏矩阵”),请使用此选项。

键域值未被集中化或者按比例缩放。聚类操作在计算聚类时使用未集中化且未按比例缩放的原始值。

选择域

  1. 聚类依据列表中,选择一个或多个要用来对该表中的记录进行聚类的键域。

    键域必须是数值域。

  2. 可选。从其他域列表中,选择一个或多个要包括在输出表中的其他域。

提示

您可以使用 Ctrl+单击选择多个不相邻的域,使用 Shift+单击选择多个相邻的域。

最终确定命令输入

  1. 如果当前视图中有想要从处理中排除的记录,请在如果文本框中输入一个条件,或单击如果使用表达式生成器创建 IF 声明。

    说明

    在应用任何范围选项()之后,仅针对表中的剩余记录评估如果条件。

    IF 声明中考虑到了视图中的所有记录,滤除那些不满足指定条件的记录。

  2. 文本框中,指定输出表的名称。
  3. 可选。在更多选项卡上:
    1. 要指定只处理记录的一个子集,请选择范围面板中的选项之一。
    2. 如果您希望输出表自动打开,请选择使用输出表
  4. 单击确定