system: [SYSTEM]

user: 5. 关联规则算法 5.1. 引论 关联规则作为一种常用的数据关联关系的挖掘方法，在很多领域均有较为明显的应用优势，比如说歌曲推荐，社交关联等。作为一种比较经典的推荐算法，关联规则主要能通过历史数据从概率的角度发掘出样本与特征之间的潜在关系，从而实现诸如顾客购买偏好等特征的量化 [ 8 ]。 值得注意的是，关联规则的学习器是无监督学习，因此不需要对训练的数据打标签，这对数据预处理环节提出了较为宽松的要求，但因此也有一些对应的不足之处，即训练得到的模型缺乏科学有效的评估方式，普遍需要通过对模型结果进行人工观测以判断模型的合理性。 5.1.1. 例子——源数据 本例子所分析的数据为阅读网站的点击流数据，主要思想就是通过关联规则对不同类型的文章类型之间通过点击流数据的分析，以得到各文章类型间的关联关系。不同的访问者访问的版块，如表1所示： Table 1 The sample clickstream data for the sit 访问ID List of media categories accessed 1 {新闻，金融} 2 {新闻，金融} 3 {体育，金融，新闻} 4 {艺术} 5 {体育，新闻，金融} 6 {新闻，艺术，环境} 表1. 阅读网站的点击流数据样例 5.1.2. 数据格式 关联规则是实现需要一定数据预处理，在本例中主要就是将原始数据进行稀疏矩阵化处理，具体规则如下：行名为文章类型，列名为序号，当序号为i的访问者访问过文章类型为j时，则设置稀疏矩阵的(i，j)的值为1，否则为0。如表2所示： Table 2 Source data after sparse matrix processin 访问ID 新闻 金融 环境 体育 1 1 1 0 0 2 1 1 0 0 3 1 1 0 1 4 0 0 0 0 5 1 1 0 1 6 1 0 1 0 表2. 稀疏矩阵化处理后的源数据 5.2. 术语和度量 5.2.1. 项集板块集 项集用来描述以文章类型作为元素的集合，例如{新闻，金融}=>{体育}，其中{新闻，金融}是一个项集实例，{体育}也是一个项集实例。 =>符号作为规则描述了两个项集之间的关联关系，即说明同时看过新闻类和金融类文章的访问者很有可能会看体育类文章。 =>符号左侧的项集被称为左项集LHS，即Left-hand-side，右侧的项集被称为右项集RHS，即Right-hand-side。 在基于关联规则的算法中，各项集间关联强度的量化主要依靠以下四个指标。 5.2.2. 支持度Support 项集i的支持度的计算方式： 项 集 的 支 持 度 = 项 集 的 出 现 次 数 总 的 记 录 数 ( 交 易 数 ) Support ( { 新 闻 } ) = 5 / 6 = 0.83 Support ( { 新 闻 ， 金 融 } ) = 4 / 6 = 0. 67 Support ( { 体 育 } ) = 2 / 6 = 0. 33 支持度的概率意义在于对项集i的出现频次的度量，在进行关联规则的挖掘时，算法更倾向于优先对高频次项集的关联关系进行探索。 5.2.3. 置信度Confidence 关联规则 的置信度计算公式： 置信度的意义在于基于历史数据的量化了两个项集之间的关联强度，即通过概率学的方式将项集X和项集Y的关联强度用项集X出现时项集Y发生的概率来表示。 Confidence ( { News ， Finance } → { Sports } ) = Supports ( { 新 闻 ， 金 融 ， 体 育 } ) Supports ( { 新 闻 ， 金 融 } ) = 2 / 6 4 / 6 = 0.5 表示50%的人访问过{新闻，金融}，同时也会访问{体育}。 5.2.4. 提升度Lift 单纯的依靠支持度和置信度来进行关联强度的量化时，会有一定的缺陷。原因在于支持度高的项集往往在置信度上也表现优异，即对于高频次的项集i，在任意项集出现的前提下，项集i发生的概率都会相对较高，这将破坏算法的平衡性和可靠性。 所以要引进Lift这个概念： Lift ( X → Y ) = Support ( X ∪ Y ) Support ( X ) ∗ Support ( Y ) 例： Lift ( { 新 闻 ， 金 融 } → { 体 育 } ) = Support ( X ∪ Y ) Support ( X ) ∗ Support ( Y ) = 0.333 0.667 ∗ 0.33 = 1.5 对关联规则失效的情况进行概率上的统计，进一步完善对关联算法的评价指标体系。项集中含有X而不含有Y的概率为： Conviction ( X → Y ) = 1 − Support ( Y ) 1 − Confidence ( X → Y ) 5.3. 生成规则 一般两步： 第一步，高支持度项集的提取。遍历所有项集并分别计算其支持度，然后通过人为设置的阈值，对高支持度项集进行筛选。n个板块，可以产生 2 n − 1 个项集(板块集)。 第二步，高置信度规则的提取，针对步骤一筛选所得的高支持度项集，遍历的进行对应规则的置信度的计算，然后通过人为设置的阈值，对高置信度规则进行筛选。n个板块，总共可以产生 3 n − 2 n + 1 + 1 条规则。 从计算复杂度的角度考虑，步骤2的计算复杂度更高，步骤1相比于步骤2，然后实际进行算法运算时，由于步骤1的阈值筛选掉了大量的低支持度项集，因此实际计算量步骤1更大。 5.4. Apriori算法 Apriori Principle：1) 项集的频繁性是可遗传的。当项集X是高支持度项集时，此项集的子集也会是高支持度的。2) 项集的不频繁性是可追溯的。当项集Y是低支持度项集时，此项集的父集也会是低支持度的。例子： { X ， Y } 是频繁的，那么 { X } ， { Y } 也是频繁的。如果 是不频繁的，那么 { Y ， Z } ， { X ， Y ， Z } ， { X ， Z } 都是不频繁的。 生成频繁项集的算法流程： 1) 通过预设的支持度阈值sup，计算得到所有的高支持度项集。 2) 通过预设的支持度阈值sup过滤掉所有支持度低于sup的单一元素项集。 3) 基于步骤1过滤得到的单一元素高支持度项集，通过合并得到双元素项集，并计算支持度进行低支持度项集的过滤。 4) 基于步骤1和步骤2过滤得到的高支持度项集，通过合并得到三元素项集，并再次计算支持度进行低支持度项集的过滤。如表3： Table 3 Support data between different section One-Item Sets Support Count Support {新闻} 5 0.83 {金融} 4 0.67 {环境} 1 0.17 {体育} 2 0.33 Two-Item Sets Support Count Support {新闻，金融} 4 0.67 {新闻，体育} 2 0.33 {金融，体育} 2 0.33 Three-Item Sets Support Count Support {新闻，金融，体育} 2 0.33 表3. 不同版块之间的支持度数据 规则生成：1) 基于已得的高支持度项集，分别进行规则的置信度计算，并通过预设的置信度阈值过滤低置信度的规则，由于置信度的计算是基于已知的支持度，因此此过程计算量不高。2) 基于已得的高支持度项集和高置信度规则，进行规则的提升度计算，并通过预设的提升度阈值过滤低提升度的规则，以实现对规则的进一步完善。由于置信度的计算是基于已知的支持度和置信度，因此此过程计算量也不高。