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命令查看
- Mahout ALS Recommendations
- Recommendations
- mahout之旅---分布式推荐算法ALS-MR
- mahout基于矩阵分解的协同过滤实例 ALS——WR
- Netflix Recommendations
- Making Recommendations
- mahout
- Mahout
- mahout
- mahout
- mahout
- Mahout
- mahout
- Mahout
- mahout
- mahout
- mahout
- mahout
- Xcode6中添加pch文件
- String操作
- 权重确定方法之主成分分析法
- JavaScript '+' 运算转换规则
- Delphi MlSkin V1.5 发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观
- Mahout ALS Recommendations
- 深入解析Cursor和绑定变量
- HDU1022栈入门
- 位域的常用方法
- Codeforces Round #276 (Div. 1)
- mysql安装图解 mysql图文安装教程(详细说明)
- SVN命令使用详解
- C程序员 + C++程序员不能不去的一个网站
- yii2 requirements.php 文件