spark 1.6 MLlib 协同过滤

简单介绍

spark的协同过滤的矩阵分解采用ALS来计算,具体实现了算法以下参数
- numBlocks:数据划分为多少block进行并行计算,设置成-1时为自动配置
- rank:模型的潜在因子(主特征数目)
- iterations:模型运行迭代次数
- lambda:ALS的规则化参数
- implicitPrefs:是采用显式评分方式还是隐式反馈数据,即是用户打分,还是用户访问等隐式分数
- alpha:采用隐式打分方式的置信度权重值

样例

import org.apache.spark.mllib.recommendation.Rating
定义了评分的数据类型,里面有三个属性,分别是:
product int
user int
rating double

进行电影协同过滤的代码样例

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.mllib.recommendation.Rating

val rawdata = sc.textFile("D:\\ml-100k\\u.data")
    val raw_table = rawdata.map(_.split("\t")).map(x=>Rating(x(0).toInt,x(1).toInt,x(2).toDouble)).toDF
    val model = new ALS()
      .setRank(10) //主要因子个数
      .setRegParam(0.01)  //规则化参数lambda
       .setMaxIter(10)  // 最大迭代次数
       .setItemCol("product")
       .setUserCol("user")
       .setRatingCol("rating")
    val alsmodel = model.fit(raw_table)
    val predict = alsmodel.transform(raw_table)
    //给用户234进行前五的产品推荐
    val recomm = predict.where("user=234").orderBy($"prediction".desc).show(5)

进行模型评估

  • 均方差:显示评分评估
  • K值平均准确率:隐式评分评估,给用户做推荐的前K个商品的与实际用户购买的前K个的准确度
import org.apache.spark.ml.evaluation.RegressionEvaluator
// 回归输出结果评估
    val predictval = new RegressionEvaluator()
      .setLabelCol("rating")
      .setPredictionCol("prediction")
      .setMetricName("mse")//mse评估,还有rmse、r2、mae
    predictval.evaluate(predict)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值