2,558 views

三个评分算法

2011年5月14日 3 条评论

上次说到了一些改进豆瓣电影打分规则的东西,从网上找到了几个其他网站的评分标准,转载至此。

IMDB排名:

IMDB的排名评分标准应该是相当完善的,根据贝叶斯统计公式算出来加权分,对加权分有影响的因子有普通方法计算出来的平均分,投票人数和目前所有电影的平均分,这样的计算结果显示的是电影之间的相对关系,可以说跟豆瓣、时光这种靠平均统计打分,更能体现出电影的实际质量。

具体的计算公式如下:

weighted rank (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C

其中:

R = average for the movie (mean) = (Rating) (是用普通的方法计算出的平均分)

v = number of votes for the movie = (votes) (投票人数,需要注意的是,只有经常投票者才会被计算在内,这个下面详细解释)

m = minimum votes required to be listed in the top 250 (currently 1250) (进入imdb top 250需要的最小票数,只有三两个人投票的电影就算得满分也没用的)

C = the mean vote across the whole report (currently 6.9) (目前所有电影的平均得分)

另外重点来了,根据这个注释: note: for this top 250, only votes from regular voters are considered.

只有‘regular voters‘的投票才会被计算在IMDB top 250之内,这就是IMDB防御因为某 种电影的fans拉票而影响 top 250结果,把top 250尽量限制在资深影迷投票范围内的主要方法。

regular voter的标准不详,估计至少是“投票电影超过xxx 部以上”这样的水平,搞不好还会加上投票的时间分布,为支持自己的心爱电影一天内给N百部电影投票估计也不行。因此,细心的人可以注意到,列入IMDB top 250的电影,其主页面上的分数与250列表中的 分数是不同的。由于IMDB是美国的网站,所以评分的影迷大多为美国人,而且美国人好像只关心本国的影片,前100名的电影大多是美国的。http://zhidao.baidu.com/question/46966353

一些更详细的东西可以看这篇:http://i.mtime.com/drunks0s0/blog/456016/

Reddit文章自动更新:

来源于这里: http://www.guwendong.com/post/2008/social_media_algorithm_reddit.html

假设有一篇文章《Social Media Algorithm》,与其相关的有两个时间 A 和 B,其中,A 为某篇文章的具体发布时间,精确到秒;B 为一个固定的时间常量,2005-12-8 7:46:43。则可以计算得到 A 和 B 间隔的秒数 ts,

另外,U 表示 《Social Media Algorithm》一文得到的支持票数,D 表示得到的否定票数,则可以计算得到 x,、

定义变量 y,

定义变量 z,

最后定义得分公式 为,
reddit05

2、公式解释

1)时间点 B,2005-12-8 7:46:43,是一个固定的值,猜测应该是 Reddit 的上线时间。ts 反映了文章的新鲜程度。引入 B 是一个非常优雅的技巧,它使得新鲜度的度量可以独立于系统当前时间。

2)y 表示支持数和否定数之间的相对关系。被否定多的文章得负分,这是合乎常理的。

3)45000 代表的是一个 12.5 小时周期内的总秒数。它 与 yts 一起使用,随着时间的推移,新文章的得分会逐渐超越高投票数的老文章,从而实现自动更新的效果。

4)log10 的使用是另外一个技巧,它可以使得早期的投票获得更大的权重。比如,前 10 票获得的权重,与 11 到 101 票所获得的权重是一样的。

整个公式的效果可以简单解释为:在 00:00:00 发布的一个帖子 a,如果它想在 12.5 小时之后,能够取得与在 12:30:00 发布的帖子 b 同样的得分,则必须在 00:00:00 点到 12:30:00 这段时间内,把它的得票数扩大 10 倍。注:这个解释不精确,但容易理解一些,不然写着太绕。

不过,其中 45000 与 log10 的选择不是通用的,得根据自己网站实际的情况进行修正。这是一个 trial-and-error 的过程,也是作算法的人最头大的部分。

最后一个就是电影《社交网络》里那个Facemesh的评分规则了:

根据Wiki的介绍,此排名系统出自于匈牙利裔美国物理学家Arpad Elo,最初应用于国际象棋排名,现在也广泛应该于足球、篮球等运动。中文称为等级分排名。

Elo假设:

1.参赛选手在每次比赛中的表现成正态分布;后来普遍认为Logistic分布更为合理

2.在一局比赛中,赢的一方被认为表现较好,输的一方被认为表现较差;若平局,则双方表现大致相当。虽然这个假设貌似很稀松平常算法如图:

Ea为选手A的期望表现,Ra为选手A当前的等级分排名。当选手A和B进行比赛时,可根据公式算出两选手的期望表现。

Ea+Eb=1 胜方得1分,负方得0分。(在电影中,不会出现平局)

如果选手的表现比期望要好,那么此选手的排名应该上升。相反,若表现不如期望,则排名会下降。

Sa为选手A本局的得分(1或0),Ra为选手A的期望表现。K为常数,在大师级象棋赛中通常取16。得到的Ra’为选手本局比赛后的等级分排名。

初始可认为每个人的等级分排名为0。

第一局是A和B进行比赛。此时Ra=Rb=0,Ea=Eb=0.5。

假设本局A胜B负,则A的得分为1,B的得分为0。

Ra’=0+16*(1-0.5)=8

Rb’=0+16*(0-0.5)=-8

分类: 杂项 标签: , , ,
68 views

第一次参加非技术类面试

2011年4月26日 没有评论

最近腾讯在招暑期实习生,虽然知道这算是正式招聘的前奏,但是估计老师不会再我放出去,所以本来也没打算参加,后面看到BBS上贴通知的时候,说拿到实习offer不去也可以的,而且可以在正式招聘的时候直接进复试,就觉得放弃了有点可惜,最后还是网投了一份简历,技术类和业务类各申请了一个职位,一个是后台开发一个是产品策划。

两个职位都收到了笔试通知,但是时间相同,最后想了下,决定去参加产品策划那个,毕竟自己还没有过非技术类笔试面试的经历,考虑到即使拿到offer也多半去不了,就还不如多个不一样的经历,反而更有收获。

笔试顺利通过,第二天参加面试。一面是小组讨论,6个人分成两个小组,问题是一家牛肉面馆为了激励伙计,一开始政策是员工每卖出一碗牛肉面就提成一元,但是造成了伙计为了吸引顾客,每碗面里都放了很多牛肉,结果入不敷出,后来改变政策,给每个伙计的牛肉定额,这样又造成了伙计怕牛肉用光,就在面里放的量很少,吸引不到顾客,请每个小组拿出一个解决方案,帮面馆促销生意,总共25分钟,最后5分钟每个小组选出一个人来总结。比较碰巧的是我们这组三人都是成电的。一开始大家就先把时间分配好了,独立思考的时间,讨论的时间,总结的时间,陈述的时间。开始讨论的时候我先发的言,我的观点就是要认可老板这种激励制度,只不过这个想法在贯彻下去的时候遇到了问题,伙计的收入其实是应该跟面馆的经营状况直接挂钩的,出现问题是因为伙计没有意识到这点,只关注于眼前的利益。大家还是比较认可这个观点的,他们其他人也想到了这个问题,基本上我们3个人就是按照这个思路分析伙计跟面馆的利益关系,矛盾产生的原因,解决方案这些。我觉得我们这个组分析问题还是很有条理的,比较能找到问题的关键,大家也比较能吸收别人的观点。后面陈述的时候大家选我出来说,我觉得我表现的不好,主要原因有两点,一是原来没做过这种陈述,让我说的时候我就理了理我们讨论的思路,几个点,没有具体的组织语言,没想好具体怎么说,结果说的时候是按照思路来的,但是中间卡了壳,想不起语言怎么组织了,二就是习惯问题了,可能做技术做得多了,陈述的时候就想着用最简单的话把事情表达清楚就完了, 5分钟陈述时间,我感觉我说了可能就两三分钟,后面同组的一个同学还补充了一两分钟,我发挥不好,影响整体表现了…另外一组陈述的同学,我刚去的时候瞄到他简历了,好像是新闻专业还是什么的,感觉陈述的时候语言组织就顺畅很多。

接着收到二面的通知,连续三天,早上7点半就起来,做一个半小时的公交赶过去…二面还是一面那位大叔,而且好像还有可能是位师兄,因为他看了我专业之后,对我们学校的系别还挺清楚的。上来先自我介绍,我准备的比较仓促,简历上写的大部分都是项目和实习经历,感觉就不像是针对这个职位写的一样,说了下我从本科开始的经历,讲了讲项目经历和实习经历,因为是非技术类的,对项目经历也没怎么过问,说到在上海那边实习的时候问了一下我怎么回来了,还特意问了句是不是因为诺基亚退出,觉得MeeGo没希望了…问了我能不能到外地去实习,我说了可能拿到offer也要跟老师那里争取一下,不能确认,他多半应该也觉得我可能去不了,不知道后面被BS跟这个有没有原因。然后问了问我一直都是搞技术的,现在不做技术了,有没有觉得可惜。我回答说我觉得我们学校的学生素质比较好,做什么都做得好的,关键是找一个适合自己的方向,做技术是接受一种工程训练,更多的是培养思考问题的方式,我觉得我思维比较跳跃,喜欢互联网上的新鲜事物,有自己的个人博客,会写点自己的想法,给知名科技博客投过稿也被采纳过,有自己的看法之类的东西。然后就问了问我都投过那些,我就回答对苹果产品的一些看法,互联网应用上一些观点啊之类的,问了问我玩不玩微博,用的哪家的,我说用新浪,但是用的比较少,因为觉得新浪微博还是比较像传统媒体,跟朋友互动性不高,我觉得这个产品最后会跟新浪博客一样,不是成功的,然后又问我国内哪些互联网公司比较成功,我说按照web 2.0的一些概念,豆瓣算是比较成功的吧,其他的都不怎么行,然后又问我微博要怎么做,我说按照国内用户的习惯,目前来说新浪做成媒体那样算是一种模式,但是没办法留住用户,做成互动性很强的,能够接受的人又比较少,不太容易做成大众化的应用。然后问了一个我在微博上都关注谁,这个问题比较郁闷,因为我当初开新浪微博好像是因为空空老师在新浪开了,跑去特意关注一下的,后来也没怎么用过,新浪微博上就几个认识的人,还有电子科大校友会这些,其他的就真的只有空空老师了…我没太好意思说…因为一直上twitter,所以就说了twitter上fo的人,我说有连岳啊,和菜头这些,他就问我为什么关注这些人,我说以前看连岳的书,觉得他挺有意思,和菜头在网上是个比较有名的人,经常发一下很好玩的东西这些。后来回来之后,我特意查了一下,发现和菜头没有新浪微博,而且原来做过腾讯的微博总监,他们肯定很熟…不会认为我说新浪微博上关注和菜头觉得我是在扯谎吧…应该说二面那个大叔还是很nice的,语气比较和善,也没什么压力,但是我觉得还是有点紧张,回答问题的时候语速明显都比平时快很多,这种面试还不像那种技术类的,我参加技术类的面试回答都比较平稳的,会就说自己会的东西,不会就说自己的思路或者直接就说不会了,这种没有标准答案的问答,在回答的时候我觉得自己的表达能力还有待提高…

之后回来就没下文了,在BBS上看到他们都接到三面了,我应该是被BS了,具体原因不详,不过两次面试发现了自己的很多问题,希望以后再遇到这种场面,能拿出让自己满意的表现,我还是认为我们学校的学生不光会搞技术,做什么我们都能做好。两次面试,不超过一小时,来回在路上的时间大概有六七个小时,要是腾讯能做到对面试的人至少反馈一个评价就好了,尤其是这种实习生,反正还早嘛,至少能帮人再多提高提高啊。
Added at 04.27:
imageimage

嗯,其实找工作有时候也要看气场,比如教研室有位师姐本科就是省优秀毕业生,一堆光环笼罩在身上,当初就莫名其妙的被腾讯拒了,然后去了宝洁…就不去纠结被BS的具体原因了,还是将精力放到解决自己的问题上 😉

分类: 杂项 标签: ,
189 views

通过限制连接数控制P2P软件

2011年4月24日 没有评论

现在是跟几个同学共用一个账号,一台Linux主机连上外网,开启pptpd服务,我们用内网账号连接到VPN服务器,打开NAT转发基本上就可以了。具体配置步骤可以看之前的一篇

比较郁闷的是,有个小伙儿比较喜欢用QVOD在线看视频或者迅雷下东西,其实学校有IPV6,用IPV6下BT挺快的,习惯问题,没法让他改。之前试过比较暴力的方法,网速太卡的时候直接用iptables给他丢包,具体为:

iptables -A FORWARD -s 192.168.0.5 -m limit --limit 150/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.5 -m limit --limit 75/s -j ACCEPT
iptables -A FORWARD -s 192.168.0.5 -j DROP
iptables -A FORWARD -d 192.168.0.5 -j DROP

,根据包来限速,不过不怎么准的,因为包并不是固定大小。后来也觉得都是同学,还是找个比较温和的限速方式比较好,就去研究了一下tc,翻了两天文档,最后觉得太复杂,因为我主要就是想限制一下P2P,大家正常的应用还是不要影响到,tc下面如果根据服务划分队列的话,比较容易影响到其他服务,再说我们总共就四五个人用,人多的时候用tc对带宽进行整形控制比较好。还不够麻烦的。

后来想了个办法,限制每个ip的连接数应该可以达到控制P2P的目的,也不会影响正常的使用。

iptables -A FORWARD -s 192.168.0.5 -m connlimit --connlimit-above 150 -j REJECT 

网上看到帖子是用 iplimit,会报错:
Couldn’t load match `iplimit’:/lib/xtables/libipt_iplimit.so: cannot open shared object file: No such file or directory
是因为iptables后面的版本用connlimit替代了iplimit

分类: 杂项 标签: , ,
204 views

四月

2011年4月18日 1 条评论

回到学校其实也有10几天了,这几天还算比较悠闲,可以看看书唱唱K看个电影什么的,思考一下自己这大半年。

当初决定去Intel那边实习其实还是比较仓促,研一结束的时候感觉教研室做的要么是纯粹理论的研究,要么就一个项目做个好几年,不停地修修补补,自己实在是没多大兴趣。当时就一直在找实习,本来打算的是实习三个月到半年,给自己一个不一样的环境,多接触点不一样的东西对自己想问题也有帮助。后来一想,去个不知名的公司,老师不一定放人,去个大公司,像爱立信摩托罗拉那样的,对技术提升也不见得有什么帮助,干脆还是在学校里自己多看看书什么的吧。暑假都快结束的时候看到张扬他们在清水河畔上发的招聘信息,虚拟化的QA,自己觉得还比较有意思就投了一份简历,当时觉得Intel大公司嘛,自己也没什么求职经验,投个简历面一下当攒个经验。后面拿到实习offer以后,我当时其实也处于轻微焦虑的状态,觉得研一晃晃荡荡过去了,还不如我正经干事儿的时候三个月有意义,研二再这么过下去,这个研究生上的就有点不划算了,就决定去看看情况,跟老师说了之后,这事儿整的还挺纠结,胡老师还特意在教研室开了个会强调不准出去实习的事,不过最后总算还是争取到了。

跟老师谈妥后直接订了机票就飞过来了,在上海也没什么熟人,幸好有几位Intel工作的师兄一直挺帮忙的,尤其是绍辉,之前都不认识,在BBS发了个求助的贴,绍辉师兄就很热心的让我在他那先住了几天,后面又慢慢找的房子。后来离职的时候,因为之前都没跟别人说这事儿,farewell letter发出来华军看到了,又特意找我聊了聊,问了问我以后的打算,给了点建议。在上海的这段时间受他们照顾不少,挺感谢他们的。 阅读全文…

分类: 杂项 标签: ,
972 views

从豆瓣电影的打分规则想到的

2011年4月17日 6 条评论

今天去看了里约大冒险,客观的说,片子还凑合吧,回来在豆瓣上打了三颗星。让我感觉比较坑爹的是,这个片现在在豆瓣上是8.9分,我比较了一下,功夫熊猫是7.9,两部马达加斯加分别是7.6和7.5,同一个公司同一个团队制作的冰川世纪的三部分别是8.3、7.9、8.2。以上拿来对比的片儿,我觉得都比今天看的这个要强些,不知道为啥这个的打分这么高,因为是3D就牛逼咩?类似的结果出现在时光网上。

是不是电影刚上映的时候打分都要比过一段时间后的偏高些?

网上搜了一下,没找到豆瓣和时光网的评分标准,姑且认为是简单的算平均数,并且不排除电影刚上映,有人会请人专门去刷分。

相比较而言,IMDB的打分就真是太专业了,不过IMDB的打分主要是为了进行排名,很多新上映的片子要等到足够多的人去投票以后才能得到一个比较公正的分数,并不太适用于豆瓣,因为豆瓣只是单纯的评分,不进行排名。 阅读全文…

分类: 杂项 标签: ,
110 views

从新浪微博看新浪web 2.0化的脚步

2011年3月24日 5 条评论

http://www.ifanr.com/32489,这篇文章里讲了一些新浪微博与twitter相异的地方,总结下来有这么几条:1.微博有评论,而twitter只能Reply重新发一条,所以微博更符合“微”博客的定义;2.微博可以添加图片视频,但是twitter只能附上短链接;3. 两家对于开放的态度和目的差别比较大,twitter是从创业型公司一路走来,采取合作的态度走开放路线,有效地整合了资源抵御了互联网巨头,新浪本身就是巨头,有足够的资源,开放更多的是巩固已有成绩。除了这3点以外,我个人觉得还有两个不一样的地方,4.新浪的转发和twitter的RT,如果原作者删除以后,新浪转发的也会显示内容被删除,twitter还没遇到这种情况,新浪这一点其实比较有意思,估计是为了删帖的时候方便;5.在新浪微博的排行榜上,除了影视明星这样的公众人物以外,其他排在前面草根都为虚拟人物,比如“冷笑话精选”、“精彩语录”、“星座密语”等,而twitter上只有根据RT热度自动RT的机器人。

有人认为以上的不同是本地化的过程中的变异甚至是为了更迎合本地用户做出的创新,但是我认为更深层次的原因在于新浪一直都把自己定位成一个做媒体的,受思维惯性的影响太大以致走不出原来的圈子。

《南方人物周刊》有一期内容做的是新浪微博,里面有篇文章里写到:

2009年5月,新浪管理委员会在成都召开战略会议,确定发展方向。会上讨论了几种发展路径,Facebook、Twitter的模式都被拿出来讨论,连国内人人网的路径也在考察当中。

会上,CEO曹国伟最终拍板定下微博战略。当时新浪的战略更偏向做成Facebook式的平台,但大家很清楚,这对于新浪来说,不论是技术还是既有优势都不太靠谱。新浪副总裁、微博事业部总经理彭少彬说,做微博就是看中Twitter带有的媒体属性,而新浪的优势正在于此,可以凭借这个产品进入到社区模式。

回头再看新浪微博的营销策略,不难发现和当初新浪博客的策略基本类似,打“名人”牌、“草根”牌,所以我们在分析新浪微博的时候可以参考一下新浪博客这个已经很成熟的产品。应该说博客是个属于web 2.0概念的东西,而web 2.0有两个重要的特征,一是去中心化,二是UGC(User Generated Content),按这个标准来看,新浪博客和微博跟新浪的传统业务身份更符合,也就是更像一种媒体。跟新浪博客成立时间大致相近的一些网站,比如说豆瓣、校内网,从内容上看,就更符合2.0的特征。记得当初05、06年的时候,很是流行了一阵个人博客风,跟现在的微博流行类似,大家开始自己写博客,关注名人博客,有一些朋友会互相关注对方的博客,但是短短几年过去了,相信大部分人的个人博客应该没有坚持下来,朋友之间的互动应该基本上也消失。现在的新浪博客,主要功能是作为一种媒体,用户通过博客来获取信息,但是基本上丧失了互动功能。同样的,从用户的关注对象来看,新浪微博在保留了社交功能的同时,更多的是增加了一个获得信息的渠道,本身社交的功能倒没有完全显示出来,不过比博客更近一步的是,微博上更容易找到相同的话题,因为大家都在关注相同的人,互动起来也方便。综合的来看,新浪微博既有传统互联网媒体的影子,又有web 2.0的特征,不如叫web 1.5?从用户的角度来说,2.0上的用户粘度要更高的多,因为每一个用户都融入到一个网络中来,相比较起传统媒体那种形式,用户放弃一个应用可能要丢弃很多东西。

新浪跟随web 2.0的脚步并不慢,但是从目前的情况来看,走的应该说都挺失败的。不过也许对于新浪这样的公司来说,1还是2根本不重要,新浪博客和新浪微博都成功了,能赚钱就够了。

分类: 杂项 标签: , ,
669 views

体验了一把Gnome 3

2011年3月22日 7 条评论

现在有三个方法可以体验Gnome 3

1.Gnome官方网站有LiveCD,可以下载之后刻录

2.Fedora 15应该会采用Gnome 3,现在15的Alpha版已经出来

3.Arch上添加gnome-unstable和testing仓库安装。

我是在arch上安装的,具体步骤可以看这里,安装完毕之后果然只有桌面,没有gnome-shell,可以参考链接下面的内容进行修改。 阅读全文…

分类: 杂项 标签:
129 views

最近一些杂项的记录

2011年3月17日 没有评论

x11vnc可以实现远端与本地共享一个X,这点跟vncserver不同,虽然vncserver也可以实现远端与本地共享,但是共享之前要本地用户允许才可以,x11vnc可以通过密码或者不加密码验证直接连接。
在archlinux下ssh连接很奇怪,服务开启以后,想要连过去会有“ssh_exchange_identification: Connection closed by remote host”的错误提示,解决方法是在/etc/hosts.allow里添加sshd:ALL。从没遇到过这种情况,其他发行版,不对/etc/hosts.allow和/etc/hosts.deny进行修改,服务开启,端口没有被禁止,就可以直接访问了。

GLib-GIO:ERROR:gdbusconnection.c:2270:initable_init: assertion failed: (connection->initialization_error == NULL)
Aborted (core dumped) 错误的解决方法,su -。原因是当用一个普通用户登陆以后,用su更换到root用户,会接着使用该普通用户的环境变量,su -切换之后会用root的环境变量。

这个blog 2月6号从别的地方转移过来,不到一个半月的时间,Google Analytics给出的数据是:1,341 Visits 3,462 Pageviews,跳出率54.21%。 大概半个以前在本地用FireStats统计,数据是2184页面访问次数,737访问。Google Analytics应该算是比较严格的。

分类: 杂项 标签:
1,709 views

用sed截取文本段

2011年3月8日 11 条评论

今天一个一块实习的小伙问了我一个问题,怎么通过正则表达式把文本中的一段截取出来,
文本大概的格式是这样的:

begin
a
b
c
d

end

取出每一个begin和end之间的部分,每一对begin和end之间的内容是不一样的。一开始我想这个问题时的思路是用sed根据正则表达式的多行匹配,;^begin\n.*end$;直接把那部分截取出来,后来试了试sed好像没法匹配跨行的正则表达式,不知道是不是因为我用的不对,sed处理数据的时候默认是按照行来处理的,不知道能不能有什么选项可以匹配多行。
最后想了想,解决方法是
sed -n ‘/^begin/,/end$/p’ file |grep -v begin|grep -v end 阅读全文…

分类: 脚本 标签: , ,
245 views

Be a businessman or be a Technician?

2011年3月3日 9 条评论

一个很常见也比较简单的问题,一个人花了8块钱买了一只鸡,然后9块钱卖掉,随即又花了10块钱买入一只,然后11块钱卖掉,问最后这个人最后赚了多少钱。
这个问题很简单,在这拿出来是想通过这个简单的东西分析一下学技术出身的人是怎么思考的,-8+9-10+11=2。
从逻辑上,这是完全正确的。
再看看商学院出来的人是怎么分析,本来8块钱可以买一只鸡,为什么后面要花10块钱买呢?本来可以11块钱卖掉,为什么要9块钱就卖掉呢?里外里,-8-8+11+11=6,应该赚6块钱,结果只赚了2块,实际亏了4块…
搞技术的人,想问题相对而言总是比较直接,这在这个世界上算是大忌,因为这个世界不是通过0和1来描述的。不管什么时候,这个世界是人组成的,而人是最复杂的东西,一直搞技术,不管是在外企还是私企,不管取得多大成就,终究是那一个小温室里的花朵。

分类: 杂项 标签: