-->

机器学习40讲_22_21_基函数扩展属性的非线性化

你好,我是王天一。

今天我和你分享的主题是奇函数扩展属性的非线性化。

虽然线性回归是机器学习当中最基础的模型,但是它的表达能力呢天然的受到了线性函数的限制。

如果用它来模拟多项式函数或者是指数函数这样的非线性的关系的时候,就不可避免的会出现误差。

所以说要获得更强的模型的表达能力,那就必须把非线性的元素纳入到学习模型当中。

前面我们介绍的以核技巧为代表的局部化的模型,就是一种有效的非线性的尝试。

但是它的非线性呢来源于非参数的一个处理方式,也就是将很多个规则的局部组合成一个不规则的整体。

那么有没有可能在全局层面上添加非线性的元素呢?还记得线性回归的表达式吗?在这儿呢我把它重写一遍,什么样的y等于贝塔零加上贝塔一乘以x一,加上贝塔二乘以x二,一直加到贝塔n乘以XN.在这其中呢,贝塔是线性系数,而x可以看成是和属性相关的奇函数。

在最原始的线性回归当中,奇函数的形式是什么呢?是一个恒等函数啊,我的属性直接被用来做回归。

所以说在原始的线性回归里,这个模型它无论是对于属性x还是对于系数贝塔都是线性。

但是在统计学当中啊,线性模型名称中的这个线性,它描述的对象是什么呢?是这个回归系数贝塔。

也就是说,回归结果和回归系数之间必须存在着一个线性的关系,这说明什么呢?说明回归式当中,每一项对输出的贡献程度是固定的。

但是这些贡献到底是以什么样的形式来出现?是属性的取值本身还是它的平方啊,或者说它的对数线性模型呢并没有这方面的规定。

所以说如果充分利用关于奇函数的这个灵活性的话,那我们其实可以把线性回归的表达式啊给它做一个推广。

推广成什么呢? Y等于贝塔零,加上贝塔一乘以斐x一,加上贝塔二乘以斐x二,一直加加到贝塔n乘以斐XN.显然呢当这里的斐x啊是个非线性的函数的时候,那么回归结果呢实际上就是输入属性,经过非线性变换之后再来做一个线性组合。

这时候呢输出的结果和属性之间就会存在着非线性的关系。

那么如果我用这种方法来生成非线性元素的话啊,通过这种方式得到的参数模型就是奇函数扩展一个模型啊,这样的方法也就是奇函数的扩展。

如果你对高等数学还有印象的话啊,其实你会发现奇函数扩展的并不是一个陌生的概念。

在信号分析当中,赋列变换是最基本最核心的工具,它呢能够实现时域和频域的转换。

把这个实域信号表示成无数个频率成分的组合。

那么这个表达的过程呢,就是赋列n逆变换。

赋列n逆变换,它使用的基函数是什么?是虚指数函数,这个虚指数函数呢,很显然是时间t的这个非线性函数,而且这个奇函数的数目啊也是有无穷多个的。

那么对于这些奇函数来说啊,每个奇函数的系数,也就是每个频率成分的权重系数,反过来需要利用负列正变换来计算。

由于时间变量t在负列变换的这个积分当中被消除。

所以说每个频率成分在信号当中的比例,也就是每个权重系数它都不变。

准确的说应该是不是实变的,不会随着时间的变化而变化,它只和频率本身有关。

所以呢这也是负列变换它属于线性变换的一个原因啊。

因为它的系数都不是实变的。

七、扩展方法的话,它在统计学啊或者在机器学习当中,最简单的应用呢就是多项式回归。

多项式回归,它是把自变量x和因变量y之间的关系定义成为x的n阶的多项式。

这样处理的话,x和y之间自然就会呈现出非线性的关系。

在只有一个自变量的情况之下,多项式回归的表达式啊可以写成这样。

Y等于贝塔零,加上贝塔一x加上贝塔二x平方,加上贝塔三x立方,一直加到贝塔n乘以x的n次方。

多项式回归呢它可以看成是多元线性回归的一个特例,但他的可解释性却并没有那么清晰。

在负叠列变换当中啊,我们说不同的虚指数函数e的只有我们一个t相互正交。

所以呢他们可以看成是一组互不相关的这个自变量。

这所有的奇函数共同定义了一个大的特征空间。

但是当自变量x在零一上均匀分布的时候,x和x的平方肯定不是相互独立的,咋肯定是相关的。

那么它们两个之间的相关系数可以达到多少呢?百分之九十七或者说零点九七。

在这么强的相关系数之下啊,我们很难将两者对回归结果各自的贡献准确的区分开来。

在这个结果当中,到底哪部分来源于x啊,哪部分来源于x的平方,很难做出精确的界定。

除了难以解释之外呢,多项式回归还有比较高的这个过拟合的风险。

还是以前文当中英超的数据集为例啊,点击文稿,你可以看到线性回归,还有十次多项式回归的一个结果。

那么线性回归我们知道是假设场均积分和平均的评分之间存在着y等于AX加b的关系。

从拟合结果来看呢,虽然存在着一些异常点,很有误差,但这种关系呢真实的把握住了自变量和因变量两者之间的主要趋势。

可是如果想要继续降低误差的话,这时候你就可以使用更加复杂的这个多项式模型。

在这个结果中可以看到啊,如果用十次多项式来拟合这个数据集的话,这就相当于什么呢?用五倍多的参数来换取线性模型,它均方误差接近一半的下降啊,这个下降呢还是比较可观的。

但是我们知道啊,训练集上的错误率较低,误差较小,不意味着测试集上的误差较小,根据偏差方差分解的理论,这么复杂的模型,方差通常会比较大,它的泛化性能呢肯定不容乐观。

既然全局概念在基于扩展当中的表现啊不尽如人意,那么局部化的处理又成了自然而然的选择。

其实呢多项式回归和局部化的非参数方法可以说是殊途同归。

两者的目的都是模拟自变量和因变量之间非线性的关系。

所以说呢使用非参数模型来实现非线性化,也是一个水到渠成的方式啊,那么多元自适应回归样条就是这样一种典型的非参数的回归方法。

多元自适应回归样条啊,它的英文缩写叫MARS啊,mars是线性回归的一个推广,它可以用于对自变量的非线性和不同自变量之间相互作用进行建模。

它和多项式回归的区别在于,后者呢是将非线性的来源看作全局模型的固有属性,而前者则是视非线性为不同参数的线性模型的组合。

其实跟贺技巧是一回事儿。

如果说将一个非线性函数的定义域划分成很多足够小的区域的组合。

那在每个小区域上呢,这个函数呢都会近似的满足线性的性质。

将这个过程调转方向的话,它就是ms方法的一个思路。

点击文稿。

你可以看到简单线性回归和多元自适应,回归样条的比较。

在这个图中呢,左侧是原始的线性回归,虽然它和大部分的数据点有较高的复合度,但是在右上角有一个离群点和模型却有着明显的偏离。

而这个mars做出的改进,就是在回归的结果中建立一个转折点,或者说建立一个分界点。

将原来的模型一分为二,在不同的区域上用两组不同的参数来描述。

这就相当于呢通过增加参数的数目来引入非线性的元素,从而呢起到降低军方误差的作用。

看到这儿啊,你可能就一拍大腿啊,虽然这个方法起了火星哥这么高大上的名字,但它背后的原理不就是分段函数吗?没错,这种由不同的多项式函数在多个临界点上拼接而成的新函数,就被叫做回归样条。

在自变量不同的取值范围之内,样条的系数会有所不同。

那么这个系数发生变化的临界点呢,就叫做分段的节点。

在不同的区间段内啊,我们要估计不同的系数。

估计这个系数的时候呢,mas采用的也是最小二乘法。

一般来说呢拼接起来的样条在节点上需要满足连续性的条件。

那这样的话,整体看起来这个函数依然是一个连续的函数。

在连续性当中,最简单的是函数本身的连续性,也就是临界点的左极限,还有右极限,两者相等都等于函数值。

如果在此基础上进一步满足一阶导数的连续,还有二阶导数连续这两个条件的话,这时候得到的样条就是三次样条。

三阶样条呢它是由不同的这个三阶多项式拼接而成的,它在节点处的不连续性啊已经不能够被人眼所察觉了。

我们看这个拟合结果的时候,就是一条平滑的这个曲线。

如果说让三次样条进一步在边界区域满足附加的这个线性约束条件的话,得到的就是自然三次样条和预先确定分段节点再产生奇函数,并且拼接的这个回归样条相比呢,另一类名为平滑样条的方法,可以动态的确定节点的位置,还有数目平滑样条。

它需要在拟合数据的同时尽可能保证拟合结果,具有平滑的特性。

那这也是它名称的一个来源。

点击文稿呢你可以看到平滑样条它的误差函数的姓式。

从这个表达式可以看出平滑样条的最小化的对象。

它有什么形式呢?是一个误差函数,加上正则画像的形式,这种形式和之前介绍到的领回归,还有lasso不谋而合。

在上面式子当中啊,拉姆达大于零是一个平滑系数,体现出的是算法。

对于这个函数它波动性的一个控制。

那么二阶导数呢反映的是函数在某个点上变化的一个剧烈程度,直线y等于AX加b它的二阶导等于零,说明这个图形在整个定义域上都具有平滑的形状。

而自由落体的表达式y等于二分之一GT方。

它的二阶导数约等于五,说明这个图形呢在每一个点上都有剧烈的变化。

平滑系数它最主要的作用就是通过控制模型的平滑度来实现偏差和方差的折中拉姆达等于零,意味着算法对模型的平滑度不做任何控制,是将每个数据点都作为自然三次样条的节点,得到的拟合结果呢就会发生剧烈的抖动。

反过来,如果让拉姆达等于正无穷的话,它就意味着对于抖动做出一个最大程度的抑制。

这时候平滑样条就会退化为普通的线性回归。

所以在实际应用当中啊,平滑系数这个超参数的取值,一般呢也要通过交叉验证来进行确定。

前面讨论的这几种非线性的处理方式呢,我们针对的都是单变量的清洗啊,只有一个属性或者说一个自变量x这些呢都可以看成是对简单线性回归的推广。

如果说我把推广的对象扩展到多元线性回归的话,得到的呢就是广义的可加模型。

广义可加模型。

它是将标准线性回归中每个自变量以及可能存在的自变量之间的交互性,都替换成一个非线性的平滑函柱。

那么这些个非线性函数之间呢则保持一个相加的关系。

它的数学表达式可以写成YI,等于贝塔零,加上f一XI一,加上f二XI二一直加到FPXIP.那么这里的每个f一、f二一直到FP啊,都是不同的这个平滑函数。

那么你可能联想到了广义可加模型可以和之前介绍过的广义线性模型相融合。

通过链接函数将可加模型的结果转换成线性模型的输出。

啊,这呢也使得广义可加模型,可以用在分类算法之中,要使用这个python来实现回归样条模型的话啊,可以利用这个pasthy这么一个库。

Pasthy这个库呢脱胎于统计当中经常使用的r语言,它可以看成是而言的部分功能在python当中的一个实现啊,它是使用简单字符串的这种公式语法来描述统计模型。

所以呢适合和前面介绍过的这个sttes models这个库来进行配套的使用。

如果你想了解关于pathy更多信息的话啊,你可以查阅它的官方文档。

在这儿呢我们就不介绍它,利用passage来实现回归样条的时候,我们主要会应用它的这个CR函数来生成自然三次样条。

作为奇函数,如果将回归样条应用到线性回归的这个英超数据集当中啊,我们可以把节点的数目设定为场均评分的这个三个四等分点。

确定了最大值,确定了最小值,就可以计算出它这个三个四等分点啊。

这时候进行样条回归的话,它的结果点击文稿。

你可以看到这个结果呢得到的是一个平滑的曲线。

那但是计算均方误差的时候,你会发现样条回归它的军方误差是大于原始的线性回归的,是吧?这原因可能出在哪儿呢?可能在于说数据本身呢其实已经具有了良好的线性特性啊,在这种情况下啊,我要强行的使用非线性模型进行拟合的话,这就不会带来良好的效果。

今天我和你分享了通过奇函数扩展来实现非线性模型的方法,包含着以下四个要点,第一,机扩展,将线性回归中的自变量替换成为非线性的函数,使模型呢能够描述非线性的关系。

第二,多项式回归将回归结果表示为属性的多项式之和。

第三,样条方法将回归结果表示为若干非线性函数的组合,可以分为回归样条和平滑样条。

第四,广义可加模型是对多元线性回归的机扩展机扩展。

这个概念呢其实它主要出现在统计学的文献当中,它用来干嘛呢?用来进行曲线的拟合啊,它是曲线拟合的一个有利工具。

相比之下呢,在机器学习当中,这个概念其实应用的并不多。

那么你认为在以预测建模为主要目标的这个机器学习里,它能够发挥多大的作用?能够发挥什么样的作用呢?欢迎分享你的观点。