推荐系统整理(一)Baseline

其实我发现我很多内容都是只有(一)
因为很多东西学了又懒得再发出来了,所以都只剩个开头。往往都觉得,开头必须开个好头,到了后面学了又什么也不想写了。但,总而言之,重要的东西还是记一记。自用自用。
这里是实验室朋友邀请去推荐系统比赛,但···我最近都在搞信号,好久没有做大数据了,得重新看起。首先,对推荐系统常用模型做一个整理吧。(协同那些我就略去了)

Baseline

以均值波动为例(我自己乱创的词)。
一般来说,大数据量的所有人的评分平均,就是一个比较合理的结果。
由于个人原因,每个人对每一个物品的评分都有一些个人化的波动。同时,有些特别烂或者特别好的东西会受到一致差评或好评。那么baseline就是做这样一件事:

  • 求all平均值
  • 求用户评分偏置(波动)
  • 求物品评分偏置(波动)
    预测评分= 均值+波动1+波动2

从而,整个问题变成了求均值,求偏置(user、item)问题。
均值很容易求,可以直接通过python的一些模块求出。
那么针对性的偏置呢?
做线性回归,构建损失函数(比如,均方差),优化损失(比如,梯度下降)。

优化的时候,可以加入正则化系数,避免过拟合。

所以我们要做的事情就是:

  • 计算出所有用户对所有物品评分的平均值
  • 在均值基础上+用户评分偏置+物品评分偏置作为预测评分(这就是我们采用的模型方程)
  • 处理数据:groupby用户数据并聚合(agg)为list(list包含什么列:对不同类型物品的评分和物品id)(agg还可以进行统计操作比如max min等等),看到同个用户的行为统计。物品同理。然后计算global mean。(虽然如此清晰,还是先可视化一下数据再处理,对,还要注意data type)
  • 划分数据集为训练集、测试集。
  • 求解所有用户的评分偏置、所有物品的得分偏置
  • 怎么求解呢?训练,用函数评价好坏,用算法进行优化。函数即Loss Function, 算法即优化算法。(最简单的:均方差、梯度下降、交替最小二乘法)。
  • 求解时怎么更新偏置?推导上面说的公式,知道实际上在算什么(原理理解,上述例子就是求偏导,求偏导)。用代码复现:生成偏置矩阵or dict(分别的,全零矩阵,长度就是各自数量,如果是dict 可以zip进索引 评分 id,然后用itertuple查看 )。指定迭代次数,传和设置对应参数。
  • 怎么看效果?用验证集评判。测试集的预测也就是globalmean + 偏置1 + 偏置2。用真实值-预测值看损失。(or均方差··都可以)
  • 善于用封装好的东西,比如sklearn。
  • 怎么确定参数呢?根据loss曲线or accuracy曲线等针对性改改改。
  • 最后进行封装。把不是函数的变为函数(甚至类),就可以了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值