专栏首页破晓之歌推荐算法理论与实践(差代码) 原

推荐算法理论与实践(差代码) 原

课程地址:https://www.imooc.com/learn/990

一、课程介绍

二、推荐系统基本概念

1.电影推荐系统原理

2.基于内容的推荐系统

3.基于矩阵分解的协同过滤 

得到方式:1.在线问卷调查

合并公式:

目标:最小化这个公式的结果

只需要用户对电影的评分即可

两个高纬向量

4.基于item的协同过滤和基于用户的协同过滤

根据与用户u相似的其他用户对商品i的评分,来推测用户u对商品i的评分

5.冷启动问题

之前的方法是基于用户已经看过一些电影,买过一些商品并且进行了评分,因此具备该用户信息,以便推荐

但是新用户并没有,这就是冷启动

6.基于内容的推荐的优缺点

7.基于协同过滤的推荐的优缺点

gray sheep 当没有相似的时候,无法推荐

shiling attack:被刷分影响

8.混合算法

mixed:使用多个推荐系统同时进行推荐,将推荐结果同时推送给用户

feature combination:将多个推荐系统使用的特征组合起来,提供给另外一个推荐系统

cascade:一个推荐系统产生推荐结果之后,用另一个推荐系统进一步筛选,将筛选的结果推荐给用户

switching:根据当前的状态,在不同的推荐系统之间进行切换

9.推荐系统性能评估

recall=6/10=0.6

单单使用recall评估是不行的

precision=6/50=0.12

可以将recall和precision结合起来,都比较大的时候是比较好的

tp:如果推荐系统预测用户A会买商品i,而实际也如此

fp:如果推荐系统预测用户A会买商品i,而实际并没有

tn:如果推荐系统预测用户A不会买商品i,而实际也没有买

fn:如果推荐系统预测用户A不会买商品i,而实际买了

F的值越大说明推荐系统性能越好

并不是说推荐系统性能越好,推荐系统越好,对于商业化的推荐系统来说,获得更大的利润的推荐系统才是最好的

A/B testing:将用户分组,对不同组的用户用不同的推荐系统进行推荐,最后看看哪个分组的推荐系统的性能较号。小号计算资源

假设一个推荐系统向用户A推荐了10次,用户A点击了3次

CTR=3/10=0.3

CTR越高说明用对商品越感兴趣

如果还想知道用户不但点击了商品,是否还听完了歌曲,看完了文章,就要看CR(转换率)

CR越高,说明用户的体验越好,推荐系统性能越好

用来度量不同投资对应的回报,推荐系统中ROI越大性能越好

可以将回报定义为:利润增加,收听量增加,阅读量增加等

将代价定义为计算资源成本

关键在于:定义合理的回报和投资

有时候仅凭算法来度量推荐系统的性能会出现奇怪的地方,最好成立QA小组来测试推荐系统,根据个人经验来评断

10.评估总结

快速构建多个合适的推荐系统=》制定评估推荐系统的标准=》进行线下评估=》将选择得到的模型进行线上评估

选择A/Btesing的方式来选择推荐系统

评估方式结合CTR,CR,ROI,QA来进行综合评估

最后的到可靠的推荐系统

三、电影推荐系统实践(线下评估方式)

1.基于矩阵分解的电影推荐系统

(1)收集数据

数据集下载(需要访问外国网站):https://grouplens.org/datasets/movielens/

(2)准备数据

movield并不是行号,远远大于行号,矩阵过大,计算占用过大

增加movieRow行号,以便计算

把处理好的数据保存到文件中

合并后的信息

用户编号,电影编号,评分

rating为0表示没有评分,为1表示评分了

将布尔值转化为0,1

(3)模型构建

数据集中有的行全部是0,

计算结果是nan

必须进行处理

处理是0的部分

两个矩阵初始化,对两个矩阵相乘,transpose_b=True对第二个矩阵转置。行1和行2相加

这里将正则化项拉姆达设置为1,可以通过调整拉姆达来看模型性能的变化

le-4是10的-4次方

(4)训练模型

第一个参数loss是对要可视化变量起名,第二个loss是要保存可视化变量

只对loss汇总

定义路径名

把信息保存到文件中

开始训练模型。

不重要的变量可以用_表示,每次训练的train都会保存到_里面,summaryMerged都会保存到movie_summary里面

打开cmd操作界面,切换到保存数据的路径当中

在浏览器中打开http://127.0.0.1:6006

看到代价值随着迭代次数增加不断减少的

(5)评估模型

直接使用设定的

电影内容矩阵和用户喜好矩阵相乘,再加上每一行的均值,得到完整的电影评分表

计算预测值与真实值之间的惨差值的算数平方根

2.线性回归原理与实战

代价函数。目标:最小化代价函数的值,使用梯度下降算法

线性回归函数直线

(1)收集数据

数据集:http://http:archive.ics.uci.edu/ml/machine-learning-databases/concrete/compressive

(2)加载数据集

加载数据集

查看数据集

原始数据集名称太长

特征名字很长

重新命名特征名

将目标变量和数据相分离

(3)选择模型

使用交叉验证来评估模型的性能:

评估线性回归在原始数据集上的性能:

得到列表

对列表求平均值,这个就是最终得分

有的数据集中的数据没什么用,删除这样的特征,看看性能有没有变化

越接近1越好,删除的fly特征下降,说明fly特征有用

(4)保存模型

创建缩放器

数据集标准化

训练

将模型和缩放器保存

3.构建混凝土抗压强度预测系统

(1)加载模型

(2)构建预测系统

4.电影推荐系统

(1)收集数据

数据集:https://grouplens.org/datasets/movielens/

(2)准备数据

加载

加载movies.csv文件,序号太大不适合行号

新增行号movieRow

*筛选movies_df中的特征

*将ratings_df中的movieid替换为行号

筛选之后的信息

*创建电影评分矩阵rating和评分记录矩阵record

将rating_df中的数据填写到rating当中

电影评分系统中,所有0的地方表示没有评分,>0表示凭过分

布尔值转化成0,1

电影评分表和评分记录表构建完成

(3)构建模型

数据集中有的是0,要处理

处理2个矩阵

X_parameters电影内容矩阵,Thetga_paramters用户喜好矩阵

正太随机分布

(4)训练模型

(5)评估模型

(6)构建完整的电影推荐系统

优化:如果用户看了电影,就要将该系统中电影去掉

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网页显示3D模型 原

    中文网教程:http://www.hewebgl.com/article/articledir/1

    晓歌
  • python-web.py开发入门(推荐) 原

    输入运行文件命令。(我这里pycharm2018.2不晓得为嘛terminal调整不了字间距,而且文件路径的/都变了,文字颜色也不晓得哪里能改,其他地方的显示都...

    晓歌
  • redis报错 原

    晓歌
  • 推荐系统评价:什么是好的推荐系统

    什么是好的推荐系统?佛陀没有定义过,人类也没有定义过。但一个系统的好坏往往需要全链路的评定,贯穿于用户的整个交互过程。之所以说好的推荐系统更难定义,是因为虽然算...

    石晓文
  • 推荐系统走向下一阶段最重要的三个问题

    推荐系统和搜索引擎一直是比较火热的技术,因为离商业化比较近。她们是互联网领域两个衣着光鲜的美人,小腰一扭就是钱的味道。这几年凭借着两个红利:

    石晓文
  • 收下这份推荐系统入门指南

    随着当今技术的飞速发展,互联网中所积累的数据量也与之倍增,人们在海量数据前越来越觉得束手无策,这时候我们需要一些技术从海量的内容中找出用户所关心的展示给用户,从...

    博文视点Broadview
  • 知人知面需知心——论人工智能技术在推荐系统中的应用

    用户1737318
  • 原创 | 五千字长文干货,带你领略推荐系统

    点击最近有一些小伙伴给我留言说非常想要我开一个推荐系统专题,其实我也有过这个想法,一直没动笔主要有两个原因。第一个原因是担心自己水平不够,班门弄斧或者是误导了一...

    TechFlow-承志
  • 消息队列助你成为高薪 Node.js 工程师

    个人理解:我把它分成两个词消息和队列。当一大批客户端同时产生大量的网络请求(消息)时候,服务器的承受能力肯定是有一个限制的。这时候要是有个容器,先让这些消息排队...

    桃翁
  • 消息队列助你成为高薪 Node.js 工程师

    个人理解:我把它分成两个词消息和队列。当一大批客户端同时产生大量的网络请求(消息)时候,服务器的承受能力肯定是有一个限制的。这时候要是有个容器,先让这些消息排队...

    coder_koala

扫码关注云+社区

领取腾讯云代金券