一、
Mahout推荐的推荐系统引擎是模块化的,分为5个主要部分组成:数据模型,相似度算法,近邻算法,推荐算法,算法评分器。
二、
选择UserCF,ItemCF,SlopeOne的 3种推荐算法,进行7种组合的测试。
userCF1: LogLikelihoodSimilarity + NearestNUserNeighborhood + GenericBooleanPrefUserBasedRecommender
userCF2: CityBlockSimilarity+ NearestNUserNeighborhood + GenericBooleanPrefUserBasedRecommender
userCF3: CityBlockSimilarity+ NearestNUserNeighborhood + GenericBooleanPrefUserBasedRecommender
itemCF1: LogLikelihoodSimilarity + GenericBooleanPrefItemBasedRecommender
itemCF2: CityBlockSimilarity+ GenericBooleanPrefItemBasedRecommender
itemCF3: CityBlockSimilarity+ GenericBooleanPrefItemBasedRecommender
slopeOne:SlopeOneRecommender
三、
Mahout提供了2个评估推荐器的指标,查准率和召回率(查全率)
Recall和Precision,都是越接近1越好。
UserCityBlock算法评估的结果是最好的,
基于 UserCF的算法比 ItemCF都要好, SlopeOne算法几乎没有得分。
四、
程序开发: 新建Java类
RecommendFactory, 构造数据结构
RecommenderEvaluator.java, 选出“评估推荐器”验证得分较高的算法
RecommenderResult.java, 对指定数量的结果人工比较
RecommenderFilterOutdateResult.java,排除过期职位
RecommenderFilterSalaryResult.java,排除工资过低的职位
五、
架构设计:架构说明
左边是Application业务系统,右边是Mahout,下边是Hadoop集群。
1. 当数据量不太大,算法复杂时:直接选择用Mahout读取CSV或者Database数据,
在单机内存中进行计算。Mahout是多线程的应用,会并行使用单机所有系统资源。
2. 当数据量很大时,并行化算法(ItemCF):先把业务系统的数据导入到Hadoop的
HDFS中,然后用Mahout访问HDFS实现并行算法。算法的性能与整个Hadoop集群
有关。
3. 计算后的结果,保存到数据库中,方便以后查询
六、
程序开发: 新建Java类
RecommendFactory, 构造数据结构
RecommenderEvaluator.java, 选出“评估推荐器”验证得分较高的算法
RecommenderResult.java, 对指定数量的结果人工比较
RecommenderFilterOutdateResult.java,排除过期职位
RecommenderFilterSalaryResult.java,排除工资过低的职位
七、
Recall和Precision,都是越接近1越好。
UserCityBlock算法评估的结果是最好的,基于UserCF的算法比ItemCF都要好,SlopeOne算法几乎没有得分。