CWYAlpha

Just another WordPress.com site

Thought this was cool: 推荐系统应用(四)—微博类

leave a comment »


在前面的文章中写到了推荐系统在音乐、资讯、电影方面的应用,这篇文章来聊聊推荐系统在微博的应用。

一、出发点

新浪微博是当前最火的sns网站之一,我每天都从微博上获得大量的有用的信息,并且可以和很多兴趣相同的朋友一起来讨论这些信息。但随着用户的关注数量越来越大的时候,我们每天都会被淹没在大量的信息中,其中包含了很多的“垃圾”信息。回想一下我们为什么关注了那么多的人?因为他一直都在提供我想要的信息,或者因为他某一次很有用的信息我关注了他,或者是他是一个大号,每天都发一些段子在上面让我觉得很有意思。但问题在于,关注的那么多对象中很少会有他的每条讯息都对你十分有用的情况,这个时候就产生了所谓的“噪声”。(当然,你关注的某个女孩,也许她发出的任何一条围脖对你来说都是一种非常有用的信息)当我们关注的用户很少很少时,基本上每天登几次微博就可以获取到那些有用的信息;而当我们关注的人多到一定程度时,我们甚至上个厕所的功夫已经更新了好几百条了,无疑我们会损失掉一些有用的信息。

另外,还有一种特别的“噪声”来自于某个大号VS某个大号,他们的粉丝群十分的庞大,导致你的页面充斥着大量的关于他们两个人斗来斗去的信息,但实际上你觉得这些东西很无聊,有没有一种过滤机制来帮你滤掉这些内容呢?肯定有,一是设置屏蔽词,只要和这两个人有关的内容统统屏蔽掉;二是建一个推荐系统,通过你的行为来了解到你真的不喜欢看到这些无用的争吵信息,从而帮你过滤掉这些信息。

二、推荐的方式

1、将你关注的微博按照你的兴趣度和时间进行排序,也就是新浪微博自己做的猜你喜欢的功能,在这种方式下,系统帮助你过滤掉了大量你可能不感兴趣的信息,并且可以分时段展示给你,比如你可以看到一个小时之内的可能感兴趣的内容。这个功能据说新浪微博开放了接口,但我调用的时候告诉我存在系统错误。大家可以去试试看。

2、通过分析你以前的微博使用行为数据,分析那些你可能感兴趣的微博的内容,然后在新浪微博的全网进行寻找相似的微博然后推荐给你。这是一种典型的基于内容的推荐系统。这种方式的推荐结果会给出大量的你没有关注过的人发出的你可能感兴趣的微博。如果这个东西做的很好地话,会产生另外一个功能,就是好友的推荐,一种实打实地通过兴趣来推荐好友,而没有利用任何别的信息,当然包括“六度”。

3、当然我们可以采取熟悉的协同过滤算法来做推荐。也就是推荐给你所谓的“和你兴趣相投的人他们感兴趣的内容”,“喜欢这种微博的用户还可能喜欢的微博内容”等等。这个说法或者说这个算法的套路很清晰,但效果会如何呢?我估计不会太好,因为将大量的行为转换为一种比较定量的评价分数是一个很不客观很tough的事情。(不过也说不好,需要通过实践来检验)

4、一种组合方式。来对比下各种方式的优劣。

第一种方式:完全是个过滤器,帮用户过滤掉了可能不感兴趣的微博,并且可以按照时间段来阅读这些可能感兴趣的微博内容。比如以一个小时为例,系统通过计算最近一个小时内用户关注的所有微博和他们之前通过历史行为产生喜好态度的微博进行相似度计算来完成推荐列表的生成。这个过程的关键是分析用户的历史行为,透过这些行为来判断用户对哪些微博感兴趣或者判断用户对哪些用户感兴趣,从而给出推荐列表。这其中有个绝对不能忽视的问题存在,就是你所拿到的行为数据的时效性,因为用户的兴趣有长期和短期之分,你拿到的分析数据到底是不是可以和用户的口味对上呢?

第二种方式:原理和第一种方式有所不同,不同的地方在于(1)帮助用户不断地挖掘新的关注点出来,因为它是面向全网进行推荐的;(2)正是因为在全网进行推荐,就不可能通过相似度的方法来做推荐结果,可以利用新浪微博提供的搜索接口来检索相关的微博来做推荐。这个时候用户会看到很多的陌生的微博号发出的很多可能感兴趣的东西。我估计用户会有三种态度,(1)wow,surprise!原来微博上还有这么多和我兴趣相同的人哈,他们也在关注这些内容,这个推荐结果真不赖!(2)我c。。。这推荐的什么乱起八糟的,怎么全是天气预报啊。。。(3)无聊的东西,我都懒得上微博。。。当然做这个产品的人希望每个用户都会像第一种用户一样,这也是他们的目标,而第二种用户则是他们不断努力改进的一个重要原因,第三种用户人家连微薄都懒得上,那么推荐也就没什么意义。

第三种方式:第三种方式完全不需要做微薄内容的相似度计算,只需要找到哪些用户是兴趣相似的,或者哪些微博是相似的(不是通过内容来计算,而是通过群体智慧)整个过程较前两种方式会简单一些,但效果我觉得应该不如前两种那么理想。

三、如何知道用户对哪些微博感兴趣呢?

上面的内容说的再好,也不能解决问题,到底我们如何知道用户对哪些微博感兴趣呢?我们可以利用哪些数据呢?

1、用户发布过的微博。通过对用户发布的微博进行分析,可以知道用户对哪些关键词感兴趣。

2、用户转发过的微博。用户既然转发了这条微博,很大的可能性是因为他感兴趣,不过这里有个问题是,我们不知道他是对微博本身的内容感兴趣,还是对在他之前转发这条微博的人的评论感兴趣。

3、用户评论过的微博。同样有个问题,评论有一定的概率是可以判断用户的感情色彩的。我想这个需要用语义分析来判断用户到底是喜欢这条微博还是不喜欢。

4、用户收藏的微博。我想这个可以很好地利用,他既然收藏,那一定是感兴趣了。不然他干吗要收藏这条微博?

5、关注的话题。

6、参加的活动。

7、关注关系(关注和相互关注)。

8、搜索过的关键词。

当然这里列的可用的数据可能不全,欢迎补全。

我想分析用户的行为来判断用户对哪些微博感兴趣是一个很关键的步骤,会直接影响到推荐的效果。

四、如何做反馈

任何一个推荐系统都是一个闭环系统,必须有一个反馈系统来判断算法的优劣和推荐的效果。

最最简单的方式是像豆瓣fm那样,在每个推荐结果后面加个心和垃圾桶。

不过很多的推荐系统实例都证明了这种效果不会太好,很少会有那么愿意配合反馈的用户(除非是自己内测或者是找人专门做测试的)。那么大部分的反馈效果评价还是要通过用户的行为(即如何判断用户对哪些微博感兴趣)。

五、结束语

其实微博的推荐和资讯类的推荐很多方面都很像,但微博具有了sns的特点,信息和关系更加丰富一些。最近在使用一款叫做“微精”的产品,就是做微博的推荐系统。大家可以关注。

 

from 阿俊的博客: http://somemory.com/myblog/?post=37

Written by cwyalpha

五月 22, 2012 在 3:09 上午

发表在 Uncategorized

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: