【机器学习】第四章 回归算法

第3章对分类算法进行了介绍,接下来介绍回归算法。回归算法是种根据数据构建模型,再利用这个模型训练其中的数据并进行处理的算法,训练得到的是样本特征与样本标签之间的映射,样本标签是连续的。回归算法以线性模型为主。线性模型指的不是一个模型,而是一类模型,包括线性回归、岭回归、LASSO回归等。

4.1 线性回归

4.1.1 线性模型

对于线性模型,其公式一般如下所示:

式中,x[0]~x[n]表示特征,w[0]~w[n]和b表示模型的参数。 当数据集特征数为1时,线性模型公式如下:

下面利用一组数据通过线性模型的算法进行建模,并可视化观察其模型。代码如下:

输出结果如图4-1所示。 通过模型可以看出满足上述只有一个特征条件的公式。在一次函数y=wx+b中,自变量前面的代表斜率,b代表截距,它们在线性模型中同样适用。

线性模型并不是只有一次函数这样的模型,当数据含有两个特征时,即模型含有两个变量时,代码如下:

从图4-2和图4-3中可以看到,线性模型是一个平面。对于构建线性模型,当数据只有一个特征时,构建的模型是一条线;当数据有两个特征时,构建的模型是一个平面;当数据特征数多于两个时,构建的模型是一个超平面。这是所有线性模型的特点。线性模型中,大多数算法都由线性回归改进而来,那线性回归是如何实现的呢?相关内容见4.1.2小节。

4.1.2 线性回归

线性回归又被称为最小二乘法。在线性回归中,特征值与目标值之间存在着线性关系。线性回归算法指的是在认为数据满足线性关系的时候,根据训练数据构建出一个模型,并用此模型进行预测。

线性回归算法的目的是求线性回归方程,寻找参数w和b,使对训练集的预测值与真实的回归目标值,之间的损失函数值最小。线性回归模型的损失函数一般有两种:绝对损失函数和平方损失函数。 绝对损失函数,即:

平方损失函数,即:

由于平方误差利于算法的运算,通常将平方损失函数作为线性回归模型的损失函数,线性回归模型求解就是为了使损失函数值最小。

上面提到线性回归方程中的w和b对应数学函数中的斜率和截距,在线性回归算法中有两个参数coef和intercept,分别用来存储回归模型的系数和截距。在线性回归算法中,因为没有参数,所以不用调节。

下面利用线性回归对乳腺癌数据集进行建模,代码如下:

可以看到,线性回归模型的评分达到了约0.715,而且给出了其模型的系数和截距。线性模型在线性可分的情况下表现得非常出色,但在线性不可分的情况下,线性模型会束手无策,例如对于以下数据:

从数据中可以看出,其模型应该是一个二次函数,接下来利用线性回归对数据进行建模。代码如下:

可以看到模型的效果令人不太满意。既然数据是线性不可分的,即利用线性回归无法对其进行划分,那么应该怎么处理呢?在4.1.3小节中将介绍针对线性不可分数据的处理方法--多项式回归。

4.1.3 多项式回归

在分类算法中,如果数据线性不可分,则可以使用逻辑回归添加特征,或者选择核SVM处理数据。在线性模型中,线性回归适用于处理线性可分的数据,当处理非线性可分的数据时可以使用多项式回归。在多项式回归中,要找到一条曲线来拟合数据点。多项式回归算法可用下式表示:

因为sklearm库包含多项式回归算法,所以通过调用该库可以直接使用这些算法,代码如下:

从图4-6中可以看到多项式回归对数据拟合得比较完美

4.1.4 算法的优缺点

  1. 线性回归 (1)优点 ①线性回归在分析多因素模型时,建模速度快,不需要很复杂的计算过程,在数据量大的情况下运行速度依然很快,更加简单和方便。 ②线性回归可以准确地计量各个因素之间的相关程度与回归拟合程度的高低,优化预测线性回归方程的效果。

​ ③线性回归可以根据系数给出每个变量的解释。 (2)缺点 ​ ①线性回归方程只是一种推测方程,这影响了因子的多样性和某些因子的不可测性,使得我性回归分析在某些情况下受到限制。 ​ ②线性回归对异常值很敏感。

  1. 多项式回归 (1)优点 ①多项式回归能够拟合非线性可分的数据,更加灵活地处理复杂的关系。因为需要设置变量的指数,所以多项式回归是完全控制要素变量的建模算法。 (2)缺点 ①多项式回归需要一些数据的先验知识才能选择最佳指数。 ②如果指数选择不当,多项式回归容易出现过拟合。

4.2岭回归

4.2.1 算法介绍

讲解岭(ridge)回归之前,要先介绍共线性的概念。共线性是指假设一个数据集有两个特征变量,分别为X和X,当特征变量X变化的时候,X也会受到影响而发生变化,最终影响回归模型的建立。所以,在进行回归算法模拟时需要排除共线性的影响。这个问题通过线性回归难以解决,而通过岭回归或者LASSO回归就能解决。共线性是否存在可以通过以下方式判断:特征变量的回归系数不明显,添加或删除特征变量后,回归系数的变化明显。对于共线性问题本小节只简单介绍,不做详细讲解。

线性回归除了不能解决线性不可分、共线性问题外,还有一个缺点就是容易产生过拟合,所以在线性回归的基础上创造出了岭回归。岭回归是由最小二乘法改进而来,虽然利用了最二乘法,但放弃了其无偏性,以降低精度来获得更为符合实际的回归系数的回归方法,这种方法要强于最小二乘法。在岭回归中,不但要求模型特征系数要表现好,而且会添加约束,量减小特征的系数,使之接近于0。这种约束方式被称为L2正则化,其目的是避免过拟合。

在岭回归中还添加了参数,其中最重要的参数莫过于alpha,通过调整alpha的值可以调塾特征系数的大小。

4.2.2 算法实现

在本例中,为了方便与线性回归对比,使用线性回归中用过的乳腺癌数据集。代码如下:

线性回归中,模型在训练集上的评分达到了约78.2%,在测试集上的评分达到了约71.5%,下面利用岭回归对数据进行处理。

从岭回归得到的精度可以发现,训练集的精度有所下降,而测试集的精度却提高了,这说明了我们的猜想是正确的,线性回归确实存在过拟合问题。

因为还未对岭回归的参数进行调整,可能还存在更好的模型,所以接下来对岭回归的alpha参数进行调整。

通过对alpha参数的调整,发现模型在测试集上的精度又稍有提高。那么alpha的改变到底改变了什么呢?又是如何改变的呢?下面通过可视化观察岭回归对特征的处理。

从图4-7中可以看到,线性模型没有经过正则化的处理,特征系数的数值都比较大,而岭回归中的系数接近于0。当岭回归的 alpha值为1时,特征系数几乎和0在一条线上;当alpha值为0.1时,特征系数有所增大。对于alpha值,当alpha值增大时,数据集的特征系数会减小,从而降低训练集的性能,但是会提升测试集的性能,也就是泛化性能;当alpha值减小时,特征系数则会增大;当alpha值非常小时,则会消除正则化,岭回归建立的模型也会趋向于线性回归。

4.2.3 算法的优缺点

  1. 优点 (1)岭回归可以解决特征数比样本数多的问题。 (2)岭回归作为一种缩减算法,可以判断哪些特征重要,哪些特征不重要,实现类似降维 的效果。 (3)岭回归可以解决变量间存在的共线性问题。

  2. 缺点 (1)岭回归不能降低样本特征数,计算量大。 (2)岭回归牺牲了一定的精度。

4.3 LASSO 回归

4.3.1 算法介绍

与岭回归相似,套索(LASSO)回归也用于限制数据的特征系数,防止过拟合发生。不同的是,LASSO回归中用绝对值偏差作为算法的正则化项,即在LASSO回归中,会使某些特征系数恰好为0。LASSO回归处理后,某些特征被完全忽略,从而只研究重要特征对数据的影响,这被称为L1 正则化。

LASSO的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的特征系数,得到可以解释的模型。将LASSO应用于回归分析,可以在参数估计的同时实现变量的选择,较好地解决回归分析中的多重共线性问题,并且能够很好地解释结果。

LASSO回归的参数也与岭回归类似,比较重要的是alpha。既然有了一种正则化的方式,为什么还要有另一种方式呢? 这是因为L1正则化用于处理高维数据(高维数据就是指维度很高的数据),也就是说特征变量十分多的情况。在处理高维数据过程中碰到最大的问题就是维度过高,因为维度越高计算量越大,无法可视化,无法观察模型工作原理,还会导致过拟合,无法精确预测结果。L2正则化会保留特征来降低系数,这样并不会减小计算量,而L1正则化会直接删掉一些特征系数。因此L1正则化在高维数据集中的优势尤其明显。

在机器学习中有一种方式专门应对高维数据,就是特征降维。降维就是将原来的数据进行整合,使其特征变少,而且整合的数据中包含了大量互不相关的数据。进行特征降维最主要的方法就是主成分分析(principal component analysis,PCA)算法,第6章会讲解。但是,PCA算法只适用于高维但特征量小于数据量的情况,当特征量大于数据量时无法运用。高维数据在空间中分布得非常稀疏,与空间的维度相比其数据量显得非常少。最小角回归法就是解决高维数据特征维度n远高于数据量m的方法。如果数据集的特征变量比较多,LASSO回归是很好的选择。

LASSO是另外一种对数据进行降维的方法,此方法不仅适用于线性模型,还适用于非线性模型。

4.3.2 算法实现

在LASSO回归中,仍使用线性回归和岭回归中使用的病理数据集,因为LASSO回归与岭回归十分相似,下面先与岭回归进行对比分析。代码如下:

经过LASSO回归处理后,系数矩阵中元素几乎全为0,可以看到此时建立的模型非常差,可能存在欠拟合问题。下面通过调节alpha参数,观察是否能提高评分。

通过调节参数,精度得到了提高,这说明了此数据集中大多数特征都比较重要,LASSO回归不适用于此数据集,所以模型精度没有前面两种算法构建的模型精度高。当继续减小alpha值时会消除正则化。

可以看到,得到的模型与利用线性回归得到的模型类似,从训练集精度与测试集精度来看可能又出现了过拟合问题。 接下来可视化LASSO回归与岭回归的特征系数。

输出结果如图4-8所示。 通过图4-8中的数据可以看到,当LASSO回归的alpha值较大时,数据集的特征系数几乎全为0,随着alpha值的减小,特征系数才逐渐增大,当alpha等于0.00001时,几乎没有了正则化的约束;而在岭回归中,虽然有特征系数很小的点,但特征系数都不为0。在LASSO回归和岭回归中,虽然都有alpha参数,但其意义完全不同。在岭回归中,随着alpha值的增大,数据集的特征系数会减小,随着alpha值的减小,数据集的特征系数会增大;而在LASSO回归中,随着alpha值的增大,特征系数会增大,随着alpha值的减小,特征系数会减小。而且在岭回归 中,特征系数不会为0,在LASSO回归中会。

4.3.3 算法的优缺点

  1. 优点 (1)LASSO回归的出现能够有效解决线性回归中出现的过拟合问题。2 (2)岭回归与LASSO回归最大的区别在于岭回归引入的是L2正则化,LASSO回归引入的是L1正则化。LASSO回归能够使许多特征变量变成0,使运算速度变快,这点要优于岭回归。

  2. 缺点 LASSO回归不适用于一般情况,仅适用于特征非常多和对模型进行解释的情况。

4.4 支持向量回归

4.4.1 算法介绍

在分类算法中介绍了SVM算法,SVM本身是针对二分类问题提出的,而支持向量回归(support vector regression, SVR)是 SVM 用来解决回归问题的一个分支。SVM在分类和回归上应用的区别在于,其用于回归问题时不用像用于分类问题一样将各类样本点分开,因此在超平面的选取上存在差异。SVM就是找到一个平面,让两个分类集合的支持向量离分类平面最远,使得所有的数据都远离这个分类平面,如图4-9所示。

而SVR就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。如图4-10所示。

SVR的参数与SVC基本相同,所以不再多做介绍。 非线性SVR与非线性SVC一样,将低维空间的数据映射到高维空间,然后在高维空间中找到线性可分的超平面,再把高维空间的超平面映射回低维空间。然而,将低维空间的数据映射到高维空间,并在高维空间做计算,其计算量特别大。

利用SVR的核函数可以解决这个问题,用核函数代替线性方程中的线性项可以使原来的线性算法非线性化,即能做非线性回归。此时引进核函数达到了升维的目的,也可以有效地控制过拟合问题的发生。通俗地讲,应用核函数表示在低维空间中就对数据做了计算,这个计算可以看作将低维空间的数据映射到高维空间所做的计算。

4.4.2 算法实现

下面随机生成一个log()函数,观察使用不同核时模型的构建。代码如下:

从图4-11中可以看出,线性核只能处理线性问题,也就是说线性核只能建立一个线性超平面。对于SVM在分类中的效果,可以利用高斯核(rbf核)。代码如下:

从图4-12中可以看到相对于线性核,rbf核处理非线性问题的效果非常不错,但还稍有欠缺,可以通过调节其他参数来实现。通过对各个参数的调节,发现以下情况时建立的模型的效果不错,代码如下:

是否存在更好的模型呢?读者可以动手操作试一试。

4.4.3 算法的优缺点

1.优点 (1)SVR相对于处理非线性问题的多项式回归,可以直接用核函数,避开高维空间的 复杂性。 (2)SVR再利用在线性可分的情况下的求解方法直接求解对应的高维空间的决策问题。 (3)当核函数已知时,可以减小高维空间问题的求解难度。同时SVR基于小样本统计理 论,这符合机器学习的目的。

2.缺点 (1)SVR对每个高维空间如何在此空间上映射核函数,现在还没有合适的方法。 (2)SVR只是把高维空间的求解困难转为了求核函数的困难。 (3)SVR在确定核函数以后,在求解分类问题时,要求解函数的二次规划,这就需要大量 的存储空间。

4.5 回归树

4.5.1 算法介绍

说到决策树,我们很自然地会想到用其做分类,每个叶节点代表有限类别中的一个。第3章对决策树算法做了详细讲解。对于决策树解决回归问题方法,即回归树,虽然是决策树在回归问题上的应用,但是与分类树存在着差异。 与分类树不同,回归树做的是回归,是对值的回归预测。例如,可以通过回归树预测房价,或者预测未来一天的温度等,回归树输出的是连续值,而不是离散的分类类别。对于解决回归问题的方法,我们第一时间想到的可能就是线性回归,当线性回归效果不好的时候,可以使用多项式回归或者是SVR。但回归树也很重要,那回归树到底是什么呢?

回归树是可以用于回归的决策树模型,利用超平面对空间进行划分,一个回归树对应着空间的一个划分以及在划分上的输出值,回归树选择特征和它的取值将输入空间划分为两部分,每次划分都将当前的空间一分为二,这样使得每一个叶节点都分布在空间中的一个不相交的区域。在进行决策的时候,会根据样本的特征值一步步划分各区域,最后使样本落入回归树划分的区域中的一个。既然是回归树,那么必然会存在以下两个核心问题:如何选择划分点?如何决定叶节点的输出值?

实际上,回归树总体流程类似于分类树,与分类树不同的是,分类树采用信息论中的方法,通过计算选择最佳划分点。而在回归树中,对输入空间的划分采用一种启发式的方法,会遍历所有输入特征,即在进行回归树的分枝时穷举每一个特征的每一个阈值,找到最优划分特征和最优划分点,衡量的方法是最小化平方误差。分枝直至达到预设的终止条件(如叶节点的个数达到上限),那么回归树就构建完成了。接下来分析回归树的参数:

在分类问题中知道决策树算法包括ID3、C4.5和CART等算法,这3种算法的区别就在于划分子节点的策略不同,分别是信息熵、信息增益率、基尼系数,而在回归问题中,回归树中参数criterion的默认值并不是信息熵、信息增益率或者基尼系数。因为在回归树中criterion的值为mse或者mae,在这种情况下,分类问题中的ID3、C4.5、CART之间的区别就没有了,只存在每个父节点应被划分成多少个子节点的问题。

那么既然算法划分节点的策略没有什么不同,是不是上述决策树中所有的算法都能用于回归问题呢?其中CART就可以用于回归问题,因为CART算法的名称就是"分类和回归树"。至于ID3和C4.5能不能用于回归问题,答案是不能,主要原因是特征的评价标准不一样。CART有两种评价标准:方差和基尼系数。而ID3和C4.5的评价标准都是信息熵。信息熵和基尼系数是针对分类任务的指标,而方差是针对连续值的指标,因此CART可以用于回归问题。

实现CART算法的过程有两步:决策树生成和剪枝。回归问题的决策树生成,与通用的决策树生成的过程一样,采用递归的方式构建二叉决策树,基于训练数据集生成决策树,自上而下从根开始建立节点,划分节点,使得子节点中的训练集尽量被正确地划分。在每个节点处进行划分,对不同的问题使用不同的指标来划分。对于分类问题,可以使用基尼系数、双化或有序双化;对于回归问题,可以使用最小二乘偏差或最小绝对偏差。决策树剪枝是指用验证数据集对已生成的树进行剪枝并选择最优子树,这时将损失函数值最小作为剪枝的标准,用代价复杂度剪枝。

4.5.2 算法实现

SVR最后给出的模型可能并不是最好的模型,接下来利用回归树看会不会得到更好的模型。代码如下:

图中x为特征值,为目标值。 从图4-14中可以看到,回归树的效果还没有SVR好,这也暴露了回归树的缺点,即它不适用于小型的数据集,接下来调整数据量:

从图4-15中可以看到,划分基本处于完美拟合的状态,当然也可能存在过拟合问题。处理 实际的问题时,单一的回归树肯定是不够用的。可以利用集成学习中的Boosting框架,对回归 树进行改良和升级,得到的新模型就是提升树。

4.5.3算法的优缺点

  1. 优点 (1)回归树运行速度较快,结果可解释,并易于说明。 (2)回归树非常灵活,可以允许有部分错分样本,面对诸如存在缺失值的问题,它显得非 常稳健。 (3)回归树能获取数据集中的非线性关系,了解数据集中的特征交互,不需要特征缩放就 能在数据集中找到最重要的特征。

  2. 缺点 (1)回归树对连续性的字段比较难预测;对有时间顺序的数据,需要做很多预处理的工作。 (2)回归树可能会出现过拟合问题,预测精度较低。 (3)回归树需要调整一些参数,不适用于小型数据集。 (4)在实践中很少使用回归树,而是更多地使用集合树。

4.6 小结

本章学习了监督学习算法中的回归算法,包括线性回归、岭回归、LASSO回归、SVR、回归树等。

线性回归在数理统计中可用于回归分析,是用来确定变量间相互依赖的定量关系的一种统计分析方法。其中只有一个自变量的情况称为简单回归,含有多个自变量的情况称为多元回归。多项式回归模型是线性回归模型的一种,可以通过从系数构造多项式的特征来扩展。

岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价,获得更为符合实际、更可靠的回归系数的回归方法。

LASSO算法用绝对值偏差作为算法的正则化项。该算法是一种压缩估计算法,它通过构造二个惩罚函数C,得到一个模型,使它可以压缩一些系数为0。

SVR是SVM的重要应用分支。SVM分类是指找到一个分类平面,让两个分类集合的支持向量离分类平面最远。SVR回归是指找到一个回归平面,让一个集合的所有数据到回归平面的距离最近。

回归树是决策树用于回归问题的分支。回归树采用一种启发式的方法,遍历所有输入特征,通过最小化平方误差,在进行分枝时穷举每一个特征的每一个阈值,找到最优划分特征和最优划分点。

习题4

1.什么是线性回归?线性回归有何缺点?

2.岭回归与LASSO回归有何异同点?

3.SVM应用于分类和回归的原理有何不同?

4.是否决策树中所有算法都能用于回归?为什么?

相关推荐
c76910 分钟前
【文献笔记】ARS: Automatic Routing Solver with Large Language Models
人工智能·笔记·语言模型·自然语言处理·llm·论文笔记·cvrp
柏峰电子39 分钟前
光伏电站气象监测系统:为清洁能源高效发电保驾护航
大数据·人工智能
后端小张41 分钟前
智谱AI图生视频:从批处理到多线程优化
开发语言·人工智能·ai·langchain·音视频
零一数创44 分钟前
智慧能源驱动数字孪生重介选煤新模式探索
人工智能·ue5·能源·数字孪生·ue·零一数创
叫我:松哥1 小时前
基于python django深度学习的中文文本检测+识别,可以前端上传图片和后台管理图片
图像处理·人工智能·后端·python·深度学习·数据挖掘·django
程序员岳焱1 小时前
从 0 到 1:Spring Boot 与 Spring AI 打造智能客服系统(基于DeepSeek)
人工智能·后端·deepseek
SugarPPig1 小时前
Hugging Face 模型的缓存和直接下载有什么区别?
人工智能·缓存
AI扶我青云志1 小时前
bert模型中config.json中所有参数
人工智能·json·bert
问道财经1 小时前
豪鹏科技锚定 “AI + 固态” 赛道:从电池制造商到核心能源方案引领者的战略跃迁
人工智能·科技·能源
AKAMAI2 小时前
借助DataStream和多路复用实现可观察性
人工智能·云原生·云计算