推荐系统 订阅
推荐系统是利用 [1]  电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。 展开全文
推荐系统是利用 [1]  电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。
信息
外文名
Recommender system
定    义
电商网站向客户提供商品信息建议
中文名
推荐系统
应    用
电子商务
推荐系统背景简介
互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而带来的网上信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,这就是所谓的 [2]  信息超载(informationoverload)问题。解决信息超载问题一个非常有潜力的办法是 [3]  推荐系统,它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的个性化信息推荐系统。和搜索引擎相比推荐系统通过研究用户的兴趣偏好,进行个性化计算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。推荐系统现已广泛应用于很多领域,其中最典型并具有良好的发展和应用前景的领域就是电子商务领域。同时学术界对推荐系统的研究热度一直很高,逐步形成了一门独立的学科。 推荐系统有3个重要的模块:用户建模模块、推荐对象建模模块、推荐算法模块。通用的推荐系统模型流程如图。推荐系统把用户模型中兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。
收起全文
精华内容
参与话题
问答
  • 推荐系统综述:初识推荐系统

    万次阅读 多人点赞 2018-06-26 11:58:42
    4.推荐方式和效果评估 4.1 评分预测 4.2 TopN推荐 5. 推荐算法 5.1 基于用户行为推荐 5.1.1基于用户的协同过滤(User-Based CF) 5.1.2基于物品的协同过滤(Item-Based CF) 5.1.3隐语义模型(Latent Factor ...

     

    目录

    1. 引言

    2. 发展历史

    3. 研究现状

    4. 推荐方式和效果评估

    4.1 评分预测

    4.2 TopN推荐

    5. 推荐算法

    5.1 基于用户行为推荐

    5.1.1 基于用户的协同过滤(User-Based CF)

    5.1.2 基于物品的协同过滤(Item-Based CF)

    5.1.3 隐语义模型(Latent Factor Model)

    5.2 基于内容推荐

    5.3 混合推荐

    6. 总结和展望

    参考文献


    1. 引言

    随着信息技术和互联网技术的发展,人们从信息匮乏时代步入了信息过载时代,在这种时代背景下,人们越来越难从大量的信息中找到自身感兴趣的信息,信息也越来越难展示给可能对它感兴趣的用户,而推荐系统的任务就是连接用户和信息,创造价值。

    设想用户想买一本《Recommender Systems An Introduction》,用户只需要走进一家书店,寻找这本书即可。通过互联网,用户可以打开当当,在搜索框中输入书名,然后就可以找到用户想要购买的书籍,这两种方式都需要用户有明确的目的,如购买《Recommender Systems An Introduction》或某一类别的书籍。

    但是,当用户没有明确目标时,比如寻找感兴趣的音乐,用户只能通过一些预先设定的类别或标签去寻找他可能感兴趣的音乐,但面对如此之多音乐,用户很难在短时间内找出真正感兴趣的音乐。这时就需要一个自动化的工具,来分析用户曾经收听的音乐,进而寻找出用户可能感兴趣的音乐推荐给用户,这就是个性化推荐系统的工作。

    作为一种信息过滤系统,推荐系统具有以下两个最显著的特性:

    (1)主动化。从用户角度考虑,门户网站和搜索引擎都是解决信息过载的有效方式,但它们都需要用户提供明确需求,当用户无法准确描述自己的需求时,这两种方式就无法为用户提供精确的服务了。而推荐系统不需要用户提供明确的需求,而是通过分析用户和物品的数据,对用户和物品进行建模,从而主动为用户推荐他们感兴趣的信息。

    (2)个性化。推荐系统能够更好的发掘长尾信息,即将冷门物品推荐给用户。热门物品通常代表绝大多数用户的兴趣,而冷门物品往往代表一小部分用户的个性化需求,在电商平台火热的时代,由冷门物品带来的营业额甚至超过热门物品,发掘长尾信息是推荐系统的重要研究方向。

    目前,推荐系统已广泛应用于诸多领域,其中最典型的便是电子商务领域。同时,伴随着机器学习、深度学习的发展,工业界和学术界对推荐系统的研究热情更加高涨,形成了一门独立的学科。

    2. 发展历史

    推荐系统是互联网时代的一种信息检索工具,自上世纪90年代起,人们便认识到了推荐系统的价值,经过了二十多年的积累和沉淀,推荐系统逐渐成为一门独立的学科在学术研究和业界应用中都取得了很多成果。

    1994 年明尼苏达大学GroupLens研究组推出第一个自动化推荐系统 GroupLens[1]。提出了将协同过滤作为推荐系统的重要技术,这也是最早的自动化协同过滤推荐系统之一。

    1997 年 Resnick 等人[2]首次提出推荐系统(recommendersystem,RS)一词,自此,推荐系统一词被广泛引用,并且推荐系统开始成为一个重要的研究领域。

    1998年亚马逊(Amazon.com)上线了基于物品的协同过滤算法,将推荐系统推向服务千万级用户和处理百万级商品的规模,并能产生质量良好的推荐。

    2003年亚马逊的Linden等人发表论文,公布了基于物品的协同过滤算法[3],据统计推荐系统的贡献率在20%~30%之间[4]。

    2005年Adomavicius 等人的综述论文[5] 将推荐系统分为3个主要类别,即基于内容的推荐、基于协同过滤的推荐和混合推荐的方法,并提出了未来可能的主要研究方向。

    2006 年10月,北美在线视频服务提供商 Netflix 宣布了一项竞赛,任何人只要能够将它现有电影推荐算法 Cinematch 的预测准确度提高10%,就能获得100万美元的奖金。该比赛在学术界和工业界引起了较大的关注,参赛者提出了若干推荐算法,提高推荐准确度,极大地推动了推荐系统的发展。

    2007年第一届ACM 推荐系统大会在美国举行,到2017年已经是第11届。这是推荐系统领域的顶级会议,提供了一个重要的国际论坛来展示推荐系统在不同领域的最近研究成果、系统和方法。

    2016年,YouTube发表论文[6],将深度神经网络应用推荐系统中,实现了从大规模可选的推荐内容中找到最有可能的推荐结果。

    近年来,推荐系统被广泛的应用于电子商务推荐、个性化广告推荐、新闻推荐等诸多领域,如人们经常使用的淘宝、今日头条、豆瓣影评等产品。

    3. 研究现状

    经过二十多年的积累和沉淀,推荐系统成功应用到了诸多领域,RecSys会议上最常提及的应用落地场景为:在线视频、社交网络、在线音乐、电子商务、互联网广告等,这些领域是推荐系统大展身手的舞台,也是近年来业界研究和应用推荐系统的重要实验场景。

    伴随着推荐系统的发展,人们不仅仅满足于分析用户的历史行为对用户进行建模,转而研究混合推荐模型,致力于通过不同的推荐方法来解决冷启动、数据极度稀疏等问题,国内知名新闻客户端今日头条采用了内容分析、用户标签、评估分析等方法打造了拥有上亿用户的推荐引擎。

    移动互联网的崛起为推荐系统提供了更多的数据,如移动电商数据[6]、移动社交数据、地理数据[7]等,成为了社交推荐的新的尝试。

    随着推荐系统的成功应用,人们越来越多的关注推荐系统的效果评估和算法的健壮性、安全性等问题。2015年,Alan Said 等人在RecSys会议上发表论[8],阐述了一种清晰明了的推荐结果评价方式,同年,FrankHopfgartner等人发表论文[9],讨论了基于流式数据的离线评价方式和对照试验,掀起了推荐算法评估的研究热潮。

    近年来,机器学习和深度学习等领域的发展,为推荐系统提供了方法指导。RecSys会议自2016年起开始举办定期的推荐系统深度学习研讨会,旨在促进研究和鼓励基于深度学习的推荐系统的应用。

    2017年AlexandrosKaratzoglou等人在论文[10]中介绍了深度学习在推荐系统中的应用,描述了基于深度学习的内容推荐和协同过滤推荐方法,深度学习成为当前推荐系统研究的热点。

    4. 推荐方式和效果评估

    推荐系统在为用户推荐物品时通常有两种方式:

    4.1 评分预测

    此方法一般通过学习用户对物品的历史评分,预测用户可能会为他没有进行评分的物品打多少分,通常用于在线视频、音乐等服务的推荐。

    评分预测的效果评估一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。对于测试集T中的一个用户u和物品i,令rui是用户u对物品i的实际评分,而ȓui是推荐系统给出的预测评分,则RMSE定义为:

    MAE定义为:

    4.2 TopN推荐

    此方法一般不考虑评分,而是为用户提供一个个性化推荐列表,通过预测用户对物品的兴趣度对列表进行排序,选取其中前N个物品推荐给用户,通常用于电子商务、社交网络、互联网广告推荐。

    TopN推荐一般通过准确率(precision)、召回率(recall)和F1值(平衡分数)度量。令R(u)是为用户推荐的物品列表,T(u)是用户在测试集上的行为列表。

    召回率定义为:

    准确率定义为:

    F1值定义为:

    5. 推荐算法

    根据推荐系统使用数据的不同,推荐算法可分为基于用户行为推荐、基于内容推荐、基于社交网络推荐等。

    主流的推荐系统算法可以分为协同过滤推荐(Collaborative Filtering Recommendation)、基于内容推荐(Content-basedRecommendation)和混合推荐三种。

    5.1 基于用户行为推荐

    用户行为蕴藏着很多模式,著名的“啤酒和尿布”的故事就是用户行为模式的良好体现。基于用户行为推荐的主要思想是利用已有用户的历史行为数据(显式反馈或隐式反馈),预测当前用户可能感兴趣的物品,其中显式反馈主要为用户评分,隐式反馈主要包括浏览、搜索等。

    基于用户行为的推荐算法也称为协同过滤算法(Collaborative Filtering Recommendation),是推荐领域应用最广泛的算法,该算法不需要预先获得用户或物品的特征数据,仅依赖于用户的历史行为数据对用户进行建模,从而为用户进行推荐。协同过滤算法主要包括基于用户的协同过滤(User-Based CF)、基于物品的协同过滤(Item-Based CF)、隐语义模型(Latent Factor Model)等。其中基于用户和物品的协同过滤是通过统计学方法对数据进行分析的,因此也称为基于内存的协同过滤或基于邻域的协同过滤;隐语义模型是采用机器学习等算法,通过学习数据得出模型,然后根据模型进行预测和推荐,是基于模型的协同过滤。

    5.1.1 基于用户的协同过滤(User-Based CF)

    基于用户的协同过滤(下文简称UserCF)的基本思想为:给用户推荐和他兴趣相似的用户感兴趣的物品。当需要为一个用户A(下文称A)进行推荐时,首先,找到和A兴趣相似的用户集合(用U表示),然后,把集合U中用户感兴趣而A没有听说过(未进行过操作)的物品推荐给A。算法分为两个步骤:首先,计算用户之间的相似度,选取最相似的N个用户,然后,根据相似度计算用户评分。

    (1)用户相似度

    用户相似度计算基于用户的协同过滤算法的重要内容,主要可以通过余弦相似度、杰卡德系数等方式进行计算。

    假设:给定用户u和v,令N(u)表示用户u有过正反馈的物品集合,令N(v)为用户v有过正反馈的物品集合,则用户u和v之间的相似度可以通过如下方式计算:

    余弦相似度:

    杰卡德系数:

    (2)用户评分

    得到用户相似度后,可以根据如下公式计算用户评分:

    其中r(u, i)代表用户u对物品i的评分,S(u)为与用户u最相似的N个用户,N(i)为对物品i进行过操作的用户集合, 为用户u与用户v的相似度, 为用户v对物品i的评分。

    UserCF的推荐结果反映了用户所在的一个兴趣群体中的热门物品,更加社会化但缺乏个性化, 能够满足物品的时效性,在新闻推荐领域能够发挥很大的作用。用户的兴趣在一段时间内是相对固定的,因此用户相似度矩阵不会实时进行更新,存在新用户的冷启动问题。

    5.1.2 基于物品的协同过滤(Item-Based CF)

    基于物品的协同过滤(下文简称ItemCF)是目前应用最为广泛的算法,该算法的基本思想为:给用户推荐和他们以前喜欢的物品相似的物品,这里所说的相似并非从物品的内容角度出发,而是基于一种假设:喜欢物品A的用户大多也喜欢物品B代表着物品A和物品B相似。基于物品的协同过滤算法能够为推荐结果做出合理的解释,比如电子商务网站中的“购买该物品的用户还购买了…”。ItemCF的计算步骤和UserCF大致相同:首先,计算物品相似度,选出最相似的N个物品,然后根据相似度计算用户评分。

    (1)物品相似度

    假设:N(i)为喜欢物品i的用户结合,N(j)为喜欢物品j的用户集合,则物品相似度计算公式可以定义为:

    上述公式将物品i和物品j的相似度定义为:同时喜欢物品i、j的用户数占只喜欢物品i用户数的比例,但如果物品j十分热门,大部分用户都很喜欢,那么就会造成所有物品都和j有较高的相似度,因此可以对计算公式进行如下改进:

    改进后的相似度计算公式惩罚了物品j的热门度,在一定程度上减少了热门物品为相似度带来的影响。

    (2)用户评分

    得到物品相似度后,可以根据如下公式计算用户评分:

    其中r(u, i)代表用户u对物品i的评分,S(i)代表和物品i最相似的N个物品,N(u)为用户u曾经感兴趣的物品集合, 为物品i和物品j的相似度, 为用户u对物品i的评分。

    ItemCF的推荐结果更加个性化,反映了用户的个人兴趣,对挖掘长尾物品有很大帮助,被广泛应用于电子商务系统。在物品数较多时,物品相似度计算效率较差,因此通常以一定的时间间隔离线进行计算,然后将物品相似度数据缓存在内存中,这样一来,便可以根据用户的新行为实时向用户做出推荐。ItemCF同样存在新用户冷启动问题。

    5.1.3 隐语义模型(Latent Factor Model)

    隐语义模型方法是目前应用最为广泛的协同过滤算法之一,在显式反馈(如评分)推荐系统中,能够达到很好的精度。它的基本思想是通过机器学习方法从用户-物品评分矩阵中分解为两个低阶矩阵,表示对用户兴趣和物品的隐含分类特征,通过隐含特征预测用户评分。训练过程中通常采用随机梯度下降(SGD)算法最小化损失函数,最后通过模型预测用户评分。矩阵分解(Matrix Factorization)是隐语义模型最成功的一种实现,假设训练数据为M个用户对N个物品的评分矩阵Rm,n,早期矩阵分解算法BasicSvd步骤如下:

    (1)给定假设函数

    其中k表示矩阵分解的隐含特征数,p和q是两个矩阵,作为模型的参数,分别表示用户、物品与k个隐含特征之间的关系。

    (2)最小化损失函数

    其中u为用户,i为物品,R为训练数据评分矩阵,H为预测评分矩阵,通过随机梯度下降最小化cost函数,得到矩阵p和q。在最小化的过程中,还需要添加正则项防止过度拟合。

    (3)通过用户、物品和隐含特征的关系矩阵p、q预测用户评分。

    在算法的演进过程中,还出现了FunkSVD[11]、SVD++等矩阵分解算法,它们在隐含特征的基础上考虑了用户评分习惯、历史访问等多种因素,在一些场景中取得了更为精确的结果。

    矩阵分解算法采用机器学习的最优化方法训练模型,计算的空间复杂度较小,在评分预测推荐中的精度较高,能够自动挖掘用户和物品的特征,有非常好的扩展性,可以灵活地考虑额外因素。矩阵分解的训练过程需要扫描整个评分矩阵,在用户量和物品数很大的情况下比较费时,但可以离线进行训练,在线进行评分预测,达到推荐的实时性。

    5.2 基于内容推荐

    基于内容推荐的基本思想是为用户推荐与他感兴趣的内容相似的物品,比如用户喜欢励志类电影,那么系统会直接为他推荐《阿甘正传》这部电影,这个过程综合考虑了用户兴趣和电影内容,因此不需要提供用户的历史行为数据,这能够很好地解决新用户的冷启动问题。基于内容推荐的关键问题是对用户兴趣特征和物品特征进行建模,主要方法由向量空间模型、线性分类、线性回归等。

    基于内容推荐需要预先提供用户和物品的特征数据,比如电影推荐系统,需要提供用户感兴趣的电影类别、演员、导演等数据作为用户特征,还需要提供电影的内容属性、演员、导演、时长等数据作为电影的特征,这些需要进行预处理的数据在实际应用中往往有很大的困难,尤其是多媒体数据(视频、音频、图像等),在预处理过程中很难对物品的内容进行准确的分类和描述,且在数据量很大的情况下,预处理效率会很低下。针对以上不足,[25]提出了基于标签的推荐方法,可以由专家或用户为物品打标签,实现对物品的分类。

    基于内容产生的推荐往往和用户已经处理的物品具有很大的相似度,不利于用户在推荐系统中获得惊喜,这也是推荐系统的一个重要研究方向。

    5.3 混合推荐

    推荐算法虽然都可以为用户进行推荐,但每一种算法在应用中都有不同的效果。UserCF的推荐结果能够很好的在广泛的兴趣范围中推荐出热门的物品,但却缺少个性化;ItemCF能够在用户个人的兴趣领域发掘出长尾物品,但却缺乏多样性;基于内容推荐依赖于用户特征和物品特征,但能够很好的解决用户行为数据稀疏和新用户的冷启动问题;矩阵分解能够自动挖掘用户特征和物品特征,但却缺乏对推荐结果的解释,因此,每种推荐方法都各有利弊,相辅相成。

    实际应用的推荐系统通常都会使用多种推荐算法,比如使用基于内容或标签的推荐算法来解决新用户的冷启动问题和行为数据稀疏问题,在拥有了一定的用户行为数据后,根据业务场景的需要综合使用UserCF、ItemCF、矩阵分解或其他推荐算法进行离线计算和模型训练,通过采集用户的社交网络数据、时间相关数据、地理数据等综合考虑进行推荐,保证推荐引擎的个性化,提高推荐引擎的健壮性、实时性、多样性和新颖性。让推荐系统更好地为用户服务。

    6. 总结和展望

    本文首先回顾了推荐系统发展的历史,并分析了当前推荐系统的研究现状,其次阐述了主要的推荐方式和推荐结果的评估指标,最后分析了主流的推荐算法以及它们各自的优缺点。

    推荐系统的发展一方面精确的匹配了用户与信息,降低了人们在信息过载时代获取信息的成本,但由推荐系统主导的内容分发,如新闻推荐等,也为用户带来了消极影响。2017年9月19日,人民日报点名批评国内知名内容分发平台今日头条,强调别以技术之名糊弄网民和群众,可见推荐系统的发展不仅需要满足用户多元化、个性化的需求,而且需要对信息进行严格的监管和过滤,提高推荐系统的健壮性。近年来,RecSys会议上越来越多地收录了关于用户隐私、推荐引擎健壮性、信息过滤等方面的论文,这是未来推荐系统发展的一个重要研究方向。

    目前,深度神经网络发展迅速,为推荐系统提供了新的特征提取、排序方法,越来越多的推荐引擎将深度神经网络与传统的推荐算法进行了结合,用于解决数据稀疏、推荐排序等问题,深度神经网络和推荐系统的结合将是推荐系统未来的主要研究方向。

    综上所述,推荐系统是一个庞大的信息系统,它不仅仅只依赖于推荐引擎的工作,而且依赖于业务系统、日志系统等诸多方面,并结合了网络安全、数据挖掘等多个研究领域,能够为企业和用户带来价值,是一个值得深入研究的领域。

    参考文献

    [1] Resnick P,Iacovou N, Suchak M, et al. GroupLens: an open architecture for collaborativefiltering of netnews[C] Proceedings of the 1994 ACM Conference on ComputerSupported Cooperative Work, Oct 22-26, 1994. New York, NY, USA: ACM, 1994:175-186.

    [2] Resnick P, Varian H R. Recommender systems[J].Communications of the ACM, 1997, 40(3): 56-58.

    [3] G. Linden, B. Smith, and J. York, “Amazon.comRecommendations: Item-to-Item Collaborative Filtering,” IEEE InternetComputing, vol. 7, no. 1, 2003, pp. 76–80.

    [4] Linden G, Smith B, York J. Amazon.comrecommendations: item-to-item collaborative filtering[J]. IEEE Internet Computing,2003, 7(1): 76-80.

    [5] Adomavicius G, Tuzhilin A. Toward the nextgeneration of recommender systems: a survey of the state-of-the-art and possibleextensions[J]. IEEE Transactions on Knowledge and Data Engineering, 2005,17(6): 734-749.

    [6] Cremonesi P, Tripodi A, Turrin R. Cross-DomainRecommender Systems.[C] IEEE, International Conference on Data MiningWorkshops. IEEE, 2012:496-503.

    [7] Huiji Gao, Jiliang Tang, Huan Liu. Personalizedlocation recommendation on location-based social networks[J]. 2014:399-400.

    [8] Said A. Replicable Evaluation of RecommenderSystems[C] ACM Conference on Recommender Systems. ACM, 2015:363-364.

    [9] Hopfgartner F, Kille B, Heintz T, et al.Real-time Recommendation of Streamed Data[C] ACM Conference on RecommenderSystems. ACM, 2015:361-362.

    [10] Karatzoglou A, Hidasi B. Deep Learning forRecommender Systems[C] the Eleventh ACM Conference. ACM, 2017:396-397.

    [11] Simon Funk. Funk-SVD [EB/OL]. http://sifter.org/~simon/journal/20061211.html,2006-12-11

    [12] 朱扬勇, 孙婧. 推荐系统研究进展[J]. 计算机科学与探索, 2015, 9(5):513-525.

    [13] 杨阳, 向阳, 熊磊. 基于矩阵分解与用户近邻模型的协同过滤推荐算法[J]. 计算机应用, 2012,32(2):395-398.

    [14] 项亮. 推荐系统实践[M]. 北京: 人民邮电出版社, 2012.

    展开全文
  • 推荐系统总结

    万次阅读 多人点赞 2018-09-02 17:43:47
    一、推荐系统结构 二、推荐引擎算法(Algorithm) 1、协同过滤推荐算法 1.1 关系矩阵与矩阵计算 1.1.1 用户与用户(U-U矩阵) 1.1.2 物品与物品(V-V矩阵) 1.1.3 用户与物品(U-V矩阵) 1.1.4 奇异值分解(SVD) ...

    一、推荐系统结构


    尽管不同的网站使用不同的推荐系统,但是总的来说,几乎所有的推荐系统的结构都是类似的,都由线上和线下两部分组成。线下部分包括后台的日志系统和推荐算法系统,线上部分就是我们看到的前台页面展示。线下部分通过学习用户资料和行为日志建立模型,在新的上下文背景之下,计算相应的推荐内容,呈现于线上页面中。

    二、推荐引擎算法(Algorithm)

    1、协同过滤推荐算法

    1.1 关系矩阵与矩阵计算

    1.1.1 用户与用户(U-U矩阵)

    使用原理:Pearson相关系数主要用于度量两个变量 i 和 j 之间的相关性,取值范围是+1(强正相关)到-1(强负相关)

    算法输入:用户行为日志。
    算法输出:基于协同的用户相似度矩阵。

    A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。
    B. 对于n个用户,依次计算用户1与其他n-1个用户的相似度;再计算用户2与其他n-2个用户的相似度。
    对于其中任意两个用户 i 和 j :

    a) 查找两个用户共同评价过的物品集;
    b) 分别计算用户 i 和对物品 j 的平均评价和;
    c) 计算用户间相似度,得到用户 i 和 j 的相似度。

    C. 将计算得到的相似度结果存储于数据库中。

    1.1.2 物品与物品(V-V矩阵)

    使用原理:将物品的评价数值抽象为n维用户空间中的列向量 和,使用修正的余弦相似度

    算法输入:用户行为日志。
    算法输出:基于协同的物品相似度矩阵。

    A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。
    B.对于n个物品,依次计算物品1与其他n-1个物品的相似度;再计算物品2与其他n-2个物品的相似度。
    对于其中任意两个物品 i 和 j:

    a)查找对物品 i 和 j 共同评价过的用户集;
    b)分别计算用户对物品 i 和 j 的平均评价和;
    c) 计算物品间相似度,得到物品 i 和 j 的相似度。

    C. 将计算得到的相似度结果存储于数据库中。

    1.1.3 用户与物品(U-V矩阵)

    1.1.4 奇异值分解(SVD)

    SVD将给定矩阵分解为3个矩阵的乘积:

    式中,矩阵为对角阵,其对角线上的值 为矩阵M的奇异值,按大小排列,代表着矩阵M的重要特征。将SVD用在推荐系统上,其意义是将一个系数的评分矩阵M分解为表示用户特性的U矩阵,表示物品特性的V矩阵,以及表示用户和物品相关性的矩阵。

    1.1.5 主成分分析(PCA)

    在推荐系统中,对于有较多属性的物品(物品的信息用向量 表示)可用PCA处理进行降维,将m×n的物品矩阵转化为m×k的新矩阵。
    主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

    目标:PCA目标是使用使用另一组基去重新描绘得到的数据空间,新的基要尽可能揭示原有数据的关系。
    本质:实际上是K-L变换(卡洛南-洛伊(Karhunen-Loeve)变换),又名:最优正交变换

    有了K-L变换(最优正交变换 )的知识做铺垫后,接下来提供PCA具体的计算过程
    1、数据标准化
    为什么要进行数据标准化,最主要的原因是消除量纲(即单位)带来的差异。常见的数据标准化方法有 0-1标准化,最大最小标准化。
    2、计算协方差矩阵
    设标准化的数据矩阵为X,则协方差矩阵cov(X,X)=1nXTX
    3、求取协方差矩阵的特征值和特征向量
    在matlab或者python里面都有相应的求特征值和特征向量的函数
    4、对特征值从大到小排序,依据主元贡献率贺主元个数得到相应的的特征向量

    1.2 基于记忆的协同过滤算法

    1.2.1 基于用户的协同过滤算法


    举个简单的例子,我们知道樱桃小丸子喜欢葡萄、草莓、西瓜和橘子,而我们通过某种方法了解到小丸子和花伦有相似的喜好,所以我们会把小丸子喜欢的而花伦还未选择的水果(葡萄和橘子)推荐给花伦。

    基于用户的协同过滤算法主要包含以下两个步骤:

    A. 搜集用户和物品的历史信息,计算用户u和其他用户的相似度,找到和目标用户Ui兴趣相似的用户集合N(u)

    B.找到这个集合中用户喜欢的,且目标用户还没有听说过的物品推荐给目标用户。

    适用性

    由于需计算用户相似度矩阵,基于用户的协同过滤算法适用于用户较少的场合; 由于时效性较强,该方法适用于用户个性化兴趣不太明显的领域。

    1.2.2 基于物品的协同过滤算法

    基于物品的协同过滤算法是目前业界应用最多的算法。无论是亚马逊网,还是Netflix、Hulu、Youtube,其推荐算法的基础都是该算法。

    基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。比如,我们知道樱桃小丸子和小玉都喜欢葡萄和西瓜,那么我们就认为葡萄和西瓜有较高的相似度,在花伦选择了西瓜的情况下,我们会把葡萄推荐给花伦。

    ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

    基于物品的协同过滤算法主要分为两步:

    A.对于目标用户及其待评分的物品,根据用户对物品的历史偏好数据,计算物品与其他已评分物品之间的相似度 Sim(j,i),找到与物品相似度的物品合集N(u);

    B. 根据所有物品 N(u) 的评分情况,选出N(u)中目标用户可能喜欢的且没有观看过的推荐给目标用户并预测评分。

    适用性

    适用于物品数明显小于用户数的场合; 长尾物品丰富,用户个性化需求强烈的领域。

    U-CF与I-CF比较

    1.3 基于模型的协同过滤算法

    1.3.1 基于隐语义模型的协同过滤算法(LFM)

    主要用于:填充用户打分矩阵的缺失值
    思路来源:应该有一些隐藏的因素(不一定是人可以理解的)影响用户的评分,找到隐藏因子,可以对U和I进行关联;假定隐藏因子的个数小于U和I的数目,,因为如果每个User都关联一个独立的隐藏因子,那就没法预测了;



    其实是使用ALS(交替最小二乘法)


    隐语义模型的进一步优化(例如y=kx+b比y=kx拥有更好的拟合能力)

    离线计算的空间复杂度

    基于邻域的方法需要维护一张离线的相关表。在离线计算相关表的过程中,如果用户/物品数很多,将会占据很大的内存。而LFM在建模过程中,可以很好地节省离线计算的内存。

    离线计算的时间复杂度

    在一般情况下,LFM的时间复杂度要稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。但总体上,这两种算法在时间复杂度上没有质的差别。

    在线实时推荐

    UserCF和ItemCF在线服务算法需要将相关表缓存在内存中,然后可以在线进行实时的预测。LFM在给用户生成推荐列表时,需要计算用户对所有物品的兴趣权重,然后排名,不太适合用于物品数非常庞大的系统,如果要用,我们也需要一个比较快的算法给用户先计算一个比较小的候选列表,然后再用LFM重新排名。另一方面,LFM在生成一个用户推荐列表时速度太慢,因此不能在线实时计算,而需要离线将所有用户的推荐结果事先计算好存储在数据库中。因此,LFM不能进行在线实时推荐,也就是说,当用户有了新的行为后,他的推荐列表不会发生变化。

    推荐解释

    ItemCF算法支持很好的推荐解释,它可以利用用户的历史行为解释推荐结果。但LFM无法提供这样的解释,它计算出的隐类虽然在语义上确实代表了一类兴趣和物品,却很难用自然语言描述并生成解释展现给用户。

    1.3.2 基于朴素贝叶斯分离的推荐算法

    贝叶斯

    适用性

    朴素贝叶斯分类实现起来比较简单,准确率高,但是分类的时候需要学习全部样本的信息。因此,朴素贝叶斯分类适用于数据量不大,类别较少的分类问题。

    2、基于内容的推荐算法(CB)

    2.1 基础CB推荐算法

    基础CB推荐算法利用物品的基本信息和用户偏好内容的相似性进行物品推荐。通过分析用户已经浏览过的物品内容,生成用户的偏好内容,然后推荐与用户感兴趣的物品内容相似度高的其他物品。

    比如,用户近期浏览过冯小刚导演的电影“非诚勿扰”,主演是葛优;那么如果用户没有看过“私人订制”,则可以推荐给用户。因为这两部电影的导演都是冯小刚,主演都有葛优。

    算法流程

    算法输入:物品信息,用户行为日志。
    算法输出:初始推荐结果。

    A.物品表示:每个物品使用特征向量表示;
    B. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好;
    C.保存Top-K个物品到初始推荐结果中。

    适用场景

    适用于基础CB架构的搭建,尤其是对新上线物品会马上被推荐非常有效,被推荐的机会与老的物品是相同的。

    2.2 基于TF-IDF的CB推荐算法

    TF-IDF在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,唯一不同的是:
    CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而TF-IDF在CB推荐算法是根据【物品的词语的TF-ID值构成的向量】来计算相似度的;

    TF-IDF是自然语言处理领域中计算文档中词或短语的权值的方法,是词频(Term Frequency, TF)和逆转文档频率(Inverse Document Frequency, IDF)的乘积。
    TF指的是某一个给定的词语在该文件中出现的次数,IDF是一个词语普遍重要性的度量;

    算法原理

    TF-IDF算法基于这样一个假设:若一个词语在目标文档中出现的频率高而在其他文档中出现的频率低,那么这个词语就可以用来区分出目标文档。

    算法流程

    算法输入:物品信息,用户行为日志。
    算法输出:初始推荐结果。

    A. 物品表示:向量表示 描述物品的词语的TF-IDF值;
    B.使用上面的向量计算物品的相似度,保存Top-K个物品到初始推荐结果中;
    C. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好;
    例如:

    2.3 基于KNN的CB推荐算法

    KNN在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,唯一不同的是:
    CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而CB推荐算法中KNN是根据物品画像来计算相似度的;
    所以对于后者来说,如何通过物品画像来计算物品间的相似度是算法中的关键步骤。
    相似度的计算可以使用余弦相似度或Pearson相关系数的计算方法。

    2.4 基于Rocchio的CB推荐算法

    2.5 基于决策树的CB推荐算法

    基于决策树的推荐算法在训练阶段会生成一个显示的决策模型。决策树可以通过训练数据构建并有效判断一个新的物品是否可能受到欢迎。当物品的特征属性较少时,采用决策树算法能够取得不错的效果,另外,决策树学习的思想也比较容易被理解,在物品推荐时的可解释性较好。

    2.6 基于线性分类的CB推荐算法

    将基于内容的物品推荐问题视为分类问题时,可以采用多种机器学习方法。从一个更抽象的角度上看,大部分学习方法致力于找到一个可以准确区分用户喜欢和不喜欢的物品的线性分类模型系数。

    将物品数据用n维特征向量来表示,线性分类器试图在给定的物品特征空间中找到一个能够将物品正确分类的平面,一类点尽可能在平面的某一边(喜欢),另一类在平面的另一边(不喜欢)。

    2.7 基于朴素贝叶斯的CB推荐算法

    3、 基于知识的推荐算法

    3.1 概述

    基于知识(Knowledge-based, KB)的推荐算法,是区别于基于CB和基于CF的常见推荐方法。如果说CB和CF像通用搜索引擎的话,KB好比某个领域的垂直搜索引擎,可以提供该领域的特殊需求,包括专业性的优质特征,帮助提高搜索引擎在特定领域的服务。
    基于知识的推荐,也更容易满足主观个性化需求。例如,对于VIP用户,如果配置好了偏好,就可以为其提供更加精准的推荐服务。

    3.2 约束知识与约束推荐算法

    如今网上购物所能涵盖的物品越来越丰富,人们逐渐发现推荐系统的CF和CB推荐算法并不能很好地适应某些特殊物品的推荐需求。例如,更新换代非常快的而人们又通常不会经常更换的电子产品。对于这些产品来说,其各方面的性能参数在几年间就会有很大变化,代表历史偏好的用户画像并不能很好地反映用户当前的购买需求,于是就需要推荐系统将用户当前的需求作为重要信息参考源。
    人们发现可以利用物品的参数特征等属性形成约束知识,再将用户对物品的特定刻画为约束条件,然后经过对物品集合的约束满足问题的求解,就可以得到用户所期望的物品了。

    创建推荐任务

    推荐任务是以元组(R,I)的形式表示出来,其中用集合 R 表示目标用户对物品的特定需求,即对物品的约束条件,用集合 I 表示一个物品集合。推荐的任务就是从集合 I 中确定出能够满足集合 R 要求的物品。

    3.3 关联知识与关联推荐算法

    算法原理

    关联知识以关联规则为表现形式,用以描述数据库中数据之间关联性的知识。在推荐系统领域,可以通过对用户画像中关联规则的挖掘分析来分析用户的习惯,发现物品之间的关联性,并利用这种关联性指导系统做出推荐。

    算法流程

    算法输入:n个用户画像。
    算法输出:针对目标用户u的Top-N推荐列表。

    A. 从系统中的n个用户画像中挖掘出所有的强关联规则,建立集合以表示目标用户u尚未观看但极有可能感兴趣的物品。

    B.再次使用置信度对集合中的物品进行高低排序。

    C.取出排序列表中的前N个物品构成Top-N推荐列表。

    适用场景

    由于对系统中全体用户的画像进行规则关联挖掘意义不明显且计算量大,所以基于关联规则的推荐算法常与CF推荐算法混合使用。在这类混合方案中,使用了CF推荐算法中的最近邻算法将用户画像数目n限定在目标用户的最邻近范围内,使得关联规则挖掘算法处理的数据规模被有针对性地限定在一定范围内。

    4、 混合推荐算法

    各种推荐方法都有优缺点,为了扬长补短,在实际中常常采用混合推荐。
    研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。
    组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。

    4.1 加权式

    加权多种推荐技术结果:

    4.2 切换式

    根据问题背景和实际情况或要求决定变换采用不同的推荐技术。

    4.3 混杂式

    同时采用多种推荐技术给出多种推荐结果为用户提供参考。

    4.4 特征组合


    4.5 特征补充

    一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。

    4.6 级联式

    三、推荐系统评估

    1、打分系统-评分误差率

    2、Top-N推荐系统

    2.1 准确率

    2.2 召回率

    2.3、覆盖率

    2.4、多样性

    2.5、其他(新颖度、惊喜度、信任度、实时性)

    展开全文
  • 机器学习推荐系统视频教程

    千人学习 2017-07-09 10:34:40
    机器学习推荐系统视频培训教程概况:课程从推荐系统在机器学习概述开始,详解推荐系统中两大核心算法:协同过滤与隐语义模型。使用Surprise库对电影数据集进行建模推荐,后使用深度学习框架Tensorflow实现一个简易...
  • 协同过滤算法是推荐系统中最重要也是最常用的算法之一,本课程以项目实现为主,讲解基于商品的协同过滤算法应用,通过不断对算法进行优化,提升推荐结果的准确率与召回率。
  •  最近因为PAC平台自动化的需求,开始探坑推荐系统。这个乍一听去乐趣无穷的课题,对于算法大神们来说是这样的:    而对于刚接触这个领域的我来说,是这样的:    在深坑外围徘徊了一周后,我整理了一些...

      ◆ ◆ ◆

      序言

      最近因为PAC平台自动化的需求,开始探坑推荐系统。这个乍一听去乐趣无穷的课题,对于算法大神们来说是这样的:

      

      而对于刚接触这个领域的我来说,是这样的:

      

      在深坑外围徘徊了一周后,我整理了一些推荐系统的基本概念以及一些有代表性的简单的算法,作为初探总结,也希望能抛砖引玉,给同样想入坑的伙伴们提供一些思路。

      ◆ ◆ ◆

      什么是推荐系统

      1. 什么是推荐系统?

      推荐系统是啥?

      如果你是个多年电商(剁手)党,你会说是这个:

      

      如果你是名充满文艺细胞的音乐发烧友,你会答这个:

      

      如果你是位活跃在各大社交平台的点赞狂魔,你会答这个:

      

      没错,猜你喜欢、个性歌单、热点微博,这些都是推荐系统的输出内容。从这些我们就可以总结出,推荐系统到底是做什么的。

      目的1. 帮助用户找到想要的商品(新闻/音乐/……),发掘长尾

      帮用户找到想要的东西,谈何容易。商品茫茫多,甚至是我们自己,也经常点开淘宝,面对眼花缭乱的打折活动不知道要买啥。在经济学中,有一个著名理论叫长尾理论(The Long Tail)。

      

      套用在互联网领域中,指的就是最热的那一小部分资源将得到绝大部分的关注,而剩下的很大一部分资源却鲜少有人问津。这不仅造成了资源利用上的浪费,也让很多口味偏小众的用户无法找到自己感兴趣的内容。

      目的2. 降低信息过载

      互联网时代信息量已然处于爆炸状态,若是将所有内容都放在网站首页上用户是无从阅读的,信息的利用率将会十分低下。因此我们需要推荐系统来帮助用户过滤掉低价值的信息。

      目的3. 提高站点的点击率/转化率

      好的推荐系统能让用户更频繁地访问一个站点,并且总是能为用户找到他想要购买的商品或者阅读的内容。

      目的4. 加深对用户的了解,为用户提供定制化服务

      可以想见,每当系统成功推荐了一个用户感兴趣的内容后,我们对该用户的兴趣爱好等维度上的形象是越来越清晰的。当我们能够精确描绘出每个用户的形象之后,就可以为他们定制一系列服务,让拥有各种需求的用户都能在我们的平台上得到满足。

      ◆ ◆ ◆

      推荐算法

      算法是什么?我们可以把它简化为一个函数。函数接受若干个参数,输出一个返回值。

      

      算法如上图,输入参数是用户和item的各种属性和特征,包括年龄、性别、地域、商品的类别、发布时间等等。经过推荐算法处理后,返回一个按照用户喜好度排序的item列表。

      推荐算法大致可以分为以下几类[1]:

    • 基于流行度的算法

    • 协同过滤算法

    • 基于内容的算法

    • 基于模型的算法

    • 混合算法

      2.1 基于流行度的算法

      基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据PV、UV、日均PV或分享率等数据来按某种热度排序来推荐给用户。

      

      这种算法的优点是简单,适用于刚注册的新用户。缺点也很明显,它无法针对用户提供个性化的推荐。基于这种算法也可做一些优化,比如加入用户分群的流行度排序,例如把热榜上的体育内容优先推荐给体育迷,把政要热文推给热爱谈论政治的用户。

      2.2 协同过滤算法

      协同过滤算法(Collaborative Filtering, CF)是很常用的一种算法,在很多电商网站上都有用到。CF算法包括基于用户的CF(User-based CF)和基于物品的CF(Item-based CF)。

      基于用户的CF原理如下:

    1. 分析各个用户对item的评价(通过浏览记录、购买记录等);

    2. 依据用户对item的评价计算得出所有用户之间的相似度;

    3. 选出与当前用户最相似的N个用户;

    4. 将这N个用户评价最高并且当前用户又没有浏览过的item推荐给当前用户。

      示意图如下:

      

      基于物品的CF原理大同小异,只是主体在于物品:

    1. 分析各个用户对item的浏览记录。

    2. 依据浏览记录分析得出所有item之间的相似度;

    3. 对于当前用户评价高的item,找出与之相似度最高的N个item;

    4. 将这N个item推荐给用户。

      示意图如下:

      

      举个栗子,基于用户的CF算法大致的计算流程如下:

      首先我们根据网站的记录计算出一个用户与item的关联矩阵,如下:

      

      

      图中,行是不同的用户,列是所有物品,(x, y)的值则是x用户对y物品的评分(喜好程度)。我们可以把每一行视为一个用户对物品偏好的向量,然后计算每两个用户之间的向量距离,这里我们用余弦相似度来算:

      

      然后得出用户向量之间相似度如下,其中值越接近1表示这两个用户越相似:

      

      最后,我们要为用户1推荐物品,则找出与用户1相似度最高的N名用户(设N=2)评价的物品,去掉用户1评价过的物品,则是推荐结果。

      基于物品的CF计算方式大致相同,只是关联矩阵变为了item和item之间的关系,若用户同时浏览过item1和item2,则(1,1)的值为1,最后计算出所有item之间的关联关系如下:

      

      我们可以看到,CF算法确实简单,而且很多时候推荐也是很准确的。然而它也存在一些问题:

    1. 依赖于准确的用户评分;

    2. 在计算的过程中,那些大热的物品会有更大的几率被推荐给用户;

    3. 冷启动问题。当有一名新用户或者新物品进入系统时,推荐将无从依据;

    4. 在一些item生存周期短(如新闻、广告)的系统中,由于更新速度快,大量item不会有用户评分,造成评分矩阵稀疏,不利于这些内容的推荐。

      对于矩阵稀疏的问题,有很多方法来改进CF算法。比如通过矩阵因子分解(如LFM),我们可以把一个nm的矩阵分解为一个nk的矩阵乘以一个k*m的矩阵,如下图:

      

      这里的k可以是用户的特征、兴趣爱好与物品属性的一些联系,通过因子分解,可以找到用户和物品之间的一些潜在关联,从而填补之前矩阵中的缺失值。

      2.3 基于内容的算法

      CF算法看起来很好很强大,通过改进也能克服各种缺点。那么问题来了,假如我是个《指环王》的忠实读者,我买过一本《双塔奇兵》,这时库里新进了第三部:《王者归来》,那么显然我会很感兴趣。然而基于之前的算法,无论是用户评分还是书名的检索都不太好使,于是基于内容的推荐算法呼之欲出。

      举个栗子,现在系统里有一个用户和一条新闻。通过分析用户的行为以及新闻的文本内容,我们提取出数个关键字,如下图:

      

      将这些关键字作为属性,把用户和新闻分解成向量,如下图:

      

      之后再计算向量距离,便可以得出该用户和新闻的相似度了。这种方法很简单,如果在为一名热爱观看英超联赛的足球迷推荐新闻时,新闻里同时存在关键字体育、足球、英超,显然匹配前两个词都不如直接匹配英超来得准确,系统该如何体现出关键词的这种“重要性”呢?这时我们便可以引入词权的概念。在大量的语料库中通过计算(比如典型的TF-IDF算法),我们可以算出新闻中每一个关键词的权重,在计算相似度时引入这个权重的影响,就可以达到更精确的效果。

      sim(user, item) = 文本相似度(user, item) * 词权

      然而,经常接触体育新闻方面数据的同学就会要提出问题了:要是用户的兴趣是足球,而新闻的关键词是德甲、英超,按照上面的文本匹配方法显然无法将他们关联到一起。在此,我们可以引用话题聚类:

      

      利用word2vec一类工具,可以将文本的关键词聚类,然后根据topic将文本向量化。如可以将德甲、英超、西甲聚类到“足球”的topic下,将lv、Gucci聚类到“奢侈品”topic下,再根据topic为文本内容与用户作相似度计算。

      综上,基于内容的推荐算法能够很好地解决冷启动问题,并且也不会囿于热度的限制,因为它是直接基于内容匹配的,而与浏览记录无关。然而它也会存在一些弊端,比如过度专业化(over-specialisation)的问题。这种方法会一直推荐给用户内容密切关联的item,而失去了推荐内容的多样性。

      2.4 基于模型的算法

      基于模型的方法有很多,用到的诸如机器学习的方法也可以很深,这里只简单介绍下比较简单的方法——Logistics回归预测。我们通过分析系统中用户的行为和购买记录等数据,得到如下表:

      

      表中的行是一种物品,x1~xn是影响用户行为的各种特征属性,如用户年龄段、性别、地域、物品的价格、类别等等,y则是用户对于该物品的喜好程度,可以是购买记录、浏览、收藏等等。通过大量这类的数据,我们可以回归拟合出一个函数,计算出x1~xn对应的系数,这即是各特征属性对应的权重,权重值越大则表明该属性对于用户选择商品越重要。

      在拟合函数的时候我们会想到,单一的某种属性和另一种属性可能并不存在强关联。比如,年龄与购买护肤品这个行为并不呈强关联,性别与购买护肤品也不强关联,但当我们把年龄与性别综合在一起考虑时,它们便和购买行为产生了强关联。比如(我只是比如),20~30岁的女性用户更倾向于购买护肤品,这就叫交叉属性。通过反复测试和经验,我们可以调整特征属性的组合,拟合出最准确的回归函数。最后得出的属性权重如下:

      

      基于模型的算法由于快速、准确,适用于实时性比较高的业务如新闻、广告等,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是常说的Feature Engineering。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。

      2.5 混合算法

      现实应用中,其实很少有直接用某种算法来做推荐的系统。在一些大的网站如Netflix,就是融合了数十种算法的推荐系统。我们可以通过给不同算法的结果加权重来综合结果,或者是在不同的计算环节中运用不同的算法来混合,达到更贴合自己业务的目的。

      2.6 结果列表

      在算法最后得出推荐结果之后,我们往往还需要对结果进行处理。比如当推荐的内容里包含敏感词汇、涉及用户隐私的内容等等,就需要系统将其筛除;若数次推荐后用户依然对某个item毫无兴趣,我们就需要将这个item降低权重,调整排序;另外,有时系统还要考虑话题多样性的问题,同样要在不同话题中筛选内容。

      ◆ ◆ ◆

      推荐结果评估

      当推荐算法完成后,怎样来评估这个算法的效果?CTR(点击率)、CVR(转化率)、停留时间等都是很直观的数据。在完成算法后,可以通过线下计算算法的RMSE(均方根误差)或者线上进行ABTest来对比效果。

      ◆ ◆ ◆

      改进策略

      用户画像是最近经常被提及的一个名词,引入用户画像可以为推荐系统带来很多改进的余地,比如:

    1. 打通公司各大业务平台,通过获取其他平台的用户数据,彻底解决冷启动问题;

    2. 在不同设备上同步用户数据,包括QQID、设备号、手机号等;

    3. 丰富用户的人口属性,包括年龄、职业、地域等;

    4. 更完善的用户兴趣状态,方便生成用户标签和匹配内容。

      另外,公司的优势——社交平台也是一个很好利用的地方。利用用户的社交网络,可以很方便地通过用户的好友、兴趣群的成员等更快捷地找到相似用户以及用户可能感兴趣的内容,提高推荐的准确度。

      ◆ ◆ ◆

      总结

      随着大数据和机器学习的火热,推荐系统也将愈发成熟,需要学习的地方还有很多,坑还有很深,希望有志的同学共勉~

    展开全文
  • 推荐系统-内容推荐

    2020-11-18 15:04:04
    首先推荐系统的使命就是要在用户和物品之间建立连接。一般方式就是对用户和物品之间的匹配进行评分,也就是预测用户评分或者偏好。推荐系统在对匹配进行评分前,首先要将用户和物品都表示成向量,这样才能进行计算。...

    1.用户画像

    1.1 什么是用户画像

    首先推荐系统的使命就是要在用户和物品之间建立连接。一般方式就是对用户和物品之间的匹配进行评分,也就是预测用户评分或者偏好。推荐系统在对匹配进行评分前,首先要将用户和物品都表示成向量,这样才能进行计算。而采用的推荐算法不同,向量化的方式也不同,最终使用匹配评分的做法也会不同。

    用户向量化后的结果就是用户画像。所以,向量化是用户画像必须要做的,不向量化,计算机就无法计算。用户画像不是推荐系统的目的,而是推荐系统过程中的一个关键环节的副产品。除了常见的注册资料、标签、还有各种深度学习得到的Embedding向量,这些都是很好的画像内容。

    用户画像是用户的向量,那就只有两种:稀疏向量和稠密向量。标签、注册资料、社交关系都是稀疏向量,通过训练神经网络得到的Embedding向量、通过矩阵隐因子、通过浅层语义分析或者话题模型得到的话题分布都是稠密向量。可以说稀疏向量抓住的是更显而易见的用户画像,也因此可解释性更好,可以用来给出推荐理由;稠密向量能抓住更多隐藏的兴趣,但其黑盒子特点也导致其可解释性不如前者。

    3.1.2 关键因素

    • 维度
    • 量化

    在实际生产系统上,用户画像每个维度的量化都应该交给机器。以目标为导向,以推荐效果好坏来反向优化出的用户画像才有意义,主观量化是大忌。用户画像的量化和推荐系统的效果是息息相关的。不应该为了用户画像而用户画像,它只是推荐系统的一个副产物,应该根据使用效果(排序好坏、召回覆盖)来指导用户画像的量化。

    3.1.3 构建方法

    • 查户口
      直接使用原始数据作为用户画像的内容,如注册资料等人口统计学信息,或者购买历史、阅读历史等,除了数据清洗外不做任何抽象归纳。实现简单,通常对冷启动很有用。

    • 堆数据
      堆积历史数据做统计工作,是最常见的用户画像数据获取方式,常见的是兴趣标签。先给物品打上标签,再获取用户在这些标签上的历史行为,从标签维度做数据统计,用统计结果作为量化结果,最后做截断。

    • 黑盒子
      用机器学习的方法,学习出人类无法直观理解的稠密向量。比如使用潜语义模型构建用户阅读兴趣,以及使用矩阵分解得到的隐因子或者深度学习模型学习用户的Embedding向量。这一类用户画像数据不可解释。

    2.标签挖掘技术

    早期的推荐系统一般都从基于内容的推荐开始做起,这就离不开挖掘用户兴趣标签,兴趣标签是用户画像的重要构成部分。

    2.1 挖掘标签的物料

    挖掘兴趣标签,主要处理的是文本数据。文本数据是互联网产品中最常见的信息表达方式。

    • 用户端文本数据
      • 注册资料中的文本,如姓名、个人签名等;
      • 用户自己生产的内容,如评论、动态等;
      • 与用户发生连接关系的文本,如阅读过的内容等
    • 物品端文本信息:
      • 物品的标题、描述
      • 物品本身的内容
      • 物品基本属性中的文本

    2.2 标签库该有的样子

    标签库质量高低:

    • 标签覆盖面:
      所有标签覆盖物品和用户越多越好,这样才不会造成流量浪费;
    • 标签健康度:
      量化标签平均覆盖物品的程度,单个标签的物品覆盖数量显然符合齐普夫定律,好的标签库,其标签覆盖分布熵要高,熵越高覆盖越均匀;
    • 标签经济性:
      标签之间的语义相似性越小越好。
      好的标签库应该是一个超维空间下的立方体:构建出一个完整的空间,标签之间互相独立。

    构建标签库分为两派:

    • 中心化
      中心化构建标签库,也叫专业分类法
    • 去中心化
      依赖“集体智慧"。完全依靠用户自行贡献标签。
    对比维度 中心化 去中心化
    标签覆盖面
    标签覆盖健康度 好(均匀) 不好(倾斜)
    标签经济性 好(相对独立) 不好(同义近义多)

    所以应该结合两者,来构建高质量的标签库。

    2.3 标签挖掘方法

    2.3.1 关键词提取

    • TF-IDF
    • TextRank

    2.3.2 Embedding向量

    2.3.3 文本分类

    2.3.4 命名实体识别

    2.3.5 文本聚类

    2.3.6 标签选择

    3.基于内容的推荐

    要把基于内容的推荐做好,需要抓、洗、挖、算

    • 抓:想要做好一个基于内容的推荐,抓取数据补充内容源、增加分析的维度,是必不可少的。
    • 洗:一些冗余内容、垃圾内容、政治、色情等敏感内容都需要被洗出去
    • 挖:需要深入挖掘内容,才能提升推荐系统的效果。
    • 算:将用户的兴趣和物品的属性相匹配,计算出更合理的相关性。这是推荐系统本身的使命,不仅仅是基于内容的推荐要做的。

    基于内容推荐框架
    如上图的流程和基本元素,在内容源这一端经过内容分析,得到结构化的内容库和内容模型。

    3.1内容源

    抓取数据以补充推荐系统每天的内容消耗。因为只有内容多样性提高,一个推荐系统才有存在的合法性。

    3.2 内容分析

    基于内容的推荐,最重要的不是推荐算法,而是内容挖掘和分析。只要内容挖掘足够深入,哪怕采用硬规则,也ok。内容分析越深入,能抓住的用户群体就越细致,推荐的转化率就越高,用户对产品的好感度也就越高。
    内容分析的产出有两个:

    • 结构化的内容库
    • 内容分析模型

    结构化的内容库最重要的用途是结合用户反馈行为去学习用户画像。
    在内容分析过程中得到模型,例如:

    • 分类模型
    • 主题模型
    • 实体识别模型
    • Embedding模型
      这些模型主要应用场景是:新的物品刚刚进入时,需要实时地被推荐出去,这时要对内容实时分析、提取结构化内容,再去和用户画像做匹配计算。

    3.3 内容推荐算法

    • 最简单的计算相似度
      用户画像内容表示为稀疏向量,同时内容端也有对应的稀疏向量,在两者之间计算余弦相似度,根据相似度对推荐物品排序。
    • 利用内容中的结构化信息
      不同字段的重要性不同
    • 学习型算法
      典型场景是提高某种行为的转化率,如点击、收藏、转发等。标准做法就是收集这类行为的日志数据,将其转换为训练样本,然后训练预估模型。每一个样本由两部分构成:一部分是特征,包含用户端的画像内容、物品端的结构化内容,可选的还有日志记录时的一些上下文信息,如时间、地理位置、设备等。另一部分就是用户行为。作为标注信息,包含“有反馈”和“无反馈”两类。用这样的样本训练一个二分类器时,常用模型是LR、GBDT,或者两者结合。在推荐匹配时,预估用户行为发生的概率,并按照概率排序。

    参考:《推荐系统》陈开江

    展开全文
  • 推荐系统介绍

    千次阅读 2018-12-16 11:21:35
    推荐系统 推荐系统是一种信息过滤系统,为了解决信息过载问题 系统组成一般包括日志系统,推荐算法和内容展示UI 其中推荐算法为核心,它一般又可以分为三层:基础层,推荐(召回)层,排序层。基础层为召回层提供...
  • 下面内容转自大数据与人工智能微信公众号,由于网络上推荐系统的相关学习资料太多太杂,东拼西凑学习很难摸出门道,同时我也在学习推荐系统,因此我将该系列内容摘录到我的博客,方便大家直接在博客中查看,大家一起...
  • 本文将深入介绍推荐系统的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐系统。 1 信息发现 随着 Web 2.0 的发展, Web 已经变成数据分享的...
  • 推荐系统(一)

    2020-11-13 20:13:33
    推荐系统的作用 用户角度:推荐系统在‘信息过载’的情况下,进行‘信息过滤’,使用户能高效获得感兴趣的信息。 公司角度:推荐系统解决产品最大限度地吸引用户、留存用户、增加用户黏性、提高用户转化率的问题(如...
  • 2、几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统以及推荐算法系统3部分构成。 3、电子商务——>亚马逊 最主要的应用有个性化商品推荐列表和相关商品的推荐列表。 推荐结果的标题、...
  • 推荐算法入门】推荐系统推荐算法概述

    万次阅读 多人点赞 2018-09-23 17:23:28
    1. 什么是推荐算法 推荐算法最早在1992年就提出来了,但是火起来实际上是最近这些年的事情,因为互联网的爆发,有了更大的数据量可以供我们使用,推荐算法才有了很大的用武之地。 最开始,所以我们在网上找资料,...
  • 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),因此用到了朴素贝叶斯来对抓取的新闻进行分类,以达到为用户推荐符合其兴趣的新闻。于是借此机会...
  • 推荐系统】协同过滤推荐算法

    万次阅读 2018-08-28 10:41:42
    协同过滤推荐算法中的基于用户的最近邻推荐、基于物品的最近邻推荐、矩阵因子分解SVD、关联规则挖掘等各种推荐算法的详细介绍。
  • 推荐系统常用的推荐算法

    千次阅读 2019-03-18 16:54:59
    一、推荐系统概述和常用评价指标 1.1 推荐系统的特点 在知乎搜了一下推荐系统,果真结果比较...算法,就是推荐系统中一味追求先进的算法算是个误区,通常论文研究类的推荐方法有的带有很多的假设限制,有的考虑...
  • 推荐系统推荐算法相关的知识

    万次阅读 2017-03-20 10:53:58
    随着今日头条估值80亿美元的新闻传出,“个性化推荐”这个词又成为了广受科技界和资本市场追捧的热点。...那么对于一个普通的产品经理而言(非数据挖掘型PM),最少需要掌握哪些和算法相关的知识呢?于是我决定写一篇
  • 衡量推荐算法的指标 用户满意度 满意度是评测推荐系统最重要的指标,但是无法通过离线计算获得,只能通过用户调查或者在线实验。...召回率:表示用户喜欢的物品列表里被推荐系统推荐到的比例 Recall=...
  • 推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联...
  • 基于Mahout实现协同过滤推荐算法的电影推荐系统

    万次阅读 多人点赞 2019-02-24 16:32:05
    1 Mahout介绍 Apache Mahout 是 Apache Software ...经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对Apache Hadoop的支持,使这些算法可以更高效的运行在云计算环境中。 ...
  •   标签在我们日常生活中很常见,打标签作为一种重要的用户行为,蕴含了很多用户兴趣信息,因此深入研究和利用用户打标签的行为可以很好地指导我们改进个性化推荐系统的推荐质量。举个例子,下图是酷我音乐的标签,...
  • 推荐系统有3个重要的模块:用户建模模块,推荐对象模块,推荐算法模块。主要推荐算法1. 基于内容推荐基于内容推荐是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推断的,而不需要依据用户对项目的评价...
  • 作者:章华燕编辑:田 旭前言在第一篇文章《推荐算法综述》中我们说到,真正的推荐系统往往是多个推荐算法策略的组合使用,本文介绍的将会是推荐系统最古老的算法:基于内容的推荐算法(Content-Based ...
  • 导读:个性化推荐系统,简单来说就是根据每个人的偏好推荐他喜欢的物品。互联网发展到现在,推荐系统已经无处不在,在各行各业都得到普遍都应用。亚马逊号称 40% 的收入是来自个性化推荐系统的,淘宝的个性化推荐...
  • 我们使用的方式是,基于内容相似度计算进行召回,之后通过FM模型和逻辑斯蒂回归模型进行精排推荐,下面就分别说一下,我们做这个电影推荐系统过程中,从数据准备,特征工程,到模型训练和应用的整个过程。
  • 推荐系统》基于图的推荐算法

    万次阅读 2016-06-16 20:57:32
     基于图的模型(graph-based model)是推荐系统中的重要内容。其实,很多研究人员把基于邻域的模型也称为基于图的模型,因为可以把基于邻域的模型看做基于图的模型的简单形式  在研究基于图的模型之前,首先需要将...
  • 一、什么是推荐系统 二、产生原因 由上我们可以得知,推荐系统产生的两大原因 ...五、目前常用的推荐算法 六、十大开源推荐系统 七、例子实践(网络电视节目的精准营销推荐) 1. 目标 2. 算法思路 3. 输入数据...
  • 推荐系统系列6】ALS推荐算法原理

    万次阅读 2018-04-11 16:39:39
    ALS算法原理ALS算法是2008年以来,用的比较多的协同过滤算法。它已经集成到Spark的Mllib库中,使用起来比较方便。从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF。它同时考虑了User和Item两个方面。...
  • 在搜集资料的过程中,发现自己真正想做的原来是一个叫做推荐算法的东西,而且还是1992年都有人提出,现实中已经有不少成型的系统在跑了的。所以就改变了想法,要做一个推荐系统,而且是在饮食方面的应用。终极目标是...
  • 系列一:推荐系统算法工程师精析 1_深度学习在推荐系统中的应用.mp4 2_推荐系统的深度学习应用之IMDb解析.mp4 3_推荐引擎-实现基础工程(1).mp4 4_推荐引擎-实现基础工程 (2).mp4 5_推荐引擎-实现基础工程(3)....
  • 大数据推荐系统(4)推荐算法

    千次阅读 2019-06-10 20:36:56
    3.算法 基于内容过滤 从信息检索,和文本检索发展而来 基于商品描述及用户喜好描述,为用户推荐商品 协同过滤 基于用户行为为用户推荐感兴趣的商品 行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性...

空空如也

1 2 3 4 5 ... 20
收藏数 1,261,311
精华内容 504,524
关键字:

推荐系统