浅谈微博精准推荐——用户行为挖掘与相似用户挖掘

引言:在推荐系统中,通过对用户数据的挖掘,抽象出用户感兴趣的“商品”,以微博的博文推荐为例,“商品”表现为用户的博文,在博文精准推荐中,其核心问题是在给定的环境下,为用户推荐高质量且符合用户兴趣的博文。
本文选自《Python机器学习算法》。

精准推荐

1 精准推荐的项目背景

  在社交网络中,每一个用户只是整个网络中的一个节点,一个简单的网络结构如图1所示。
        
                        图1 网络结构
  在微博中,用户可以通过“关注”行为成为另一个用户的粉丝,“关注”行为是有向的。通过“关注”一个用户后,我们可以在我们的feed流中看到对方的信息。在微博中,通过这样的方式,我们可以接触到更多的信息。
  然而,在信息过载的时代,信息呈现爆炸式增长,如在微博中,每天有大量的微博被创作和转发,信息量的爆炸式增长在给用户不断带来新的信息的同时,也增加了用户筛选信息的难度,为了能够为用户推荐其感兴趣的信息,我们首先要分析出该用户的兴趣,从海量的信息中选择出与用户兴趣相似的信息,并将这些信息推荐给用户。推荐系统(Recommendation System,RS)正是在这样的背景下被提出的,推荐算法根据用户的历史行为,挖掘出用户的喜好,并为用户推荐与其喜好相符的商品或者信息。推荐系统的任务就是能够连接信息与用户,帮助用户找到其感兴趣的信息,同时让一些有价值的信息能够触达到潜在的用户中。此时,对用户兴趣的精准挖掘,成为为用户精准推荐博文的关键任务。

2 精准推荐的技术架构

  在构建推荐系统的过程中,为了能够为用户提供精准的博文推荐,其架构的设计主要包括四层:数据生产层、存储层、候选过滤层和排序层。最终输出排序后的结果,具体的精准推荐的架构设计如图2所示。
        
                      图2 精准推荐的架构设计
  在图2所示的精准推荐的架构设计中,首先,在数据生产层,我们需要利用离线挖掘的方法对用户兴趣进行挖掘,挖掘完成后,将用户数据存储到对应的数据库中,我们称为用户数据库。同时,我们需要将待推荐的微博也存储在数据库中,我们称为推荐微博数据库。在用户数据挖掘中,通常使用到的方法包括协同过滤算法、标签传播算法、word2vec等。
  在存储层,将挖掘好的用户兴趣存储到对应的数据库中,我们通常可以使用Redis等NoSQL数据库。
  在候选过滤层,当用户请求时,首先从用户数据库中查找到用户的兴趣,再根据查找到的用户兴趣、到推荐微博数据库中进行请求,查找到对应的待推荐的微博,其具体过程如图3所示。
      
                      图3 查询操作
  当通过如上的操作查询出了最终的结果后,我们需要对其中的结果进行合并和过滤,以保证最终结果的唯一性。
  在排序层,我们需要对所有的候选进行排序,以确定最终的曝光顺序,在排序阶段,使用的评价指标通常为点击率CTR,即:                  
                   
  其中,#impression表示的是曝光的次数,#click表示的是点击的次数,在微博中,点击的行为主要包括:“转发”、“评论”、“点赞”、“点击短链接”等。通常采用机器学习的算法对候选进行排序,排序的主要方法有:Logistic Regression算法、因子分解机FM算法、梯度提升决策树GBDT算法等。

3 离线数据挖掘

  在精准推荐中,对用户的离线数据挖掘是很关键的步骤,常用的用户定向主要有:①人群属性定向(Demographic Targeting);②行为定向(Behavioral Targeting);③地理位置的定向(Geo Targeting);④相似用户的定向(Look-Alike Targeting)。
  人群属性定向指基于用户基本属性进行定向,包括年龄、性别等定向,比如为女性用户推荐化妆品类的微博。行为定向指的是基于用户的历史行为数据挖掘用户的兴趣,比如通过对微博中用户对博文的“转发”、“评论”、“点赞”等数据的分析,发现用户的兴趣。地理位置定向指的是利用移动设备记录用户的地理位置,为用户推荐相关的微博,比如用户在某个景点,我们为其推荐邻近地点的微博。相似用户的定向指的是利用已经找出的一些人,找到与其相似的用户进行定向。
  以上简单介绍了4种离线数据挖掘的方法,还有很多其他的挖掘方法。在本文中,我们重点关注行为定向和相似用户的定向。

基于用户行为的挖掘

  在微博中,有两方面的数据可以使用,一方面是用户之间的关注关系,这不部分数据体现了用户的社交属性;另一方面是用户的行为数据,主要包括用户的原创、“转发”、“评论”、“收藏”、“点赞”、“点击短链接”等,这部分体现了用户的兴趣属性,通过对不同类型的数据挖掘,我们可以获得用户不同维度上的相似性。
  在基于用户的行为的挖掘中,主要包括:

  • 基于互动内容的兴趣挖掘
  • 基于与待推荐微博博主的互动

1 基于互动内容的兴趣挖掘

  在微博中,用户的互动行为主要包括“转发”、“评论”、 “点赞”、“收藏”和“点击短链接”等。这些行为的背后,表明用户对这条微博的内容在某种程度上产生了共鸣,但是,在不同的行为之间,其能够代表用户的兴趣程度也是不一样的,如“点赞”行为只是对博文内容的认同,而转发行为,则更多地表明用户希望让自己认同的微博内容被更多人看到,更能表明用户的兴趣。
  基于互动内容的兴趣挖掘是指利用一些机器学习或者文本处理的方法,提取出用户互动微博文本中的核心词,一般提取核心词的主要步骤为:

  • 对文本进行分词,常用的分词工具有:paoding、FudanNLP、CRF++、jieba等
  • 去掉停用词,并计算剩余词的TF-IDF值,取TD-IDF值较高的词作为核心词

  以这些核心词作为用户的标签,并将这些信息保存到对应的数据库中,其具体过程如图4所示。
       
                      图4 基于互动内容的兴趣挖掘

2 基于与博主互动的兴趣挖掘

  当用户A与待推荐微博的博主之间有过互动行为时,在一定程度上表明该用户与博主之间存在某种兴趣上的相似性,对于博主发布的微博,用户A互动的可能性比较大,因此,可以选择将这部分用户作为待推广的候选集。
  在基于与博主互动的兴趣挖掘中,是指将微博博主的微博投放给与其互动过的一些用户。基于与博主互动的兴趣挖掘的主要任务是对历史的“转发”、“评论”、“点赞”、“收藏”等数据进行处理,从中提取出博主与互动用户之间的关系,并将这样的对应关系存入对应的数据库中,其具体的过程如图5所示。
       
                    图5 基于与博主互动的兴趣挖掘

基于相似用户的挖掘

  “相似用户”的概念在不同的应用场景下的理解是不同的,如基于相似兴趣的相似用户,基于不同群体的相似用户等。在基于相似兴趣的相似用户中,这些用户都对同一个事物有兴趣,如一群对“机器学习”感兴趣的用户的集合。在基于不同群体的相似用户中,这些用户可能是年龄区间也可能是消费能力相似,如大学生群体等。在精准推荐中,我们主要考虑的是基于相似兴趣的相似用户。

1 基于“@”人的相似用户挖掘

  从上面的分析中,我们知道,在微博中,一个用户与其粉丝之间的关系大致可以分为:

  • 社交关系:如亲戚、朋友、同事、同学等
  • 兴趣关系:如机器学习爱好者等

  一个用户与其粉丝之间存在某种相似性,或者是兴趣维度的相似,或者是群体间的相似。在微博中,为了能够定向让某个人看到,我们会在这条微博中加入“@”该用户的标记。“@”标记在一定程度上说明该信息与被“@”用户之间存在关系,而由上述的分析可知,用户与其粉丝之间存在社交关系或者兴趣关系,因此,这样的挖掘方法能够充分利用微博数据的特殊性。
  在基于“@”人的相似用户挖掘中,对于包含“@”信息的微博,通过对“@”用户的提取,查找到该用户的粉丝,并进行投放,需要查找的库为用户的粉丝库。

2 基于社区的相似用户挖掘

  社区划分是社交网络中研究比较多的一个话题,对于不同结构的社交网络有不同的社区划分算法。对于社区并没有明确的定义,通常对于社区的理解是:在网络中,由一些节点构成特定的分组,在同一个分组内的节点,通过节点之间的连接边紧密地连接在一起,而在分组与分组之间,其连接比较松散,称每一个分组为一个社区。社区划分算法通过某种方式将用户划分到不同的社区中,社区内部的连接较为强烈,社区与社区之间有比较明显的界限。
  在微博中,用户与用户之间的连接主要分为两种,一种是通过“关注”操作连接两个用户,另外一种是通过“转发”、“评论”、“点赞”、“收藏”、“点击短链接”等行为连接两个用户。在上述的两种连接中,前者的关系不仅包含了兴趣关系,也包含社交关系,而后者,更多倾向于兴趣关系。在这里,我们想要得到的更多的是用户之间的兴趣关系,因此,我们这里使用到的数据是用户之间的“转发”、“评论”、“点赞”、“收藏”、“点击短链接”等行为数据。
  从这些行为数据中我们可以知道,这些行为数据连接的两个用户之间的边是存在方向的,即构成的图是有向图。有向图是指图中的边是带有方向的图。对于有向图,每两个节点之间的边的条数是两条,分别为流出的边和流入的边,其流出边的总数为出度,流入边的总数为入度,有向图如图6所示。
 
                       图6 有向图
  对于节点5,其出度为2,入度也为2。对于更多的有向图的知识,可参阅相关图论的书籍。
  而对于标签传播Label Propagation算法,其对数据的要求是无向图,为了使得Label Propagation算法能够利用上述的行为数据对用户进行社区划分,我们将图中的流出边和流入边进行合并,合并的公式为:
               
  其中表示的是节点j到节点i的权重,表示的是节点i到节点j的权重,表示的是节点j到节点i的权重。通过参数α和参数β可以调节不同的权重比例。此时,我们可以利用Label Propagation算法对微博中的社区进行划分。
  我们对参数α与参数β进行了不同的取值,并利用30天的行为数据,最终得到,当α=0.6,β=0.4时效果比较好,最终识别出12629个社区。虽然我们挖掘出了这些社区,但是这些社区的质量参差不齐,有的社区内部较为活跃,而有些社区,内部并不活跃,我们试图将一些不活跃的社区从我们挖掘好的社区中去除,此时,计算每一个社区中的信息熵,熵越大表明该社区越活跃,因此,我们过滤一些不活跃的社区,保留活跃的社区。
  当有微博需要投放时,选择某几个社区,将微博投放给社区中的住户,选择社区的方式有很多种,比如:

  • 微博的主题与社区标签的匹配
  • 微博博主所在的社区

  在基于社区的相似用户的挖掘中,利用Label Propagation算法对社区进行挖掘,最终将社区对应的用户列表存储到对应的数据库中,其具体的过程如图7所示。
  
                    图7 基于社区的相似用户挖掘

3 基于协同过滤的相似用户挖掘

  对于相似用户的挖掘,除了上述的社区挖掘的方法外,还可以使用协同过滤的方法。在协同过滤算法中,主要分为基于用户的协同过滤算法和基于项的协同过滤算法,其主要的区别是在相似度的计算过程中。
我们以基于用户的协同过滤算法为例,在基于用户的协同过滤算法中,主要计算任意两个用户A和B之间的相似度,并利用该相似度将用户B互动过而用户A没有互动过的商品推荐给用户A。
  在微博中,每个用户都有自己的粉丝列表,我们可以利用两个用户的粉丝列表来度量这两个用户之间的相似度,假设用户A的粉丝列表集合为,用户B的粉丝列表集合为,那么,用户A和用户B的相似度为:
                
  其中,表示的是的交集,表示的是集合中元素的个数。
  本文选自《Python机器学习算法》,点此链接可在博文视点官网查看此书。
                  

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                     

时间: 2025-01-21 12:30:27

浅谈微博精准推荐——用户行为挖掘与相似用户挖掘的相关文章

佳年华:浅谈微博营销的一些经验分享

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 如今微博时代,看公交上地铁上拿着手机的都在那里刷微博,微博成为了生活中不可缺少的一部分, 像现在一些人问别人要联系方式也都变成了微博号.微博,就是微型博客.主要在于它的即时性.用户人数之多,几乎上网的人都有自已的微博.用户多了.微博自然也可以进行营销,各大微博公司也都推出了关于企业微博或者其它的微博.微博的营销也越来越深入人心,微博也成为了许

资深三级片明星手机丢失 浅谈微博营销意义

中介交易 SEO诊断 淘宝客 云主机 技术大厅 相信大家都有听说任达华,最近任达华有发这么样一条微博,"任达华:刚从泰国开心渡假回来,今天去跑马地马场跑步,两部手机都同时掉了,希望拾取者能把手机归还我,因为里面大部分都是我女儿从小到现在的珍贵照片,非常感谢!"相信这样的微博,对于大家来说,是非常常见的,尤其会让大家想起"艳照门"事件,引起的反响是非常大的.我们一起来看看关于任达华这条微博,各界是如何回应的? 网友给力评论: SAGA1:我也有类似经历,不过是被偷的,

孙强:浅谈微博客中网址缩短服务

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 微博客火了 ,它服务的是短小精悍,就称呼它们为"围脖,微服务",最常用到的微服务之一那就是网址缩短.网址缩短(Short URL),顾名思义就是把网址缩短.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助缩短的网址您可以用简短的网址替代原来冗长的网址,让使用者可以

浅谈微博营销的基础

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 如今微博已经成为时下最火的网络营销平台,各大企业也都纷纷踏入微博营销这个领域中,微博营销中的基础就是粉丝.对于微博中的粉丝有着这样的一个说法:粉丝数量超过一百,就相当于一本内刊;超过一千,相当于布告栏;超过一万就是一本杂志;超过十万,那就是一份报纸;超过百万就是全国性报纸;超过千万那就是电视台.可见粉丝的力量是强大的.如何快速地积累人气和粉丝

浅谈Javascript数组(推荐)_javascript技巧

在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 首先,大概说说数组的基本用法. 数组,即Array类型,是开发中最常用的类型之一,javascript中的数组和其他语言最大的区别就是每

浅谈微博App在网站推广中的应用

中介交易 SEO诊断 淘宝客 云主机 技术大厅 随着微博被吵得越来越热,微博推广.微博营销也被越来越多的站长所重视.目前比较常见的有以下几种方式: 1.建立网站的官方微博账号推广 通过在微博账号发与网站主题相关的微博来凝聚粉丝,传达自己网站的理念,树立自己网站的品牌形象,在微博与网站的用户或潜在用户进行交流.在这个方面,趣玩网的腾讯微博做得不错.这个方式需要长期的积累和经营,才能见到成效. 2.微博转发抽奖 这种推广方式被很多网站尝试.优点是传播快,传播广.但是转播微博的人,往往都是关注于奖品,

浅谈微博营销提高转发率的五种方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多人都知道如何提高自己微博的粉丝群体,但是怎么提升自己微博的转化率往往变得束手无策,总感觉自己的粉丝听众不可谓不多,但是每次发表的微博只有几个人的转载,这样的营销效果自然是很差的,下面我们就来介绍几种提升微博转发率的方法,希望能够对从事微博营销人员有所帮助! 一:和已经获得认证的微博主进行互动 当我们微博有了一定的粉丝之后,就不能够缺少主动

浅谈微博用户如何做好搜索引擎优化

最近对微博的排名进行了系统的研究,sembk的座右铭是无搜索不seo,微博作为新兴的营销平台,做好微博SEO也是今后微博营销的重点,微博seo的优化相对网站优化来说相对比较容易,做好微博SEO将会为网站带来可观的流量. 先以腾讯微博SEO为例:腾讯的搜索分为综合搜索.用户搜索.广播搜索.标签搜索跟名单搜索. 我们在右上角搜索框搜索SEO时候,出现的页面如下: 首先默认的是综合搜索,综合搜苏由两步分构成,上部分是用户的排名,下半部分是广播排名;用户排名是靠前的具有如下共同点: 1.经过腾讯认证的,

实战总结——浅谈微博之品牌塑造

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 微博,简称--围脖,是新型博客,简单来说就是一句话博客.大家在博客里说一句话,然后大家可以进行评论和转载. 虽然围脖的盈利模式还不明确,但是各大门户已经把围脖经营的如火如荼,各种各样的围脖犹如雨后春笋般的涌现到人们的眼前.作为一个推广人员的我,当然也不会不把眼光投放在这一新型网络平台上.下面就针对这几天的围脖推广进行一下总结. 一.围脖的选取