亲和性分析方法的应用场景:欺诈检测、顾客区分、软件优化、产品推荐等。
一、Apriori算法简介
Apriori算法--经典的亲和性分析算法。它只从数据集中频繁出现的商品中选取共同出现的商品组成频繁项集,一旦找到频繁项集,生成关联规则就很容易了。
频繁项集是一组达到最小支持度的项目,而关联规则由前提和结论组成。
Apriori算法原理:首先,确保了规则在数据集中有足够的支持度。比如,要生成包含商品A、B的频繁项集(A, B),要求支持度至少为30,那么A和B都必须至少在数据集中出现30次。
更大的频繁项集也要遵守该项约定,比如要生成频繁项集(A, B, C, D),那么子集(A, B, C)必须是频繁项集(当然D自己也要满足最小支持度标准)。生成频繁项集后,将不再考虑其他可能的却不够频繁的项集(这样的集合有很多),从而大大减少测试新规则所需的时间。
Apriori算法步骤:
(1)把各项目放到只包含自己的项集中,生成最初的频繁项集。只使用达到最小支持度的项目。
(2)查找现有的频繁项集的超集,发现新的频繁项集,并用其生成新的备选项目。
(3)测试新生成的备选项集的频繁程度,如果不够频繁,则舍弃。如果没有新的频繁项集,就跳到最后一步。
(4) 存储新发现的频繁项集,跳到步骤(2)。
(5)返回发现的所有频繁项集。
二、Apriori算法代码实现电影推荐
加载数据集
数据集链接:http://grouplens.org/datasets/movielens/
all_ratings = pd.read_csv('./ml-100k/u.data',
delimiter='\t',
header=None,
names=["UserID", "MovieID", "Rating", "Datetime"])
# 用pd.to_datetime解析时间戳数据
all_ratings["Datetime"] = pd.to_datetime(all_ratings['Datetime'], unit='s')
print(all_ratings[:5])
本章数据挖掘的目标是生成如下形式的规则:如果用户喜欢某些电影,那么他们也会喜欢这部电影。作为对上述规则的扩展,我们还将讨论喜欢某几部电影的用户,是否喜欢另一部电影。创建新特征Favorable,若用户喜欢该电影,值为True。
# 1、创建新特征Favorable
all_ratings["Favorable"] = all_ratings["Rating"] > 3
print(all_ratings[10:15])
# 2、从数据集中选取一部分数据(排名前200名的用户)用作训练集。
ratings = all_ratings[all_ratings["UserID"].isin(range(200))]
# 新建一个数据集,只包括用户喜欢某部电影的数据行
favorable_ratings = ratings[ratings["Favorable"]]
# 3、创建字典favorable_reviews_by_users记录每个用户各喜欢哪些电影(记录用户打分情况)
# 代码把v.values存储为frozenset,便于快速判断用户是否为某部电影打过分
favorable_reviews_by_users = dict((k, frozenset(v.values)) for k, v in favorable_ratings.groupby("UserID")["MovieID"])
"""
用户给哪些电影打分情况:favorable_reviews_by_users
用户id为1的为电影id为1, 3, 6, 7, 9,

文章介绍了Apriori算法在电影推荐系统中的应用,通过分析用户对电影的评分数据,找出频繁项集并生成关联规则,以提高推荐的准确性。首先解释了Apriori算法的工作原理和步骤,然后展示了如何在Python中实现该算法,最后对推荐规则的置信度进行了计算和验证,证实了这种方法的有效性。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



