精华内容
下载资源
问答
  • 推荐算法种类很多,但是目前应用最广泛的应该是基于协同过滤的推荐算法。 本文总结了多种推荐算法,其中重点对协同过滤的推荐算法做一个概括。 目录 一、推荐系统的作用 二、推荐算法概述 2.1基于流行度的算法 ...

    推荐算法具有非常多的应用场景和商业价值,因此对推荐算法需要认真学习。推荐算法种类很多,但是目前应用最广泛的应该是基于协同过滤的推荐算法。

    本文总结了多种推荐算法,其中重点对协同过滤的推荐算法做一个概括。

    目录

    一、推荐系统的作用

    二、推荐算法概述

    2.1 基于流行度的算法

    2.2 协同过滤算法

    2.2.1 基于用户的CF

    2.2.2 基于物品的CF

    2.3 基于内容的算法

    2.4 基于模型的算法

    2.5 混合算法

    2.6 结果列表

    三、推荐结果评估

    参考文献:


    一、推荐系统的作用

    推荐系统到底是做什么的。

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

    帮用户找到想要的东西,谈何容易。商品茫茫多,甚至是我们自己,也经常点开淘宝,面对眼花缭乱的打折活动不知道要买啥。在经济学中,有一个著名理论叫长尾理论(The Long Tail)。套用在互联网领域中,指的就是最热的那一小部分资源将得到绝大部分的关注,而剩下的很大一部分资源却鲜少有人问津。这不仅造成了资源利用上的浪费,也让很多口味偏小众的用户无法找到自己感兴趣的内容。

    目的2: 降低信息过载。

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

    目的3: 提高站点的点击率CTR/转化率CVR 。

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

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

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

    二、推荐算法概述

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    • 基于流行度的算法
    • 协同过滤算法
    • 基于内容的算法
    • 基于模型的算法
    • 混合算法

    2.1 基于流行度的算法

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

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

    2.2 协同过滤算法

    协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型。也是本文中要重点介绍的类型。

    协同过滤的模型一般为m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

    CF算法包括基于用户的CF(User-based CF)和基于物品的CF(Item-based CF)。

    2.2.1 基于用户的CF

    基于用户的CF原理如下:

    1. 分析各个用户对item的评价(通过浏览记录、购买记录等);
    2. 依据用户对item的评价计算得出所有用户之间的相似度;
    3. 选出与当前用户最相似的N个用户;
    4. 将这N个用户评价最高并且当前用户又没有浏览过的item推荐给当前用户。

    举例说明,基于用户的CF算法大致的计算流程如下:

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    2.2.2 基于物品的CF

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

    1. 分析各个用户对item的浏览记录。
    2. 依据浏览记录分析得出所有item之间的相似度
    3. 对于当前用户评价高的item,找出与之相似度最高的N个item;
    4. 将这N个item推荐给用户

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    1. 依赖于准确的用户评分;
    2. 在计算的过程中,那些大热的物品会有更大的几率被推荐给用户;
    3. 冷启动问题。当有一名新用户或者新物品进入系统时,推荐将无从依据;
    4. 在一些item生存周期短(如新闻、广告)的系统中,由于更新速度快,大量item不会有用户评分,造成评分矩阵稀疏,不利于这些内容的推荐。

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    对于矩阵分解的推荐算法,后续我会专门学习。

    2.3 基于内容的算法

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

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

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

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

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

    2.4 基于模型的算法

    基于模型的算法也可以说是基于模型的协同过滤

    我们的问题是这样的m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

    对于这个问题,用机器学习的思想来建模解决,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。详细的介绍可以参看参考文献1。

    这里只简单介绍下比较简单的方法——Logistics回归预测。我们通过分析系统中用户的行为和购买记录等数据,得到如下表:

    1620uploading.4e448015.gif转存失败重新上传取消

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

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

    1620uploading.4e448015.gif转存失败重新上传取消

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

    2.5 混合算法

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

    2.6 结果列表

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

     

    三、推荐结果评估

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

     

    参考文献:

    【1】协同过滤推荐算法总结

    【2】推荐系统初探

    展开全文
  • 可仔细一想不对啊,很多的工作是不需要多个人去合作完成的,文案人员例,我只需要把东西写好就可以了,根本不需要跟别人合作嘛。那协同办公对于我来说作用在哪里呢? 不得而知,于是把这个问题抛给了他们。 ...

    "协同办公"这个词在我们的工作场上出现的几率非常高,但如果要问协同办公协同的到底是什么,是怎样协同的,相信很多人是回答不出来的。

    偶然间想到这个问题,于是便试着去回答。从字面理解,协同就是共同协作,也就是说协同办公作用的对象是两个或者多个个体,这些对象共同处理完成某项工作或某个任务。

    可仔细一想不对啊,很多的工作是不需要多个人去合作完成的,以文案人员为例,我只需要把东西写好就可以了,根本不需要跟别人合作嘛。那协同办公对于我来说作用在哪里呢?

    不得而知,于是把这个问题抛给了他们。

    职场新人A:姐,我觉得这协同软件说到底就是一个大资料库,领导想看什么资料、数据,想了解项目进展程度,分公司工作情况怎么办?去协同办公系统查啊。还有,你说我辛辛苦苦来上班,大半年没迟到没请假谁知道啊?系统啊,有凭有据,一目了然,不然靠什么说得清。怎样协同?那我不知道了。

    (结论,协同软件是个记录仪。)

    项目经理B:协同的当然是步伐了,步调一致,齐心协力,你要落了队,耽误的可是一个团队,别人因为你做不完工作,你好意思吗?

     

    JNPF协同办公的项目管理

    更有项目流程实时监控

    (结论,协同软件专为厚脸皮者研发设计。)

    同事C:信息共享,即时沟通。

     

     

    IM通讯消息及时送达单/群聊,图片、音视频于一体

    (结论:协同软件敢情是社交工具啊,微信QQ不好吗?)

    程序员D:协同软件啊,你看JNPF,广受好评,用户对我那是顶礼膜拜,想当初开发我是呕心沥血……你说怎样协同?协同办公是信息化管理,讲得再专业些就是我们JNPF开发平台的协同办公系统内置工作流引擎、自定义表单引擎、即时通讯模块再配合框架完善权限管理模块可轻松定制自己的协同办公软件。目的是让效率更高,保质保量,通过协同各个参与者的行为,达到团队最优化,在项目管理上体现的最明显,大家分工明确,各司其职,共同完成任务。

     

    JNPF工作流程架构

    JNPF的审批流程设计

    JNPF平台稳定可靠,一百万条数据在5秒钟内自动生成显示

    (结论:协同办公协同的是行为!)

    好了,以上是从事不同岗位的人员对"协同办公"的见解。

    我一边感慨程序员D也算是对协同办公的一点积极贡献,他主导研发的开源软件,也就是他说的JNPF协同办公系统,被越来越多的用户使用和喜欢,一边也渐渐明朗,其实,协同办公协同的是行为,强调的是过程,而大多数人描述的是结果。

    所谓协同,就是针对孤岛与变革,协同管理最主要的三个方面就是要实现信息的协同,业务的协同和资源的协同。

    关于之前的思考,其实也并不矛盾,虽然我是文案,我写东西不需要别人配合,但我写的好坏、快慢是对别人有影响的。在这个项目里,设计负责画面,文案负责文字,市场人员负责销售额,财务负责费用拨付,每个个体各司其职,共同对项目目标负责。

     

    展开全文
  • 基于协同学原理,集对分析中的联系度替代协同度,构建淮南市经济发展与生态环境系统协同评价模型,对淮南市2008—2017年经济发展与生态环境系统发展的协同情况进行分析。结果表明:2016年以前,淮南市经济发展系统有序...
  • 为了摸清目前高校科技协同创新机制运行现状及其存在的问题,湖北高校样例依托,从高校科技协同创新依托平台、筛选机制、转移机制、政策支持机制及利益整合机制五方面切入,对其进行了实证剖析。结果发现,尽管目前...
  • 基于协同效应的现代农业产业链构建-都昌县例,查明珠,石英,
  • 第三种算法是在大量用户行为和数据中收集答案,帮助对整个人群产生统计意义上的结论。此处我们重点讨论第三种,基于协同过滤的推荐算法。协同过滤核心是用户交互数据建模,可以分为三个子类:user-based re...

    k近邻-协同过滤推荐算法

    算法概述

    推荐算法常用的有三种:基于人口统计学的推荐、基于内容的推荐、基于协同过滤的推荐。前两种是仅仅考虑用户或物品本身背景属性,将拥有相似属性的用户或物品分在一个集合里。第三种算法是在大量用户行为和数据中收集答案,以帮助对整个人群产生统计意义上的结论。此处我们重点讨论第三种,基于协同过滤的推荐算法。

    协同过滤

    核心是用户交互数据建模,可以分为三个子类:user-based recommendation,item-based recommendation,model-based recommendation。

    基于用户的协同过滤推荐(user-based recommendation)

    它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- 近邻”的算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐。

    这里写图片描述

    基于项目的协同过滤推荐

    基于项目的协同过滤推荐的基本原理也是类似的,只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

    基于模型的协同过滤推荐

    基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。

    协同过滤小结

    优点:

    a. 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。

    b. 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好

    缺点:

    a. 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。

    b. 推荐的效果依赖于用户历史偏好数据的多少和准确性。

    c. 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。

    d. 对于一些特殊品味的用户不能给予很好的推荐。

    e. 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

    k近邻算法KNN

    算法原理

    简单地说,k近邻算法就是采用测量不同特征值之间的距离方法进行分类。

    优点:精度高,对异常值不敏感,无数据输入假定。

    缺点:计算复杂度高,空间复杂度高。

    适用数据类型:数值型和标称型。

    伪代码如下:

    1.计算样本点与当前点的距离

    2.取出与当前点距离最小的前k个点

    3.计算取出的k个点的类别出现频率

    4.将出现频率最高的类别作为当前点的类别

    代码实现:

     #inX输入数据,dataSet训练数据,labels分类标签,k近邻个数
    def classify0(inX,dataSet,labels,k):   
        dataSetSize=dataSet.shape[0]
        diffMat=tile(inX,(dataSetSize,1))-dataSet   #计算输入点与样本点的差
        sqDiffMat=diffMat**2                        #计算输入点与样本点差的平方
        sqDistances=sqDiffMat.sum(axis=1)           #计算输入点与样本点差的平方和
        distances=sqDistances**0.5
        sortedDistIndicies=distances.argsort()
        classCount={}
        for i in range(k):
            voteIlabel=labels[sortedDistIndicies[i]]
            classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
        sortedClassCount=sorted(classCount.items(),
                                key=operator.itemgetter(1),reverse=True)
        return sortedClassCount[0][0]训练数据

    作下测试:

    import numpy as np
    import operator
    group=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels=['A','A','B','B']
    classify0([0,0],group,labels,2)

    得到预测分类:

    e6107e8ca1833a5e649733672a6f3550.png

    上述便是k近邻算法的代码实现,下面我们将用实际案例来探讨应用k近邻模型的推荐算法。

    数据来源于movielens的1M数据集。我们将从易到难,先实现较为简单的基于人口统计学的k近邻推荐算法,然后再实现基于人口的协同过滤推荐算法。

    先查看数据集情况,解压后共有3个dat文件,分别是users,movies,ratings。读取文件:

    import pandas as pd
    import numpy as np
    import operator
    f_users=open('F:/Ms.Q/数据分析常用/ml-1m/users.dat',encoding='utf-8')
    users=pd.read_table(f_users)
    users.head()

    得到结果是这样的:

    e9b756ad12ab80dddffd5dccc83b62e7.png

    标题需要改变,并且去掉双冒号:

    #用户信息,重命名列名
    f_users=open('F:/Ms.Q/数据分析常用/ml-1m/users.dat',encoding='utf-8')
    users=pd.read_table(f_users,names=['user_id','gender','age','occupation','zip'],sep='::')
    users.head()

    改变后:

    456eb95ae791e3d4c6ebb94e411fbbe4.png

    movies,ratings也做同样处理:

    #电影信息
    f_movies=open('F:/Ms.Q/数据分析常用/ml-1m/movies.dat',encoding = 'ISO-8859-1')
    movies=pd.read_table(f_movies,names=['movie_id','title','genres'],sep="::")
    movies.head()

    得到:

    cdf0af3a7e1dd7b6afbaaf70a4855a54.png
    #评分信息
    f_ratings=open('F:/Ms.Q/数据分析常用/ml-1m/ratings.dat',encoding = 'ISO-8859-1')
    ratings=pd.read_table(f_ratings,names=['user_id','movie_id','rating','timestamp'],sep="::")
    ratings.head()

    得到:

    a102a9a0f55e6efc651a709d43310fdd.png

    users用户文件中主要包含了用户id、用户性别、年龄、职业信息,movies电影信息文件中包含了电影id、电影名称和电影风格类别,评分信息中有用户id、电影id、评分等。我们先尝试基于人口统计学的推荐算法,具体来说就是根据用户信息特征计算用户距离,用距离最近的k位用户的评分信息预测输入用户对电影的评分。

    将users和ratings合并:

    data_mer=pd.merge(users,ratings)
    #并将性别数字化,用'0','1'分别代表'F','M'
    data_change=data_mer.replace(['F','M'],[0,1])
    data_change.head()

    53d65cff69c6a5befa29a0d964de819b.png

    数据的基础处理完成,下面是基于人口统计学的推荐算法,我们结合上面基础k近邻算法构造推荐系统中的分类函数:

    #基于人口统计学的推荐
    def classify(inX,mov_id,data,k):   #data合并后的原始dataframe,mov_id待测电影的movie_id
        data_fil=data[data['movie_id']==mov_id]  #看过待测电影的所有数据 
        dataSet=data_fil.drop(['zip','user_id','movie_id','timestamp','rating'],axis=1)
        labels=np.array(data_fil['rating'])  #删除无用信息列,将'rating'作为labels单独列出
        dataSetSize=dataSet.shape[0]
        diffMat=np.tile(inX,(dataSetSize,1))-dataSet   #计算输入点与样本点的差
        sqDiffMat=diffMat**2                        #计算输入点与样本点差的平方
        sqDistances=sqDiffMat.sum(axis=1)           #计算输入点与样本点差的平方和
        distances=sqDistances**0.5
        sortedDistIndicies=np.array(distances.argsort())    #排序
        classCount={}
        for i in range(k):
            voteIlabel=labels[sortedDistIndicies[i]]
            classCount[voteIlabel]=classCount.get(voteIlabel,0)+1   #选择距离最小的k个点
        sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
        return sortedClassCount[0][0]                           #排序

    我们随意输入一个用户信息测试:

      classify([0,26,15],661,data_change,10)

    2ce14c3da7f2ee0f6b1111ab5d85b26d.png

    以上就是建立在movielens1M数据集上基于人口统计学、利用kNN的分类预测算法。

    展开全文
  • B2CB2C 模式下企业与消费者协同演化和动态能力分析 模式下企业与消费者协同演化和动态能力分析 B2CB2C 模式下企业与消费者协同演化和动态能力分析模式下企业与消费者协同演化和动态能力分析 京东京东...
  • 文中针对区域这一对象,基于系统协同理论,结合相关研究结果,构建了由创造能力系统、运用能力系统与保护服务系统3个子系统共同组成的区域知识产权能力系统。结合区域知识产权能力系统的概念,选出相应的序参量并量化,...
  • 《1分钟了解协同过滤,电影推荐例进行讲解.》 《1分钟了解"基于内容"的推荐,招聘网站的职位推荐,例进行讲解.》 《1分钟了解“关联规则”推荐》 《1分钟了解“相似性”推荐》 《同起点,同终点,打车价格...

    人肉文章:

    1分钟了解协同过滤,以电影推荐为例进行讲解.

    1分钟了解"基于内容"的推荐,以招聘网站的职位推荐,为例进行讲解.

    1分钟了解“关联规则”推荐

    1分钟了解“相似性”推荐

    同起点,同终点,打车价格不同”,杀熟,1分钟秒懂如何设计

    工程架构方向的程序员,看到推荐/搜索/广告等和算法相关的技术,心中或多或少有一丝胆怯。但认真研究之后,发现其实没有这么难。

     

    今天的1分钟系列,给大家介绍下推荐系统中的“协同过滤”,绝无任何公式,保证大伙弄懂。

     

    什么是协同过滤(Collaborative Filtering)?

    :通过找到兴趣相投,或者有共同经验的群体,来向用户推荐感兴趣的信息。

    举例,如何协同过滤,来对用户A进行电影推荐?

    :简要步骤如下

    • 找到用户A(user_id_1)的兴趣爱好

    • 找到与用户A(user_id_1)具有相同电影兴趣爱好的用户群体集合Set<user_id>

    • 找到该群体喜欢的电影集合Set<movie_id>

    • 将这些电影Set<Movie_id>推荐给用户A(user_id_1)

     

    具体实施步骤如何?

    :简要步骤如下

    (1)画一个大表格,横坐标是所有的movie_id,纵坐标所有的user_id,交叉处代表这个用户喜爱这部电影

    如上表:

    • 横坐标,假设有10w部电影,所以横坐标有10w个movie_id,数据来源自数据库

    • 纵坐标,假设有100w个用户,所以纵坐标有100w个user_id,数据也来自数据库

    • 交叉处,“1”代表用户喜爱这部电影,数据来自日志

    画外音:什么是“喜欢”,需要人为定义,例如浏览过,查找过,点赞过,反正日志里有这些数据

     

    (2)找到用户A(user_id_1)的兴趣爱好

    如上表,可以看到,用户A喜欢电影{m1, m2, m3}

     

    (3)找到与用户A(user_id_1)具有相同电影兴趣爱好的用户群体集合Set<user_id>

    如上表,可以看到,喜欢{m1, m2, m3}的用户,除了u1,还有{u2, u3}

     

    (4)找到该群体喜欢的电影集合Set<movie_id>

    如上表,具备相同喜好的用户群里{u2, u3},还喜好的电影集合是{m4, m5}

    画外音:“协同”就体现在这里。

     

    (5)未来用户A(use_id_1)来访问网站时,要推荐电影{m4, m5}给ta。

     

    协同过滤大致原理如上,希望大家有收获。

     

    推荐文章:

    1分钟了解“区块链”的本质

    1分钟了解“挖矿”的本质

     

    人肉文章:

    1分钟了解协同过滤,以电影推荐为例进行讲解.

    1分钟了解"基于内容"的推荐,以招聘网站的职位推荐,为例进行讲解.

    1分钟了解“关联规则”推荐

    1分钟了解“相似性”推荐

    同起点,同终点,打车价格不同”,杀熟,1分钟秒懂如何设计

    展开全文
  • 很多应用的计算最终都转化矩阵相乘来完成,例如推荐算法中的协同过滤就可以套上去。协同过滤(collaborative filtering)是推荐系统中一类广泛使用的方法,协同过滤中两种比较出名的方法item-based CF、user-...
  • OA系统围绕会计事务所业务特征,“项目管理”中心,会计事务所打造“项目管理平台”、“电子函证管理平台”、“内外协同客户管理中心”、“全程电子化合同管理助手”以及“大数据分析平台”等5大特色应用,...
  • 文 | 曾响铃 来源 | 科技向令说(xiangling0815) 疫情打穿使用习惯后,移动办公...显然,这次升级,钉钉不只是在功能和服务上进行了大版本的更新,我比较关注的是,钉钉协同产品理念也开始发生导向性的改变,“
  • “京津冀区域协同发展”的...“影视叙事综合体”影视艺术传播载体,通过叙事行为、叙事故事、叙事话语、叙事反应等影视叙事功能建构区域文化认同的影像文化空间,提升区域文化形象,促进区域文化的融通和协同发展。
  • 基于BPNN方法的区域经济与环境协同竞争力测度评价与预测-江苏省例,钱峰,易志高,生态环境的恶化,在很大程度上已经严重制约着社会经济的发展,如何实现生态和经济的双赢已成为人们关注的热点问题。随着生态...
  • 的确,协同程序实现这类任务提供一个非常有用的工具,即协同的一个关键特征是它可以不断修改调用者与被调用者之间的关系,这样我们毫无顾虑的使用它实现一个迭代器,而不用保存迭代函数返回的状态信息。...
  • 最后,我们建议,这些疗法,甚至是精神分析的创造性因素,都可以通过产生多情的图像,感觉和思想来使解决方案中心的简短疗法协同作用,从而使自己实现客户期望的结果,这就是解决方案重点的简短疗法的存在...
  • 论文研究-社会、经济与资源环境复合系统协同进化模型的构建及应用——大连市例.pdf, 社会、经济与资源环境系统之间相互作用, 构成了一个动态开放的复合系统. 文章...
  • 第三种算法是在大量用户行为和数据中收集答案,帮助对整个人群产生统计意义上的结论。此处我们重点讨论第三种,基于协同过滤的推荐算法。协同过滤核心是用户交互数据建模,可以分为三个子类:user-based re...
  • 协同过滤

    2016-06-06 01:05:38
    协同过滤常常被用于分辨某特定顾客可能感兴趣的东西,这些结论来自于对其他相似顾客对哪儿些产品感兴趣的分析。协同过滤其出色的速度和健壮性,在全球互联网领域炙手可热。 算法简介 电子商务推荐系统的一种...
  • 一、快速入门 对关键地几个步骤进行说明,后面将举例具体说明。 1.drawnow 刷新帧数函数,是matlab中较为简单的动画绘制命令。 此步完成一个matlab环境下的动画生成.m文件。 2.gif动态图 进阶 ...在第一步.m文件的基础...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,181
精华内容 1,672
关键字:

以协同为