一、推荐算法

推荐算法组成

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

推荐算法应用

  • 社交推荐
  • 电影推荐
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