机器学习40讲_06_05_模型的分类方式
你好,我是王天一。
今天我和你分享的主题是机器学习当中模型的分类方式。
机器学习它学的是输入和输出之间的映射关系,那么学到的映射呢会以模型的形式来出现。
从今天开始呢,我将和你聊聊关于模型的一系列的主题。
大多数情况之下,机器学习的任务是求解、输入输出、单独或者共同符合的概率分布,也可能是拟合出输入和输出之间的数量关系。
那么从数据的角度看呢,如果说待求解的概率分布或者数量关系,可以用一组有限,并且固定数目的参数完全的刻画出来的话,求出来的模型它就是参数模型。
反过来呢不满足这个条件的模型就是非参数模型。
参数模型的优点在于说,只用少量的参数,就能够完整的描述出数据的概率特性。
参数集当中每个参数都具有明确的统计意义。
你可以回忆一下常用的典型的概率分布,离散变量的二项分布BNP.它只包含着两个参数,分别代表着独立重复试验的次数。
还有每次试验当中事件发生的概率。
连续变量的正态分布呢也只包含两个参数,分别是米u和西格玛,代表着随机变量的均值,还有方差。
所以啊在学习这个参数模型的时候,算法的任务是什么呢?就是求解出这些决定概率特性的参数。
只要这个参数确定了数据的统计分布,它也就确定了。
即使说未知的参数啊无穷无尽,我也可以通过几个简单的参数来确定这些未知数据的形式。
为什么在参数模型当中有限的参数就能够描述无限的数据呢?你可能已经发现了这样的便捷啊,它来自于超强的先验。
假设这先验假设是什么呢?所有的数据都符合特定类型的概率分布。
当然了,在实际的学习任务当中啊,我们并不是说对于问题一无所知,通常会具有一定的先验知识。
先验知识啊,顾名思义,它并不来源于对数据的观察,而是先于数据存在。
在数据出现之前啊,就有了这个先验的知识。
那么这个参数模型呢恰恰就是先验知识的体现,还有应用先验知识,它会假定数据满足特定的先验分布。
那学习的过程就变成了利用训练数据来估计未知参数的过程。
一旦得出未知参数的估计结果在训练数据也就没有存在的意义了。
因为这些估计出来的参数实际上就是训练数据的浓缩。
在这个过程当中呢,先验知识相当于确定了假设空间的这个取值的范围。
那么学习算法最大自然也好,最大后验也好,就是在给定的范围之内,对最优化的问题进行求解,来确定最优的参数参数模型。
它虽然说简单实用啊,但是它的可用性呢却严重的依赖于先验知识的一个可信的程度啊,也就是先验分布的准确程度。
如果说训练数据和测试数据啊,已知的和未知的数据确实满足二项分布啊或者是正态分布。
那么这个学习算法呢只需要付出比较小的代价,就可以学出来一个比较好的模型。
但这是理想的情况。
可能在实际当中,我想的这个先验分布本身就不符合实际情况。
比方说一个正态分布的变量啊,我却认为它满足指数分布,按照指数分布的这个形式去拟合它。
这种情况之下,你不管训练数据集的体量多强,学习算法的性能有多强,学习出来的结果都可能和事实真相南辕北辙、背道而驰。
你这个问题之上啊,先贤孔子早在两千年前就告诉我们一个朴素的道理,知之为知之不知为不知是知也。
当对所要学习的问题知之甚少的时候啊,如果说不懂装懂的搞一些先验分布,往数据上去生搬硬套的话,他就不是一个合理的选择。
最好的办法是什么呢?你而是避免对潜在的模型做出过多的假设。
如果说不使用先案信息,完全依赖数据进行学习,这时候得到的模型就是非参数的模型。
但是非参数模型的这个名称呢,它可能有一点点的误导性。
非参数模型它不是无参数模型,不是说一个参数没有。
事实上恰恰相反,非参数模型它意味着模型参数的数目是不固定的,而且很有可能是无穷大。
这就决定了非参数模型,它不可能像参数模型那样用固定,而且有限数目的参数来完全刻画。
所以呢也就没有办法写出一个解析式来在翻译参数模型当中,并不存在着说关于数据的潜在模式啊,或者说它的结构化特性。
这样的假设任何假设都没有数据,所有的统计特性都来源于数据本身。
一切呢都是所见即所得和参数模型相比啊,非参数模型,它的时空的复杂度啊,时间上的复杂度,还有空间上的复杂度,都会比参数模型大得多。
但是可以证明的一个是什么呢?当训练数据趋于无穷多的时候,也就是在渐进的条件之下,非参数模型可以逼近任意复杂的真实模型,它可以更加的符合真实的情况。
这就给他的实用性添加了一枚重量级的筹码参数模型和非参数模型的区别啊,可以通过下面这个例子来说明。
假设说我有一个数据集,一个训练数据集里面有九十九个数据,计算它的数字特征呢,当然我不知道它的分布是什么样的啊,不知道它它满足的分布是什么。
但是我可以计算它的数字特征,计算出来的结果均值等于一百啊,方差等于一。
这时候呢来了第一百个数据啊,和前面这些都独立同分布的。
那么对于这第一百个数据来说,它会以百分之九十九的概率小于哪一个数值呢?要使用参数模型来解决。
这个问题呢首先要做出假设啊,我可以假设所有的数据都来自于同一个正态分布。
N mu sigma利用训练数据,我就可以构造出关于这个正态分布均值,缪还有标准差sigma啊,它的一个无偏的估计量。
那么计算得到的估计值是多少呢?缪等于一百,均值等于一百,西格马等于一,标准差等于一。
这样的话呢就不难计算出这个新数据。
如果满足我构造出来的这个正态分布的话,它会以百分之九十九的概率小于多少呢?小于一百零二点三六五,这个一百零二点三六五,它等于一百均值,加上二点三六五,也就是二点三六五倍的标准差,这就是参数模型所计算出来的结果。
但是对于非参数模型来说,他并不关心这些数据啊,到底是来源于正态分布啊,还是指数分布啊,还是均匀分布啊,还是这个分布或者那个分布。
他只会做出一个假设啊,那就是所有数据来源于同一个分布,这是个最基础的假设。
如果没有这个假设的话,那我们也不用去学习了。
在这个假设之上,九十九个训练数据和一个测试数据,我对他一视同仁。
如果把这一百个数据看成一个整体的话,那么在测试之前,所有数据的最大值可能是其中的。
任何一个啊每一个都可能是最大的。
当然每一个也可能是最小。
正因为如此,测试数据呢,它只有百分之一的可能性,比之前的九十九个都要好。
这说明什么呢?说明它有百分之九十九的可能性,小于训练数据当中的最大值。
所以要用非参数模型来进行建模的话,那么上面问题的答案就是训练数据集当中最大的那个取值。
归根到底啊,非参数模型其实可以理解成一种局部的模型啊,就像战国时代,每一个诸侯国都有自己的国君,统治着自己的国家。
那么每个局部呢都有支配自己特性的这样的一个参数,在局部之上相似的输入会得到相似的输出。
而全局的分布呢就是所有局部分布的叠加啊,把它加到一块儿,得到的就是全局的结果。
相比之下呢参数模型它具有全局的特性啊,所有的数据都满足统一的全局分布。
这又像什么呢?像铝至尊智六合之后得到的一个扁平化的结构啊,一组全局分布的参数支配着所有的数据。
从数据分布的角度看呢,不同的模型可以划分成参数模型和非参数模型两类。
如果将这个划分的标准啊,我套用到模型的构造上的话,这得到的结果呢就是所谓的数据模型,还有算法模型。
相比于参数,对于数据分布的刻画呢,数据模型和算法模型,这种分类方式更加侧重于模型对于数据的拟合能力,还有预测能力。
把时间倒推十七年二零零一年的时候,著名的统计学家莱奥布莱曼在统计科学这个期刊上啊发表了论文统计模型两种思路啊,这是发表在第十六卷第三期上。
正是在这篇文章当中,他提出了这个数据模型,还有算法模型的区分方法。
作为一个统计学家,布莱曼看重的是什么呢?是学习算法,从数据当中获取有用的结论,还有展示数据背后规律的这个能力。
从这一点出发呢,它将从输入x到输出y的关系看成一个黑盒子。
不知道这盒子里装的是什么数据模型呢?认为这个盒子里装的是一组未知的映数,西塔学习的对象呢就是这种参数算法模型。
不这么想他。
认为这个黑盒里装的是一组未知的映射。
Fx啊,学习和对象呢也就是这个映射。
其实归根结底啊,数据模型和算法模型实际上就是另一个版本的参数模型和非参模型。
数据模型呢和参数模型类似,都是通过调整大小和颜色,把一件固定款式的衣服往模特身上套,即使给一个高大威猛的男子汉套上裙子也没关系啊,没见过苏格兰人吗?算法模型和非常模型则是掉了个个儿啊,充分发挥这个量体裁衣的精神目标,就是给模特穿上最合身的衣服啊。
至于说红配绿或者什么腰,宽肩窄,什么都不在话下,只要穿着舒服,还要什么自行车。
如果说参数模型和非参模型的核心区别啊在于数据分布特征的整体性和局部性的话,那么数据模型和算法模型之间的矛盾就是模型的可解释性,还有精确性的一个矛盾。
这可以通过两种模型的典型代表啊来加以解释。
数据模型它最典型的方法就是线性回归啊,也就是将输出结果表示成为输入特征的线性的加权的组合。
算法呢通过训练数据来计算权重系数。
线性回归,它的含义明确而清晰。
输入数据,每个单位的变化都会对输出产生同步的影响,影响的程度有多大呢?取决于这个特征的权重系数。
有了线性回归模型之后,不同的特征对于结果的贡献就一目了然了。
但问题是,如何确定输入和输出之间真实的对应关系,是不是满足特定的假设呢?当某个数据模型被以鲜案的方式给它确定之后啊,我先就确定了它满足线性的模型啊,或者多项式的回归的性质。
这个时候学习的对象其实就变化了,他学的不再是输入和输出之间的作用机制,而是这个线性模型或者说多项式模型的本身绝大部分数据模型,它都有简明的解释方式。
可是当这个简单的模型不能够充分的体现出复杂的作用机制的时候,它的预测精度就会不堪入目。
在这种情况之下,你再漂亮的解释又有什么意义呢?处在可解释性,这个坐标轴另一端的呢是大名鼎鼎的随机森林算法,这是一个典型的算法吗?亲,它的原创者正是前文所提到的这个莱奥布莱曼随机森林,它是一种集成学习的方法啊,构成这座森林的每一棵树都是决策树。
每一棵决策树呢都是用随机选举的数据和特征给它构造出来,再按照少数服从多数的原则,从所有决策树的结果当中得到最终的输出。
决策树本身呢它是具有较好的可解释性的一个数据模型啊,它表示的是几何意义上对特征空间的一个划分。
但是精确度呢却不太理想,差强人意,随机森林。
它解决了这个问题,它通过综合使用建立在同一个数据集上的不同,决策树达到了出人意料的良好效果。
在很多问题上都可以将精确度提升到几倍这样的水平。
但是精确度的提升换来的是什么呢?可解释性的下降,每一个决策树对于特征空间的单独划分,共同织成了一张剪不断理还乱的巨网。
想要理解这个巨网背后的语义呢,无异于水中望月、雾里看花。
从学习方法上看啊,上面提到的那两种划分的方式都有相同的本质。
除此之外呢,还有另外一种针对学习对象的划分方式,那就是生成模型和判别模型的区别。
简单的说呢生成模型,它学习的对象是输入x和输出y的联合分布判别模型学习的是什么呢?已知输入x的条件下输出y的条件分布,这两个分布啊不是完全相互独立的,它们可以通过贝叶斯定理建立起来。
这个联系生成模型和判别模型的区别呢,可以这样来理解啊。
假如说我被分配了一个任务,要判断一个陌生人说的到底是什么语言。
如果用生成模型来解决这个问题的话,那我就需要把这个老外可能说的所有语言都给他学会,再根据他的话来判断语言的种类。
但可能等我学完这些语言的时候,这陌生人都已经说不出话来。
但是要用判别模型的话,就简单多了。
我只需要掌握不同语言的区别就可以。
即使我不会西班牙语或者德语的任何一个单词,我单凭语感也可以区分出这两种语言的不同。
这呢就是判别模型的优势,针对生成模型和判别模型的利弊。
啊,支持向量机的发明者瓦普尼克有一句名言,怎么说呢?解决分类问题,应该直截了当啊不要用兜圈子的方式搞一个更难的问题。
作为中间步骤。
一般来说呢,生成模型的求解更加复杂。
当数据量趋于无穷大的时候呢,渐进条件下的精确性也更差。
但它好在收敛的速度更快,经过较少数据的训练之后,就可以收敛到错误的下潜。
相比之下,判别模型的形式更加简单,在分类问题上的表现也更出色,但却不能提供关于数据生成机制的信息。
有些情况之下呢,生成模型和判别模型会成对的出现。
比方说在分类问题当中,朴苏贝叶斯还有逻辑回归,就是一对生成判别这样的分类器。
今天我和你分享了对机器学习模型不同的分类方法,包括以下几个要点,第一,不同的学习思路对应着假设空间当中不同的建模方式,还有学习方法。
第二,参数模型和非参模型的区别,体现的是全局普适性和局部适用性的区别。
第三,数据模型和算法模型的区别,体现的是可解释性和精确性的区别。
第四,生成模型和判别模型的区别,体现的是联合分布和条件分布的区别。
当前呢参数模型还是机器学习的主流,非参模型无论在应用范围还是性能表现上都要略逊一筹。
可是随着大数据概念的出现,更多更复杂的数据无疑会给参数的拟合带来更大的挑战。
在这样的背景之下,非参谋型有没有可能发挥更大的作用呢?欢迎发表你的看法。