基于SVD矩阵分解的推荐算法及其应用
2017-10-27 22:38
417 查看
基于SVD矩阵分解的推荐算法及其应用
简要介绍
本文参照网上众多资料,搭建了Spark1.6.3并实现单机运行主要介绍了如何搭建Spark平台并在Eclipse平台上运行简单的SVD实例
1.环境&软件
Ubuntu 14.04 OpenJDK 7 Scala 2.10.6 Spark 1.6.3 Eclipse 3.8.1 MovieLens 10M(测试用)
2.OpenJDK 7安装
参照:http://www.powerxing.com/install-hadoop/ 内含图片详情更新apt
sudo apt-get update
安装Java环境
sudo apt-get install openjdk-7-jre openjdk-7-jdk
安装好 OpenJDK 后,需要找到相应的安装路径,这个路径是用于配置 JAVA_HOME 环境变量的。执行如下命令:
dpkg -L openjdk-7-jdk | grep '/bin/javac'
该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64
接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置
gedit ~/.bashrc
在文件最前面添加如下单独一行(注意 = 号前后不能有空格),将“JDK安装路径”改为上述命令得到的路径,并保存:
export JAVA_HOME=JDK安装路径
最后使配置生效
source ~/.bashrc # 使变量设置生效
设置好后我们来检验一下是否设置正确:
java -version
3.Scala 2.10.6安装
参照:http://blog.csdn.net/lin360580306/article/details/51233397下载:http://www.scala-lang.org/download/2.10.6.html
解压缩:
tar –zxvf scala-2.10.6.tgz
进入sudo gedit /etc/profile在下面添加路径:
SCALA_HOME=/home/hadoop/scala-2.10.6 #注意替换成解压后的路径 PATH=$PATH:${SCALA_HOME}/bin
使配置生效
source /etc/profile
可以在命令行中输入 scala 检测是否安装成功
4.Spark1.6.3安装
参照:http://blog.csdn.net/lin360580306/article/details/51233397下载:http://spark.apache.org/downloads.html
解压缩:
tar –zxvf spark-1.6.3-bin-hadoop2.6.tgz
进入sudo gedit /etc/profile在下面添加路径:
SPARK_HOME=/home/hadoop/spark-1.6.3-bin-hadoop2.6#注意替换成解压后的路径 PATH=$PATH:${SPARK_HOME}/bin
使配置生效
source /etc/profile
可以在命令行中输入 spark-shell(可在安装目录中bin里面找到) 检测是否安装成功
5.Eclipse 3.8安装
参照:http://www.powerxing.com/hadoop-build-project-using-eclipse/ 中的 “安装Eclipse”即可找到Ubuntu软件中心->搜索eclipse->点击安装
6.Eclipse下使用Java开发SVD
参照:http://www.jianshu.com/p/a617005df355新建Java工程->导入Spark包
代码:
public class MovieLens { public static void main(String[] args) { //删除一些无关的log信息 Logger.getLogger("org.apache.spark").setLevel(Level.WARN); Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF); //Spark信息配置 SparkConf conf = new SparkConf().setMaster("local[4]").setAppName("movielens"); JavaSparkContext sc = new JavaSparkContext(conf); //读入文件 JavaRDD<String> data = sc.textFile("ratings.dat"); JavaRDD<Rating> rows = data.map(new Function<String, Rating>() { private static final long serialVersionUID = 1L; //处理文件信息 @Override public Rating call(String arg0) throws Exception { String[] strArr = arg0.split("::"); Rating r = new Rating(Integer.parseInt(strArr[0]), Integer.parseInt(strArr[1]), Double.parseDouble(strArr[2])); return r; } }); //设置检查点 sc.setCheckpointDir("checkpoint/"); ALS als = new ALS(); als.setCheckpointInterval(2); //分解的维度设置为20,最大迭代次数设置为5,而正则化系数设置为0.02 MatrixFactorizationModel a = als.train(rows.rdd(), 20, 5,0.02); sc.close(); } }
主要参照:http://www.cnblogs.com/pinard/p/6364932.html 里面的代码,用Java写一遍
代码中使用的MovieLens数据集可以在网上下载 http://files.grouplens.org/datasets/movielens/ml-10m.zip
相关文章推荐
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用。
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用。
- 机器学习经典算法12-SVD及其在推荐中的应用
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用。
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用。
- 主题模型LDA及其在微博推荐&广告算法中的应用--第1期
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用
- Bitmap算法及其应用——求素数
- 蛙蛙推荐:基于标记窗的网页正文提取算法的一些细节问题
- Hash 算法及其应用
- otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用
- 深入分析linux内核及其应用(热力推荐!!)
- 基于评分数据的推荐算法实现:slopeone和矩阵分解
- (算法)并查集及其应用
- 一个应用实例详解卡尔曼滤波及其算法实现
- 基于行为心理学的网络购物推荐算法思考
- 推荐两个不错的基于SilverLight 2 Beta 应用
- 一个应用实例详解卡尔曼滤波及其算法实现
- 亿级推广流量仍能精准推荐?解读核心算法的应用实践 推荐