基于Mahout、Spark Mlib实现的推荐系统——算法讲解

一、推荐算法

推荐算法组成
这里写图片描述

推荐算法应用

  • 社交推荐
  • 电影推荐
1.1 线性代数里的矩阵分解:
  1. ALS(Alternating Least Square交替最小二乘法)
  2. 三角分解
  3. SVD(奇异值)分解
  4. QR分解
  5. Jordan分解
  6. 满秩分解
    Mahout和sparkMLlib里面,就是特指使用 ALS 的一种推荐算法。
1.2 构造一个完整的推荐系统所需要的步骤
  1. 加载数据文件 new File(csv,mysql等 )
  2. 根据加载的文件构造一个数据模型----DataModel
  3. 根据数据模型DataModel计算用户相似度UserSimilarity 或物品相似度ItemSimilarity
  4. 根据DataModel,相似度构造一个推荐器recommender
  5. 为用户推荐物品,保存数据
1.3 Mahout

Mahout下载:http://archive.apache.org/dist/mahout/0.12.2/
Mahout API比较重要的接口、实现类、包
数据下载地址:https://grouplens.org/datasets/movielens/
下载文件:ml-100k.zip

//数据模型
org.apache.mahout.cf.taste.model.DataModel
org.apache.mahout.cf.taste.impl.model.file.FileDataModel
org.apache.mahout.cf.taste.impl.model.GenericDataModel
org.apache.mahout.cf.taste.model.JDBCDataModel
org.apache.mahout.cf.taste.impl.model.jdbc.MySQLJDBCDataModel

//用户、物品 相似度
org.apache.mahout.cf.taste.similarity.UserSimilarity
org.apache.mahout.cf.taste.similarity.ItemSimilarity
org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity
org.apache.mahout.cf.taste.impl.similarity.UncenteredCosineSimilarity
org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity
org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity

//KNN
org.apache.mahout.cf.taste.neighborhood.UserNeighborhood
org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood

//推荐器
org.apache.mahout.cf.taste.recommender.Recommender
org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender

org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender
org.apache.mahout.cf.taste.recommender.ItemBasedRecommender
org.apache.mahout.cf.taste.recommender.UserBasedRecommender
org.apache.mahout.cf.taste.recommender.RecommendedItem

//推荐评估

org.apache.mahout.cf.taste.eval.RecommenderEvaluator
org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator
org.apache.mahout.cf.taste.impl.eval.RMSRecommenderEvaluator
org.apache.mahout.cf.taste.eval.RecommenderBuilder

org.apache.mahout.cf.taste.eval.IRStatistics
org.apache.mahout.cf.taste.eval.RecommenderIRStatsEvaluator
org.apache.mahout.cf.taste.impl.eval.GenericRecommenderIRStatsEvaluator

异常类
org.apache.mahout.cf.taste.common.TasteException

其它相关类
org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray
org.apache.mahout.cf.taste.model.PreferenceArray
org.apache.mahout.cf.taste.impl.common.FastByIDMap
org.apache.mahout.cf.taste.similarity.precompute.BatchItemSimilarities
org.apache.mahout.cf.taste.impl.similarity.precompute.MultithreadedBatchItemSimilarities
org.apache.mahout.cf.taste.similarity.precompute.SimilarItemsWriter
org.apache.mahout.cf.taste.impl.similarity.precompute.FileSimilarItemsWriter
1.4 推荐评估
UncenteredCosineSimilarity
EuclideanDistanceSimilarity
PearsonCorrelationSimilarity
LogLikelihoodSimilarity

评估模型
    AverageAbsoluteDifferenceRecommenderEvaluator
    RMSRecommenderEvaluator

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mahout 是一个由 Apache 开发的开源项目,通过 Mahout 可以快速地进行大数据处理。Mahout 中最常用的是协同过滤的推荐算法,而协同过滤推荐算法的应用最为广泛的是电影推荐系统。 电影推荐系统是一种基于用户兴趣的推荐系统,核心思想是根据用户的历史行为记录,如电影的评分等,通过算法分析出用户的喜好特征,结合电影的相关信息进行推荐。电影推荐系统不仅可以提高用户的使用体验,也可以带来商业价值。 基于 Mahout 实现协同过滤推荐算法的电影推荐系统,主要包括以下步骤: 1. 数据收集和预处理:系统需要收集用户对电影的行为数据,如观看历史、评分、评论等,同时还需要获取电影的相关信息,如电影类型、导演、演员等。收集到的数据需要进行清洗、筛选和预处理,以便后续分析和建模。 2. 特征提取和分析:基于收集到的数据,通过 Mahout 的特征提取和分析工具,可以对用户和电影进行特征提取和分析,分析用户的喜好特征和电影的相关特征,为推荐算法提供依据。 3. 推荐算法的选取和实现:根据数据特征和推荐需求,选择适合的推荐算法,并基于 Mahout 实现推荐算法。常用的推荐算法包括基于协同过滤的 CF(Collaborative Filtering)算法、基于内容过滤的 CB(Content-Based Filtering)算法、基于混合模型的混合过滤算法等。 4. 推荐结果的评估和优化:通过评估推荐结果,分析推荐算法的效果和准确率,并进行优化,以提高系统的推荐效果和用户满意度。 基于 Mahout 实现协同过滤推荐算法的电影推荐系统,可以有效地提高电影推荐的准确性和精度,并通过不断优化,为用户带来更好的使用体验和商业价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值