信息和发现
当我们说计算机发现了新的模式时我们想说明什么呢?设想一个程序能够发现数据的趋势,首先提供一组在以往性能实验中观察到的输入输出对(x,y)给程序,然后利用统计回归,程序找到了最好的参数a和b表示一条直线来拟合这个数据:y = ax + b,程序的输出是直线的常规表达。这个输出对于了解如何利用直线进行预测的用户是有意义的。很容易设计另一个程序来使用具有参数a和b的直线来预测y,而y是由新的输入x生成的。
这就是一个设计师使用数学知识从一系列数据中计算最佳拟合参数的过程,计算中的步骤是机械的,输出对于那些了解数据中直线趋势模型的人们是有意义的。这些意义来源于设计师,而不是数据的处理。
对于不了解数据中直线模型趋势的人,也就不知道输出的含义。但是这并不意味着输出的含义是主观的,只意味着设计师没有打算让程序对这些用户产生任何意义。
在20世纪80年代,研究者开始使用强大的计算机筛选大数据集来试图发现一些模式。他们使用贝叶斯(Bayesian)推理(这是一个复杂的数据分析方法)来推算最有可能产生数据的一系列条件。贝叶斯推理基于贝叶斯条件概率统计公式:
它说明的是给定证据E,假设H的概率就是:给定假设H后该证据E的概率,乘以假设H的概率,再除以证据E的概率。图3.8给出了一个简单的示例,医生已知病人头疼,试图诊断他是否患有流感。
这种情况下的发现是一个新的假设。程序能够生成一系列假设,然后根据手中已知的情况,按照贝叶斯定律计算每一个假设的概率,把其中最有可能的假设作为这个“发现”。
在这种情况下,设计者结合贝叶斯定律和搜索方法,在给定数据下找到最大可能的假设。这个程序的输出就是那些明白假设和数据“含义”的用户所预期的,用户将决定是否将这些假设视作一个发现。
图3.8 韦恩图演示了如何利用贝叶斯定律评估一个很难判断的假设。在所有人口的集合K中包含一个子集F,代表患有流感的人,还有一个子集H,代表患有头疼的人。医生看到一个病人抱怨头疼,担心自己患上流感。根据贝叶斯定律P(F|H) = P(H|F)·P(F) / P(H)。医学数据告诉医生,患有头疼的概率P(H) = 0.4,患有流感的概率P(F) = 0.2,在患有流感的人中患有头疼的概率是P(H|F) = 2 / 3,因此P(F|H) = (2 / 3)·0.2 / 0.4 = 1 / 3,即三分之一。在没有任何信息的时候,患有流感的概率是0.2,但若已知患头疼,患有流感的概率则上升到0.33
在经典的信息论中,我们说贝叶斯推理发挥作用,是通过已知消息源的数据来决定消息源的内容。在消息通信中,香农合理假设消息源的内容为先验信息。在科学发现中,消息源中包含的一系列概率最初是未知的,推理过程使得消息和它们的概率可知。贝叶斯推理是一个自动将消息源中的观察数据转换为消息源内容的方法。