概述
Spark-推荐系统ALS
1.帮助顾客快速定位需求,节省时间
2.大幅度提高销售量
协同过滤
根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐。
基于协同过滤的推荐可以分为三个子类:
基于用户的推荐(User-based )
基于项目的推荐(Item-based )
基于模型的推荐(Model-based )
根据所有用户对物品或者信息的偏好,发现与当前用户偏好相似的“邻居”用户群,基于周围k个邻居的历史偏好信息,为当前用户进行推荐。
案列
根据用户和用户id和评分推荐
数据集
用户id 物品id 评分
196 242 3 881250949
186 302 3 891717742
22 377 1 878887116
244 51 2 880606923
166 346 1 886397596
298 474 4 884182806
115 265 2 881171488
253 465 5 891628467
305 451 3 886324817
6 86 3 883603013
62 257 2 879372434
286 1014 5 879781125
200 222 5 876042340
210 40 3 891035994
224 29 3 888104457
303 785 3 879485318
122 387 5 879270459
194 274 2 879539794
导入数据,并将数据转换为Rating
val parsseRating = (string:String)=>
{
val stringsArray = string.split("t")
import org.apache.spark.ml.recommendation.ALS.Rating
Rating(stringsArray(0).toInt, stringsArray(1).toInt, stringsArray(2).toFloat)
}
val data = spark.read.textFile("src/main/scala1/coding-271/ch12/u.data")
.map(parsseRating)
. toDF("userID","itemID","rating")
获取训练集和测试集
val Array(traing,test) = data.randomSplit(Array(0.8, 0.2))
traing.show(false)
使用ALS算法进行推荐
import org.apache.spark.ml.recommendation.ALS
val als = new ALS()
.setMaxIter(20)
.setUserCol("userID")
.setItemCol("itemID")
.setRatingCol("rating")
.setRegParam(0.01)
val model = als.fit(traing)
val predictions = model.transform(test)
predictions.show(false) //根据userId,itemID 预测rating
自定义一个用户id,商品id进行推荐
val users = spark.createDataset(Seq(196->10)).toDF("userID","itemID")
model.transform(users).show(false)
对模型进行评估
val evaluator = new RegressionEvaluator()
.setMetricName("rmse")
.setLabelCol("rating")
.setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
println(rmse)
模型持久化
保存加载模型
//机器学习持久化
//模型保存
//model.save("./xxx")
//模型加载
//ALS.load("xx")
最后
以上就是听话鸡翅为你收集整理的Spark机器学习- 推荐系统ALSSpark-推荐系统ALS的全部内容,希望文章能够帮你解决Spark机器学习- 推荐系统ALSSpark-推荐系统ALS所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复