Microsoft序列聚类分析算法是一种混合算法,它使用 Markov 链分析来识别有序序列,并将此分析的结果与聚类分析技术相结合,以基于模型中的序列和其他属性生成聚类。 本主题介绍算法的实现、如何自定义算法以及序列聚类分析模型的特殊要求。
有关算法的更常规信息,包括如何浏览和查询顺序聚类分析模型,请参阅 Microsoft序列聚类分析算法。
Microsoft序列聚类分析算法的实现
Microsoft序列聚类分析模型使用 Markov 模型来识别序列并确定序列的概率。 Markov 模型是一个定向图,用于存储不同状态之间的转换。 Microsoft序列聚类分析算法使用 n 顺序 Markov 链,而不是隐藏的 Markov 模型。
Markov 链中的订单数指示使用多少个状态来确定当前状态的概率。 在一级 Markov 模型中,当前状态的概率仅取决于以前的状态。 在二阶 Markov 链中,状态的概率取决于前两个州,依此类推。 对于每个 Markov 链,转换矩阵存储每个状态组合的转换。 随着 Markov 链的长度增加,矩阵的大小也会呈指数级增加,矩阵变得极其稀疏。 处理时间也会按比例增加。
使用点击流分析示例来可视化链可能很有帮助,该示例可分析对网站上的网页的访问。 每个用户为每个会话创建一长串的单击。 创建模型以分析网站上的用户行为时,用于训练的数据集是一系列 URL,转换为包含相同单击路径的所有实例计数的图形。 例如,该图包含用户从第 1 页移动到第 2 页的概率(10%%),用户从第 1 页移动到第 3 页的概率(20%%),依此类推。 将所有可能的路径和部分放在一起时,可以获得一个图形,该图可能比任何一个观察到的路径更长、更复杂。
默认情况下,Microsoft序列聚类分析算法使用聚类分析的预期最大化(EM)方法。 有关详细信息,请参阅 Microsoft聚类分析算法技术参考。
聚类分析的目标包括顺序属性和非顺序属性。 使用概率分布随机选择每个分类。 每个分类都有一个 Markov 链,该链表示完整的路径集,以及一个包含序列状态转换和概率的矩阵。 根据初始分布,Bayes 规则用于计算特定分类中任何属性(包括序列)的概率。
Microsoft序列聚类分析算法支持向模型添加非序列属性。 这意味着,这些附加属性与序列属性相结合,以创建具有类似属性的事例的分类,就像在典型的聚类分析模型中一样。
序列聚类分析模型往往比典型的聚类分析模型创建更多的聚类。 因此,Microsoft序列聚类分析算法执行 聚类分解,以基于序列和其他属性分隔分类。
序列聚类分析模型中的特征选择
生成序列时不调用功能选择;但是,功能选择适用于聚类分析阶段。
| 模型类型 | 功能选择方法 | 注释 |
|---|---|---|
| 序列聚类分析 | 未使用 | 不调用功能选择;但是,可以通过设置参数MINIMUM_SUPPORT和MINIMUM_PROBABILIITY的值来控制算法的行为。 |
| 集群 | 有趣程度评分 | 尽管聚类算法可能使用离散或离散化算法,但每个属性的评分作为距离计算且是连续的,因此使用趣味性评分。 |
有关详细信息,请参阅 功能选择。
优化性能
Microsoft序列聚类分析算法支持各种优化处理方式:
通过设置CLUSTER_COUNT参数的值来控制生成的群集数。
通过增加MINIMUM_SUPPORT参数的值,减少作为属性包含的序列数。 因此,将消除罕见的序列。
通过对相关属性进行分组,在处理模型之前减少复杂性。
一般情况下,可以通过多种方式优化 n 顺序 Markov 链模式的性能:
控制可能序列的长度。
以编程方式减小 n 的值。
仅存储超出指定阈值的概率。
这些方法的完整讨论超出了本主题的范围。
自定义序列聚类算法
Microsoft序列聚类分析算法支持影响结果挖掘模型的行为、性能和准确性的参数。 还可以通过设置控制算法处理训练数据的建模标志来修改已完成模型的行为。
设置算法参数
下表介绍了可用于Microsoft序列聚类分析算法的参数。
聚类计数
指定要由算法生成的大致群集数。 如果无法从数据生成近似的群集数,算法将生成尽可能多的聚类。 将 CLUSTER_COUNT 参数设置为 0 会导致算法使用启发法来最好地确定要生成的群集数。
默认值是10。
注释
指定非零数字充当算法的提示,该算法继续查找指定数字的目标,但最终可能会发现更多或更少。
最低支持
指定支持创建群集的属性所需的最小事例数。
默认值是10。
最大序列状态
指定序列可以具有的最大状态数。
将此值设置为大于 100 的数字可能会导致算法创建不提供有意义的信息的模型。
默认值为 64。
最大状态数
指定算法支持的非序列属性的最大状态数。 如果非序列属性的状态数大于最大状态数,则算法使用该属性的最常见状态并将剩余状态视为 Missing。
默认值为 100。
建模标记
支持以下建模标志与Microsoft序列聚类分析算法一起使用。
NOT NULL
指示该列不能包含 null。 如果 Analysis Services 在模型训练期间遇到 null,则会出现错误。
适用于数据挖掘结构列。
MODEL_EXISTENCE_ONLY (if translation should be avoided to preserve technical accuracy)
表示将列视为具有两种可能的状态: Missing 和 Existing。 null 被视为值 Missing 。
适用于挖掘模型列。
有关在挖掘模型中使用缺失值以及缺失值如何影响概率分数的详细信息,请参阅“缺失值”(Analysis Services - 数据挖掘)。
要求
事例表必须具有事例 ID 列。 (可选)事例表可以包含存储有关事例的属性的其他列。
Microsoft序列聚类分析算法需要存储为嵌套表的序列信息。 嵌套表必须具有单个键序列列。 列 Key Sequence 可以包含可排序的任何类型的数据,包括字符串数据类型,但该列必须包含每个事例的唯一值。 此外,在处理模型之前,必须确保事例表和嵌套表都按与表相关的键的升序排序。
注释
如果创建使用Microsoft序列算法但不使用序列列的模型,则生成的模型将不包含任何序列,但只会基于模型中包含的其他属性对事例进行聚类分析。
输入列和可预测列
Microsoft序列聚类分析算法支持下表中列出的特定输入列和可预测列。 有关在挖掘模型中使用内容类型的含义的详细信息,请参阅内容类型(数据挖掘)。
| 列 | 内容类型 |
|---|---|
| 输入属性 | 连续、循环、离散、离散化、关键、关键序列、表和有序 |
| 可预测属性 | 连续、循环、离散、离散化、表和有序 |
注解
使用 PredictSequence (DMX) 函数预测序列。 有关支持序列预测的 SQL Server 版本的详细信息,请参阅 SQL Server 2012 各版本支持的功能 (https://go.microsoft.com/fwlink/?linkid=232473)。
Microsoft序列聚类分析算法不支持使用预测模型标记语言(PMML)来创建挖掘模型。
微软序列聚类算法支持穿透分析、使用 OLAP 数据挖掘模型以及使用数据挖掘维度。
另请参阅
Microsoft序列聚类分析算法
序列聚类分析模型查询示例
序列聚类模型的挖掘模型内容(Analysis Services - 数据挖掘)