推荐系统知识的文摘和总结1

2024-05-13 05:48

本文主要是介绍推荐系统知识的文摘和总结1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     感觉自己这个初学者也许太急功近利了。之前的一些基本概念看得都忘了差不多了,今晚特此总结。希望可以得到更深刻的理解和认识。我是参考IBM的《探索推荐引擎内部的秘密》这里面第一部分---推荐引擎初探来总结。下面是主要内容:

    1.分清楚搜索引擎和推荐引擎的区别。

     搜索引擎就是你有个固定的关键词,然后你在百度,google里面去搜索,得到你想要的资料。也就是你有个明确的目标,这样找肯定可以很快的找到。但是,事情总是变化的,有时候你想找的东西总是不好描述,也就是你的目标不明确,这样寻找对于搜索引擎来说就很麻烦了。所以就出现了推荐引擎,它或许可以帮助大家解决问题。随着推荐引擎的出现,用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的信息发现。

    备注:区别就是目标是明确的还是不明确的。记得一个人的搜索能力是很重要,你不可能掌握很多的知识和事情,但是当你不知道你可以借助网络来帮你解答。这个就是你需要准备定位你的关键词或者推荐引擎很好都可以帮助你更快的找到问题的答案。还有个需要说明的,文章中说了这是个信息极度爆炸的时代,也就是大数据的时代,我们需要根据这些数据来帮助我们解决问题。

    2.推荐系统的工作原理。

 

这个是推荐系统的工作原理图。我们可以把推荐系统当做一个黑盒,来考虑输入和输出。输入是推荐的数据源,数据源包括:

  • 要推荐物品或内容的元数据,例如关键字,基因描述等;
  • 系统用户的基本信息,例如性别,年龄等
  • 用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。

推荐引擎根据不同的推荐机制可能用到数据源中的一部分,然后根据这些数据,分析出一定的规则或者直接对用户对其他物品的喜好进行预测计算。这样推荐引擎可以在用户进入的时候给他推荐他可能感兴趣的物品。这样,一个推荐引擎就可以了。

  3.推荐引擎的分类。

   3.1推荐引擎是不是为不同的用户推荐不同的数据

   根据这个可以分为:基于大众的推荐引擎和个性化的推荐引擎。这个应该比较好理解,就是某天你打开一个网站,你看看他为你推荐的,然后你转个身看你座位旁边的推荐,如果和你一样拿就是基于大众的推荐引擎,不一样那就是个性化的推荐引擎。基于大众的推荐引擎比较简单,也可以看到用的地方,比如一些比较门的东西或者季节性的东西。显然,每个人的兴趣和爱好什么的都不会一样,这样它的缺点也就出来了。所以出现了个性化的推荐引擎。后面讨论的大多数是个性化的推荐引擎,这才智能化,呵呵……

  3.2根据推荐引擎的数据源

分为三个:

    1.根据用户的基本信息发现用户的相关性,称为基于人口统计学的推荐(Demographic-based Recommendation)。

    2.根据物品或者内容发现物品或者内容的相关性,称为基于内容的推荐(Content-based Recommendation)。

    3.根据用户对物品或者内容的偏好,发现物品或者内容的相关性,或者发现用户的相关性,称为基于协同过滤的推荐(Collaborative Filtering-based Recommendation)。

  3.3根据推荐模型的建立方式

    1.基于物品和用户本身的,就是把每个用户和每个物品都看做是个独立的个体,预测每个用户对每个物品的喜欢程度。我们可以用二维矩阵来描述,很明显是个稀疏矩阵。我们不可能对每个物品都感兴趣。当然这也是个巨大的矩阵,计算起来比较复杂。所以,为了减少计算量,我们可以对物品和用户进行聚类,然后记录和计算一类用户对一类物品的喜欢程度。但是这样的模型肯定在准确性上有损失,但只要我们能接受就可以。

    2.基于关联规则的推荐。典型的就是购物篮的问题和啤酒和尿布的实例。通过关联规则来分析用户经常把哪些物品在一起购买。我们可以基于这些规则来推荐。大家可以在购物网站上看到买这个物品的人还买了什么的推荐或者是还浏览了什么的推荐。这个就是典型的基于关联规则的推荐。

    3.基于模型的推荐。这是个机器学习的问题,可以把已有的用户爱好数据作为训练样本,训练出一个预测用户爱好的模型。下次,只要用户进入系统,就可以用这个模型给予推荐。这种方法在于我们怎么样去寻找模型,从而得到更好的准确度。

     介绍完分类,说一个比较重要的问题。其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,例如 Amazon 的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。

 

感觉有点多了,至于具体的模型总结放在下篇博客吧。欢迎大家指正。

 

 

 

 

这篇关于推荐系统知识的文摘和总结1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984841

相关文章

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert