轻松玩转 Scikit-Learn 系列 —— 多项式回归 !

简介: 上次刚和小伙伴们学习过 PCA,PCA 主要用来降低数据特征空间的维度,以达到方便处理数据,减小计算开销,和数据降噪提高模型准确率的目的。

上次刚和小伙伴们学习过 PCA,PCA 主要用来降低数据特征空间的维度,以达到方便处理数据,减小计算开销,和数据降噪提高模型准确率的目的。


而这节我们要一起看的多项式回归,它为了提高模型预测的准确率恰恰做了一件相反的事情。多项式回归的基本思想是:以线性回归为基础,拓展数据集特征空间的维度,且被拓展的特征空间维度上的数据是给定数据集相关项的多项式项。


下面我们举个小栗子,来引入我们今天的主角。

0.jpg1.jpg


模拟一个简单的多项式回归:

2.jpg3.jpg4.jpg


在上例中,我们给一个二次曲线的拟合数据加上一些噪音来产生一个数据集,然后实例化一个线性回归模型,去拟合出一条直线,结果可想而知,你用一个线性模型去拟合二次数据点准确率肯定不高。接着,我们在原始数据上手动添加了一维,且第二维数据是第一维数据的平方,然后我们再次实例化一个线性回归模型,这次拟合出了一条曲线,就没那么辣眼睛了吧。下面我们使用 scikit-learn 中包装好的多项式回归在试验下。


scikit-learn 中的多项式回归与 Pipeline

使用多项式回归时,由于拓展的维度是已给定维度的多项式项,而多项式的高次操作可能会导致数据之间的量级差异加剧,所以,对已经进行过多项式操作的数据进行归一化操作也是十分必要的,然后我们再使用回归模型进行预测,以得到准确度更高的模型。


为了简化这个过程,个人墙裂推荐使用 scikit-learn 中的 Pipeline 将这三个模型封装起来串联操作,让模型接口更加简洁,使用起来也更加的优雅。接下来是使用手工制作数据集使用 scikit-learn 中的内封模型进行的代码演示。

5.jpg


为方便调用,使用 Pipeline 封装了一个多项式回归函数,函数 PolynomialRegression() 中传入的超参数 degree 是用来指定所得的多项式回归中所用多项式的阶次。

6.jpg7.jpg


为了产生过拟合的效果,令 degree=100, 有些夸张 。

8.jpg9.jpg


模型泛化

一般情况下,我们并不知道我们所研究的数据的分布规律,所以说在使用多项式回归的时候也很难直接给出符合数据潜在规律的次幂,当我们指定的 degree 过低时,当然会直接从预测的准确率直接反映出来,但是当超参数 degree 过高时,就经常会呈现出上图所示的过拟合现象,这时,我们可以通过模型泛化来解决这个问题。


常用的用于解决模型过拟合问题的泛化回归模型有岭回归和 LASSO 回归,这两种回归都是在原来回归模型的损失函数中添加上对应特征系数的相关项,岭回归使用了各个系数的平方和:

10.jpg

而 LASSO 回归是各项系数绝对值之和:

11.jpg

alpha 是岭回归和 LASSO 回归正则项前一项重要的可调整的超参数,下图显示了 alpha 的变化对训练所得模型权重的影响(注意alpha在下图中的横轴上是逐渐变小的),可以看出超参数 alpha 对训练得到的模型参数的影响还是挺大的,随着 alpha 的增大,模型参数的模值被压缩到一个更小的范围之内。

12.jpg


那么接下来我们就从 scikit-learn 中引入岭回归和 LASSO 回归模型,并将其实例化,看看他们的模型泛化能力到底如何:

13.jpg14.jpg


上面我们已经训练了一个岭回归,并在图中绘出数据点及其拟合的曲线,下面我们在实例化一个LASSO回归模型,并绘出相应的数据点和曲线:

15.jpg16.jpg


同样是最高次幂为100的多项式回归模型,添加了 L1和L2 正则的岭回归和 LASSO 回归相比线性回归的曲线缓和了不少,极大程度的缓解了模型的过拟合,通过调整超参数 alpha,还能得到更准确地模型。


相关文章
|
18天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
24 3
|
23天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
28 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
23 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
53 2
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
65 1
|
1月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
28 4
|
1月前
|
机器学习/深度学习 数据采集 算法
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
38 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
136 8
|
2月前
|
机器学习/深度学习 Python
9-3|使用Python的scikit-learn库来训练一个逻辑回归模型,检测句子是否含有侮辱性内容:
9-3|使用Python的scikit-learn库来训练一个逻辑回归模型,检测句子是否含有侮辱性内容:
|
2月前
|
机器学习/深度学习 算法 数据挖掘