Friday, July 29, 2011

混合策略纳什均衡

今天在hi群里碰到一个很nice的题目,如下:

你正在图书馆枯坐,一位陌生美女主动过来和你搭讪,并要求和你一起玩个游戏。美女提议:“让我们各自随机亮出硬币的一面,或正或反。如果我们都是正面,那么我给你3元,如果我们都是反面,我给你1元,剩下的情况你给我2元就可以了。”该不该玩这个游戏呢?这个游戏公平吗?

可以先列个概率的公式来看看
设man以m概率正,woman以w概率正。
man的期望收益为3mw+(1-m)*(1-w)-2m(1-w)-2(1-m)w=8mw-3m-3w+1
当w取3/8时,无论man什么策略,期望稳定-1/8,而当m曲3/8时,无论woman是什么策略,期望稳定是-1/8

有一点值得注意,即如果woman选择不选择3/8,而man选择了3/8,那么woman是稳赢1/8,而假如woman选择3/8,而man不选择3/8,那么woman赢的要大于1/8,那么woman当然要选择3/8。

同理,对于man,假如man选择3/8,而woman不管选什么那么man是稳输1/8,而假如man不选择3/8,那么他输的会大于1/8,那么man当然要选择3/8。

现在就达到了一种状态,woman和man都用3/8的概率出正,称为混合策略纳什均衡,也就是说,如果一个策略组合使任何一个参与人的策略都是相对于其他参与人的策略的最佳策略,这个策略就构成一个纳什均衡,不管这个策略是混合策略还是纯策略

参考文献:

智库百科:混合策略纳什均衡纯策略纳什均衡纳什均衡

维基百科:策略_(博弈論)博弈理论納什均衡點

Google针对低质量站点进行panda算法

比较old的新闻了,今天才看到,Google Forecloses On Content Farms With “Panda” Algorithm Update
  虽然google官方对于panda的说法不是这样,但是Matt Cutts说“it was going after shallow and low quality content.” 其实就是警示大家,假如你的blog、or空间还是sns的,主要的内容来源是copy,转载,那么你的站点会认为是内容的农场,是低质量的,在ranking上就会受到惩罚。
  具体的策略估计会首先计算你的站点中哪些文章是copy的(通过simhash等计算相似度、通过时间戳等元数据来判断是否是copy,当然肯定会考虑到站点的前科,站点的weight等),然后就是低质量文章的比例。可能不仅仅是低质量文章比例会matter,低质量文章比例的变换率也matter。
  所以大家还是老实乖乖地写原创的文章,尽量少copy,宁缺勿滥吧。
  不过有一点问题,copy的站点也不是没有好处的,信息的冗余也是备份,假如原创的站点down了,是不是需要农场了?
  最新关于panda的信息参考Official: Google Panda 2.3 Update Is Live

Sunday, July 3, 2011

正式开启帝都的生活

最近几天,陆续买了些厨房用品,锅碗瓢盆的,锅子真是贵,好几百,还好电压力锅去的京东,好多商品还是去京东靠谱点,楼下的家乐福、百安居和国美都买不起啊。其中百安居可以买的就是马桶刷,哈,5块钱。家乐福买一些日常用品还不错。在没有发工资的日子里,信用卡真是帮了大忙了。
  截止今天,烧饭两次,味道不错,主要电压力锅的说明书太好了- -。炒过土豆丝、青椒肉丝,做了鲫鱼汤、番茄蛋汤,还凑合着吃,等修炼一段时间再喊哥们过来尝尝,现在叫过来太难为人了。
  现在在考虑晚上吃啥(现在天天想着怎么吃了,翻翻菜谱),一会去菜市场:)

Sunday, June 26, 2011

无聊的日子你是怎么过的

手机不格,qb看多了

这几天,一直处在一个人,没有网络,没有电视,没有书籍的状态,唯一的可以交互的东西是手机。自然带来了这个问题,如何打发时间,或者不无聊的消耗时间,甚或有效利用时间。

6.21日-现在,我都处于上述状态,其中头两天找房子的时候待在同学那里,有网络,有人聊天,过得很快。然而房子一旦敲定,无聊就来了,一个人呆在新的空荡荡的屋子里不知道干啥,电脑留给老爸了,房东买的电视还每到,我只好发呆。

23号,去超市买一些东西,但是发现自己对居家的东东实在是不了解,就买了个烧水壶回来,后来去市场购了垃圾桶,拖把,等用品,顺便把周围的环境观察了下,晚上去三哥那里看了球赛,顺便住下了。

24号,back,无聊,去百家居逛,转了很久,买了个垫子。回来打扫卫生,这次估计是我迄今唯一一次觉得打扫卫生很happy的一次,真tmd充实。再有就是看电子书,逛逛sns,没劲。

25号,该买的买了,该打扫的打扫了,我到底还能干啥?这时候我才发现,平常的快餐生活害了自己,现在我可以静下心去看greader的每一篇觉得有意义的内容,而不是按A,我也能把以前看一半的电子书捡起来了。而我发现,这时候看比起以前,看的更用心,体会的更深。

其实,倘若平常也能静下心去做每一件事情,那么你永远不会无聊。用心的买东西,用心逛街,用心的看书,用心对待一切。

Sunday, June 5, 2011

构建可搜索的基于Web的Google图表

Poynter看到的关于Google Chart Tools的介绍 How to make searchable, Web-based Google charts。参考该文章,也试用了下Google Chart Tools

  大量的数据可视化需要有专业的知识或者需要话费大量时间精力以及资源,而google的The Google Visualization API(web)使得此工作变得简单,不管你是designer, developer, Web producer 还是hobbyist。

  废话不多说,直接上例子,为了体验实验,我自己构造了例子,而没有采用原文的实例。

  1. 首先打开Google Visualization API homepage,选择Bar Chart


  2. 在下面的图中,点击Google Visualization API playground的字样。


  3. 然后打开一个新的页面,左侧为API或者code的列表,右侧为当前API或者code的代码,而下面为对应的bar chart,修改code,点击 run code,bar chart会有相应的变化。


  4. 原始的代码如下 [javascript]function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    var raw_data = [['Austria', 1336060, 1538156, 1576579, 1600652, 1968113, 1901067],
    ['Bulgaria', 400361, 366849, 440514, 434552, 393032, 517206],
    ['Denmark', 1001582, 1119450, 993360, 1004163, 979198, 916965],
    ['Greece', 997974, 941795, 930593, 897127, 1080887, 1056036]];

    var years = [2003, 2004, 2005, 2006, 2007, 2008];

    data.addColumn('string', 'Year');
    for (var i = 0; i < raw_data.length; ++i) {
    data.addColumn('number', raw_data[i][0]);
    }

    data.addRows(years.length);

    for (var j = 0; j < years.length; ++j) {
    data.setValue(j, 0, years[j].toString());
    }
    for (var i = 0; i < raw_data.length; ++i) {
    for (var j = 1; j < raw_data[i].length; ++j) {
    data.setValue(j-1, i+1, raw_data[i][j]);
    }
    }

    // Create and draw the visualization.
    new google.visualization.BarChart(document.getElementById('visualization')).
    draw(data,
    {title:"Yearly Coffee Consumption by Country",
    width:600, height:400,
    vAxis: {title: "Year"},
    hAxis: {title: "Cups"}}
    );
    }[/javascript]


  5. 通常情况下,需要修改这几个参数即可。

    1. 第4行var raw_data的内容

    2. 第9行var years的内容

    3. 第11行和第32行对应的Y轴的坐标名称

    4. 第33行的X轴的坐标名称

    5. 第30行的chart的名称

    6. 其他详细参数设置可以参考文档的Configuration Options部分




  6. 我的修改之后的代码和charts分别如下所示:[javascript]function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    var raw_data = [['econsh', 40000, 55381],
    ['mushi', 20000, 43816],
    ['wods', 30000, 5816]];

    var years =['article num', 'time'];

    data.addColumn('string', 'properties');
    for (var i = 0; i < raw_data.length; ++i) {
    data.addColumn('number', raw_data[i][0]);
    }

    data.addRows(years.length);

    for (var j = 0; j < years.length; ++j) {
    data.setValue(j, 0, years[j].toString());
    }
    for (var i = 0; i < raw_data.length; ++i) {
    for (var j = 1; j < raw_data[i].length; ++j) {
    data.setValue(j-1, i+1, raw_data[i][j]);
    }
    }

    // Create and draw the visualization.
    new google.visualization.BarChart(document.getElementById('visualization')).
    draw(data,
    {title:"SBBSert statictics",
    width:600, height:400,
    vAxis: {title: "properties"},
    hAxis: {title: "nums"}}
    );
    }[/javascript]


  7. 对应图片如下

注意:这个bar chart貌似不支持中文,有了中文的话,就不能正常工作,已经反馈给google