推荐系统是一种技术、一系列的工具、在查找信息时可以帮助进行过滤大量无效信息。可以在复杂的物品(商品、文字等统称)中做出恰当的选择。
推荐系统在很多行业中使用、推荐的物品也大不一样、网络商店可以给你推荐一件商品(书、饮料等等)、门户网站可以给你推荐一条资讯等。
Burke,R在2007年的”Hybridwebrecommendersystem”的论文中提出了推荐系统的几种分类
Content-based(基于内容):
所谓的基于内容是指对于所需要推荐物品的属性(内容)、推荐系统根据物品的属性进行特征提取、把几类物品的特征信息进行提取、通过数学方式进行物品之间的相似性计算,根据计算的相似度、把相似度高的物品推荐给用户、例如有一个用户在JD购买了一个游戏专用机械键盘、JD就会给购买机械键盘的用户推荐游戏专用鼠标。上述示例说明的就是推荐系统以基于内容推荐的一个案例。
Collaborativefiltering(协同过滤):
协助过滤是指通过一个集体的共同特征来推演集体中单个个体的喜好。基本依据是有一个兴趣相似度很高的集体、集体中有N个体对一件物品M已经有了评价、那么就可以根据现在有N个评价来预测集体中Y成员对应物品M的评价。目前对于协同过滤比比较成功的案例是网络书店、当你在网络书店选中一本书的时候、在下面会显示出购买了这本书的其它人还选择了那几本书。
Demographic(基于人口统计)
基于人口统计的推荐系统就是以人为单位体、根据人的属性(年龄大小、性别、学历、生活条件、爱好、等等)作为特征来进行划分为不同的小的集群体、然后针对每一个小的集体进行物品的推荐、这个推荐并不是单独个体的一个推荐而是一个小集群体共同推荐。2011年在ACM会议中‘王元元‘等人发表了“基于人口统计的推荐系统在旅游景区的适用性”、基于人口统计的推荐方法可以很好的克服旅游景区收集数据的稀疏性、在结合协同过滤方法、最终的测试结果有很好的改善。
Knowledge-based(基于知识)
基于知识的系统是根据了特定领域所形成的知识图谱、计算此物品是否能满足用户的需要和偏好进而进行推荐、基于的处理方法是、先根据知识图谱训练出物品的特征向量、推荐系统会估计物品的特征向量和用户需求问题的特征相向的匹配度、根据匹配决策是给用户推荐的物品。
Community-Based(基于社区)
深度学习是人工智能技术中的一种、当Google宣布基于深度学习的AlphaGo在与人的围棋对战中获得胜利的时候、大部人可能才意识到人工智能已经不只是存在科学家的实验室里了、而是已经走入到了大众视野中来。AlphaGo击败人类是AI历史上的一大突破。也是见证了神经网络发展的一个巅峰。其实深度学习技术在许多方面已经融入到我们生活中来了、小米手机中的AI拍照、科大讯飞的语音识别等等。与传统的人工智能技术相比、深度学习是一种无监督的模式来进行的、所以不需要花费更多的精力来处理数据的特征。深度学习技术本身具有学习抽象能力的数据表示。
深度学习是基于神经网络技术的、对于数据的处理、可以通过多层模型、多种函数反复处理、对于数据中的异常或者噪声、以给以很好的处理。
推荐系统是一个交叉的学科、它需要使用很多其它方面的技术、目前是一个大数据的时代、推荐系统无论架构如何都脱离不了一个核心的问题数据、如果没有一个完善的数据为基础、推荐系统的其它都是无根之萍、从这方面来看推荐系统可以理解是一个数据挖掘的扩展和升华。大数据的精细化营销就可以理解是为一种线下的推荐系统。想要完成一个好的推荐系统必须要优先处理好数据的问题、
数据就是推荐系统中推荐物品属性的集合、一个统称它包含了非常多的东西、可以是文字、数字、图像等等。数据在预处理完成后会得到一个可以进行使用的数据集合、后续的操作步骤全部是在这个数据集合上进行的、为了保证后续系统的操作准确性、我们在此阶段最重要的目的是提供一个有质量保障的数据集。
数据质量在数据预处理过程核心目标。一般情况下影响数据质量的因素有以下几种
数据源:上游数据源不完善或不规范、导致下游系统受到影响、出现质量问题。
统一标准:KPC、报表等指标口径中存在的数据质量问题、包括指标准确性、一致性及完整性问题
系统自身:是指系统在开发建设、日常运营和维护过程中引发的数据质量问题、数据模型质量问题、系统升级数据信息丢失问题、ETL清洗不够彻底。
数据异常类型:
重复值:数据记录中存在完全一样的重复记录、业务上理解不可能存在的关键信息的出现重复记录。
数据不一致:数据的记录是否符合规范、是否与前后及其它数据集合保持统一、数据的一致性主要包括数据记录的规范和数据逻辑的一致性
缺失值:数据的缺失主要有记录的缺失和记录中某个字段信息的缺失、两者都会造成统计结果的不准确、完整是数据质量的基础
异常值:数据记录中出现明显的数据偏差或者数据错误的记录、例如年龄记录为200岁
如上图(一)所示、我们可以看出来,这个数据集中的”ID”信息应该记录为数字类型而不是现在的字符类型、而这个“ID”信息中有31个缺失值、这些都属于数据的质量问题、在推荐系统的设计的过程、需要根据推荐系统的设计规则进行数据集的预处理。
推荐系统里相似度的计算是一个很重要的指标、无论那种算法我都需要根据相似度的结果来进行推荐的产生。常见的相似度计算方法有以下几种:
欧几里得距离
闵可夫斯基距离是欧几里得距离的扩展
马氏距离
余弦相似度
文本信息特征:文本信息特征是指如果一个数据集的特征是文本类的、例如电影集中的”Overview”信息“LedbyWoody,Andy'stoyslivehappilyinhisroomuntilAndy'sbirthdaybringsBuzzLightyearontothescene.AfraidoflosinghisplaceinAndy'sheart,WoodyplotsagainstBuzz.ButwhencircumstancesseparateBuzzandWoodyfromtheirowner,theduoeventuallylearnstoputasidetheirdifferences.”
这个信息在使用协同过滤推荐算法时、是非常重要的一个信息、只是这个是人类可以理解的信息、计算机是无法理解这段话的意思、所在数据处理的过程时就需要把这段信息转换为计算机可以进行计算的信息、数据的过程就是找出这段话中、最具有代表的几个词、这几个词就是这个文本中的特征信息。
在很的情况下、一些特征信息是离散或者格式不一样的、需要使用一些方法把这个特征信息进行一些转换、有时也需要把这几个特征信息合并计算一个特征信息。
标准化和归一化:数据集中的特征信息(整数型或者浮点型)值会有很大的差别、如果对这个值不做进一步的处理、那么最后计算出来的结果、可能会存在一些影响。常见的做法是使用Z-Score标准化、使用原始数据减去均值再除以标准差。也称为标准差标准化、计算公式如下:
离散化处理:有时数值型特征根据业务以及其代表的含义需要进行离散化,离散化拥有以下好处:离散化后的特征对异常数据有很强的过滤性,比如一个特征是年龄>30为1,否则为0。如果特征没有经过离散化,一个异常数据“年龄100岁”会给模型造成很大的干扰;特征离散化后可以进行特征交叉,特征内积乘法运算速度快,进一步引入非线性,提升表达能力,计算结果方便存储,容易扩展;特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20~30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。但是处于区间相邻处的样本会刚好相反,所以如何划分区间也非常重要,通常按照是否使用标签信息可以分为无监督离散化和有监督离散化
卡方检查:它的过程如下:首先将数值特征的每个不同值看作一个区间,对每对相邻区间计算卡方统计量,将其与由给定的置信水平确定的阔值进行比较,高于阔值则把相邻区间进行合井,因为高的卡方统计量表示这两个相邻区间具有相似的类分布,而具有相似类分布的区间应当进行合并成为一个区间。合井的过程递归地进行,直至计算得到的卡方统计量不再大于阔值。
朴素贝叶斯和概率方法:
朴素贝叶斯是一个归纳式学习的概率方法、属于一般的贝叶斯分类器、这类方法基于之前的观察数据产生一个概率模型。计算公式
对文档d分类、选择概率最高的作为类别
实现朴素贝叶斯的一个关键步骤是估计司的概率P(tk|C),为了使估计对少出现的词更有健壮性、需要采用一个简单的事件计数和的平滑方法修正这个概率、一个很重要的平滑作用就是它避免了在训练数据的某一个类中、一个没有出现过的词的概率为0的情况。
正如前所说的、特征值有很多个、推荐系统需要从N个特征值选择取一个或者多个特征值用来进行计算、这个过程称为特征选择、常用的特征值选择方法如下:
数据集是经过了处理的共有93389行,9列(vote_count:表示一部电影的评价人数、vote_average:表示电影的一个平均评分)
可以看出结果是结果不是很好、现在对vote_count,vote_average进行特征的处理
此处只是一个示例、在后面的系统设计和部署中、会根据不同的特征类型和采用的计算方式不同、选择不同的处理方式、最后选择不同特征。
基于内容的推荐系统是以用户以前的爱好来挖掘用户新的喜欢、利用的是用户目前喜欢的物品的属性与需要推荐物品的属性进行相似度的计算、预测需要推荐物品在用户层面的喜好度、来进行排序后推荐。基于内容推荐的一个是基础是现在有已经有了客户对一些商品的喜欢的评价、也可以理解是用户的个人属性已经构筑。系统知到了用户的所需要的一切信息。
推荐过程有三个阶段、每个都是独立进行的
内容分析器:就是数据集预处理的一个过程、收集的用户数据一般是一个离散的、非结构化的数据、推荐系统需要针对这个数据进行分析处理、形成一个具有特征的、结构化的数据集、才能够在后面的推荐系统中进行使用。
信息学习器:是收集了用户偏好的数据特征信息、并泛化这些数据、从而构造用户特征信息、一般是通过机器学习技术进行特征提取、特征组合、根据用户过住信息中的正面信息的反面信息形成一个用户的模型、引模型可以进行用户正负喜欢信息的预测及反馈。
过滤组件:是用户个人信息和物品进行匹配、利用个人信息来过滤筛选出物品信息、使用相应的相似度计算来生成一个排名清单、此清单一般是根据用户的正面反馈信息来生成的。
基于内容推荐的系统的优势:
数据结构简单:推荐系统只需要根据单个用户矩阵信息进行相似度的计算、不需要考虑其它的因素、只有一个用户的信息就可以生成一个对应的模型(有可能生成的模型效果并不是很好)。
物品信息透明:在推荐系统最终的成果物中可以清楚的显示物品信息的特征和描述、能很好的推荐物品和用户之前的依赖性是基于那个特征进行推荐的、也可以针对目前现在的物品特征进行明确过滤、增加人为权限的筛选过滤。例如用户购买了儿童食品面包、推荐系统根据用户目前现在有的信息进行推荐儿童的奶粉、但是目前有一个款奶粉有可能存在质量的问题、那推荐系统可以在最终的推荐信息过把此款奶粉进行移除不推荐给用户。
新物品增加:基于内容的推荐系统不依赖物品的评价特征信息、一个网络商城目前上线了一个新的产品、这个商品本身的评价特征信息很少、但是推荐系统可以依赖于商品的其它特征信息进行推荐。
可分析的内容有限、随着网络安全法的不断健全、推荐系统只能采用显示的信息数据收集、一部分用户并不会很在或者说乐意提供一些物品的显示评价、为了保护用户的隐私权、推荐系统并不能随意采集用户的一个隐式信息、这对用户模型的生成是一个很大的难题。对于物品来讲、物品的特征信息无论是系统采集还是手动增加标签都由专业领域的能力才能完成。对于目前的成千上万人物品来讲是需要一个很大的人力成本才能完成、而且物品是不断增加的、这个一个持续消耗的过程。
基于内容推荐的系统的问题
新鲜感弱:基内容的推荐系统、所推荐给用户都是一些类似的物品、对于使用此推荐的用户所接收到都是一个类型的物品、如一直持续下则会对用户形成审美疲劳。最终会导致用户放弃这个推荐系统的使用、因为没有想要生活是一层不变的。
新用户的冷启动问题:基内容的推荐系统的前提是取有一定的用户对物品的评价信息、如果一个网络商城、新注册了一个用户、此时没有用户对任何物品的评价信息、基于内容的推荐系统是没有办法正常工作的。
物品特征
结构化特征信息
非结构化特征信息
基于近邻的推荐系统的工作方法就是计算一个用户(或者物品)和其它用户(物品)的相似度、找到最志同道合的几个伙伴、然后把伙伴们认为好的东西推荐给用户。在推荐引擎工作的时候是分为了二个部分、判断用户的爱好相同、判断爱好相同用户对物品的喜好程度、最后把物品喜好程度进行排序推荐。
基于近邻的推荐系统是根据相同的“口碑”的准则、根据和用户兴趣相同的人或者根据其他可信源来评价一个物品、
用户名
天下第一
人间第二
武道第一
文学第二
地狱十八
张三
5
1
2
李四
3
王五
马六
4
如上图所示:当王五影“人间第二“是推荐系统可以根据对矩阵中的对比、来确认张三和马六兴趣相同、那么就可以看出来系统预测的评分是不错的,就会推荐给用户。
基于用户的评价
基于近邻用户推荐方法预测用户U对新物品I的评分、利用和用户U兴趣相近且对物品I作了评分的用户、这些和用户U兴趣的用户称为近邻。假设W表示用户U和V的兴趣相同的程度、用户U的K按住、表示为K个与用户U相似度W表示的最高的用户。
基于用户的分类
前面把描述的预测方法是通过对按住用户评分进行加权平均的计算方法、本质上是在解决回归问题,别一个方面基于近邻分的分类则是通过用户的最近邻对于评分的投票、找到用户对物品最可能的评分、用户的N个邻居对物品评分的平均值就可以计做用户对物品的评分。
回归与分类
选择基于近邻回归或者分类方法很大程度上取决于系统的评分刻度类型。如果一个评分刻度是连续的、那么回归方法更加适合、相反如果评分刻度仅仅是一个离散的值、则使用分类方面更加合适。因为标准化方法会使评分映射到连续类型、这就导致分类方法很难处理此类问题
基于物品推荐
基于用户的推荐方法依赖于和自己兴趣相同的用户来预测一个评分、而基于物品的推荐方面是通过评分相近的物品来预测的可以理解为是一种基于内容的推荐方法
推荐系统的准度度很大程度上依赖于系统中用户数和物品数之间的比例、对于用户数量大于物品数据的环境、基于物品的推荐方面更加准确(Amazon),同样用户数小于物品数的系统、则采用基于用户的近邻方法效果则更加精确。
近邻方法的要素
选择回归或者分类、以及选择基于用户还是基于物品的方法、都会对推荐系统的准确性、效率和整体质量产生重要的影响、除此之外还需要考虑以下权重信息的影响
当一个用户对一个物品给以评分时、每个用户都有自己的评价准则、有时我们所表达出来并不是自己真实的意思、例如你在购买商品时会告诉你当你给最好的评价时会有一个商品赠送给你、用户为了得到这个赠送的商品可能会在本身感觉的情况下提高评分。均值中心化和Z-score这两种通用的标准化机制可以将个人评分标准转换到更一般的整体评分标准中
均值中心化意思是通一个平均分的比较来决定一个评分为正或者为负、用户对物品喜好倾向可以直接观察标准化后的评分值的正负情况、同时评分可以表示用户对该物品喜好或者厌恶的程度。此时就可以使用前面介绍的Z-Score标准化方法对数据进行处理。
相似度权重计算
相似度权重在基于近邻的推荐方法中扮演双重角色
可以用于选择可信的近邻用于预测评分
给予不同近邻在预测中的权重、计算相似度权重是基于近邻推荐系统中重要一部分、它可以直接影响准确性的性能
基于内容的推荐方法用户易于理解,简单有效,但是它的缺点也十分明显。它要求内容必须能够抽取出有意义的特征,且要求这些特征内容有良好的结构性,推荐精度较低,相同内容特征的物品差异性不大。因为以上这些原因,在推荐系统中基于内容的推荐往往会和其他方法混合使用。
协同过滤推荐算法可以分为两大类
一类是基于用户的协同过滤;
一类是基于物品的协同过滤。
协同过滤算法能得到一个高速发展、并占有大量的市场、主要是协同过滤算法能满足推荐系统在应用上二个特性:
快速的反应:在用户打开站点的几秒内能给出一个推荐物品、不存在冷启动问题。
准确的反应:高准确度、协助过滤可以基于用户、物品、混合多种方式、相对于其它的推荐引擎来讲效果更好。
基于物品的协同过滤算法的核心思想,给用户推荐那些和他们之前喜欢的物品相似的物品、不同于基于内容的推荐,基于物品的协同过滤中的相似主要是利用了用户行为的集体智慧。
基于物品的协同算法首先计算物品之间的相似度,计算相似度的方法有以下几种。
基于共同喜欢物品的用户列表计算:
N(i):表示购买物品i的用户数
N(j):表示购买物品j的用户数
分子表示:同时购买物品i和物品j的用户数
在计算出物品间的相似度后则可以进行第二步、计算用户U对物品i的预测分数
基于余弦(Cosine-based)的相似度计算:前面一种方法直接使用购买物品人的数进行了计算、但也是存在一种情况是我购买了但不喜欢、也如果结果也包含在数据集、则会影响最张的效果。所以我们可以把用户的评价引入到此公式中进行计算
基于用户的协同过滤(UserCF)的原理其实是和基于物品的协同过滤类似的。所不同的是,基于物品的协同过滤的原理是用户U购买了A物品,推荐给用户U和A相似的物品B、C、D。而基于用户的协同过滤,是先计算用户U与其他的用户的相似度,然后取和U最相似的几个用户,把他们购买过的物品推荐给用户U
在计算之前要先对物品进行排序、排序完成后就可以根据公式进行用户之间相似度的计算
公式和之前的一样、只是参数换成了、用户购买物品的数量、而当是商品购买的用户数、包括后面的相似度的计算则是一样的、同样存在一个问题、目前网络商城存在一个很严重的刷单行为、我们要考虑一下怎么去把这个信息给筛选下去。
介绍了几种主流的推荐方法,它们在推荐时利用的信息和采用的框架各不相同,在各自的领域表现出来的效果也各有千秋。基于内容的推荐方法依赖Item的特征描述,协同过滤会利用User和Item的特定类型的信息转化生成推荐结果,而社交网络的推荐算法则根据User的相互影响关系进行推荐。每种方法各有利弊,没有一种方法利用了数据的所有信息,因此,我们希望构建一种混合(Hybrid)推荐系统,来结合不同算法的优点,并克服前面提到的缺陷,以提高推荐系统可用性。
加权型混合推荐
交又型混合推荐
交叉型推荐技术的主要动机是保证最终推荐结果的多样性。因为不同用户对同一件物品的着眼点往往各不相同,而不同的推荐算法,生成的结果往往代表了一类不同的观察角度所生成的结果。交叉型推荐技术将不同推荐算法的生成结果,按照一定的配比组合在一起,打包后集中呈现给用户。
特征组合型混合推荐
特征递增型混合推荐
特征递增型混合技术,即将前一个推荐方法的输出作为后一个推荐方法的输入。这种方法上一级产生的并不是直接的推荐结果,而是为下一级的推荐提供某些特征。一个典型的例子是将聚类分析环节作为关联规则挖掘环节的预处理:聚类所提供的类别特征,被用于关联规则挖掘中,比如对每个聚类分别进行关联规则挖掘。
推荐系统的评估从二方面来理解:
一、因推荐系统有多种的实践方面、多种的算法、多种架构、被推荐的物品也是多种多样、没有那一样架构、算法是可以完成所有物品的推荐的、所以针对于不同的物品可以选择的实践方面也不同的、针对于同一个物品在不同场景下、不同的算法和架构达成的效果也是有很大区别的、当我们在设计系统时一般会选择多种架构、多种算法、混合使用。在设计阶段我们需要评估每个架构和算法的效果、选择混合效果最好的组合。
推荐系统可以定义为评估用户对新物品的反馈、管中评估是基于该系统中历史数据信息、同时推荐那些预测反馈兴趣高的物品给客户、这种基于物品的反馈类在每个系统中表现不一样分为三种、分级反馈、一元反馈、二元反馈、分级反馈就是我们最熟悉的评分制、二元反馈是获取用户与物品互动行为、评价信息、好坏的评价信息。一元反馈是指是不是购买了或都浏览物品
准确性是通常用来评估推荐系统效果的主要方法、一般来说、评分集合可以分为用于训练函数的训练集和测试集、测试预测准确性的方法
平均值绝对误差
均方根误差
XX云就提供了机器学习和深度学习的平台PAI
为传统机器学习提供上百种算法和大规模分布式计算的服务:
支持100余种算法组件,覆盖回归、分类、聚类、文本分析等算法。提供企业分布式计算能力,轻松实现大规模数据处理
为深度学习客户提供单机多卡、多机多卡的高性价比资源服务:
提供GPU单机多卡和多机多卡的计算能力,
支持最新的深度学习开源框架:
支持开源任意版本的深度学习框架,并提供阿里云深度优化的Tensorflow,性能与速度更佳
帮助开发者和企业客户弹性扩缩计算资源,轻松实现在线预测服务:
AutoML引擎提供模型训练参数调优服务,在最大限度上减少机器学习业务搭建成本
华为开发者空间发布
让每位开发者拥有一台云主机
在此一键设置昵称,即可参与社区互动!
*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。