一、基于回归模型的协同过滤推荐
1、Baseline:基准预测 介绍
基准就是平均值,用户或物品普遍高于或低于平均值的差值,我们称之为偏置(bias)
(1)Baseline目标
找出用户的偏置值bu,物品的偏置值bi。问题转化为寻找最优的bu和bi。
(2) Baseline步骤
(3)损失函数
利用梯度下降优化损失。
(4)真实值与预测值图像:
(5)总结
2、梯度下降
(1)推导过程
(2)随机梯度下降
SGD 优化
随机梯度下降指:从自身位置出发,每隔一段路程就探索一次,随机挑选一个梯度最大的方向进行移动,直到移动到最低点。那么隔多远进行一次探索呢?这就是学习率。好的学习率能有让点快速降到最低。
好的学习率能够让点快速降到最低。
本例:
(3)算法实现
扩展:pandas库
pandas是用于数据挖掘的python库,具有便捷的数据处理能力,独特的数据结构,读取文件方便,封装了matplotlib的画图和numpy的计算。
pandas的数据结构:
- Series:类似表格中的一个列,类似于一维数组,可以保存任何数据类型。由索引和列组成。
- DataFrame:表格型的数据结构,每列可以是不同的指类型,既有行索引也有列索引。它可以被看作由Series组成的字典。
代码:
数组 0:userid
1:movied
2:rating
以userid进行分组,将movieid和rating以list形式进行聚合。
扩展:
还可以求平均 mean、max、min(查pandas手册,agg可以传什么。)
any:不是0就返回true
获取索引:
可以调整学习率α。
-
zip()函数
(云记python学习笔记)
可以将多个序列中对应的元素重新组合生成一个新的元组。 -
dict字典
以键值对形式存储,任意类型,如字符串、数字、元组等。无序。
real-rating:真实值
bu[uid] :从bu中取出第uid个
index=false :拿到的内容没有index列。
(4)准确性指标评估
添加test方法,然后使用之前实现accuary方法计算准确性指标。
例如:1用户有40条数据,则经过划分后,训练集有32条,测试集有8条。
随机为了每个用户在训练集和测试集上都有数据。
3、最小二乘法ASL
求偏导,令偏导=0。
求一个,将另一个看作未知。