精华内容
下载资源
问答
  • 0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介 1 主动发现信息 随着 Web 2.0 的发展, Web 已经变成数据分享的平台,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。 在这样的情形下...

    本文将深入介绍推荐系统的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐系统。

    0 系列文章目录

    0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    0.2 基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍

    1 主动发现信息

    随着 Web 2.0 的发展, Web 已经变成数据分享的平台,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。

    在这样的情形下,搜索系统(Google,百度等等)成为大家快速找到目标信息的最好途径。在用户对自己需求相对明确的时候,用搜索系统很方便的通过关键字搜索很快的找到自己需要的信息。
    但搜索系统并不能完全满足用户对信息发现的需求,那是因为在很多情况下,用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果,因此出现了推荐系统,与搜索系统对应,大家也习惯称它为推荐系统。

    随着推荐系统的出现,用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的信息发现。

    如今,随着推荐技术的不断发展,推荐系统已经在电子商务 (E-commerce,例如 Amazon,阿里 ) 和一些基于 social 的社会化站点 ( 包括音乐,电影和图书分享,例如豆瓣 ) 都取得很大的成功。
    这也进一步的说明了,Web2.0 环境下,在面对海量的数据,用户需要这种更加智能的,更加了解他们需求,口味和喜好的信息发现机制。

    2 推荐系统

    推荐系统利用特殊的信息过滤技术,将不同的物品或内容推荐给可能对它们感兴趣的用户。
    RC工作原理图
    这里将推荐系统看作黑盒,输入是推荐的数据源,一般推荐系统所需数据源包括

    • 要推荐物品或内容的元数据
      例如关键字,基因描述等

    • 系统用户的基本信息
      例如性别,年龄等

    • 用户对物品或者信息的偏好
      根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等
      用户的偏好信息可以分为两类

      • 显式的用户反馈
        用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息
        例如用户对物品的评分,或者对物品的评论
        显式的用户反馈能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价
      • 隐式的用户反馈
        用户在使用网站时产生的数据,隐式的反应了用户对物品的喜好
        例如用户购买了某物品,用户查看了某物品的信息等
        隐式的用户反馈,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音,但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,例如在电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。

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

    3 分类

    可以根据很多指标

    3.1 是否为不同用户推荐不同数据

    • 大众推荐系统
      对每个用户都给出同样的推荐
      这些推荐可以是静态的由系统管理员人工设定的;
      或者基于系统所有用户的反馈统计计算出的当下比较流行的物品
    • 个性化推荐系统
      对不同的用户,根据他们的口味和喜好给出更加精确的推荐
      这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐

    这是最基本的推荐系统分类,其实大部分人们讨论的推荐系统都是关于个性化的推荐系统,因为从根本上说,只有个性化的推荐系统才是更加智能的信息发现过程。

    3.2 数据源

    这里讲的是如何发现数据的相关性

    大部分推荐系统的工作原理是基于物品或者用户的相似集进行推荐

    那么参考前面给出的推荐系统工作原理图,根据不同的数据源发现数据相关性的方法可以分为以下几种:

    • 根据系统用户的基本信息
      发现用户的相关程度,这种被称为基于人口统计学的推荐(Demographic-based Recommendation)
    • 根据推荐物品或内容的元数据
      发现物品或者内容的相关性,这种被称为基于内容的推荐(Content-based Recommendation)
    • 根据用户对物品或者信息的偏好
      发现物品或者内容本身的相关性,或者是发现用户的相关性,这种被称为基于协同过滤的推荐(Collaborative Filtering-based Recommendation)

    3.3 推荐模型的建立方式

    在海量物品和用户的系统中,推荐系统的计算量是相当大的,要实现实时的推荐务必需要建立一个推荐模型,关于推荐模型的建立方式可以分为

    • 基于物品和用户本身的
      将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的
      由于用户感兴趣的物品远远小于总物品的数目,这样的模型导致大量的数据空置,即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量,我们可以对物品和用户进行聚类, 然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。
    • 基于关联规则的推荐(Rule-based Recommendation)
      主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当挖掘出这些关联规则之后,可以基于这些规则给用户进行推荐。
    • 基于模型的推荐(Model-based Recommendation)
      典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后用户在进入系统,可以基于此模型计算推荐
      这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。

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

    4 深入推荐机制

    4.1 基于人口统计学的推荐(Demographic-based Recommendation)

    最易于实现的推荐方法,简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户
    基于人口统计学的工作原理
    首先,系统对每个用户都有一个用户 Profile的建模,其中包括用户的基本信息,例如用户的年龄,性别等等
    然后,系统会根据用户的 Profile 计算用户的相似度,可以看到用户 A 的 Profile和用户 C 一样,那么系统会认为用户 A 和 C 是相似用户,在推荐系统中,可以称他们是“邻居”
    最后,基于“邻居”用户群的喜好推荐给当前用户一些物品,图中将用户 A 喜欢的物品 A 推荐给用户 C

    这种机制的好处在于:

    • 不使用当前用户对物品的喜好历史数据
      对于新用户来讲没有“冷启动(Cold Start)”的问题。
    • 不依赖于物品本身的数据
      这个方法在不同物品的领域都可以使用,它是领域独立的(domain-independent)

    缺点和问题

    对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域,比如图书,电影和音乐等领域,无法得到很好的推荐效果。可能在一些电子商务的网站中,这个方法可以给出一些简单的推荐
    另外一个局限是,这个方法可能涉及到一些与信息发现问题本身无关却比较敏感的信息,比如用户的年龄等,这些用户信息不是很好获取。

    4.2 基于内容的推荐

    基于内容的推荐是在推荐系统出现之初应用最为广泛的推荐机制,它的核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品
    基于内容推荐机制的基本原理
    一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只简单的描述了一下电影的类型
    然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影 A 和 C 被认为是相似的电影(要得到更好的推荐,还可以考虑电影的导演,演员等等)
    最后实现推荐,对于用户 A,他喜欢看电影 A,那么系统就可以给他推荐类似的电影 C

    好处

    能很好的建模用户的口味,提供更加精确的推荐

    问题

    1. 需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度
      在现在的应用中我们可以观察到关键词和标签(Tag)被认为是描述物品元数据的一种简单有效的方法。
    2. 物品相似度分析仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
    3. 因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题

    虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐,图书的社交站点,有些站点还请专业的人员对物品进行基因编码,比如潘多拉,在一份报告中说道,在潘多拉的推荐系统中,每首歌有超过 100 个元数据特征,包括歌曲的风格,年份,演唱者等等。

    4.3 基于协同过滤的推荐

    随着 Web2.0 的发展,Web 站点更加提倡用户参与和用户贡献,因此基于协同过滤的推荐机制因运而生。
    根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐

    基于协同过滤的推荐可以分为

    4.3.1 基于用户的协同过滤推荐(User-based Recommendation)

    根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- means”算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐
    基于用户的协同过滤的基本原理
    假设用户 A 喜欢物品 A,物品 C
    用户 B 喜欢物品 B
    用户 C 喜欢物品 A ,物品 C 和物品 D
    从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A

    该机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度

    • 基于人口统计学的机制只考虑用户本身的特征
    • 基于用户的协同过滤机制可在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。

    4.3.2 基于项目的协同过滤推荐(Item-based Recommendation)

    使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户

    假设
    用户 A 喜欢物品 A 和物品 C
    用户 B 喜欢物品 A,物品 B 和物品 C
    用户 C 喜欢物品 A
    从这些用户的历史喜好可以分析出物品 A 和物品 C 时比较类似的,喜欢物品 A 的人都喜欢物品 C,基于这个数据可以推断用户 C 很有可能也喜欢物品 C,所以系统会将物品 C 推荐给用户 C

    与上面讲的类似,基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息
    基于项目的协同过滤推荐机制的基本原理

    在基于用户和基于项目两个策略中应该如何选择呢?
    其实基于项目的协同过滤推荐机制是 Amazon 在基于用户的机制上改良的一种策略,因为在大部分的 Web 站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。

    但也不是所有的场景都是这样的情况,可以设想一下在一些新闻推荐系统中,也许物品,也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的形似度依然不稳定。
    所以推荐策略的选择其实和具体的应用场景有很大的关系。

    4.3.3 基于模型的协同过滤推荐(Model-based Recommendation)

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

    现今应用最为广泛的推荐机制

    优点

    • 不需要对物品/用户进行严格的建模,不要求物品的描述是机器可理解的,所以该方法也是领域无关的
    • 计算出来的推荐是开放的,可以共享他人的经验,很好的支持用户发现潜在的兴趣

    问题

    • 核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题
    • 推荐效果依赖于用户历史偏好数据的多少和准确性
    • 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
    1. 对于一些特殊品味的用户不能给予很好的推荐。
    2. 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

    4.4 混合的推荐机制

    在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,往往是将多个方法混合在一起,从而达到更好的推荐效果

    加权的混合(Weighted Hybridization):

    用线性公式将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果

    切换的混合(Switching Hybridization)

    对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐

    分区的混合(Mixed Hybridization)

    采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。
    Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西

    分层的混合(Meta-Level Hybridization)

    采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

    5 应用

    介绍完推荐系统的基本原理,基本推荐机制,下面简要分析几个有代表性的推荐系统的应用,这里选择两个领域:Amazon 作为电子商务的代表,豆瓣作为社交网络的代表。

    推荐在电子商务中的应用 – Amazon
    Amazon 作为推荐系统的鼻祖,已经将推荐的思想渗透在应用的各个角落
    Amazon 推荐的核心是通过数据挖掘算法和比较用户的消费偏好于其他用户进行对比,借以预测用户可能感兴趣的商品。对应于上面介绍的各种推荐机制,Amazon 采用的是分区的混合的机制,并将不同的推荐结果分不同的区显示给用户
    首页
    浏览物品
    Amazon 利用可以记录的所有用户在站点上的行为,根据不同数据的特点对它们进行处理,并分成不同区为用户推送推荐:

    • 今日推荐 (Today’s Recommendation For You):
      根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。
    • 新产品的推荐 (New For You)
      采用基于内容的推荐机制 (Content-based Recommendation),将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题。
    • 捆绑销售 (Frequently Bought Together)
      采用数据挖掘技术对用户的购买行为进行分析,找到经常被一起或同一个人购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。
    • 别人购买 / 浏览的商品 (Customers Who Bought/See This Item Also Bought/See)
      这也是一个典型的基于项目的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。

    值得一提的是,Amazon 在做推荐时,设计和用户体验也做得特别独到:

    Amazon 利用有它大量历史数据的优势,量化推荐原因。

    • 基于社会化的推荐,Amazon 会给你事实的数据,让用户信服,例如:购买此物品的用户百分之多少也购买了那个物品;
    • 基于物品本身的推荐,Amazon 也会列出推荐的理由,例如:因为你的购物框中有 ***,或者因为你购买过 ***,所以给你推荐类似的 ***。

    另外,Amazon 很多推荐是基于用户的 profile 计算出来的,用户的 profile 中记录了用户在 Amazon 上的行为,包括看了那些物品,买了那些物品,收藏夹和 wish list 里的物品等等,当然 Amazon 里还集成了评分等其他的用户反馈的方式,它们都是 profile 的一部分,同时,Amazon 提供了让用户自主管理自己 profile 的功能,通过这种方式用户可以更明确的告诉推荐系统他的品味和意图是什么。

    推荐在社交网站中的应用 – 豆瓣
    豆瓣是国内做的比较成功的社交网站,它以图书,电影,音乐和同城活动为中心,形成一个多元化的社交网络平台,自然推荐的功能是必不可少的
    豆瓣电影
    当你在豆瓣电影中将一些你看过的或是感兴趣的电影加入你看过和想看的列表里,并为它们做相应的评分,这时豆瓣的推荐系统已经拿到你的一些偏好信息,那么它将给你展示如图电影推荐。
    基于用户品味的推荐
    豆瓣的推荐是通过“豆瓣猜”,为了让用户清楚这些推荐是如何来的,豆瓣还给出了“豆瓣猜”的一个简要的介绍。
    *“你的个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。
    每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准。*”

    这一点让我们可以清晰明了的知道,豆瓣必然是基于社会化的协同过滤的推荐,这样用户越多,用户的反馈越多,那么推荐的效果会越来越准确。

    相对于 Amazon 的用户行为模型,豆瓣电影的模型更加简单,就是“看过”和“想看”,这也让他们的推荐更加专注于用户的品味,毕竟买东西和看电影的动机还是有很大不同的。

    另外,豆瓣也有基于物品本身的推荐,当你查看一些电影的详细信息的时候,他会给你推荐出“喜欢这个电影的人也喜欢的电影”, 如图这是一个基于协同过滤的应用。
    基于电影本身的推荐

    6 总结

    如何让用户更快的找到想要的数据,如何让用户发现自己潜在的兴趣和需求,无论是对于电子商务还是社会网络的应用都是至关重要的
    推荐系统的出现,使得这个问题越来越被大家关注。但对大多数人来讲,也许还在惊叹它为什么总是能猜到你到底想要些什么。推荐系统的魔力在于你不清楚在这个推荐背后,系统到底记录和推理了些什么。

    其实推荐系统只是默默的记录和观察你的一举一动,然后再借由所有用户产生的海量数据分析和发现其中的规律,进而慢慢的了解你,你的需求,你的习惯,并默默的无声息的帮助你快速的解决你的问题,找到你想要的东西。

    其实,回头想想,很多时候,推荐系统比你更了解你自己。

    在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法
    它以其方法模型简单,数据依赖性低,数据方便采集,推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”

    展开全文
  • feed流推荐系统设计

    万次阅读 2018-10-10 18:31:44
    本文主要分享个人经历中关于推荐系统的应用理解,包括整体推荐系统架构设计、推荐后台服务设计推荐系统架构设计 1.0 推荐系统根据数据使用划分为在线和离线两部分。APP服务日志通过flume采集,然后传给离线和在线...

    本文主要分享个人经历中关于推荐系统的应用理解,包括整体推荐系统架构设计、推荐后台服务设计。

    推荐系统架构设计 1.0

    推荐系统根据数据使用划分为在线和离线两部分。APP服务日志通过flume采集,然后传给离线和在线业务使用。离线数据主要用来离线训练模型,如gbdt、lr、xgboost等,在线数据特征用来让模型进行在线预测。如下图所示:

    在这里插入图片描述

    • 在线部分

    实时数据从kafka获取到后直接进入spark streaming(这里也可以用其他实时计算技术,如storm,flink)进行处理,计算出实时特征存入redis,供线上模型预测服务使用。

    • 离线部分

    离线部分数据主要分为两部分,一部分是mysql定时拉取过去,另一部分是从flume实时拉数据到hive数据仓库。mysql主要存储用户相关变动频率小的属性特征,flume采集计算的主要是帖子(feed)相关变化频率大的特征。

    推荐系统后台设计 1.0

    推荐主要方法分为召回和排序过程,召回过程是粗步选取数据,排序过程是对筛选后的数据精确排序,结果返回给用户。

    推荐后台架构图

    在这里插入图片描述

    过程如下:
    1. 用户请求接口,传入uid作为参数。
    2. 先看用户uid对应在缓存中有没有推荐结果,如果有则直接获取返回,如果没有则重新获取。
    3. 根据用户uid,去不同召回源获取对应候选帖子。
    4. 选取的帖子需要进行去重,过滤状态异常帖子。
    5. 对不同召回源获取的帖子先合并,然后随机取1000条。
    6. 排序环节,对1000条帖子进行打分排序,取top 200条。
    7. 根据用户历史推荐信息,对获取到的200条数据进行过滤,保证推荐结果不重复。
    8. 对过滤结果取25条返回用户,剩下帖子放在缓存,等待下次请求使用。

    备注: 上面的帖子取的条数都是根据实际经验选择,具体可以调整。

    (完)

    关注公众号我们可以更方便沟通交流:水木之椿

    展开全文
  • 由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统. 1 研究目标 从应用场景来看,基于内容的...

    由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛!
    于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统.

    1 研究目标

    从应用场景来看,基于内容的推荐算法更多地适用于用户根据关键字或者电影名字来搜索相应的电影,然后推荐系统来进行相应的推荐。
    基于需求个性角度来看,基于内容的推荐算法还不够个人化,用户需要的是更加符合个人偏好的推荐结果,可以根据用户之前的打分情况,更有针对性地推荐一些可能喜欢的电影,这种情况下,应用最多的就是协同过滤算法。

    本设计着重讨论基于协同过滤算法的电影推荐系统设计。

    2 技术要求

    (1) 熟悉并掌握爬虫的基本原理。研究内容包括:Scrapy 爬虫框架。
    (2) 熟悉并掌握JavaWeb的各种开发工具与框架。研究内容包括:IntelliJ IDEA + Maven + Git + Linux + MySQL + MyBatis + Spring + Spring MVC + EasyUI。
    (3) 熟悉并掌握Spark及机器学习库。研究内容包括:Spark 基本原理,协同过滤算法,MLlib机器学习算法库。
    (4) 设计Web 软件,模拟协同过滤算法下的电影推荐。

    3 研究难点

    (1) 对协同过滤算法的深入学习和掌握;
    (2) 通过Spark程序的设计来实现电影的实时推荐。

    0 联系我

    2.完整博客链接

    3.知乎

    展开全文
  • 0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介 0.2 基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍 ALS是alternating least squares的缩写 , 意为交替最小二乘法,而ALS-WR是alternating-least-...

    0 系列文章目录

    0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    0.2 基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍

    ALS是alternating least squares的缩写 , 意为交替最小二乘法,而ALS-WR是alternating-least-squares with weighted-λ -regularization的缩写,意为加权正则化交替最小二乘法.

    该方法常用于基于矩阵分解的推荐系统中.
    例如:将用户(user)对商品(item)的评分矩阵分解为两个矩阵

    • 一个是用户对商品隐含特征的偏好矩阵
    • 另一个是商品所包含的隐含特征的矩阵

    在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户最商品推荐了。

    由于评分数据中有大量的缺失项,传统的矩阵分解SVD(奇异值分解)不方便处理这个问题,而ALS能够很好的解决这个问题。
    对于R(m×n)的矩阵,ALS旨在找到两个低维矩阵X(m×k)和矩阵Y(n×k),来近似逼近R(m×n),即:

    • R(m×n)代表用户对商品的评分矩阵
    • X(m×k)代表用户对隐含特征的偏好矩阵
    • Y(n×k)表示商品所包含隐含特征的矩阵,T表示矩阵Y的转置

    实际中,一般取k<<min(m, n), 也就是相当于降维了。这里的低维矩阵,有的地方也叫低秩矩阵。

    为了找到使低秩矩阵X和Y尽可能地逼近R,需要最小化下面的平方误差损失函数:

    • xu(1×k)表示示用户u的偏好的隐含特征向量
    • yi(1×k)表示商品i包含的隐含特征向量,
    • rui表示用户u对商品i的评分
    • 向量xu和yi的内积xuTyi是用户u对商品i评分的近似。

    损失函数一般需要加入正则化项来避免过拟合等问题,我们使用L2正则化,所以上面的公式改造为:

    • λ是正则化项的系数。

    至此,协同过滤就成功转化成了一个优化问题。
    由于变量xu和yi耦合到一起,这个问题并不好求解,所以我们引入了ALS,也就是说我们可以先固定Y(例如随机初始化X),然后利用公式(2)先求解X,然后固定X,再求解Y,如此交替往复直至收敛,即所谓的交替最小二乘法求解法。

    具体求解过程

    先固定Y

    将损失函数L(X,Y)对xu求偏导,并令导数=0,得到:

    同理固定X

    可得:

    • ru(1×n)是R的第u行
    • ri(1×m)是R的第i列
    • I是k×k的单位矩阵。

    迭代步骤

    首先随机初始化Y,利用公式(3)更新得到X, 然后利用公式(4)更新Y, 直到均方根误差变RMSE化很小或者到达最大迭代次数。

    上文提到的模型适用于解决有明确评分矩阵的应用场景,然而很多情况下,用户没有明确反馈对商品的偏好,也就是没有直接打分,我们只能通过用户的某些行为来推断他对商品的偏好。
    比如,在电视节目推荐的问题中,对电视节目收看的次数或者时长,这时我们可以推测次数越多,看得时间越长,用户的偏好程度越高,但是对于没有收看的节目,可能是由于用户不知道有该节目,或者没有途径获取该节目,我们不能确定的推测用户不喜欢该节目。
    ALS-WR通过置信度权重来解决这些问题:对于更确信用户偏好的项赋以较大的权重,对于没有反馈的项,赋以较小的权重。ALS-WR模型的形式化说明如下:

    ALS-WR的目标函数

    • α是置信度系数。

    求解方式还是最小二乘法

    其中Cu是n×n的对角矩阵,Ci是m×m的对角矩阵;Cuii = cui, Ciii = cii。

    参考

    初识交替最小二乘ALS

    联系我


    1.Java开发技术交流Q群

    2.完整博客链接

    3.个人知乎

    4.gayhub

    展开全文
  • 商品搜索引擎---推荐系统设计

    万次阅读 多人点赞 2016-04-11 09:54:11
    一、前言结合目前已存在的商品推荐设计(如淘宝、京东等),推荐系统主要包含系统推荐和个性化推荐两个模块。系统推荐: 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员...
  • 基于内容和主题的个性化新闻推荐系统设计与实现需求分析过程: 基于内容和主题的个性化新闻推荐系统设计与实现需求分析原理示意图 本设计符合基于内容和主题的个性化新闻推荐系统设计与实现的开题报告中的大体...
  • 在过去的十年中,神经网络已经取得了巨大的飞跃。如今,神经网络已经得以广泛应用,并逐渐取代传统的...YouTube的推荐系统算法由两个神经网络组成:一个用于候选生成,一个用于排序。如果你没时间仔细研究论文,可以...
  • 我在留学期间设计的一个电影推荐系统设计思路,因为我觉得比较有趣,所以放出来也算是一个怀念 Method of measuring the quality recommendation system
  • 推荐视频反馈系统设计

    千次阅读 2014-03-07 18:37:38
    反馈系统设计 日志收集:   展示: 带多一个vids参数,表示展示相关的视频集合,按展示顺序拼接起来  show_vids=12_32_32_32 点击: 现有from_vid=1&to_vid=2 从哪个视频点击到哪个视频情况  日志计算...
  • 人才推荐系统数据库设计

    千次阅读 2017-04-24 16:23:00
    课程需求,需要开发人才推荐系统,故设计了此数据库,仅用于学习。
  • 系统设计入门

    万次阅读 2018-01-13 10:46:55
    译文地址:系统设计入门 译文出自:掘金翻译计划 译者:XatMassacrE、L9m、Airmacho、xiaoyusilen、jifaxu 这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到 README.md 发生变化,那就意味着这份...
  • 一个完整推荐系统设计实现

    万次阅读 2018-08-14 15:34:55
    工业界完整推荐系统设计。结论是: 没有某种算法能够完全解决问题, 多重算法+交互设计, 才能解决特定场景的需求。下文也对之前的一些博文进行梳理,构成一个完整工业界推荐系统所具有的方方面面(主要以百度...
  • 打造私人搜书系统之系统设计

    千次阅读 2017-08-26 19:11:11
    作者利用业余时间打造了一个自己的搜书系统,基本的思路是:从各个小说网站爬取相关的书籍信息,通过一个手机客户端来阅读小说。本文将从系统设计的角度,来谈谈设计的思路和踩过的坑。
  • 系统设计文档

    千次阅读 2020-05-15 20:59:21
    系统设计文档1 系统需求分析1.1可行性分析1.2项目要解决的问题1.3项目目标2 功能设计2.1功能划分2.2功能描述2.2.1电影信息查询2.2.2用户偏好推荐2.2.3用户登录功能2.3功能设计2.3.1用例图2.3.2 E-R图3 详细设计3.1...
  • 分布式系统设计

    千次阅读 2018-07-16 22:32:55
    高可用分布式系统应该要考虑以下几个大点和一些小点,大点与小点之间其实有包含、有交集,只是为了方便分点论述才分类。 四个大点: 容错能力(服务隔离、异步调用、请求幂等性、分布式锁) 可伸缩性(有 / 无...
  • 设计owllook网络小说推荐系统

    千次阅读 2019-02-23 23:25:38
    作者: 负雪明烛 id: fuxuemingzhu ... 目录数据推荐算法协同过滤...本文记录了我对owllook.net这一网络小说搜索引擎的推荐系统的分析与设计过程。这个项目是开源项目,地址在owllook repo,目前已经积累了一定的数据...
  • 系统设计:关于高可用系统的一些技术方案

    万次阅读 多人点赞 2017-09-17 09:22:32
    系统设计关于高可用系统的一些技术方案 高可用方法论 扩展 隔离 解耦 限流 分类 漏桶算法 令牌桶算法 滑动窗口计数法 动态限流 降级 熔断 发布相关 模块级自动化测试 灰度发布 回滚 其他 总结 参考资料 ...
  • 【毕业设计】学生选课推荐系统

    千次阅读 2019-09-22 21:29:16
    系统采用Apache Shiro(一种Java安全框架)进行权限控制系统,有管理员、教师、学生三个角色,不同的角色有不同的权限,登陆后页面也会有所区别。学生登录后,可以查看所有的选修课程以及课程的相关信息,可以选择多...
  • 正好最近正在做技术规划, 于是写偏文章说下工业界完整推荐系统设计。结论是: 没有某种算法能够完全解决问题, 多重算法+交互设计, 才能解决特定场景的需求。下文也对之前的一些博文进行梳理,构成一个完整工业...
  • 基于spark-streaming实时推荐系统( 二)时,心里还曾暗自窃喜:“五年多推荐系统设计研发工作,再搭一套推荐系统还不是轻松的事么!”。只有真正做了之后才知道这其中的辛酸与血泪。  首先博主前期的推荐系统经验...
  • 电商产品设计:商品推荐系统

    万次阅读 2018-08-16 15:20:50
    在电商网站里进行商品推荐,可以提高整个网站商品销售的有效转化率,增加商品销量。通过用户已经浏览、收藏、购买的记录,更精准的理解用户需求,对用户进行聚类、打标签,推荐用户感兴趣的商品,帮助用户快速找到...
  • 为什么要做推荐系统?...推荐系统概述为什么要做推荐系统个性化推荐产品形态推荐系统整体概况推荐系统架构推荐系统架构推荐系统架构推荐系统架构推荐引擎推荐引擎推荐引擎推荐引擎召回模型召回模型配比配
  • 其具体Django教程在:快速入门Django开发教程(旅游推荐系统实现教程) 在做界面的时候主要是体验了一下循环渲染吧。{% %} 使用了json做了一下前后端数据的传输 使用ajax做了异步传输 还有如何快速获取网页的代码,...
  • 分布式存储系统设计的若干原则

    万次阅读 热门讨论 2011-02-20 16:06:00
    分布式存储系统设计中很多指标是不可得兼的,必须根据需求有所取舍。CAP理论、最终一致性、BASE理论、I/O五分钟法则、Amdahl定律和Gustafson定律、摩尔定律等,就是分布式存储系统设计的的几个经典的指导法则。
  • 高并发系统设计40问 - 学习/实践

    千次阅读 2019-09-29 16:14:27
    开篇词 | 为什么你要学习高并发系统设计? 基础篇 (6讲) 【01 | 高并发系统:它的通用设计方法是什么?】 见TBD 【02 | 架构分层:我们为什么一定要这么做?】 【03 | 系统设计...
  • 图书销售系统系统设计说明书

    万次阅读 多人点赞 2014-05-03 22:55:37
    在完成图书销售系统需求分析的基础上,项目开发团队依据《图书销售系统需求规格说明书》对图书销售系统如何实现进行了设计。为了文档化我们对系统设计,编写了本文档。 本文档主要供项目开发团队在具体实现图书...
  • 一文入门推荐系统——推荐系统实践读书笔记

    千次阅读 多人点赞 2020-12-20 12:54:25
    1. 推荐系统 1.1. 什么是推荐系统 1.2. 推荐系统评测 1.2.1. 实验方法 1.2.2. 评判指标 1.2.3. 评判维度 2. 数据来源 2.1. 用户行为数据 2.2. 用户标签数据 2.3. 上下文信息 2.3.1. 时间上下文信息 2.3.2. 地点上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 531,628
精华内容 212,651
关键字:

推荐系统设计