推荐系统实战1——什么是推荐系统与常见的推荐系统评价指标

  • 学习前言
  • 什么是推荐系统
    • 一、为什么要有推荐系统
    • 二、生活中的推荐系统
    • 三、推荐系统的组成
    • 四、推荐模型的种类
      • 1、基于协同过滤的方法
        • a、基于user的协同过滤方法
        • b、基于item的协同过滤算法
      • 2、基于内容的方法
      • 3、基于模型的方法
      • 4、基于流行度的算法
  • 推荐系统的评价指标
    • 一、推荐系统的常见任务
    • 二、什么是TP、TN、FP、FN
    • 三、什么是Precision、Recall、F1
      • 1、为什么需要Precision、Recall、F1
      • 2、Precision、Recall、F1的计算
    • 四、什么是AUC

学习前言

工作需要了解一些有关推荐系统的内容,首先学一下什么是推荐系统与常见的推荐系统评价指标吧。

什么是推荐系统

一、为什么要有推荐系统

顾名思义,推荐系统的功能就是推荐,在当前信息量急速膨胀的互联网时代,每一个人都面向了海量的数据,哪怕是一个小平台,数据量可能都是以千万为单位的,这个时候让用户自己一个一个去选择,显然是不可能的。推荐系统则可以面对海量的数据信息,从中快速推荐出符合用户特点的东西。

一个好的推荐系统是互利共赢的,用户可以获取到他们最需要的内容(如商品、音乐、新闻等)。平台也可以获取到他们最需要的内容(如流量、成交量、播放量等)。而一个差的推荐系统会导致用户获取不到有价值的东西,最终导致平台失去用户

在我的眼里,推荐系统的功能可以归纳为以下四点:
功能一:帮助用户找到想要的东西。
功能二:提高平台的点击率、完播率等。
功能三:降低信息过载。
功能四:挖掘用户特点,为用户开拓未知的兴趣。

二、生活中的推荐系统

现在已经是2022年了,推荐系统遍布生活的方方面面,最常见的推荐系统例子有网购、音乐、短视频、长视频、直播、新闻等:
如图为淘宝网,下面的猜你喜欢便是推荐系统所做的工作。


如图为QQ音乐,下面的推荐便是推荐系统所做的工作。

如图为B站,下面的推荐便是推荐系统所做的工作:

三、推荐系统的组成

推荐系统的最重要组成部分便是推荐算法。

与深度学习类似的是,推荐算法其实也可以看作是黑匣子。常见的CV分类算法输入就是一张图片,中间的处理过程我们先不去看,输出是这个图片的种类。而推荐算法的输入为user和item的各种属性和特征。

user指的是用户,他的属性与特点包括年龄、性别、职业、地域、爱好等。
item指的是物品,它的属性与特点包括标题、内容、类别、价格、功能等。

推荐算法的输出是一个针对于用户的按照喜爱度排行的推荐列表。

四、推荐模型的种类

推荐算法大致可以分为以下几种类型:

1、基于协同过滤的方法

基于协同过滤的方法是基于user和item过去的交互产生新推荐的系统。协同过滤方法的主要思想是检测过去的user与item的交互情况,以估计相似的用户和相似的项目,并根据这些估计的相似度进行预测。

协同过滤方法的主要优点是它们不需要有关用户或物品的信息,如果某个user与各个item的互动越多,推荐就越准确:对于一组固定的用户和物品,越来越多的互动可以使系统越来越有效。然而,该模式只考虑过去的交互来进行推荐,因此协同过滤存在“冷启动问题”:无法向新用户推荐东西。

协同过滤方法也可以分为两类,分别为:

a、基于user的协同过滤方法

基于user的协同过滤算法可以分为以下几个步骤:

  1. 获得每个user对每个item的评价(是否购买、好评情况等)。
  2. 依据当前user对每个item的评价进行对比,计算出每个user与当前user之间的相似情况。
  3. 选出与当前user最相似的若干个user。
  4. 将这若干个user评价较高并且当前user没有涉及过的若干个item推荐给当前用户。
    如图所示:

b、基于item的协同过滤算法

基于item的协同过滤算法可以分为以下几个步骤:

  1. 获得每个user对每个item的评价(是否购买、好评情况等)。
  2. 计算出当前user涉及的item与其它item之间的相似情况。
  3. 选出最相似的若干个且其它用户评分较高的item推荐给当前用户。
    如图所示:

2、基于内容的方法

基于内容的方法与基于协同过滤的方法不同,基于内容的方法使用的是有关user和item的属性信息。

假设我们现在有一个电影推荐系统:
有关user(观众)的属性信息是例如年龄、性别、工作、爱好、地域等。
有关item(电影)的属性信息是例如类别、主要演员、持续时间、投资金额等。

基于内容的方法本质上是基于对user和item自身的特征或者属性直接分析和计算。更直白的来说,就是事先给出物品画像和用户画像,这样,我们就能根据用户喜欢什么直接给用户推荐物品。

比如我们知道User 1喜欢看喜剧,item 1也是一部喜剧,那我们就可以将电影item 1推荐给用户。现有的基于内容的方法大多使用技术分析手段来提取特征,从而计算相似性进行推荐,其重点在于信息获取与过滤。

3、基于模型的方法

基于模型的方法与基于内容的方法有一定的相似性,都需要利用到有关user和item的属性信息。

依然假设我们现在有一个电影推荐系统:
有关user(观众)的属性信息是例如年龄、性别、工作、爱好、地域等。
有关item(电影)的属性信息是例如类别、主要演员、持续时间、投资金额等。

基于模型的方法会依托于一些机器学习的模型,首先使用过去大量的user与item的点击情况进行训练,在需要推荐时,将user和item输入到网络当中进行预测,根据预测出的点击率在线进行推荐。

4、基于流行度的算法

基于流行度的算法简单粗暴,直接根据内容的点击量和播放量等数据来进行热度排序来推荐给用户。常见场景有热门电影榜、热歌榜、CSDN热榜、知乎热榜等等。

推荐系统的评价指标

一、推荐系统的常见任务

最常见的推荐系统任务就是CTR点击任务,通过模型为user推荐最有可能点击的items,因此推荐系统常常被看作一个二分类任务,判断这个item是否要推荐给user。在推荐系统的测试集里面,如果一个样本的标签为1,代表user点击了这个item,它是一个正样本;如果一个样本的标签为0,代表user没有点击这个item,它是一个负样本。

二、什么是TP、TN、FP、FN

TP的英文全称为True Positives,其指的是被分配为正样本,而且分配对了的样本,代表的是被正确分类的正样本
TN的英文全称为True Negatives,其指的是被分配为负样本,而且分配对了的样本,代表的是被正确分类的负样本
FP的英文全称为False Positives,其指的是被分配为正样本,但分配错了的样本,代表的是被错误分类的负样本
FN的英文全称为False Negatives,其指的是被分配为负样本,但分配错了的样本,代表的是被错误分类的正样本

三、什么是Precision、Recall、F1

1、为什么需要Precision、Recall、F1

假设现在有1个用户,电影仓库里面有100个电影,里面共有30个喜剧和70个恐怖片。
用户想要看喜剧。电影仓库给用户推荐了50个电影,其中包括了30个喜剧,但也包括了20个恐怖片。

如何评价电影仓库的推荐情况呢?
从一方面看,系统里就只有30个喜剧,系统推荐了30个喜剧,所有喜剧都被推荐了,系统还不错。这里体现的就是召回率(Recall),代表系统能否将需要的对象都找到。
从另一方面看,系统推荐了50个剧,里面只包含了30个喜剧,只有60%推荐对了,系统不太行。这里体现的就是精确度(Precision),代表系统找到的对象是否正确。

看系统要从多方面去看,不能只看一个方面,因此提出了F1指标,F1指标是Precision、Recall的结合,具体查看下面。

2、Precision、Recall、F1的计算

Recall指的是召回率。
Precision指的是精确度。

两个分别代表什么意思呢?

Recall的具体含义是:分类器认为是正类并且确实是正类的部分所有确实是正类的比例,代表系统能否将需要的对象都找到。

Precision的具体含义是:分类器认为是正类并且确实是正类的部分分类器认为是正类的比例,代表系统找到的对象是否正确。

F1指标是Precision、Recall的结合,是一个综合指标:
F1=2×Precision×RecallPrecision+RecallF_1=2\times\frac{Precision \times Recall}{Precision+Recall} F1​=2×Precision+RecallPrecision×Recall​
一般来讲,我们希望一个算法的F1指标越高越好。

四、什么是AUC

在了解AUC前,我们需要首先学一下ROC曲线,ROC曲线由两部分组成:
横轴是FPR,代表负样本 被判别器 判定为正样本的比例。
纵轴是TPR,代表正样本 被判别器 判定为正样本的比例,同Recall。
FPR=FPTN+FPFPR=\frac{FP}{TN+FP} FPR=TN+FPFP​
TPR=TPTP+FNTPR=\frac{TP}{TP+FN} TPR=TP+FNTP​
以二分类为例,通常一个样本的预测结果为0-1之间,我们可以设置不同的门限,获取到不同的FPR与TPR值,然后绘制在图片上,就可以获得ROC曲线了。

当我们将所有的样本均当作正样本,即门限为0,那么此时TN=0,FN也等于0,FPR和TPR均为1。
当我们将所有的样本均当作负样本,即门限为1,那么此时FP=0,TP也等于0,FPR和TPR均为0。
如果系统将所有的样本都预测正确,此时FP=0,FN=0,FPR为0,TPR为1,对应下图左上角的点。

AUC(Area Under Curve)是为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。

推荐系统实战1——什么是推荐系统与常见的推荐系统评价指标相关推荐

  1. 什么是推荐系统与常见的推荐系统评价指标

    什么是推荐系统 一.为什么要有推荐系统 顾名思义,推荐系统的功能就是推荐,在当前信息量急速膨胀的互联网时代,每一个人都面向了海量的数据,哪怕是一个小平台,数据量可能都是以千万为单位的,这个时候让用户自 ...

  2. 搜索推荐系统实战:起始篇

    搜索推荐系统实战篇-上半篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 在电商搜索中,例如淘宝,拼多多,京东等的搜索的场景往往 ...

  3. 搜索推荐系统实战:进化篇

    搜索推荐系统实战篇-中篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 此处我们假设模型训练的大的框架已经固定,同时数据采样的方 ...

  4. 搜索推荐系统实战:终极奥秘

    搜索推荐系统实战篇-下篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 Bias问题是推荐系统长期需要考虑的一个问题,举些简单的 ...

  5. Spark机器学习实战 (十二) - 推荐系统实战

    0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...

  6. 【阅读笔记】项亮前辈的《推荐系统实战》

    推荐系统是个有意思的方向.项亮前辈的<推荐系统实战>来当作入门的第一本书还是很合适的,这段时间在断断续续的抽空阅读了一遍.本书写的浅显易懂,很好的勾勒出了推荐引擎十年前的主流算法,以及工业 ...

  7. 电商大数据项目-推荐系统实战(一)

    电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析 https://blog.51cto.com/6989066/2325073 电商大数据项目-推荐系统实战之推荐算法 https:/ ...

  8. 视频教程-企业级电商大数据推荐系统实战-大数据

    企业级电商大数据推荐系统实战 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业.拥有丰富的企业应 ...

  9. 电商大数据项目-推荐系统实战之推荐算法(三)

    电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析 https://blog.51cto.com/6989066/2325073 电商大数据项目-推荐系统实战之推荐算法 https:/ ...

  10. 吐血整理!内部包含3980大数据、机器学习、推荐系统实战课程,仅分享一次

    在最近几年,大数据(Dig Data )机器学习(Machine Learning)逐渐流行开来,容易让人误以为机器学习并不难.机器学习的流行原因很简单,在一个消费者(以及广告主)需要更多个性化,而计 ...

最新文章

  1. IP、TCP、UDP报文头说明
  2. ajax跨域请求问题总结
  3. 基础知识:数字、字符串、列表 的类型及内置方法
  4. C# new和override的区别和用途
  5. 虚拟搭建局域网模拟器_巧用虚拟局域网,快速搭建私有云,一步就能搞定
  6. 信息学奥赛一本通 2004:【20CSPJ普及组】优秀的拆分 | 洛谷 P7071 [CSP-J2020] 优秀的拆分
  7. java xml 合并_Java中合并XML文档的合并
  8. [net]ftp ssh http telnet https服务及端口
  9. tomcat 不支持put 高版本_Tomcat-远程代码执行漏洞
  10. GitHub 新手教程 四,Git GUI 新手教程(1),OpenSSH Public Key
  11. 连锁加盟网站源码_连锁60秒:招商只是开始,养商才最重要
  12. GSON简单实用及常用方法(附 .jar 地址)
  13. Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决
  14. Linux内核学习路线 ,应从入门到深入,学内核就来零声教育
  15. bootstrap $(“#xxx“).bootstrapTable(‘getData‘)值不对
  16. 哨兵卫星影像数据Sentinel-1基本参数
  17. java 汉字乱码_【转】Java中文乱码的解决
  18. 【错误解决】Ubuntu20.04安装输入法遇到的问题
  19. 黑马点评项目-UV 统计
  20. OpenHarmony命令行调试工具hdc_std介绍

热门文章

  1. java odbc 驱动_Java java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
  2. 计算机系统保密检查整改情况函,保密工作整改情况汇报
  3. Java 后端开发工程师进阶路线
  4. 2018年最新全国县级以上行政区划对应关系数据(按国家统计局网站整理)
  5. 外卖程序_淘宝客系统_淘客小程序-淘客系统,外卖返利程序,外卖程序,返利程序
  6. Linux I2C总线驱动调试之i2c-tools工具使用
  7. 威纶通触摸屏上传错误_电气人都头疼的威纶通触摸屏常见问题详解,太管用啦...
  8. 什么软件测试情侣头像,在线识别情侣头像
  9. 【FreeRTOS的SOEM-master(1.4.1)移植】
  10. linux 服务器长ping 加时间戳;转