精华内容
下载资源
问答
  • 导读:今天分享一下Google在KDD 2020的一篇关于多目标优化的工作,在MMoE[2]多任务框架基础上引入LSTM显式建模用户行为序列提升多任务学习效果,推荐一读。论文:Multi...

    导读:今天分享一下Google在KDD 2020的一篇关于多目标优化的工作,在MMoE[2]多任务框架基础上引入LSTM显式建模用户行为序列提升多任务学习效果,推荐一读。

    论文:Multitask Mixture of Sequential Experts for User Activity Streams

    地址:https://research.google/pubs/pub49274/

    摘要

    工业级大规模推荐系统应用中经常需要同时优化多个目标,譬如用户满意度与参与度,因此多任务学习应运而生。然而,当前推荐系统中大多数的多任务学习模型架构只考虑了非序列化的特征输入(譬如query与context),没有特别考虑用户行为序列的建模。显式地针对用户行为序列的建模会帮助多任务模型引入时序依赖,从而更准确的预测用户将来的行为。另外,用户行为序列可能会包含多种异构的数据源,譬如搜索日志、浏览日志等,由于不同类型的数据稀疏性等方面的特性会有较大区别,因此在一起建模学习时也需要谨慎处理。

    本文主要研究了如何在多任务学习场景中针对用户行为序列进行建模,提出了一套新颖的模型框架MoSE(Mixture of Sequential Experts)。在当前最新的MMoE多任务学习框架中使用LSTM针对用户行为序列进行显式建模。同时,本文也通过离线实验以及GMail的线上实验证明了本文的有效性。

    背景

    多任务学习在多个任务之间紧密关联时是有明显效果的。首先,它允许知识和数据在多个相关任务之间的迁移共享从而提升效果;其次,多任务学习通过引入推导偏差可以扮演正则项的角色,因此辅助任务可以用来提升主任务的泛化能力。

    本文研究了多任务学习中针对用户行为序列数据进行建模的挑战

    • 数据稀疏性。用户行为可能是高度稀疏的,譬如购买行为相对于浏览行为来说就非常稀疏;

    • 数据异构性。用户行为数据包含了多种来源或者类型的数据,譬如用户画像包含了性别信息,同时用户日志则包含了点击信息等;从这样的异构数据中学习共享的表示会由于内在的冲突从而比较困难;

    • 复杂的多目标。多个目标之间时序上的联系,譬如点击和购买目标之间,可能会因为用户复杂的内在意图而变得更加复杂;

    因此,本文提出了MoSE模型结构用来解决上述的挑战,主要是由当前MMoE多任务学习模型和LSTM的创新性结合。本文通过丰富的离线实验和GMail的实际线上实验验证了MoSE模型的有效性。

    场景介绍

    如下图所示,当用户在GMail搜索框搜索的时候,搜索结果中除了邮件外,如果Google Drive中有匹配的文件结果也会显示出来。尤其是GMail搜索开启了实时搜索功能,GMail的超大规模的搜索请求量对Google Drive来说是一个很重的负担。也许对某些用户来说,在GMail搜索结果查看Google Drive的结果并不是那么的实用;但是对另外一些用户来说却非常实用。

    因此,我们需要机器学习的模型来学习是否针对特定的用户打开展示Drive搜索结果的功能。在实际场景中,我们按天来更新用户的这个特性开关。而且我们需要在G家的数据上针对这两个任务进行建模和预测:

    • Drive搜索结果点击的数量;

    • 用户使用GMail搜索的按键次数;

    前者任务是为了判断用户是否需要真实需要Drive搜索结果的特性;后者任务则是对请求搜索Drive文件资源消耗的大致估计。最终是否打开Drive搜索结果特性的开关,则是这两个任务之间的平衡。这两个任务针对用户行为序列的建模有不少的挑战:

    1. 需要的变量是高度稀疏的。譬如Drive搜索结果点击数量;

    2. 除了GMail的行为记录,我们需要同时使用Drive的行为记录;

    3. 这两个任务的目标是错综复杂的。标准的非序列多任务模型很难处理好上面的一些问题。

    模型架构

    多任务学习框架在用户行为序列场景下有着特定的挑战:首先用户行为数据是稀疏而且异构的;其次多个目标之间的时序联系是复杂的。因此,我们认为需要有特定的模块来针对不同方面的复杂数据进行建模

    如下图所示,MoSE框架主要由以下的模块构成:

    • 共享底层的LSTM模块在接入序列输入数据;

    • 序列专家层,不同的专家网络用于建模每个任务的不同方面;

    • Gating网络,用于为不同的任务选择不同序列专家网络的输出;

    • Task塔网络;

    其中,我们应用LSTM进行多对多的序列学习如下图所示,也就是上图MoSE结构中的共享底层LSTM模块。

    实验结果

    本文的实验同时在合成数据集以及G家数据集上进行了充足的实验,实验结果由于引入了用户行为序列的建模当然比当前的多种多任务学习baseline要更好。下图是在GMail场景数据集上的训练结果,可以看到MoSE的离线训练指标在多个任务上都表现更好。

    正如之前场景介绍所述,针对特定的用户最终是否打开Drive搜索结果特性的开关,更多是这两个任务之间的平衡。本文也研究了在不同的平衡点,对于Drive搜索结果点击量效果的影响如下图所示。

    参考

    1. Multitask Mixture of Sequential Experts for User Activity Streams

    2. Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts

    展开全文
  • 实现基于用户的协同过滤(UserCF)算法,以TopN的推荐方式,分别在显式和隐式反馈数据集中进行评估和比较。 实验采用Grouplens团队提供的公开数据集Movielens-latest-small,包括671个用户对9125部电影的100004条...

    目录

    一、问题描述

    二、算法描述

    三、评价指标

    四、实验结果

    五、总结


    一、问题描述

    实现基于用户的协同过滤(UserCF)算法,以TopN的推荐方式,分别在显式和隐式反馈数据集中进行评估和比较。

    实验采用Grouplens团队提供的公开数据集Movielens-latest-small,包括671个用户对9125部电影的100004条评分,并将数据以6比2的比例随机分为训练集和测试集。

    隐式反馈只考虑用户是否看过电影,显式反馈考虑用户对电影的评分。

    二、算法描述

    UserCF算法是一种基于统计学的方法,目标是通过分析用户的历史行为,为用户推荐和他相似的用户喜欢的物品,因此算法中的一个重要内容便是计算用户的相似度。

    UserCF算法中相似度的计算是一种近邻模型,中心思想是通过寻找k个近邻用户来模拟主体的行为(KNN),寻找近邻用户需要一个指标来衡量用户间近邻程度,简易的计算方法如下(给定用户u和用户v,N(u)表示用户u喜欢的物品集合,N(v)表示用户v喜欢的物品集合):

    1. 杰卡德相似度

    2. 余弦相似度

    算法步骤:

    1. 读取数据,建立用户 – 物品数据结构,如下图所示:

    用户A喜欢物品a、b、c,用户B喜欢物品a、c,以此类推。

    2. 建立物品 – 用户倒排表,如下图所示。目的是在计算相似度时排除那些的数据,只需要扫描倒排表就可以计算出的用户组合。

    3. 利用余弦相似度构建相似度矩阵,如用户A和用户B的相似度计算如下:

    4. 寻找K近邻相似用户。

    5. 计算用户评分,w表示用户相似度,r表示用户的反馈评分。

    6. 得出TopN推荐列表。

    三、评价指标

    通过计算选取不同近邻用户K值时的准确率、召回率和F1值对算法进行评估。

    准确率、召回率和F1值的定义请参考推荐系统发展综述 - 4.推荐方式和效果评估

    四、实验结果

    实验结果中的

    实验结果中TopN的N值为选取的用户相似度较大的N个用户作为近邻用户,非最终推荐列表的TopN。

    1. 隐式反馈

    从图中可以看到,当N取18时,F1值最大为0.15,此时召回率为0.23,准确率为0.1,可以看出仅考虑隐式反馈时,通过UserCF算法得到的推荐列表结果并不是很理想。

    2. 显式反馈

    当N取16时,F1值最大为0.2,此时召回率为0.27,准确率为0.17,相比较隐式反馈结果有所提升。

     

    随着N的增大,显式和隐式反馈数据推荐结果的召回率逐渐上升,这是因为所选择的近邻用户越多,为用户推荐的物品就越多,因此召回率会大大增加,而相反,准确率则会逐渐下降。

    五、总结

    UserCF算法是通过统计学的方法来挖掘用户历史行为数据的规律,隐式反馈数据中所体现的用户行为规律较为粗糙,不利于发现和挖掘,而显示反馈数据能够对用户的行为进行一定的偏好划分,更具有代表性。

    因此协同过滤算法通常考虑显式反馈数据,最直观的显式反馈数据是评分数据,常用在音乐、视频服务推荐中。电商平台中的浏览、收藏、加入购物车、购买等行为也可以体现出不同层面的用户偏好,比如购买代表的偏好程度最高,浏览代表的最低,以此分级也可作为显式反馈数据。

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

    展开全文
  • 基于用户行为分析建立用户偏好模型 2013-09-08 18:23 2736 转载:http://zisong.me/post/ji-zhu/ji-yu-yong-hu-xing-wei-fen-xi-jian-li-yong-hu-pian-hao-mo-xing 我们经常将个性化推荐的思想简单地...

    基于用户行为分析建立用户偏好模型

    2013-09-08 18:23   2736

    我们经常将个性化推荐的思想简单地抽象为:通过用户的行为推测出用户的兴趣,从而给用户推荐满足他们兴趣的物品。那我们其实就是要通过用户行为分析建立一个用户偏好(偏好即兴趣)模型,模型中包含各个用户的一个或更多个偏好。

    插叙一段

    像「用户行为」,「用户兴趣」这样的词,大多数人都有一个默认的感知,甚至对于这种词的理解可能已固化为常识,所以我很少见到有文章使用这些词时解释它们。我感觉涉及到算法模型时,对这些词的不加限定的宽泛认知就容易影响对算法模型的深入理解,会导致感知模糊却不自知。因为不同人对这些词的基本理解可能一致,但是拓展理解各不相同。本文会作出限定解释,且本文所谈用户行为都是指网络(可以是电信网络,互联网)上的行为。

    概念解释

    实体域

    当我们想基于用户行为分析来建立用户偏好模型时,我们必须把用户行为和兴趣主题限定在一个实体域上。个性化推荐落实在具体的推荐中都是在某个实体域的推荐。比如对于阅读网站,实体域包括所有的图书,我们可以称之为图书域。其他还有,个性化音乐推荐,个性化电影推荐,个性化资讯推荐等。

    用户行为

    用户在门户网站点击资讯,评论资讯,在社交网站发布状态,评论状态,在电商网站浏览商品,购买商品,点评商品,以及在其他类型网站的种种行为都可是用户行为。本文所指的用户行为都是指用户在某实体域上的行为。比如用户在图书域产生的行为有阅读,购买,评分,评论等。

    兴趣主题

    用户的兴趣维度,同样是限定在某实体域的兴趣,通常可以以标签的形式来表示。比如,对于图书阅读,兴趣主题可以是「悬疑」,「科技」,「情感」等等分类标签。值得一提的是,兴趣主题,只是从用户行为中抽象出来的兴趣维度,并无统一标准。比如qq阅读和豆瓣阅读的图书分类标签大不一样。而兴趣维度的粒度也不固定,就像门户网站有「新闻」,「体育」,「娱乐」等一级分类,而新闻下有「国内」,「社会」,「国际」二级分类,娱乐下有「明星」,「星座」,「八卦」二级分类。我们选取什么粒度的兴趣空间取决于我们对用户偏好模型的要求。

    兴趣空间

    在同一层次上兴趣维度的集合,比如豆瓣阅读中,可以用「新上架」,「热门」,「特价」,「免费」来构成一个兴趣空间(当然,如果使用这个兴趣空间来表征用户的兴趣,就太粗了,这里只是假设),也可以用「小说」,「幻想」,「计算机」,「科技」,「历史」·····「美食」构成一个兴趣空间。这是两种不同的分类维度。如果将「新上架」也加入到后者集合里,就显然有些莫名其妙。值得一提是,这也并非不可能,这取决于一个如何看待这个集合的问题,如果不把它看作基于内容的分类,而是图书标签库,那么也是可行的,甚至利于建立更好地模型。本文后面我有提到。

    用户行为数据

    项亮在他的《推荐系统实践》的2.1节有详细介绍。通常在经过对行为日志的汇总处理后生成的比较容易理解的数据就是一份描述用户行为的会话日志。这种日志记录了用户的各种行为,比如在图书阅读app中这些行为主要包括点击,试读,购买,阅读(在本地app中,阅读行为有可能追踪不到),评分,评论。

    建立用户偏好模型

    基于用户行为分析建立用户偏好模型的核心工作就是:将用户的行为转换为用户的偏好
    我们采用矩阵运算的思维方式,以图书阅读为例说明。
    下图表示用户(user)集合:

    下图表示图书(item)集合:

    那么用户的行为矩阵可以表达为:

    行表示用户,列表示图书,我们暂只考虑图书的购买行为,1表示用户看过该图书,0表示用户没有看过该图书。

    如何将上述用户行为矩阵转化为用户兴趣矩阵(即行代表用户,列代表兴趣维度),一种显著的方法是我们先确定图书与兴趣维度的对应关系矩阵。而这个的前提是我们确定了使用何种兴趣空间。一种常见的方式是专家给出一些样本的分类结果,也就是一般意义的训练数据,然后通过分类算法,得到分类模型,然后应用到其余数据的分类问题当中,解决其余大量数据的分类问题。这种分类的特点是一本图书只被标记为一种类别,假如有3个类别,
    那么图书-兴趣矩阵为:

    那么用户行为矩阵转换为用户兴趣矩阵的运算公式即可表示为下图,行表示用户,列表示兴趣,算出的矩阵再经过归一化后,每个值就代表某个用户在某个兴趣的偏好权重。

    Image Title
    选择这样的兴趣空间的局限显而易见:一本图书只能属于一个兴趣维度。实际情况中,一本图书通常不只属于某个分类,并且当图书的数据巨大时,寄希望于编辑分类可能会越来越难以维持,所以通常是由用户主动给图书添加标签,或者机器基于内容,提取关键词。但是这种形式得到的标签集会存在同义,生僻,维度过多等情况,需要经过标签清洗的重要工作。前面已经看到兴趣空间的选择真的是非常重要,直接影响所得到用户的兴趣矩阵。所以同样的方法都得到了用户偏好,但是好不好用,就跟这部分工作有关了。

    用户行为加权

    上面展示的用户行为矩阵示例是一个非常简单的,直接可以从数据库里提取的例子。而实际中在数据能够支撑的情况下,我们不可能只考虑一种行为。为了获得更合理的行为矩阵,我们就需要进行行为加权。比如,A1表示用户点击的行为矩阵,A2表示购买的行为矩阵,A3表示评分的行为矩阵,那么加权矩阵就是:
    Image Title
    至于各矩阵的权重跟我们建立用户偏好模型的目的有关,如果我们更希望找准用户的品味偏好,那么权重可能是:a1 < a2 < a3;如果我们更希望用户购买,那么权重可能是:a1 < a3 < a2。

    其他用户行为分析方法

    上面介绍的方法也算是一种主流的方法。但是从上面介绍的「兴趣主题」,「兴趣空间」也可以看出作出好的分类并不容易,分类粒度,分类维度等都不好控制,用户打标签也需要复杂的标签清洗工作。在图书,电影这样的实体域,我们还可以通过类别给用户推荐喜欢的物品,而在个性化资讯推荐领域(这里仅举个例子,资讯推荐应该有其特殊之处),我们不见得能通过类别推荐用户喜欢的资讯,甚至用户本身也不在意类别。我们并不需要显式地构建物品-兴趣对应关系矩阵,也可以将用户和所喜欢类别的物品关联起来。这就涉及到隐含语义分析技术。这个部分会日后在此文补充。

    小总结

    以上可以看出基于用户行为分析的用户偏好建模的常规方法非常简单明了。事实上也的确如此,在使用这些方法或者思想编写程序计算都不是什么难事。而实际上,我们遇到的问题却并非是方法本身,而是数据本身。数据方面的两大问题是稀疏和长尾分布。通常有行为数据用户很少,而用户的行为对象也集中在不多的物品上。方法易学,而数据问题只能在实战中才能深刻体会,才会发现主要的精力和难点都在解决数据的稀疏和长尾上。希望日后能结合实际问题写写解决数据问题的文章。
    此外,上面虽然是用矩阵运算的思想讲述,但我在实际项目中发现其运算的本质其实是对用户行为的统计。所以在实战中,不一定要先建矩阵,再做计算,直接在数据库里使用sql计算非常方便。

    展开全文
  • 一个原因是要区分外部和内部实现,另一个原因是要用其他信息丰富传入的数据或在将数据发送给用户之前过滤掉数据的某些方面。 有几种方法可以实现对象之间的转换: 幼稚的方法 将转换器代码显式添加到该对象: ...

    显式转换 隐式转换

    我们日常使用的最常见的模式之一是将对象从一种类型的对象转换为另一种类型。 原因多种多样; 一个原因是要区分外部和内部实现,另一个原因是要用其他信息丰富传入的数据或在将数据发送给用户之前过滤掉数据的某些方面。 有几种方法可以实现对象之间的转换:

    1. 幼稚的方法

      将转换器代码显式添加到该对象:

      case class ClassA(s: String)
      
      case class ClassB(s: String) {
         def toClassA = ClassA(s)
      }

      虽然这是最直接,最明显的实现,但它确实将ClassA和ClassB联系在一起,这正是我们要避免的。

    2. 胖肚子综合征

      当我们要在对象之间进行转换时,最好的方法是将逻辑从类中重构出来,使我们可以分别对其进行测试,但仍可以在多个类上使用它。 典型的实现如下所示:

      class SomeClass(c1: SomeConverter, c2: AnotherConverter, ...., cn, YetAnotherConverter) {
      ...........
      }

      转换器本身可以实现为普通类,例如:

      enum CustomToStringConverter {
      
          INSTANCE;
      
          public ClassB convert(ClassA source) {
              return new ClassB(source.str);
          }
      }

      这种方法迫使我们为需要这些转换器的每个类包括所有所需的转换器。 一些开发人员可能会想模拟那些转换器,这会将他们的测试与具体转换器紧密耦合。 例如:

      // set mock expectations
         converter1.convert(c1) returns c2
         dao.listObj(c2) returns List(c3)
         converter2.convert(c3) returns o4
      
         someClass.listObj(o0) mustEqual o4

      我对这些测试不满意的是,所有代码都流经转换逻辑,最后您将比较某些模拟返回的结果。 例如,如果转换器的模拟期望之一不能完全比较输入对象,并且程序员将不匹配输入对象,则将使用any运算符,从而引起测试的争议。

    3. 蜥蜴的尾巴

      与Scala一起使用的另一种选择是能够继承多个特征并向转换器代码提供特征的能力。 让我们混合和匹配这些转换器。 典型的实现如下所示:

      class SomeClass extends AnotherClass with SomeConverter with AnotherConverter..... with YetAnotherConverter {
        ...............
      }

      使用这种方法将使我们能够将转换器插入多个实现中,同时消除了在测试中模拟转换逻辑的需求(或冲动),但这引发了一个设计问题–是将一个对象转换为与对象相关的另一个对象的能力吗?上课的目的? 它还鼓励开发人员将越来越多的特征堆积到一个类中,并且不要从中删除旧的未使用的特征。

    4. 鸵鸟方式

      Scala允许我们隐藏问题并使用隐式转换。 这种方法使我们能够真正隐藏问题。 现在,实现将如下所示:

      implicit def converto0too2(o0: SomeObject): AnotherObj = ...
      implicit def convert01to02(o1: AnotherObject): YetAnotherObj = ...
      
      def listObj(o0: SomeObj): YetAnotherObj = dao.doSomethingWith(entity = o0)

      该代码实际执行的操作是将o0转换为o1,因为这是listObj所需要的。 当结果返回o1并将其隐式转换为o2时。 上面的代码对我们隐藏了很多,如果工具没有向我们显示这些转换,我们将感到困惑。 当我们想要在具有相同功能和目的的对象之间进行转换时,隐式转换有效的一个好用例。 这方面的一个很好的例子是在Scala列表和Java列表之间进行转换,它们基本上是相同的,我们不想在我们在这两个列表之间进行转换的所有地方乱扔我们的代码。

    总结一下我们遇到的问题:

    1. 构造函数中冗长且未使用的垃圾特征或垃圾类列表。
    2. 不能代表班级真正目的的特质。
    3. 隐藏其真实流程的代码。 为了解决所有这些问题,Scala通过使用隐式类创建了一个很好的模式。

    要编写转换代码,我们可以执行以下操作:

    object ObjectsConveters {
    
    implicit class Converto0To1(o0: SomeObject) {
       def asO1: AnotherObject = .....
    }
    
    implicit class Converto1To2(o0: AnotherObject) {
       def asO2With(id: String): YetAnotherObject = .....
    }

    现在我们的代码将如下所示:

    import ObjectsConveters._
    
    def listObj(o0: SomeObj): YetAnotherObj = listObj(o0.asO1).asO2With(id = "someId")

    这种方法允许我们同时隐式和显式。 通过查看上面的代码,您可以了解o0转换为o1,结果再次转换为o2。 如果未使用转换,则IDE将优化我们代码中的导入。 我们的测试不会提示我们模拟每个转换器,从而产生规范,这些规范解释了类中代码流的正确行为。 请注意,转换器代码已在其他地方进行了测试。 这种方法使我们可以在代码的其他地方编写更具可读性的测试。 例如,在我们的e2e测试中,我们减少了定义的对象数量:

    "some API test" in {
       callSomeApi(someId, o0) mustEqual o0.aso2With(id = "someId")
    }

    现在,此代码更易读,更有意义。 我们传递了一些输入,结果与我们在API调用中使用的对象相同。

    翻译自: https://www.javacodegeeks.com/2014/07/explicit-implicit-conversion.html

    显式转换 隐式转换

    展开全文
  • 近日,在中国北京举办 CIKM 2019 AnalytiCup 中,由来自浙江大学、中央财经大学、阿里巴巴等机构组成的团队 WWG 摘得「用户行为预测」赛道的桂冠。 CIKM 是中国计算机学会(CCF)推荐的数据库/数据挖掘/内容检索...
  • 用户行为序列推荐模型

    千次阅读 2019-12-20 17:14:22
    导读:今天我们谈谈用户行为序列上的推荐模型。首先我们对序列推荐问题做一个定义和描述,然后主要讲述可以用在序列推荐任务中的 NN 模型,最后给出一点个人看法以及文中相关的参考文献供参阅。 用户行为大多数情况...
  • 根据用户是否主动参与分为显式与隐式两种挖掘模式,因为显式的动静比较大,有很大局限性,所以为了保证结果准确性以及提高用户接受度,一般都采用隐式。 用户的日常交互行为会产生四类关键数据:鼠标移动轨迹、...
  • 1 用户大多具有懒惰性,不愿意对物品进行评级:例如大部分人对购买的物品不愿意给出评价,这体现了一种用户懒惰行为 2 用户可能撒谎或者只给出部分信息:如果某人克服了懒惰性,真的对物品进行评分,该用户也可能...
  • 关于隐式挖掘网站用户行为的分析[@more@] 如何了解用户和需求 如何了解用户需求?根据用户是否主动参与分为显式与隐式两种挖掘模式,因为显式的动静比较大,有很大局限性,所以为了保证结果准确性以及提高用户接受度...
  • 针对在多用户、多Web站点的网络访问环境下存在的数据采集...实验结果表明,该方法可以有效地采集浏览行为数据并清除大量的附带请求,抽取出能够反映用户显式点击的页面基请求,为用户浏览行为建模提供准确的数据源。
  • 显式转换 (288P) 使用关键字 checked 和 unchecked 来设置“ 溢出检测上下文” (291P) checked 和 unchecked 运算符(291P) checked 和 unchecked 语句 (292P) 显式数字转换 (292P) 整数类型到整数类型 ...
  • 综合介绍了目前国内外对于用户行为数据收集和分析方法所进行的研究, 各种方法的特点, 并介绍一些利用相应方法所开发出的工具实例, 使得建设的网站更加符合用户的需要, 以保障用户与网站之间沟通的顺畅。  随着In ...
  • 隐式动画和显式动画

    千次阅读 2015-06-18 13:20:37
    隐式动画和显式动画 隐式动画 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情。但是动画师Core Animation库一个非常显著的特性。这一章我们来看看它是怎么做到的。具体来说,我们先来讨论...
  • 推荐系统中的用户偏好

    万次阅读 2017-05-31 17:22:03
    如何根据已有的用户行为和信息,准确地对用户偏好进行预测是一个很重要的问题。用户偏好模型如图所示,我们可以利用用户的行为信息对其偏好进行建模。可以把这些信息分为显式(explicit)行为和隐式(implict)行为。...
  • 回顾网站数据分析历史,从“您是第***位来访用户”到现在百家齐放的专业工具提供商,网站分析已经逐渐发展衍化成一门科学。但面对形态各异的分析数据,很多人仍然困惑于数据的来源,了解数据的收集原理,也许对你...
  • 用户画像是基于用户分群的结果对用户的属性、会话环境和行为进行形象的多维画像展示。 1. 为什么要进行用户画像 任何企业推广我们都希望能做到精准营销,用户画像和标签则是对精准营销最直接和最有价值的支持,企业...
  • 隐式接口和显式接口 C#中对于接口的实现方式有隐式接口和显式接口两种,本文讨论了隐式接口和显式接口的一些区别,并延伸了语言设计层面背后的一些个人体会。 隐式实现和显示实现的例子 隐式地实现接口成员 创建...
  • 这些函数称为特殊成员函数,它们使 C++ 中的简单用户定义类型的行为如同 C 中的结构。也就是说,可以创建、复制和销毁它们而无需任何额外编码工作。C++11 会将移动语义引入语言中,并将移动构造函数和移动
  • 显式默认设置的函数和已删除的函数 http://msdn.microsoft.com/zh-cn/library/dn457344.aspx Visual Studio 2013 此主题尚未评级 - 评价此主题 在 C++11 中,默认和已删除的函数可使您显式...
  • 方法利用ABAQUS用户自定义材料程序VUMAT接口,开发用于显式动力分析的梁单元混凝土单轴本构模型,并编制相应的计算程序,对低周往复加载下的钢筋混凝土柱进行数值模拟计算.结果数值模拟结果能够较好地反映轴力对钢筋混...
  • 本文csdn博客链接:... ...     官方一点,先解释下什么是协调机制。协调机制是指多个子问题求解器agent之间进行信息交互并因此决定自己行为时所共同约定的规则。设计良...
  • 访问者如果访问了网站上的一个“隐含”内容,就会触发服务器脚本封杀这个用户的 IP 地址,把这个用户踢出网站,或者采取其他措施禁止这个用户接入网站。实际上,许多商业模式就是在干这些事情。  下面的例子所用...
  • 这包括如何使用PAC文件和WPAD来在web浏览器中配置显式的代理设置,减少使用web缓存的WAN带宽,将安全策略应用于基于HTTP头的web代理通信,并对显式的web代理用户进行身份验证和监视。 web代理接收或拦截从客户机到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,888
精华内容 39,555
关键字:

显式用户行为