数据挖掘算法简介 (2/10) - 聚类分析

2.   聚类分析(Microsoft Clustering Algorithm)

a.    目的:

Microsoft 聚类分析算法是 Analysis Services 提供的分段算法 (segmentation Algorithm)  该算法使用迭代(iterative)技术将数据集中的事例分组为包含类似特征的分类,同一个子集中的成员对象都有相似的一些属性。

b.   原理:

Microsoft 聚类分析算法首先标识数据集中的关系并根据这些关系生成一系列分类。 散点图是一种非常有用的方法,可以直观地表示算法如何对数据进行分组,如下面的关系图所示。 散点图可以表示数据集中的所有事例,在该图中每个事例就是一个点。 

数据集中事例的散点图

在最初定义分类后,算法将通过计算确定分类表示点分组情况的适合程度,然后尝试重新定义这些分组以创建可以更好地表示数据的分类。 该算法将循环执行此过程,直到它不能再通过重新定义分类来改进结果为止。

c.    方法

Microsoft 聚类分析算法提供两种创建分类、并为分类分配数据点的方法。 第一种方法是 K-Means 算法,这是一种较难的聚类分析方法。这意味着一个数据点只能属于一个分类,并会为该分类中的每个数据点的成员身份计算一个概率。 第二种方法是期望值最大化”(EM – Expectation Maximum) 方法,这是软聚类分析方法。这意味着一个数据点总是属于多个分类,并会为每个数据点和分类的组合计算一个概率。可以通过设置 CLUSTERING_METHOD 参数来选择要使用的算法。 聚类分析的默认方法是可缩放(scalable)的 EM

d.   数据要求

一个聚类分析模型必须包含一个键列、若干输入列和非必选的可预测列:

·       单个 key  - 每个模型都必须包含一个用于唯一标识每条记录的数值列或文本列。 不允许复合键。

·       输入列 - 每个模型都必须至少包含一个输入列,该输入列包含用于生成此分类的值。 可以根据需要拥有任意多的输入列,但是具体取决于每个列中值的数量,添加额外列会增加定型模型所需的时间。

·       可选性的可预测列 - 该算法不需要可预测列来生成模型,但是可以添加几乎任意数据类型的可预测列。 可以将可预测列的值视为对聚类分析模型的输入,或者将其指定仅用于预测。 例如,如果需要通过对人口统计信息(如地区或年龄)进行分类来预测客户的收入,则可将收入指定为 PredictOnly,然后将所有其他列(如地区和年龄)添加为输入。

e.    查看模型

若要浏览该模型,可以使用 Microsoft 分类查看器。 查看聚类分析模型时,Analysis Services 将在一个关系图中显示分类(该关系图描绘了分类之间的关系),还提供了每个分类的详细配置文件、将每个分类与其他分类区分开来的属性列表以及整个定型数据集的特征。 

f.     预测

为模型定型后,结果将存储为一组模式,您可以浏览该模型或利用它来作出预测。可以创建查询,用于返回关于新数据是否适合所发现分类的预测,或者用于获取有关该分类的描述性统计信息。

g.    自定义参数与性能优化

Microsoft 聚类分析算法支持以下几个参数,这些参数会影响所生成的挖掘模型的行为、性能和准确性。

                                         i.     设置算法参数

1.    CLUSTERING_METHOD

1=可缩放 EM default

2 =可缩放 EM

3 =可缩放 k-means

4 =不可缩放 k-means

2.    CLUSTER_COUNT

指定将由算法生成的大致分类数。 如果无法基于相应的数据生成该大致数目的分类,则算法将生成尽可能多的分类。 如果将 CLUSTER_COUNT 设置为 0,则算法将使用试探性方法最准确地确定要生成的分类数。

默认值为 10

3.    CLUSTER_SEED

指定在为建模初始阶段随机生成分类时所要使用的种子数字。

通过更改此数字,可以更改生成初始分类的方法,然后使用不同的种子比较已生成的模型。 如果种子已更改,但所发现的分类并没有太大的更改,则模型可被视为相对稳定。

默认值为 0

4.    MINIMUM_SUPPORT

指定生成某个分类至少需要的事例数。 如果分类中的事例数小于此数目,则此分类将被视为空,并将被丢弃。

如果将这个数目设置得过高,则可能遗漏有效分类。默认值为 1

注意:如果使用 EM,即默认聚类分析方法,则一些分类可能具有低于指定值的支持值。 这是因为此算法将计算每个事例在所有可能分类中的成员身份,对于某些分类,可能达不到最低指定值。

5.    MODELLING_CARDINALITY

指定在聚类分析过程中构建的示例模型数。

减少候选模型数会提高性能,但存在遗漏一些好的候选模型的风险。默认值为 10

6.    STOPPING_TOLERANCE

指定一个值,它可确定何时达到收敛而且算法完成建模。 当分类概率中的整体变化小于 STOPPING_TOLERANCE 参数与模型大小之比时,即达到收敛。 默认值为 10

7.    SAMPLE_SIZE

如果 CLUSTERING_METHOD 参数设置为其中一个可缩放聚类分析方法,请指定算法在每个传递中使用的事例数。 如果将 SAMPLE_SIZE 参数设置为 0,则会导致在单个传递中对整个数据集进行聚类分析操作。 在单个传递中加载整个数据集会导致内存和性能问题。 默认值为 50000

8.    MAXIMUM_INPUT_ATTRIBUTES

指定算法在调用功能选择之前可以处理的最大输入属性数。 将该值设置为 0 表示不限制属性的最大数目。增大属性的数目会大大降低性能。 默认值为 255

9.    MAXIMUM_STATES

指定算法支持的最大属性状态数。 如果属性的状态数超过此最大值,则算法将使用最常见状态,而忽略其余状态。增大状态的数目会大大降低性能。默认值为 100

                                       ii.     建模标志 Model Flag

此算法支持下列建模标志。 在创建挖掘结构或挖掘模型时会定义建模标志。 建模标志指定在分析过程中如何处理每一列中的值。

1.    MODEL_EXISTENCE_ONLY

该列将被视为具有两个可能状态:缺失现有 Null 表示缺失值。适用于挖掘模型列 (Mining Model Columns)

2.    NOT NULL

此列中不能包含 Null 值。 如果 Analysis Services 在模型定型过程中遇到 Null 值,将会导致错误。适用于挖掘结构列 (Mining Structure Columns)

h.   应用

考虑这样一组人员,他们共享类似的人口统计信息并从 Adventure Works 公司购买类似的产品。 这组人员就表示一个数据分类。 数据库中可能存在多个这样的分类。 通过观察构成分类的各列,可以更清楚地了解数据集中的记录如何相互关联。

聚类分析的其它应用还有分析浏览数据、标识数据中的异常及创建预测等。