想要知道常见的推荐算法都有哪些吗?五分钟告诉你全部

我们在上网购物、看小说、买电影票的时候,都会遇到各种各样的推荐,给我们推荐一些我们曾经买过或收藏过的同类型产品,或者是推荐一些我们看过的小说题材相同的小说。那这些产品推荐都是如何实现的呢?

我们今天就来聊聊这些“无聊”的算法。

在互联网的应用中,常用的推荐算法有:协同过滤推荐算法(CollaborativeFilteringRecommendation)、内容推荐算法(Content-basedRecommendation)、相似性推荐算法(SimilarityRecommendation)、关联规则推荐算法(AssociationRuleBasedRecommendaion)。不同的算法都有不同的应用场景,合理的应用这些算法,能够为我们带来更多的经济效益。

协同过滤算法在电子商务领域可以说是炙手可热,很多的电商平台都是使用的它来做的自己平台的商品推荐。

啥是协同过滤呢?

简而言之,就是找到相同兴趣的群体,将这个群体中感兴趣的其他信息推荐给用户。

我们用一个简单的例子来说明这个算法:

这个时候,协同过滤就有用了。

我是用户A,我喜欢看《极品家丁》、《斗破苍穹》、《诛仙》,这些是我的兴趣。怎么定义我的兴趣呢?可以是我看过超过100章的书,可以是我收藏的书,可以是我好评过的书,总之,我们要先行定义一个纬度。

我的兴趣有了,其他用户也会有同样的兴趣,当其他用户的兴趣和我的兴趣相同时,就可以把这些用户感兴趣的书都推荐给我了。

具体的实施步骤如下:

我们先要建立一个大表,X轴就是我们所有的小说(从数据库中可以获得),Y轴就是我们所有的用户(从数据库中可以获得)。

然后我们将每个用户感兴趣的小说在XY的交叉点中都标注出来(在日志中可以获得),也就如下表示:

标注出来以后,我们就可以看到,我这个葛大爷的爱好是《极品家丁》、《斗破苍穹》和《诛仙》,而张大爷和李大爷和我有相同的兴趣爱好。而张大爷和李大爷还比我多看了一些小说,而这多出来的部分,就体现除了协同,也就可以作为对我的推荐了。

下一次,当我打开看小说的APP的时候,系统就可以向我推荐这两本小说了,而我也就有很大的可能性去打开观看。

啥是内容推荐算法呢?

内容推荐算法,其实就是对于用户的历史数据进行分析,抽象出内容的共性,然后根据这些共性进行推荐的算法。

我们也举一个例子来说明一下:

我还是喜欢看小说,我经常通过一些条件来搜索小说,我常常搜索:完本、玄幻、200万字以上。而我搜索的行为,就成了我的历史日志记录。根据我的这些日志记录进行共性的抽象,然后在根据抽象出来的共性内容去搜索小说,然后把这些小说推荐给我。

我通过搜索,选中了3本书并且进行了阅读,而这三次我分别搜索了

我们根据上诉内容进行抽象,可以得到一个最终的结果,就是玄幻、男频、不限、不限的结果,根据这个结果,我们可以去进行搜索,然后按照最新更新或者小说热度对结果集进行排序后推荐给用户,这样,这个结果也能够满足用户的需求。

当然,如果用户查询的次数非常多,导致结果的精度差,我们还可以有其他的一些手段来提高精确度,例如只使用最近3天的查询记录或者只使用最近3次查询记录。

协同过滤推荐算法和内容推荐算法都是需要用户有一定量的历史数据,然后再根据这些历史数据进行分析再进行推荐。

那针对新用户应该怎么办呢?那么相似性推荐算法就能够解决这个问题。

啥是相似性推荐算法?

相似性推荐算法,也叫相似度推荐算法,是通过对物品的特性进行分析,然后找出类似物品进行推荐的一种算法。

在相似性算法中,有一个距离(Distance)的概念,两者的距离越近,表示两者相似性越高,距离越远,则相似性越低。通过这个概念,如果我点击了一个小说,那么系统就可以根据这个小说于其他小说的相似性高低,为我推荐合适的小说了。

而计算这个距离,又有非常多的方式,这也是相似性算法的核心。有欧几里得距离(EucledianDistance)曼哈顿距离(ManhattanDistance)明可夫斯基距离(Minkowskidistance)余弦相似度(CosineSimilarity)等等很多种算法,我这里就不具体讲算法了(我也讲不明白,哈哈,大家有兴趣可以自己百度)。

具体实施步骤如下:

我还是喜欢看小说,我打开了《诛仙》这本书,这本书都有些什么属性呢?

我们为小说设置了8个属性,也就相当于8个维度,我们将《诛仙》这本书的所有属性作为了原点,然后通过距离算法计算这些属性之间的距离,汇总后,总距离最近的,也就是最值得推荐的。

假设:属性相同的距离为0,反之为1。

我们就可以得到distance=f(题材)+f(作者)+f(状态)+……+f(类型);

我们去遍历所有的小说,然后计算这个距离。找到一本《诛仙前传:蛮荒行》的书。这本书的属性有6个都与《诛仙》相同,2个不同。最后我们计算出distance为2,是距离最近的一本书,于是进行了推荐。

我们这里虽然将不同的属性权重都假设相同了,但是在现实中,不同属性的权重是不同的。也由于这个不是基于用户的历史数据来做出的推荐,因此,每个用户的推荐结果也是相同的。

关联规则推荐是电商中使用比较广泛的一种推荐算法,最经典的一个案例就是,把啤酒放在尿布的旁边,能够提升啤酒的销量。

啥是关联规则推荐呢?

要明白关联规则推荐,先要明白关联规则。关联规则就是通过对数据的挖掘和分析,找出物体与物体之间的关联性。而关联规则推荐就是依靠物体之间的关联性进行的一种推荐。

我们还是用我看小说来举例吧

当我找到一本我喜欢看的书的时候,这本书是《诛仙》,我将它加入到了我的书单中,这时,系统就为了推荐了其他几本书(《神墓》、《盘龙》等等),告诉我也可以一起加入到书架中,这种推荐,一般就是关联规则推荐。

关联规则推荐是如何实施的呢?我们再来说一下具体的实施步骤:

首先,我们要找出数据进行分析。

我们把所有的书单都找到,并且将书单中的书都一一列举出来。

然后,就开始计算关联规则的支持度。

什么是支持度(Support)?支持度就是所有书单中,某一本书或者几本书的组合所占的比例。例如:《诛仙》在所有的书单中都存在,那么它的支持度就是100%,《神墓》只在两个书单中有,那么它的支持度就是40%。

单个商品的支持度我们计算出来以后,接下来我们就是需要计算多商品组合的支持度了。我们将商品两两进行组合,来计算支持度,只有在书单中同时出现这个组合时,才进行计算。我们这里有六本书,那么组合的数量就是15种(5+4+3+2+1=15)。

到这里,其实我们已经可以做出推荐了,我们可以将支持度高的书或组合推荐给用户,这样,这个书就更容易被用户所接受。

接下来,我们就要开始计算关联规则的置信度了。

什么是置信度(Confidence)?当用户往书单添加《神墓》的时候,有多大的概率会去添加《盗墓笔记》呢?这个概率就是《神墓》->《盗墓笔记》的置信度。

《神墓》的支持度(S[神])为40%,《神墓》和《盗墓笔记》(S[神->盗])为20%,那么,《神墓》->《盗墓笔记》的置信度就等于50%(S[神->盗]/S[神])

最后,我们就要来分析关联规则的提升度了

根据支持度的计算,我们发现,收藏《盘龙》书的人,100%都会去收藏《诛仙》,那么是不是说,当用户将《盘龙》进行收藏的时候,我们去推荐《诛仙》是最好的呢?

No,不是这样的。我们为什么要去推荐《诛仙》?那是因为我们想提高《诛仙》的阅读量。但是,我们分析数据后发现,虽然在用户收藏《盘龙》的时候去推荐《诛仙》,用户100%会收藏,但是单独推荐《诛仙》,用户也是100%收藏。这个关联规则推荐并不能为《诛仙》带来更高的阅读量,因此用户收藏《诛仙》和收藏《盘龙》的行为是没有直接关系的。

如何来判断关联规则推荐的效果呢?那就是提升度了。

我们用书A->书B的置信度,同书B的支持度做比较,进行计算:

当比值大于1时,代表在收藏书A时推荐书B是有效的;

当比值等于1时,代表在收藏书A时推荐书B是无意义的,两者没有关联;

当比值小于1时,代表在收藏书A时推荐书B是无效的,不如直接推荐书B。

这里只是简单的抛砖引玉的讲了一下这些算法,但是真正的内容还有很多,我也还在持续的学习当中。

THE END
1.最常用的c语言算法有哪些大家知道最常用的c语言算法有哪些吗?下面小编为大家整理了最常用的c语言算法,希望能帮到大家! 一、基本算法 1.交换(两量交换借助第三者) 例1、任意读入两个整数,将二者的值交换后输出。 main() {int a,b,t; scanf("%d%d",&a,&b); printf("%d,%d ",a,b); https://www.oh100.com/kaoshi/c/547898.html
2.常用的数据挖掘算法有哪些?常用的数据挖掘算法有哪些? 数据挖掘是一种从大规模数据中发现隐藏在其中的知识、信息和关联等,并且可以将这些信息应用于不同领域的技术。常见的数据挖掘算法包括分类、聚类、关联规则、异常检测等。本文将介绍这些算法的主要概念和应用场景。 分类算法 分类是一种监督式学习算法,其目标是根据给出的输入数据集,对每个https://www.cda.cn/view/202615.html
3.罗戈网常用的需求预测算法有哪些?常用的需求预测算法有哪些? 定量分析之时间序列典型算法简介 移动平均法 字面意思了,比如计算5月的预测,可以使用2,3,4三个月的实际值取平均值计算5月的预测值,具体使用几个月的移动平均可以具体产品具体确定了;这种算法适合需求没有明显的季节性波动的产品,可以用这个方法过滤掉随机需求波动;这里假设了所有观测值http://adm3.logclub.com/articleInfo/NTYzMTU=
4.人工智能中最常用的优化算法有哪些人工智能中最常用的优化算法包括: 梯度下降法(Gradient Descent) 随机梯度下降法(Stochastic Gradient Descent) 批量梯度下降法(Batch Gradient Descent) 自适应梯度算法(Adaptive Gradient Algorithm,AdaGrad) 自适应矩估计算法(Adaptive Moment Estimation,Adam) https://wenku.csdn.net/answer/ce869dfea3a643018a80c212de3bcc61
5.监督学习有哪些常见算法?都是如何应用的监督学习有哪些常见算法?都是如何应用的 掌握一些最常用的监督学习算法能够帮助我们解决实际问题,本文将通过很多实例进行详细介绍。 ?什么是监督学习? 监督学习是机器学习的子集,监督学习会对机器学习模型的输入数据进行标记,并对其进行练习。因此,监督模型能最大限度地预测模型的输出结果。https://www.51cto.com/article/712484.html
6.机器学习常见算法类型都有哪些算法是程序员在学习软件编程开发技术的时候需要重点掌握的一个编程开发技术知识,而今天我们就通过案例分析来了解一下,机器学习常见算法类型都有哪些。 1.分类算法 这是一种监督学习方法。有很多算法帮助我们解决分类问题,比如K近邻、决策树、朴素贝叶斯、贝叶斯网络、逻辑回归、SVM等算法。人工神经网络和深度学习也往往用https://www.douban.com/note/782408490/
7.常用的加密方式有哪些?采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。 对称加密的优缺点:优点是算法公开、计算量小、加密速度快、加密效率高,安全、可认证;缺点是BS网络传输关系,密钥过多难维护https://nic.hnuu.edu.cn/10043/2023/0029457.html
8.可逆加解密算法Java可逆加密算法有哪些优点:对称加密算法使用相同的密钥进行加密和解密,速度快,适用于大量数据加密。缺点:对称加密客户端和服务端使用相同的密钥,有被抓住的风险;需要大量的钥匙,密钥管理负担。常用的算法: DES:密钥长度可为128、192、256位 DES是一种分组加密技术,即16字节、24字节和32字节;AES:密钥长度64位 ,也就是说,8字节具有更高https://www.tulingxueyuan.cn/tlzx/jsp/2549.html
9.人脸对齐介绍腾讯云开发者社区导语介绍人脸对齐的定义、任务、应用、常用算法以及难点 一、 人脸对齐,也叫做人脸特征点检测,图为人脸特征点例子 二、 人脸对齐有哪些应用? 1. 五官定位 2. 表情识别 3. 人脸漫画、素描生成 4.增强现实 5. 换脸 6.3D建模 三、 人脸对齐的任务 给定人脸区域 i,从该区域出发, 根据一定的规则 F,找到特征点位https://cloud.tencent.com/developer/article/1005756
10.19道必须掌握的C++面试题问14:常用的排序算法有哪些?简单描述几个排序算法的优缺点? 答:选择、冒泡、快速、希尔、归并、堆排等。 1.快排:是冒泡排序的一种改进。 优点:快,数据移动少 缺点:稳定性不足 2.归并:分治法排序,稳定的排序算法,一般用于对总体无序,但局部有序的数列。 优点:效率高O(n),稳定 缺点:比较占用内存 问15:newhttps://www.w3cschool.cn/cpp/cpp-a9no2ppi.html
11.常用的数据挖掘算法有哪几类数据挖掘GPU方面,graphlab的图并行,Spark计算框架,本文讲讲一些机器学习算法的map-reduce并行策略,尽管有些算法确实不适合map-reduce计算,但是掌握一些并行思想策略总归不是件坏事,下面简单介绍一下常用的数据挖掘算法,大家如果对某个算法有更好的并行策略,也请多多指教,欢迎大家交流,OK,下面先从一个最基本的均值、方差的https://bbs.pinggu.org/jg/kaoyankaobo_kaoyan_3191921_1.html