机器学习 - 关联规则
关联规则挖掘是机器学习中用于在大规模数据集里发现有趣模式的一种技术。这些模式以关联规则的形式表达,代表数据集不同项目或属性之间的关系。关联规则挖掘最常见的应用是市场篮子分析,其目标是识别经常一起被购买的产品。
关联规则由一组前件和一组后件表示。前件代表规则适用的条件或项目,后件代表可能与前件相关联的结果或项目。关联规则的强度通过两个度量指标来衡量:support 和 confidence。Support 是数据集里同时包含前件和后件的交易比例,而 confidence 是给定包含前件的情况下,同时包含后件的交易比例。
示例 - 关联规则实现
在 Python 中,mlxtend 库提供了多个用于关联规则挖掘的函数。以下是使用 mlxtend 中的 apriori 函数在 Python 中实现关联规则挖掘的示例 −
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
# 创建示例数据集
data = [['milk', 'bread', 'butter'],
['milk', 'bread'],
['milk', 'butter'],
['bread', 'butter'],
['milk', 'bread', 'butter', 'cheese'],
['milk', 'cheese']]
# 对数据集进行编码
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
# 使用 Apriori 算法查找频繁项集
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
# 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5)
# 打印结果
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 函数接受两个参数:频繁项集以及生成关联规则的 metric 和最小阈值。在这个示例中,我们使用 confidence metric,最小阈值为 0.5。
输出
此代码的输出将显示频繁项集和生成的关联规则。频繁项集表示数据集中频繁共同出现的事物集,而关联规则表示频繁项集中事物之间的关系。
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 库,实现关联规则挖掘并从大型数据集中生成宝贵洞察变得非常容易。