或许是因为统计建模和机器学习中使用方法的相似性,使人们认为它们是同一个东西。对这我可以理解,但事实上不是这样。
最明显的例子是线性回归,这可能是造成这种误解的主要原因。线性回归是一种统计方法,通过这种方法我们既可以训练一个线性回归器,又可以通过最小二乘法拟合一个统计回归模型。
可以看到,在这个案例中,前者做的事儿叫“训练”模型,它只用到了数据的一个子集,而训练得到的模型究竟表现如何需要通过数据的另一个子集测试集测试之后才能知道。在这个例子中,机器学习的最终目的是在测试集上获得最佳性能。
对于后者,我们则事先假设数据是一个具有高斯噪声的线性回归量,然后试图找到一条线,最大限度地减少了所有数据的均方误差。不需要训练或测试集,在许多情况下,特别是在研究中(如下面的传感器示例),建模的目的是描述数据与输出变量之间的关系, 而不是对未来数据进行预测。我们称此过程为统计推断,而不是预测。尽管我们可以使用此模型进行预测,这也可能是你所想的,但评估模型的方法不再是测试集,而是评估模型参数的显著性和健壮性。
机器学习(这里特指有监督学习)的目的是获得一个可反复预测的模型。我们通常不关心模型是否可以解释。机器学习只在乎结果。就好比对公司而言,你的价值只用你的表现来衡量。而统计建模更多的是为了寻找变量之间的关系和确定关系的显著性,恰巧迎合了预测。
下面我举一个自己的例子,来说明两者的区别。我是一名环境科学家。工作的主要内容是和传感器数据打交道。如果我试图证明传感器能够对某种刺激(如气体浓度)做出反应, 那么我将使用统计模型来确定信号响应是否具有统计显著性。我会尝试理解这种关系,并测试其可重复性,以便能够准确地描述传感器的响应,并根据这些数据做出推断。我还可能测试,响应是否是线性的?响应是否归因于气体浓度而不是传感器中的随机噪声?等等。
而同时,我也可以拿着从20个不同传感器得到的数据, 去尝试预测一个可由他们表征的传感器的响应。如果你对传感器了解不多,这可能会显得有些奇怪,但目前这确实是环境科学的一个重要研究领域。
用一个包含20个不同变量的模型来表征传感器的输出显然是一种预测,而且我也没期待模型是可解释的。要知道,由于化学动力学产生的非线性以及物理变量与气体浓度之间的关系等等因素,可能会使这个模型非常深奥,就像神经网络那样难以解释。尽管我希望这个模型能让人看懂, 但其实只要它能做出准确的预测,我就相当高兴了。
如果我试图证明数据变量之间的关系在某种程度上具有统计显著性,以便我可以在科学论文中发表,我将使用统计模型而不是机器学习。这是因为我更关心变量之间的关系,而不是做出预测。做出预测可能仍然很重要,但是大多数机器学习算法缺乏可解释性,这使得很难证明数据中存在的关系。