Mahout ALS Recommendations

来源:互联网 发布:超星网络课程题库答案 编辑:程序博客网 时间:2024/04/26 17:23

Mahout ALS推荐系统不同于mahout基于用户或者基于物品的推荐系统,基于物品或者基于用户的推荐系统是通过计算物品或者用户相似度来得到推荐结果的。

Mahout ALS推荐系统是基于矩阵分解的原理,通过矩阵分解来发现潜在因子,达到推荐的效果。假设用户到物品评级矩阵为A(m*n),A为稀疏矩阵存在很多缺失值,ALS算法通过设定feature个数k分解矩阵A得到两个矩阵U和M,U是用户到特征的矩阵为m*k,M为物品到特征的矩阵为n*k。ALS会通过迭代的方式不停的优化M和U矩阵使M和U的乘积与A误差最小,直到得到M和U矩阵,将M和U矩阵相乘即会得到A的相似矩阵,不同的是它们相乘后会得到A矩阵的缺失值,这些值便是推荐指数,值越大推荐率越高。

Mahout ALS推荐系统和基于用户或基于物品的推荐系统相比,它可以处理大的稀疏矩阵集,同时它表现出了更好的性能。

Mahout ALS推荐系统实现步骤:

1、下载数据集及处理数据

下载地址为:http://files.grouplens.org/datasets/movielens/ml-1m.zip

解压文件使用ratings.dat文件(电影评定文件)

处理文件

cat ratings.dat | sed -e s/::/,/g| cut -d, -f 1,2,3 > ratings.csv

使用sed命令将“::”替换为“,”

使用cut命令取文件前三个字段

将ratings.csv文件上传至hdfs

2、将数据集分割为训练集和测试集

mahout splitDataset --input recommender/ratings.csv --output recommender/dataset --trainingPercentage 0.8 --probePercentage 0.2

3、使用ALS-WR算法进行矩阵分解

mahout parallelALS --input recommender/dataset/trainingSet --output recommender/ALSoutput --lambda 0.1 --implicitFeedback true --alpha 0.8 --numFeatures 50 --numIterations 10 --numThreadsPerSolver4 --tempDir tmp

执行完成后会在recommender/ALSoutput目录下生成M、U和userRatings三个文件,分别存放M矩阵、U矩阵、用户评定数据。

4、评估ALS推荐算法

mahout evaluateFactorization --input recommender/dataset/probeSet/ --output recommender/ALSoutput/eval/ --userFeatures recommender/ALSoutput/U/ --itemFeatures  recommender/ALSoutput/M/

5、为用户推荐

mahout recommendfactorized --input recommender/ALSoutput/userRatings --userFeatures recommender/ALSoutput/U/ --itemFeatures recommender/ALSoutput/M/ --numRecommendations 10 --output recommender/recommendations --maxRating 5

为用户推荐的物品信息存放在recommender/recommendations文件下,可以用cat命令查看

0 0