Apriori算法是一种典型的关联算法,它通过在数据集中创建频繁发生的项目的集合(即频繁项目集)来解决规则组合会呈指数增长的问题。频繁项目集一旦形成,那么创建关联规则所需要的计算就会极大程度的减少。在Apriori算法中,我们首先要确保一个规则在数据集中有足够的支持度。因此我们需要给支持度定义一个最小阈值作为Apriori算法的关键参数。比如建立一个频繁项目集(A,B),项目集(A,B)的最小支持度为30,那么A,B在数据集中至少出现30次。这一特性也可以被延伸到更大的数据集中,如果(A,B,C,D)被认为是频繁的,那么集合(A,B,C)肯定也是频繁的。因此,频繁的项目集将会被建立并且进行测试,其余剩下的被视为不频繁的项目集将会被舍弃,算法不会对其进行测试。这样的做法可以很大程度的节省测试规则所花费的时间。
选择参数来自优W尔Y论W文C网WWw.YoueRw.com 加QQ7520,18766
用关联算法来进行规则挖掘的一般步骤如下:首先使用Apriori算法来生成频繁项目集,然后通过测试频繁项目集中前提和结论是否相匹配的方式来生成最终的关联规则。
在第一阶段中,需要给Apriori算法设置一个最小支持度(minimum support)的值。只有频繁程度大于最小支持度的项目集才会被认为是频繁的,其他没有足够的频繁程度的项目集将不会被处理。最小支持度的值被设置的太低会导致Apriori算法将测试大量的项目集,这样会减缓演算法的速度。相反,最小支持度的值被设置的过高则会导致过少的项目集被认为是频繁的。
在第二阶段中发现了频繁项目集之后,Apriori算法会计算关联规则的置信度。Apriori算法需要被给定一个最低的置信度使一部分规则被返回。或者算法不被给定最低置信度而是简单的返回所有的规则,然后由使用者决定如何来处理它们。
歌曲推荐问题
获取数据集
本课题中使用的数据集是来自天池大数据科研平台的比赛数据。天池大数据竞赛平台是阿里云旗下的大数据平台。天池大数据竞赛平台经常会和其他一些企业合作,以企业提供数据,天池提供平台的方式,来面向社会寻求一些优秀的解决方案。所以在天池大数据平台上可以各式各样的真实数据集。本课题所使用的数据可以在https://tianchi。shuju。aliyun。com/中找到并下载。数据内容为阿里音乐平台上6个月内(20150301-20150830)的用户行为历史记录,一共有5652232条数据。[6]数据内容示例如下:
表1 数据内容实例表
列名 类型 说明 示例
user_id String 用户唯一标识 7063b3d0c075a4d276c5f06f4327cf4a
song_id String 歌曲唯一标识 effb071415be51f11e845884e67c0f8c
gmt_create String 用户播放时间(unix时间戳)精确到小时 1426406400
action_type String 行为类型:1,播放;2,下载,3,收藏 1
Ds String 记录收集日(分区) 20150315
基于隐私安全的考虑,数据集中的user_id和song_id两个字段已经由赛方进行了脱敏化处理。