zoukankan      html  css  js  c++  java
  • 用算法来防范水军

    首先我们来看看这次争议巨大的豆瓣评分算法 http://movie.douban.com 

     


    豆瓣的评分机制是最低一分,最高五分,五个档次。 
    豆瓣公式为得分=(5X1+4X2+3X3+2X4+X5)*2 

     


    由于豆瓣上的用户在打分的时候加入了很多情绪化的因素。常常有打分两极分化的情况出现。豆瓣上之所以不少评分泾渭分明,在很大程度上,是和其五级简单打分制度相关的。其评分制度够简单,用户就越容易走极端。豆瓣上的评分很侧重情绪分,很能够代表豆瓣群体的判断,而不是所谓的”伪客观“。 

    再看看时光网的评分算法 http://www.mtime.com 

     


    时光网采用最简单的平均分算法,同时使用不同于豆瓣的十分制。 
    这种算法毋庸置疑,提高平均分数,更多用户会选择中间段的分数进行打分,相对中庸的七八分明显增多。而因为用户中庸模棱两可的想法,更没有起到真是反应分数的作用。十分制会增加用户的认知成本,有十个选择出现的时候,用户会花更多时间考虑自己要如何打分,也降低用户参与度。 
    二者共同的地方在于,在评分早期遭受水军袭击后,不管是刷高分还是刷低分,都会很快的在评分上显示出来,于是造成了评分与实际质量的巨大差距,并可能对用户有极大的误导和跟风作用。那么这种简单的加权和平均算法不能满足我们的需要,有什么办法能避免水军带来的巨大影响呢? 
    贝叶斯算法也许能帮助为之发愁的厂商和用户们。贝叶斯算法是著名的电影数据库站点IMDB在使用的评分方法。http://www.imdb.com/ 

     


    用公式来表达一下这个算法: 

     



    - WR,加权得分(weighted rating) 

      - R,该内容的平均得分(Rating)。 
    - v,票数(votes)。 
    - m,基准票数 
    - C,站点所有内容的平均分。 
    简单的表示就是 
    得分=(票数÷(票数+基准票数))×均分+(基准票数÷(票数+基准票数))×总均分 
    其实这公式只有一个目的,让得分偏向平均分一些,如果投票越多,它的评分就越接近真实的平均分。否则就越接近所有游戏电影的平均分。其难点在于如何选择基准票数,并使得各个片子适当的拉开差距。 
    这里就有一个问题:如何让冷门的内容和热门的内容所得的分数,具有可比性。这就是基准票数存在的意义,它给了一个合理的思路,如果要比较两个游戏的好坏,至少应该请同样多的人玩过。 
    有人基准票数,任意两个内容,就站在了同一起点。 
    由于imdb不方便测试,我们找到了另一个使用这个算法的站点: 
    手游全书http://gamebook.91.com 

     


    我们对一款暂无评分的游戏使用了几个马甲进行投票,全部投十分,发现分数确实上涨了,但也只涨到了6.9。而如果这在豆瓣和时光,就已经肯定是全十分了。这可能是gamebook站点设置的基准票数m较少,如果对应用户群体巨大,那么调整相应的m值,就能达到同样抑制初期水军的作用。 

     


    当然"贝叶斯算法"也不是万能的,主要问题是它假设用户的投票是完全呈正态分布。比如,游戏X有10个玩家评分,5个为五星,5个为一星;游戏Y也有10个观众评分,都给了三星。这两个游戏的平均得分(无论是算术平均,还是贝叶斯算法)将都是三星,但是实际上游戏X可能比游戏Y更值得玩。不过这就是另一个话题了。

  • 相关阅读:
    top
    ls
    Redis持久化
    Redis数据库
    Redis对象类型
    Redis底层数据类型
    Redis面试问题
    Java源码解析——集合框架(五)——HashMap源码分析
    Java源码解析——集合框架(四)——LinkedListLinkedList原码分析
    Java源码解析——集合框架(三)——Vector
  • 原文地址:https://www.cnblogs.com/Gbeniot/p/3770448.html
Copyright © 2011-2022 走看看