说起来很丢人,以前只是用过关联规则的算,而没听过协同过滤,最近才看到一些有关的内容,但同时也很疑惑二者的区别
其实我现在还是没有理解协同过滤具体的算法步骤,只是从各种资料中看到它的适用,自己又总结了一下.
解惑(暂时)
-
关联规则我很熟悉,先说这个,关联规则最主要的就是频繁项的挖掘,然后从频繁集中生成关联规则,最后匹配待推荐项.如果拿电商来举例,在我看来,使用关联规则的数据集的特征就是购物车的消费组合,每一个用户得到的推荐就是整个系统的所有用户的消费组合中,包含该用户消费组合的出现次数最多的消费组合,当然,在频繁项的挖掘中还要顾及最小支持度,匹配时的置信度等等.
-
和上面说的一样,我对协同过滤并不是很了解,也没有写过该算法,只是了解了一下相关的思路和spark中的mllib库中的ALS,所以只是简单说一下.
-
在我看来,协同过滤的核心在于用户的喜好,它的数据集中一定有偏好的体现,拿书中的例子来说,这是一个音乐的推荐,原始数据集的格式是
用户id 歌曲名 播放次数
虽然没有明显说该用户对于这首歌的打分和喜欢与否,但是我们能从播放次数中看出,(应该不存在不喜欢一首歌但听很多次的人),而这个数据集就不适合关联规则,
拿到这个数据集之后怎么处理呢,如果是基于用户的推荐,那么就是根据两个用户播放过许多相同的歌来判断他们都可能喜欢某首歌,然后在推荐的时候在另一位用户的歌单中寻找听取次数最多的进行推荐,这样偏好就得到体现
结
还是那句话,我对协同过滤了解不深,所以这里就不说具体的内容,网上对边一搜就找的到.
虽然我拿关联规则做了电商的推荐,但是我觉得不好,电商的推荐其实更适合于使用协同过滤,因为一个人买了某样东西不代表他就喜欢这个东西,但这仅仅是一个角度,如果从数据集的规模来说,关联规则一定程度上也很有意义,所以我觉得对于电商来说二者结合或许会更好.
关联规则其实也有很大的适用范围,例如MOBA游戏里的阵容推荐,首先确定我们的推荐目标,我们是为了推荐更容易赢的阵容,那玩家的喜好就没有作用,只有胜率高的阵容才是我们的目标,这就需要关联规则的推荐.