机器学习是一种利用统计和其他数学理论给予计算机学习能力的方法。机器学习和统计其实都有相同的目标:从数据中学习知识。但是具体的手段和理念有所不同。机器学习是计算机科学的一个分支,侧重的是从数据中建立有机的系统,而不是用目的很明显的规则去编程。而统计学是数学的一个分支,侧重的是用数学公式建立变量之间的联系。近年来,随着计算机硬件成本的不断降低和数据量的极大增加,数据科学家得以充分利用机器学习手段来分析和挖掘数据。另一方面,统计建模技术则早在计算机问世前就已经存在。
01
机器学习预测结果推广性理论
对于机器学习问题而言,我们最关心的是算法的预测效果。但是算法训练结果都来自于训练数据,因此核心问题转化为算法的推广性,或者如何减少推广误差(generalization error)。对此,机器学习有其理论框架,因此能够从根本上保证了机器学习的推广性。有两种常用的理论框架,如表1所示。
我们以相对简单的PAC框架为例来进一步讨论, PAC框架把下面几个相关问题综合起来:
(1)训练数据样本的大小为m,
(2)满足数据的所有可能的假设或者概念空间H,
(3)得到的假设与真正目标概念之间的误差
,
(4)机器学习成功的概率
。
在PAC框架下,我们可以保证,机器学习可以学到这样一个假设(或者说模型) h,随着数据的增加,其误差接近于0,而得到误差接近于0的概率接近于1,表达如下:
上述公式看似比较绕弯,但表达的意思就是,随着数据的增加,机器学习找到一个误差和真实结果接近于0模型的统计概率是非常大的。这便从理论上保证了训练数据得出的机器学习结论可以推广到更大的数据空间中。
对于一个具体的机器学习问题,我们可以进一步计算期望的推广性误差(expected generalization error)。假如机器学习想要学到的,真实的目标方程为:
其中,x为自变量或者特征变量, y为目标或者标签变量。自变量取值分别为x1,x2到xn, 分别对应每一个的y的观察值。y的观测值或者测量值和真实值,往往存在一定的差距,并且通常满足这一关系:
其中,被称作噪音或者固有的测量误差,并且其分布满足高斯分布,平均值为0,标准差为。通过机器学习,我们的任务是要找一个近似方程来尽可能的逼近真实的方程f(x)。而判断机器学习给出的方程或者模型效果好坏的方法,就通过计算如下所示的均方差大小的方式:
其中,
上式的证明过程在这里我们不再详细推导,但其结论的重要意义在于,机器学习总的误差可以被分解为偏差和方差两个部分。这就说明,如果要减少机器学习算法的误差,要尽可能的减少两个误差来源。如果只关注一个来源,另一个来源通常会增加,从而导致总的误差并不能减少。
为了直观理解偏差和方差的区别,我们举一个打靶的例子,便可以形象的说明问题。假设四个射手连续射击100次,每个人的靶子弹孔分布如图1所示。
图1 机器学习模型偏差和方程说明举例
低偏差的情况是所有弹孔离靶心的平均距离小,上图中的最上面两个靶子就属于这种情况。而低方差的情况则是所有弹孔的位置的分布范围比较小,上图中的最左边两个靶子属于这种情况。当然,在上面四种情况中,低偏差和低方差的情况最理想。
在上面射手的例子中,偏差和方差的情况取决于射手本身的素质。而在机器学习算法训练中,偏差或方差则跟模型的复杂度有直接关系。如图2所示,机器学习模型偏差和方差分别随着模型复杂度提升的变化有这样的曲线关系。
图2 机器学习模型偏差和方差随着模型复杂度变化趋势
如图2所示,随着模型复杂度上升,模型的偏差总是会逐步降低,但是方差却会逐渐上升,因此总的误差开始逐渐变小,然后有逐渐增大。根据上面得到的模型误差分解公式,我们可以看出,当总的误差最小,此时的最佳模型误差所对应的模型复杂度不能太小也不能太大。
举一个例子,在线性回归模型中,模型的参数越多,模型的复杂度越高。如果我们用100个维度的线性回归模型去拟合100个训练数据点,我们就会得到完美的预测结果。但是很显然,这种模型并不适合推广。另一方面,如果我们用有限的维度(模型复杂度低),比如我们用一次项线性回归去拟合一条变化趋势特别复杂曲线,其效果同样不会太好。
02
机器学习问题的分类
机器学习算法是一个大的家族,狭义上是统计学的一个分支,广义上是人工智能研究的基础。按照不同的标准,机器学习算法可以有不同的分类方式。在下一章节我们深入讨论每一种典型的机器学习算法原理之前,我们先看一下如何对机器学习算法进行大的分类。
第一种分类方法是,监督学习(supervised learning)对应非监督学习(unsupervised learning),再对应强化学习(reinforcement learning):
(1)监督学习:通过提供许多对输入(X)和对应的输出(Y)的历史数据,通过优化的方式找到最佳的映射关系。一旦从训练数据学到了这一种映射关系,我们就可以随时根据新的输入数据(X),从而预测给出最佳的结果(Y),比如常见的分类问题。
(2)非监督学习:和监督学习不同,输入只有X,而没有Y。是通过数据自身的特征,把相似的数据聚合到一起,并不涉及Y变量。比如聚类问题,把大量数据点按照相似性聚合到不同的种类。
(3)强化学习:研究在一个特定环境中如何采取每一步的行动,从而获得最大的累积奖励。比如电子游戏中的打坦克游戏,目的是避免对方攻击和击毁最多的坦克。强化学习和标准的监督学习不同,它并不是通过提供许多对正确的输入和输出(X,Y)形式去寻找答案,也不用太担心优化过程中的次优解,而是通过学习研究主体所在环境对主体行动的反馈,在已有知识和未知领域两者中去寻求平衡,追求累计奖励的最大化。强化学习在某种形式上最贴近人们通常意义上对人工智能的想象,比如机器人自动规划路线和下围棋。
第二种分类方法是,参数化(parametric)对应 非参数化(non-parametric)方式:
(1)参数化:参数化算法,需要假设底层数据符合参数化的方程形式。比如朴素贝叶斯模型,回归模型,和传统的神经元网络算法。参数化算法,具有形式简单,优化速度比较快,需要训练数据量相对较少等优点。
(2)非参数化:非参数化算法对底层数据遵守的规律不做任何假设,直接依靠数据得到模型。比如决策树算法,kNN算法(k最邻近算法)。同参数化算法相比,非参数化算法更加灵活,效果有时候比较强大。但是这种方法需要比较多的数据才能达到较好的效果,速度较慢,需要警惕过度拟合的风险。
第三种分类方法是,生成式(generative)对应判别式(discriminative)模型,机器学习算法根据自变量X寻求目标变量Y的预测,本质上是寻求条件概率函数P(Y|X)的表达形式,即已知X得到Y的条件概率(比如已知我们身在东北,寻求冬天下雪的概率):
(1)生成式:生成式算法假设并且从训练数据中得到目标变量Y的分布方程P(Y),以及自变量特征X的条件分布方程P(X|Y)。然后根据贝叶斯公式,我们可以得到最终的预测方程P(Y|X)。比较典型的例子,是朴素贝叶斯算法。
(2)判别式:判别式算法直接根据数据去训练并且得到预测方程P(Y|X),比如逻辑回归算法。
第四种分类方法是,分布式对应非分布式模型:
( 1)分布式:分布式算法是指那些可以很好的以并行化编程方式解决,从而依托大数据计算平台,针对单机不能轻易处理的大数据训练模型的算法。这些算法包括K-means聚类算法,朴素贝叶斯,逻辑回归,PageRank等。
(2)非分布式:许多效果优异的机器学习算法,并不容易被改造成分布式计算方式。比如支持向量机(SVM),梯度增强算法(GBM)等。
03
二分类模型的评价方法
工作中,很多时候我们需要预测一个事件发生的概率或者事件所属类别。比如客户申请信用卡时候,银行会预测该客户将来是否会逾期,或者说不还贷款的概率有多大。在深入理解机器学习模型的具体的建模技术手段,流程,以及底层算法原理之前,我们可以先了解如何通过量化的方法去评价一个机器学习模型的预测效果好坏。
机器学习模型可以广泛的应用在不同的领域,比如预测房价或者股票,预测图片中的动物属于哪一种动物,也可以帮助机器人优化行走路线。在这里我们重点分析在机器学习领域最常见的一种应用:二分类模型,比如预测贷款客户是否会逾期。除了二分类模型,其他常见的还有多分类模型和回归模型,其对应的评价方法有所不同。
二分类机器学习模型的输出形式有两种,一种是直接给出预测的种类,第二种是给出每一分类的概率。模型的输出形式取决于实际业务中的具体需要,同时也导致了了对其不同的评价方法。