本部分介绍Microsoft聚类分析算法的实现,包括可用于控制聚类分析模型行为的参数。 它还提供有关在创建和处理聚类分析模型时如何提高性能的指导。
有关如何使用聚类分析模型的其他信息,请参阅以下主题:
Microsoft聚类分析算法的实现
Microsoft聚类分析算法提供了两种方法用于创建群集并将数据点分配给群集。 第一种算法是K-means,这是一种硬聚类方法。 这意味着数据点只能属于一个分类,并且为该分类中每个数据点的成员身份计算单个概率。 第二种方法是“期望最大化”(EM)方法,它是一种软聚类方法。 这意味着数据点始终属于多个分类,并且为每个数据点和分类组合计算概率。
可以通过设置 CLUSTERING_METHOD 参数来选择要使用的算法。 群集默认方法是可缩放的EM。
EM 群集
在 EM 聚类分析中,该算法以迭代方式优化初始聚类模型以适应数据,并确定数据点存在于聚类中的概率。 当概率模型适合数据时,该算法将结束该过程。 用于确定拟合的函数是给定模型的数据的日志可能性。
如果在过程中生成空群集,或者一个或多个群集的成员身份低于给定阈值,则会在新点重新分配具有低总体的群集,并重新运行 EM 算法。
EM 聚类分析方法的结果是概率性的。 这意味着每个数据点都属于所有分类,但数据点到分类的每个分配都有不同的概率。 由于该方法允许群集重叠,因此所有分类中的项总和可能会超过训练集中的总项数。 在挖掘模型结果中,指示支持的分数已调整,以便考虑这一点。
EM 算法是Microsoft聚类分析模型中使用的默认算法。 此算法用作默认值,因为它与 k 平均值聚类分析相比提供了多种优势:
最多需要一次数据库扫描。
尽管内存有限(RAM)仍可正常工作。
可以使用单向游标。
性能优于采样方法。
Microsoft的实现提供两个选项:可缩放的EM和不可缩放的EM。 默认情况下,在可缩放的 EM 中,前 50,000 条记录用于初始化初始扫描。 如果成功,模型仅使用此数据。 如果模型不能使用 50,000 条记录进行调整,将读取额外的 50,000 条记录。 在不可缩放的 EM 中,无论数据集的大小如何,都会读取整个数据集。 此方法可能会创建更准确的群集,但内存要求可能很重要。 由于可缩放 EM 在本地缓冲区上运行,因此循环访问数据的速度要快得多,并且算法比不可缩放的 EM 更好地使用 CPU 内存缓存。 此外,可缩放 EM 比不可缩放的 EM 快三倍,即使所有数据都可以容纳在主内存中。 在大多数情况下,性能改进不会导致整个模型的质量较低。
有关描述 Microsoft 聚类算法中 EM 实现的技术报告,请参阅 将 EM(期望最大化算法)聚类扩展至大型数据库。
K 平均值聚类
K-means 聚类分析是一种已知的分配群集成员身份的方法,通过将群集中项之间的差异降到最低,同时最大化群集之间的距离。 k-means 中的“means”是指群集的 质心 ,它是一个初步选择的数据点,通过迭代的方式不断优化,直到准确表示群集中所有数据点的真实平均值。 “k”是指用于启动聚类过程的任意数量的点。 k 平均值算法计算分类中数据记录与表示分类平均值的向量之间的平方 Euclidean 距离,并在该总和达到最小值时聚合在最后一组 k 聚类上。
k-means 算法将每个数据点分配给一个群集,并且不允许成员身份的不确定性。 在群集中,成员资格是通过与质心的距离来表示的。
通常,k 平均值算法用于创建连续属性的聚类,其中计算与平均值的距离非常简单。 但是,Microsoft 的实现通过使用概率对 k-means 方法进行了调整,用于对离散属性进行聚类。 对于离散属性,将按如下方式计算数据点与特定分类之间的距离:
1 - P(数据点、群集)
注释
Microsoft聚类分析算法不公开计算 k 平均值中使用的距离函数,并且距离度量值在完成的模型中不可用。 但是,可以使用预测函数返回与距离对应的值,其中距离计算为属于分类的数据点的概率。 有关详细信息,请参阅 ClusterProbability (DMX)。
k-means 算法提供两种采样数据集的方法:非可扩展的 K-means,它加载整个数据集并进行一次聚类运算;或者可扩展的 k-means,算法使用前 50,000 个样本,仅在需要更多数据以便模型更好地适应数据时才读取更多样本。
SQL Server 2008 中Microsoft聚类分析算法的更新
在 SQL Server 2008 中,Microsoft聚类分析算法的默认配置已更改为使用内部参数 NORMALIZATION = 1。 规范化是使用 z 分数统计信息执行的,并假定正态分布。 此更改默认行为的目的是最大程度地减少可能具有较大量级和许多离群值的属性的影响。 但是,z 分数规范化可能会改变非正态分布(如统一分布)的分布的聚类分析结果。 若要防止规范化并获取与 SQL Server 2005 中 K 平均值聚类分析算法相同的行为,可以使用 “参数设置” 对话框添加自定义参数,NORMALIZATION 并将其值设置为 0。
注释
NORMALIZATION 参数是Microsoft聚类分析算法的内部属性,不受支持。 通常,建议在聚类分析模型中使用规范化来提高模型结果。
自定义Microsoft聚类分析算法
Microsoft聚类分析算法支持影响生成的挖掘模型的行为、性能和准确性的多个参数。
设置算法参数
下表描述了可用于Microsoft聚类分析算法的参数。 这些参数会影响生成的挖掘模型的性能和准确性。
聚类方法
指定要使用的算法的聚类分析方法。 可以使用以下聚类分析方法:
身份证件 | 方法 |
---|---|
1 | 可扩展 EM算法 |
2 | 不可缩放的 EM |
3 | 可缩放的 K-Means |
4 | 不可缩放的 K-Means。 |
默认值为 1(可缩放 EM)。
聚类计数
指定要由算法生成的大致群集数。 如果无法从数据生成近似的群集数,算法将生成尽可能多的聚类。 将CLUSTER_COUNT设置为 0 会导致算法使用启发法来最好地确定要生成的群集数。
默认值是10。
聚类种子
指定用于为模型生成的初始阶段随机生成群集的种子编号。
通过更改此数字,可以更改初始分类的生成方式,然后比较使用不同种子生成的模型。 如果种子已更改,但发现的分类不会发生很大变化,则可以将模型视为相对稳定。
默认值为 0。
最低支持
指定生成群集所需的最小事例数。 如果群集中的事例数低于此数字,则群集被视为空并丢弃。
如果设置此数字太高,可能会错过有效的群集。
注释
如果使用 EM(这是默认聚类分析方法),则某些群集可能具有低于指定值的支持值。 这是因为会评估每个案例,评估其在所有可能群集中的成员资格,并且有些群集可能只有最低限度的支持。
默认值为 1。
建模基数
指定在聚类分析过程中构造的示例模型数。
减少候选模型的数量可以提高性能,但也有可能错过一些优秀的候选模型。
默认值是10。
停止容差
指定用于确定何时达到收敛且算法完成生成模型的值。 当聚类概率的总体变化小于除以模型大小的STOPPING_TOLERANCE参数的比例时,将达到收敛。
默认值是10。
样本量
指定当CLUSTERING_METHOD参数设置为可扩展聚类方法之一时,算法在每次处理时使用的实例数。 将SAMPLE_SIZE参数设置为 0 将导致整个数据集在单个传递中聚集。 在单个传递中加载整个数据集可能会导致内存和性能问题。
默认值为 50000。
最大输入属性
指定算法在调用功能选择之前可以处理的最大输入属性数。 将此值设置为 0 指定没有最大属性数。
增加属性数可能会显著降低性能。
默认值为 255。
最大状态数
指定算法支持的最大属性状态数。 如果属性的状态超过最大值,则算法使用最常用的状态并忽略剩余状态。
增加状态数可能会显著降低性能。
默认值为 100。
建模标记
该算法支持以下建模标志。 创建挖掘结构或挖掘模型时,可以定义建模标志。 建模标志指定在分析期间处理每个列中的值的方式。
建模标志 | DESCRIPTION |
---|---|
MODEL_EXISTENCE_ONLY (if translation should be avoided to preserve technical accuracy) | 该列将被视为具有两种可能的状态:缺失和存在。 null 是缺失值。 适用于挖掘模型列。 |
不为空 | 该列不能包含 null。 如果 Analysis Services 在模型训练期间遇到 null,则会出现错误。 适用于挖掘结构列。 |
要求
聚类分析模型必须包含键列和输入列。 还可以将输入列定义为可预测列。 设置为 Predict Only
的列不会用于生成群集。 在生成群集后,计算群集中这些值的分布。
输入列和可预测列
Microsoft聚类分析算法支持下表中列出的特定输入列和可预测列。 有关在挖掘模型中使用内容类型的含义的详细信息,请参阅内容类型(数据挖掘)。
列 | 内容类型 |
---|---|
输入属性 | 连续、循环、离散、离散化、键、表、有序 |
可预测属性 | 连续、循环、离散、离散化、表、有序 |
注释
支持循环和有序内容类型,但算法将它们视为离散值,并且不执行特殊处理。