上次大概地介绍了一下现在常用的推荐算法,下面来介绍两种比较优化的算法。
Apriori算法
关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系。它在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。
经典的频集算法:Agrawal等于1994年提出了一个挖掘顾客交易数据库中项集间的关联规则的重要方法 ,其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。所有支持度大于最小支持度的项集称为频繁项集,简称频集。
算法的基本思想:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。挖掘关联规则的总体性能由第一步决定,第二步相对容易实现。
Apriori核心算法
为了生成所有频集,使用了递推的方法。其核心思想简要描述如下:
L1 = {large 1-itemsets};
for (k=2; Lk-1¹F; k++) do begin
Ck=apriori-gen(Lk-1); //新的候选集
for all transactions tÎD do begin
Ct=subset(Ck,t); //事务t中包含的候选集
for all candidates cÎ Ct do
c.count++;
end
Lk={cÎ Ck |c.count³minsup}
end
Answer=∪kLk;
首先产生频繁1-项集L1,然后是频繁2-项集L2,直到有某个r值使得Lr为空,这时算法停止。这里在第k次循环中,过程先产生候选k-项集的集合Ck,Ck中的每一个项集是对两个只有一个项不同的属于Lk-1的频集做一个(k-2)-连接来产生的。Ck中的项集是用来产生频集的候选集,最后的频集Lk必须是Ck的一个子集。Ck中的每个元素需在交易数据库中进行验证来决定其是否加入Lk,这里的验证过程是算法性能的一个关键点。
协同过滤(Collaborative Filtering)算法
协同过滤的出现为进一步提高信息服务质量提供了一个新的思路。协同过滤,又称社会过滤(Social Filtering),其基本思想十分直观:在日常生活中,人们往往会根据亲朋好友的推荐来做出一些选择(购物、阅读、音乐..)。协同过滤系统就是将这一思想运用到网络信息服务(信息推荐)中,基于其他用户对某一信息的评价来向某一用户进行推荐。通常,系统选取与指定用户有相似兴趣的用户作为参考对象。而如何定义用户相似性以及如何选取参考用户群正是协同过滤算法研究的重点。
与传统文本过滤相比,协同过滤有下列优点:
1. 能够过滤难以进行机器自动内容分析(Content_based)的信息。像艺术品、音乐。
2. 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,
难以表述的概念(如信息质量、品味)进行过滤。
3. 可以有效的使用其他相似用户的反馈信息,减少用户的反馈量,加快个性化学习的
4. 具有推荐新信息的能力(serendipitous recommendations)。
正因为此,在Goldberg 等人在其设计的邮件过滤系统中初步应用了协同过滤的思想(这可以说是最早的协同过滤系统)之后,各种研究协同过滤的实验系统纷纷出现。像GroupLens:过滤网上新闻的系统;Ringo:推荐音乐的系统;Video Recommender和MovieLens:推荐电影的系统;Jester:推荐笑话的系统。越来越多的在线商家,包括Amazon.com、CDNow.com 和Levis.com,都使用了协同过滤技术向顾客推荐产品。由微软研究院开发的协同过滤工具已被集成在微软的CommerceServer1产品中,并被许多站点使用了。
协同过滤的基本出发点是:
1. 用户是可以按兴趣分类的;
2. 用户对不同的信息评价包含了用户的兴趣信息;
3. 用户对一未知信息的评价将和其相似(兴趣)用户的评价相似。
这三条构成了协同过滤系统的基础。
协同过滤的实现一般分为两步:首先,获得用户信息(用户对某些信息条目的评价或者打分);其次,分析用户之间相似度,预测特定用户对某一信息的喜好。上面提到的解决协同过滤不足的两条途径正是对应着这两步。
对于协同过滤一个直观的描述是:将用户和信息条目构成一个矩阵:用户—信息条目的
兴趣矩阵。
| 谍中谍 | 007 | 星球大战 | 泰坦尼克 |
|
张三 | 2 | 4 | 4 | ? |
|
李四 | ? | 2 | 2 | 4 |
|
王五 | 3 | ? | ? | 4 |
|
赵六 | 3 | 2 | ? | 4 |
矩阵中已有的值是用户对相应信息条目的评价,未知值正是需要系统给出的预测。协同过滤的过程就是根据已知值来预测未知值(一个填空过程)。协同过滤系统所应用的算法就是这一填空过程所遵循的规则,规则与实际规律越符合,预测的未知值就越准,信息过滤的效果就会越好。需要注意的是,实际中,这样的矩阵是一个极为稀疏的矩阵。因为每一个用户一般只会对所有信息条目中很少一部分有评价。这一点在设计算法,分析算法优劣上都很重要。
分享到:
相关推荐
Mahout提供了基于用户的协同过滤(User-Based Collaborative Filtering)和基于物品的协同过滤(Item-Based Collaborative Filtering)算法。 4. **关联规则学习(Association Rule Learning)**:例如Apriori算法...
在Mahout 0.4中,**协同过滤(Collaborative Filtering)**也是一个关键特性。协同过滤是一种推荐系统的技术,它基于用户的历史行为预测用户的未来喜好。Mahout实现了两种协同过滤:基于用户的CF(User-Based CF)和...
在这个项目中,可能采用了协同过滤(Collaborative Filtering)方法,这是一种基于用户-用户或物品-物品相似性的推荐技术。在用户-用户协同过滤中,系统会寻找与目标用户有相似购买或评分历史的其他用户,然后推荐...
- **协同过滤(Collaborative Filtering)**: - **基于用户的协同过滤**:找到与目标用户兴趣相似的其他用户,从而推荐他们喜欢的内容。 - **基于物品的协同过滤**:发现哪些物品经常被一起评价或购买,然后根据...
主要有基于内容(Content-based)和协同过滤(Collaborative Filtering)两类方法。此外,还有隐因子模型等更先进的技术。推荐系统广泛应用于电子商务、社交网络等领域。 ### 7. PageRank PageRank是由Google发明的一种...
- **协同过滤(Collaborative Filtering)**:基于用户-项目矩阵,寻找相似的用户或项目进行推荐。 - **潜在因子模型(Latent Factor Models)**:通过学习用户的潜在兴趣来进行推荐。 ### 7. PageRank - **算法原理**...
1. **协同过滤(Collaborative Filtering)**:用于推荐系统,基于用户行为的历史数据,预测用户可能对未体验项的喜好。 2. **K-means聚类**:一种无监督学习方法,用于将数据分组到多个类别中。 3. **Random ...
- **协同过滤(Collaborative Filtering)**:通过分析用户的行为和偏好,找到相似用户群体或相似项目,进而做出推荐。 - **潜在因子模型(Latent Factor Models)**:通过降维技术来识别用户和项目之间的潜在联系,构建...
4. 机器学习模型:如协同过滤、基于内容的推荐、深度学习的推荐模型(如Neural Collaborative Filtering)等,用于构建推荐系统。 5. 评估指标:如准确率、召回率、F1分数、RMSE(均方根误差)、MAE(平均绝对误差...
在协作过滤和基于关联的算法上实现了不同的推荐引擎模型。 1-使用汉明距离基于最近邻居的协作过滤。 2-使用Pearson相关性基于最近邻居的协作过滤。 3-基于潜在因子的协同过滤(它解决了稀疏矩阵问题,并且效率很高...