机器学习建立在统计学基础上
在讨论统计学和机器学习的区别之前,我们先来讨论一下相同之处。在前几节中也有涉及到这方面的内容。
显然,机器学习建立在统计学的框架之上。这是因为机器学习涉及数据,而数据则必须使用统计学框架进行描述。然而,被扩展为大量粒子热力学的统计力学同样也建立在统计学框架之上。压强的概念实际上也是一个统计量,温度也是如此。如果你觉得很可笑,没关系,但事实如此。这就是为什么你不能描述一个分子的温度或压力。温度实际上是分子间碰撞产生平均能量的表现。对于足够多的分子,比如房子或户外环境来说,描述其温度才具有实际意义。
你会承认热力学和统计学是一样的吗?不会的,实际上热力学是用统计学来帮助我们理解功和热相互作用产生的输运现象。
事实上,除统计学外,热力学的建立还以很多其他学科为基础。同理,机器学习(ML)的建立也要以数学和计算机科学等领域为基础,比如:
ML理论源于数学和统计学
ML算法源于优化、接矩阵代数、微积分
ML的实现要依靠计算机科学和工程概念(如内核技巧、特性哈希)
当我们用Python编程,引入sklearn库并开始使用算法时,很多概念都被抽象了,所以很难看到它们的区别。因此,这种抽象导致了对机器学习内涵的不了解。
统计学习理论——机器学习的统计学基础
统计学与机器学习的主要区别在于统计学完全基于概率空间。你可以从集合理论中得到完整的统计学内容。集合理论主要探讨如何对数组进行分类,也就是集合的概念。
在该集合上进行测量,并确保测量值的总和为1,我们称其为一个概率空间。
统计学只建立在集合和测度这两个基本假设之上。这就是为什么当我们用非常严格的数学定义指定了一个概率空间时,实际上我们指定了三件事:
一个概率空间,可表示为(Ω, F, P),其由三部分组成
样本空间Ω,所有可能的结果;
事件集合F,每个事件都是一组包含零或更多结果的集合;
事件的概率分配P,即从事件到概率的函数。
机器学习基于统计学习理论,而统计学习理论也建立在概率空间这一公理上。统计学习理论兴起于1960年,是对传统统计学的扩展。
机器学习也有集中分类,这里我只关注监督学习,因为它最容易解释清楚(尽管它隐藏在数学中,仍然有些深奥)
由监督学习的统计学习理论可知,现有一个数据集合,表示为S = {(xᵢ, yᵢ)}。可认为有n个数据点,每个数据点都可以用被称为特征的值进行描述。这些特征由x提供,且通过某映射函数可得到y值。
也就是说数据是已知的,我们的目标在于找到那个可以映射x和y值的函数。我们称所有可能的函数集合为假设空间。
为了找到这个函数,我们需要让算法通过“学习”去解决该问题,可由损失函数提供。所以,对于每个假设(建议函数),我们需要查看其对所有数据期望风险值来评估这一函数的性能。
期望风险本质上是损失函数的总和乘以数据的概率分布,如果我们知道映射函数的联合概率分布,则会非常轻松地找到最佳函数。然而,这个分布通常是不知道的。因此,最佳的方法是猜测最佳函数,然后根据经验判断损失函数的优劣。我们将其称之为经验风险。
接下来我们可以对比不同的函数,并寻找能带来最小期望风险的假设,即这一假设可以给出全部数据假设的最小值(下确界)。
然而,算法为了使损失函数最小,会有使数据过拟合的趋势。这就是为什么通过训练数据学习后,函数可通过测试数据得到验证,但测试数据并不包括训练数据的内容。
上述机器学习定义中我们引入了过拟合问题,并证明了在进行机器学习时需要使用训练集和测试集。而该方法并未遵循统计学固有的特征,因为我们没有试图令经验风险最小化。
选择经验风险最小化的学习算法可称为经验风险最小化过程。
举例
以线性回归为例。传统意义上我们会尝试最小化数据误差,从而找到一个可用于描述数据的函数。在这种情况下,我们通常使用均方误差。我们对其进行平方,这样正负误差便不会相互抵消。接下来我们可以用封闭的方法求解回归系数。
正因为如此,如果我们取损失函数为均方误差,并按统计学习理论进行经验风险的最小化过程,最终得到的结果会与传统线性回归分析相同。
这是因为两种情况是等价的,同理,如果用同样的方法对相同的数据进行最大似然估计,那么结果也是一样的。最大似然估计是一种实现同一目标的不同方法,然而没有人会争辩并且认为其与线性回归是一样的。当然,进行最简单的案例应用显然无助于区分这些方法。
另外需要指出的关键是,传统的统计学方法中没有训练集和测试集的概念,但可以使用一系列指标来帮助我们检查模型的执行情况。所以,虽然评估的程序不同,但使用两种方法都可以得到统计上鲁棒的结果。
还有一点,考虑到经典统计学中的解空间是封闭的,则可求得最优解。它没有检验任何其他假设,并收敛于一个解。然而,机器学习方法则尝试了大量不同的模型并收敛至最终的假设,这与回归算法的结果是一致的。
如果我们使用不同的损失函数,结果可能是不收敛的。比如,当我们使用铰链损失函数(使用标准梯度下降法是不可微的,所以需要使用像近端梯度下降法这样的技术)时,结果很可能会不同。
最后,可以通过模型偏置进行对比。可令机器学习算法测试线性模型,多项式模型,指数模型等等,来看这些假设是否更适合已给定先验损失函数的数据。这类似于增加相关的假设空间。在经典统计学中,我们会选择一个模型并评估其精度,但不能令其自动选择100个不同模型中的最优模型进行计算。显然,受初始算法选择的影响,偏差一定存在。因此,找到数据集中求得最优解的任意函数本身是一个NP-hard问题。
哪种方法更好?
其实这是个很蠢的问题。从关系角度看,没有统计学,机器学习是不存在的。然而,在当前人类所经历的这个信息爆炸的时代中,面对海量数据的涌入,机器学习倒是颇为有用。
比较机器学习和统计模型确实有些困难。这主要取决于你的目的是什么。如果你想构建一种可以精确预测房价的算法,或是使用数据确定某人是否可能感染某种疾病的话,机器学习可能是更好的选择。如果你想证明变量间的关系或用数据进行推断,那么统计模型则会成为更好的选择。
如果你没有较好的统计学基础的话,也不影响你研究或使用机器学习,这是因为机器学习库已经将专业内容进行了提炼,使用起来简单易懂。不过你还是需要多多少少知道一些统计学的基础知识,以防止模型的过拟合或得到某种似是而非的推论。
在哪里能够深入学习?
如果你有兴趣深入研究统计学习理论,这里有很多统计相关的大学课程和书籍,以下是我推荐的一些课程:
9.520/6.860, Fall 2018
The course covers foundations and recent advances of machine learning from the point of view of statistical learning…
www.mit.edu
如果你对更深入地研究概率空间感兴趣,那么我要给你一个忠告,它在数学上很重要,而且通常只在研究生统计学课程中涉及。这里有一些关于这个话题不错的资料:
http://users.jyu.fi/~miparvia/Opetus/Stokastiikka/introduction-probability.pdf
https://people.smp.uq.edu.au/DirkKroese/asitp.pdf