CWYAlpha

Just another WordPress.com site

Thought this was cool: 尝试pagerank做围脖局部影响力计算

leave a comment »


最近用pagerank的思路对围脖局部影响力做了个简单的计算,最后的效果一般。

思路如下:

(1)以若干数量的优质用户为种子用户开始算法。

(2)获取种子用户的关注列表和转发的围脖内容。

(3)利用得到的data构建图,如果用户A关注B,则添加一条边A->B;

如果用户A转发B的围脖,同样添加一条边A->B;

如果用户A既关注B,也转发了B的围脖,权重会变化;

因为一个用户很有可能转发同一个用户的多条围脖,所以权重和转发的次数也有关系;

由于关注和转发这两种行为对于影响力的影响也是不同的,所以两种方式的权重也是需要好好想想的。

(4)通过每个种子用户的关注列表以及由转发关系可以发现新的用户,添加这些新的并且不同于已有的用户进入种子用户列表中,重复(2)和(3)的工作。

(5)结束条件:
        1)种子用户列表中的用户数量超过一定数量。

        2)发现新用户的速度下降到某个阈值。

这样我们可以构建一个为原始优质种子用户中心的社交网络图谱,大多数的转发行为都以他们为中心。
然后利用pagerank的思路,对这个graph进行计算,得到每个用户的pagerank值,从而进行影响力排序。
这里有几个比较重要的地方:
(1)数据量要有一定规模,可以保证这个社交网络的完整性。不然的话,在做pagerank计算的时候会发现除了一些优质的种子用户所在的行有足够的数据可以计算,其他绝大多数的行都是0.
(2)关于转发和关注的权值分配对于结果的影响比较大。由于围脖是一个靠转发来传播信息的社交网络,所以转发占有绝对的权重,并且会根据转发次数的不同来修改这些权重。这个权值需要用一些别的更好的方法来确定,如果是拍脑袋去定的话效果会不好。

(3)关于计算。因为pagerank要对矩阵做运算,所以数据量的规模越大,对计算资源的要求也就越高。这也是我遇到最头疼的一个问题。(因为我是用个人电脑做计算的)关于这个问题,建议可以学习parallel pagerank。

(4)关于实现。因为在这个过程中需要大量的用到围脖的api,会导致获取数据的时候遇到一些麻烦。比如你长时间访问api,超过了时间限制,就会被forbidden,这个时候需要换appkey,甚至换个user,严重的话得换ip。所以在调围脖api的时候,要注意控制好速度,并且同时做好一些异常的捕获和预防措施。否则收集到的信息就可能会缺东西。

个人觉得这个思路还是比较靠谱的,但有些地方做的不够好,所以用了少量的data做了个结果不是很尽如人意。
希望看到这篇blog的高手前来拍砖和支招儿。
另:不少童鞋询问爬围脖数据的方法。
大概的思路有两种:
(1)模拟登录,然后调用围脖的api。这样的好处是,可以获得结构化的json数据。不好的地方在于,要时刻提防挨批速率限制,用户限制,ip限制等等问题。我采用的就是这种。
(2)模拟登录,然后用ajax爬网页数据。这种方式我没有用过,不过网上有介绍的文章。(去看看
最后附一模拟登录的python源码(点我下载

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

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 博主赞过: