数据聚类
聚类操作可基于一个或多个数值键域中的类似值对表中的记录进行分组。类似值是整个数据集的上下文中相互接近的值。这些类似值代表聚类,一旦将其识别出来,可以揭示数据中的模式。
聚类与其他 Analytics 分组命令有何不同
聚类与其他 Analytics 分组命令有下列不同之处:
- 聚类不需要对精确值或者具有确定数值边界的预定义层进行分组。相反,聚类基于类似的数值类型值–即彼此接近的值对数据进行分组。
- 聚类不需要预先存在的数据类别。
- 基于一个以上的域进行聚类会输出未嵌套(不分层)的结果。
聚类算法如何工作
Analytics 中的聚类使用 K 均值聚类算法,这是一种流行的机器学习算法。您可以在互联网上找到详细的 K 均值聚类介绍。
下面给出了该算法的摘要。
K 均值聚类算法使用一个迭代流程来优化聚类:
1 | 指定聚类个数 |
|
---|---|---|
2 | 初始化聚类形心 |
|
3 | 将每个数据点分配给最近的形心 |
|
4 | 重新计算形心 |
|
5 | 迭代 |
|
选择聚类个数 (K 值)
要确定在对数据进行聚类时使用的最佳聚类个数,可能需要进行一些测试和试验。对于任何给定的数据集,没有一个准确的答案。
确定最佳聚类个数的准则:
- 熟悉数据 预先熟悉数据集,以大致了解数据的分布情况和值的集中程度。
- 首先选择一个较高值 首先选择一个相对较高的聚类个数 – 8 到 10。
- 尝试不同的聚类个数 多次执行聚类,每次都指定一个不同的 K 值。对输出结果进行审核可以帮助您判断是需要更多还是更少的聚类。
- 肘部法则 使用肘部法则,即对于不同的 K 值,比较生成的聚类中的值的内部距离。
您可以绘制肘部法则的结果,以识别“肘部”即拐点,在这里,增加聚类个数不会显著减小聚类中的值的内部距离。您可以在 Analytics 中编写肘部法则脚本。
选择要作为聚类依据的域
聚类操作使您可以发现数据中存在的为您所不知道的有机分组。您可以自由地基于多个数值域来创建聚类。在这个意义上,聚类是探索性的,并且是一个无人监督机器学习的范例。
但是,为了弄明白输出聚类,您需要了解您为聚类选择的域之间的关系。
将单个域作为聚类依据
将单个数值域作为聚类依据相当简单。您拥有单个值集,并且聚类操作基于值之间的接近度或近似度对这些值进行分组。例如,您可以对金额域进行聚类,以便弄清楚这些金额在整个值范围中的何处集中。
与分层等传统方法相比,聚类的优点是您无须事先就哪里可能存在集中进行任何假设,也无须创建主观性的数值边界。对于任何给定的聚类个数,聚类操作都可以发现边界位于何处。
将多个域作为聚类依据
当您将两个或更多个域作为聚类依据时,您需要问您自己这些域之间存在什么样的关系。您可以使用聚类来测试假设。例如,一家公司可能关注员工变动率,而管理层认为员工变动主要发生在比较年轻的低薪员工中间。
您可以使用聚类来发现下列因素之间是否存在密切的关系:
- 员工留任时间长度和员工年龄(二维聚类)
- 员工留任时间长度、员工年龄和薪资(三维聚类)
对于此分析,您需要避免包括任何与该假设不存在明显关联的域,如请病假的天数。
我可以将字符域或日期时间域作为聚类依据吗?
一般情况下,您不能将字符域或日期时间域作为聚类依据。聚类算法只接受数字,并且它使用数字(欧氏距离、均值)执行计算。
类别字符数据
您可能拥有数字形式的类别字符数据,如位置 ID。或者,您可以使用计算域将字符类别映射到您创建的一组数值代码。您可以将此数据转换为数值数据类型并使用它进行聚类。但是,生成的聚类将是无效的,因为您是基于代表某种非数值性内容的数字执行数学计算。
例如,基于一个位置 ID 列表的平均值计算形心位置会得到一个无意义的数字。该计算基于一个无效的假设,即位置编号之间的数学距离相当于某种现实的可量度的距离。
如果我们考虑物理距离,那么说位置 1 和位置 9 之间的距离是位置 1 和位置 5 之间距离的两倍是没有道理的。位置 1 和 9 可能相互毗邻,而位置 5 则可能在几英里以外。
对于涉及位置和物理距离的聚类分析,要使用的有效数据是地理坐标。
代表尺度的类别数据
您可能以代表尺度的类别数据作为聚类依据,例如,从低劣到优秀的评级尺度(相应的数值代码为从 1 到 5)。在此情况下,数值代码的平均值是有意义的。
日期时间数据
您可以使用 Analytics 函数将日期时间数据转换为数值数据。但是,生成的数值数据不是连续的,从而给聚类分析带来问题,后者假定数字集是连续的。
例如,下面的三个表示日期的数字均相差一天。但是,作为数字,第一个数字和第二个数字之间存在相当大的间隙或者距离。
- 20181130
- 20181201
- 20181202
您可以在聚类分析中使用序列化日期值。序列化日期是一组连续的整数,表示自 1900 年 1 月 1 日以来已经逝去的天数。
评估输出聚类
聚类算法总是输出一个包含指定数量的聚类的表。输出表中的每个记录都将在某个聚类中。
此刻,您需要评估是否任一聚类都具有解析重要性或意义。算法对某个聚类中的记录进行分组并不必然意味着该分组具有重要性。
两个您可以评估的特征是聚类一致性和聚类大小。
提示
通过在报告工具中将聚类输出表绘制为散点图,并且为每个聚类分配一种不同的颜色,可以最轻松地快速评估输出聚类的性质。
步骤
为聚类算法指定设置
- 打开包含您想要聚类的数据的表。
- 从 Analytics 主菜单中选择机器学习 > 聚类。
- 在聚类个数 (K 值)中,指定要用来对数据进行分组的聚类个数。
- 在最大迭代数中,为该聚类算法所执行的迭代数指定一个上限。
- 在初始化数中,指定生成随机形心的初始集的次数。
- 可选。选择种子,然后输入一个数字。
指定数据预处理方法
在预处理下拉列表中,选择在聚类数据之前对其进行预处理的方法:
标准化 | 围绕零 (0) 放置键域值,并且在计算聚类时将这些值缩放至单位方差 |
---|---|
缩放到单位方差 | 在计算聚类时将键域值缩放至单位方差,但不围绕零 (0) 放置这些值 |
无 | 在计算聚类时使用原始键域值(未缩放) |
选择域
- 从聚类依据列表中,选择一个或多个要用来对该表中的记录进行聚类的键域。
键域必须是数值域。
- 可选。从其他域列表中,选择一个或多个要包括在输出表中的其他域。
提示
您可以使用 Ctrl+单击选择多个不相邻的域,使用 Shift+单击选择多个相邻的域。
最终确定命令输入
-
如果当前视图中有想要从处理中排除的记录,请在如果文本框中输入一个条件,或单击如果使用表达式生成器创建 IF 声明。
说明
在应用任何范围选项(前、后、当)之后,仅针对表中的剩余记录评估如果条件。
IF 声明中考虑到了视图中的所有记录,滤除那些不满足指定条件的记录。
- 在到文本框中,指定输出表的名称。
- 可选。在更多选项卡上:
- 要指定只处理记录的一个子集,请选择范围面板中的选项之一。
- 如果您希望输出表自动打开,请选择使用输出表。
- 单击确定。