Machine Learning 简明教程

Machine Learning - Association Rules

关联规则挖掘是机器学习中使用的一种技术,用于发现大型数据集中的有趣模式。这些模式以关联规则的形式表示,表示数据集中的不同项目或属性之间的关系。关联规则挖掘的最常见应用是在市场篮子分析中,目的是识别经常一起购买的产品。

关联规则表示为一组前提条件和一组结果。前提条件表示规则适用的条件或项目,而结果表示可能与前提条件相关联的结果或项目。关联规则的强度由两项指标衡量:支持和置信度。支持是在数据集中同时包含前提条件和结果的所有事务的比例,而置信度是包含结果的所有事务中包含前提条件的比例。

Example

在 Python 中,mlxtend 库提供了几种关联规则挖掘函数。以下是使用 mlxtend 中的 apriori 函数在 Python 中实现关联规则挖掘的一个示例 −

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules

# Create a sample dataset
data = [['milk', 'bread', 'butter'],
   ['milk', 'bread'],
   ['milk', 'butter'],
   ['bread', 'butter'],
   ['milk', 'bread', 'butter', 'cheese'],
   ['milk', 'cheese']]

# Encode the dataset
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)

# Find frequent itemsets using Apriori algorithm
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)

# Generate association rules
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5)

# Print the results
print("Frequent Itemsets:")
print(frequent_itemsets)
print("\nAssociation Rules:")
print(rules)

在此示例中,我们创建了一个购物交易的样本数据集,并使用 mlxtend 中的 TransactionEncoder 对其进行编码。然后,我们使用 apriori 函数查找最低支持度为 0.5 的频繁项集。最后,我们使用 association_rules 函数生成置信度最低为 0.5 的关联规则。

apriori 函数有两个参数:编码数据集和最低支持度阈值。use_colnames 参数设置为 True,以使用原始项目名称,而不是布尔值。association_rules 函数有两个参数:频繁项集和生成关联规则的度量和最低阈值。在此示例中,我们的置信度指标,其最小阈值为 0.5。

Output

此代码的输出将显示频繁项集和生成的关联规则。频繁项集表示数据集中经常同时出现的项目集,而关联规则表示频繁项集中项目的之间的关系。

Frequent Itemsets:
   support          itemsets
0   0.666667          (bread)
1   0.666667         (butter)
2   0.833333           (milk)
3   0.500000  (bread, butter)
4   0.500000    (bread, milk)
5   0.500000   (butter, milk)
Association Rules:
   antecedents    consequents    antecedent support    consequent support    support \
0   (bread)        (butter)            0.666667             0.666667           0.5
1   (butter)        (bread)            0.666667             0.666667           0.5
2   (bread)          (milk)            0.666667             0.833333           0.5
3   (milk)          (bread)            0.833333             0.666667           0.5
4   (butter)         (milk)            0.666667             0.833333           0.5
5   (milk)         (butter)            0.833333             0.666667           0.5


   confidence    lift    leverage    conviction    zhangs_metric
0     0.75      1.125     0.055556     1.333333      0.333333
1     0.75      1.125     0.055556     1.333333      0.333333
2     0.75      0.900    -0.055556     0.666667     -0.250000
3     0.60      0.900    -0.055556     0.833333     -0.400000
4     0.75      0.900    -0.055556     0.666667     -0.250000
5     0.60      0.900    -0.055556     0.833333     -0.400000

关联规则挖掘是一种强大的技术,可以运用到许多不同类型的数据集中。它通常用于市场篮子分析中,以识别经常一起购买的产品,但它也可用于其他领域,例如医疗保健、金融和社交媒体。借助 mlxtend 等 Python 库,可以轻松实现关联规则挖掘,并从大型数据集中生成有价值的见解。