第九章 9-7 基于模型的排序

来源:9-7 离线推荐:基于模型的排序

森垚27

2021-02-22

第九章 9-7 基于模型的排序
小简老师,这一节讲的比较粗糙,代码也不全,给的源码有些函数不知道在哪里定义的,麻烦补充下,谢谢!
下面这两个函数:
axpy
val scanStr = TableMapReduceUtil.convertScanToString(scan)

这一节LR 排序跳跃很大, 感觉很难串起来 也没有讲GBDT的排序,所以也没有 讲LR + GBDT 的排序, 看课程介绍是有的, 这一节很重要, 麻烦小简老师补充下, 谢谢!

def compute(data: Vector, label: Double, weights: Vector, cumGradient: Vector): Double = {
val margin = -1.0 * dot(data, weights)
val multiplier = (1.0 / (1.0 + math.exp(margin))) - label
axpy(multiplier, data, cumGradient)
if (label > 0) {
log1p(margin)
} else {
log1p(margin) - margin
}
}
//读取特定数据
def scanData(tableName: String,
cf: String,
column: String,
start: String,
end: String): Unit = {

hbaseConfig.set(TableInputFormat.INPUT_TABLE,
  tableName)
val scan = new Scan(Bytes.toBytes(start),
  Bytes.toBytes(end))
scan.addFamily(Bytes.toBytes(cf))
scan.addColumn(Bytes.toBytes(cf), Bytes.toBytes(column))

// val scanStr = TableMapReduceUtil.convertScanToString(scan)
val scanStr = TableMapReduceUtil.convertScanToString(scan)
hbaseConfig.set(TableInputFormat.SCAN, scanStr)
val hbaseRDD: RDD[(ImmutableBytesWritable, Result)]
= sc.newAPIHadoopRDD(hbaseConfig,
classOf[TableInputFormat],
classOf[ImmutableBytesWritable],
classOf[Result])

val rs = hbaseRDD.map(_._2)
  .map(r => {
    (r.getValue(
      Bytes.toBytes(cf),
      Bytes.toBytes(column)
    ))
  })
  .collect()

}

写回答

3回答

小简同学

2021-02-27

同学你好,GBDT+LR 已更新到git,祝学习愉快!

0
0

小简同学

2021-02-24

同学你好,LR排序的代码已更新到git,完善了代码,添加了详细注释。GBDT算法过稍后再更新上去。祝学习愉快!

0
1
森垚27
谢谢小简老师, 期待GBDT算法排序和LR + GBDT 的排序!
2021-02-24
共1条回复

小简同学

2021-02-22

同学你好,这个我看下代码,隔得时间有点长,晚点回复你。祝学习愉快!

0
2
森垚27
还有一个问题在最新的git仓库代码中没有 修正, 麻烦老师补全代码, 谢谢! https://coding.imooc.com/learn/questiondetail/206452.html
2021-02-23
共2条回复

Spark2.x+协同过滤算法,开发企业级个性化推荐系统

一门既讲算法原理又有完整的推荐系统架构的全能课

330 学习 · 91 问题

查看课程