Python基于Lasso特征选择、GM算法和SVR回归算法进行财政收入影响因素分析及预测

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: Python基于Lasso特征选择、GM算法和SVR回归算法进行财政收入影响因素分析及预测

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

随着信息化的发展和科学技术的进步,数据分析与挖掘技术开始得到广泛应用。人们无时无刻不面对着海量的数据,这些海量数据中隐藏着人们所需要的具有决策意义的信息。数据分析与挖掘技术的产生和发展就是帮助人们利用这些数据,并从中发现隐藏的有用的信息。

在此背景下,本项目主要运用数据分析与挖掘技术对市财政收入进行分析,挖掘其中隐藏的运行模式,并对未来两年的财政收入进行预测,希望能够帮助政府合理地控制财政收支,优化财源建设,为制定相关决策提供依据。

2.项目目标

财政收入是指政府为履行其职能、实施公共政策和提供公共物品与服务需要而筹集的一切资金的总和。财政收入表现为政府部门在一定时期内(一般为一个财政年度)所取得的货币收入。财政收入是衡量一国政府财力的重要特征,政府在社会经济活动中提供公共物品和服务的范围和数量,在很大程度上取决于财政收入的充裕情况。

在我国现行的分税制财政管理体制下,地方财政收入不但是国家财政收入的重要组成部分,而且是具有相对独立性的构成内容。如何制定地方财政支出计划,合理分配地方财政收入,促进地方的发展,提高市民的收入和生活质量是每个地方政府需要考虑的首要问题。因此,地方财政收入预测是非常必要的。

考虑到数据的可得性,本项目所用的财政收入分为地方一般预算收入和政府性基金收入。地方一般预算收入包括以下两个部分:

·税收收入。主要包括企业所得税与地方所得税中中央和地方共享的40%,地方享有的25%的增值税印花税等。

·非税收收入。包括专项收入、行政事业性收费、罚没收入、国有资本经营收入和其他收入等。

政府性基金收入是国家通过向社会征收以及出让土地、发行彩票等方式取得收入,并专项用于支持特定基础设施建设和社会事业发展的收入。

由于1994年我国对财政体制进行了重大改革,开始实行分税制财政体制,影响了财政收入相关数据的连续性,所以1994年前后的数据不具有可比性。由于没有合适的方法来调整这种数据的跃变,因此本项目仅对1994年至2013年的数据进行分析(本项目所用数据均来自《统计年鉴》)。

结合财政收入预测的需求分析,本次数据分析建模目标主要有以下两个:

1)分析、识别影响地方财政收入的关键属性。

2)预测2014年和2015年的财政收入。

3.项目过程

众多学者已经对财政收入的影响因素进行了研究,但是他们大多先建立财政收入与各待定的影响因素之间的多元线性回归模型,运用最小二乘估计方法来估计回归模型的系数,通过系数来检验它们之间的关系,模型的结果对数据的依赖程度很大,并且普通最小二乘估计求得的解往往是局部最优解,后续步骤的检验可能就会失去应有的意义。

本项目在已有研究的基础上运用Lasso特征选择方法来研究影响地方财政收入的因素。在Lasso特征选择的基础上,鉴于灰色预测对少量数据预测的优良性能,对单个选定的影响因素建立灰色预测模型,得到它们在2014年及2015年的预测值。由于支持向量回归较强的适用性和容错能力,对历史数据建立训练模型,把灰色预测的数据结果代入训练完成的模型中,充分考虑历史数据信息,可以得到较为准确的预测结果,即2014年和2015年财政收入。

3.1.分析步骤与流程

本项目的总体流程如图所示,主要包括以下步骤:

1)对原始数据进行探索性分析,了解原始属性之间的相关性。

2)利用Lasso特征选择模型提取关键属性。

3)建立单个属性的灰色预测模型以及支持向量回归预测模型。

4)使用支持向量回归预测模型得出2014年至2015年财政收入的预测值。

5)对上述建立的财政收入预测模型进行评价。

image.png

4.数据采集

影响财政收入(y)的因素有很多,在查阅大量文献的基础上,通过经济理论对财政收入的解释以及对实践的观察,考虑一些与能源消耗关系密切并且直观上有线性关系的因素,初步选取以下属性为自变量,分析它们之间的关系。各项属性名称及属性说明如表所示。

属性名称和说明

image.png

image.png

5. 探索数据分析

5.1.描述性统计分析

对各个属性进行描述性统计分析,关键代码如下:

image.png

通过代码清单得到的结果如表所示。其中,财政收入(y)的均值和标准差分别为618.08和609.25,这说明某市各年份财政收入存在较大差异;2008年后,某市各年份财政收入大幅上升。

各个属性的描述性统计

image.png

5.2.相关性分析

采用Pearson相关系数法求解原始数据的Pearson相关系数矩阵,关键代码如下:

求解原始数据的Pearson相关系数矩阵

image.png

对原始数据进行相关分析,得到相关系数矩阵,如表所示。

变量Pearson相关系数矩阵

image.png

image.png

从上表可以看出,居民消费价格指数(x11)与财政收入(y)的线性关系不显著,呈现负相关。其余属性均与财政收入呈现高度的正相关关系,按相关性大小,依次是x3、x4、x5、x7、x8、x10、x13、x2、x9、x1、x6和x12。同时,各属性之间存在着严重的多重共线性,例如,属性x1、x4、x5、x6、x8、x9、x10与除了x11之外的属性均存在严重的共线性;属性x2、x3、x7与除了x11和x12外的其他属性存在着严重的多重共线性;x11与各属性的共线性不明显;x12与除了x2、x3、x7、x11之外的其他属性有严重的共线性;x13与除了x11之外的各属性有严重的共线性。除此之外,x2和x3、x2和x13、x3和x13等多对属性之间存在完全的共线性。

由上述分析可知,选取的各属性除了x11外,其他属性与y的相关性很强,可以用作财政收入预测分析的关键属性,但这些属性之间存在着信息的重复,需要对属性进行进一步筛选。

绘制相关性热力图,关键代码如下: 

绘制相关性热力图

image.png

通过代码清单得到相关性热力图,如图所示,由颜色的深浅可看出各属性除了x11与y为负弱相关外,其他属性与y强相关。

image.png

6.数据预处理

Lasso回归方法属于正则化方法的一种,是压缩估计。它通过构造一个惩罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零,保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。

Lasso以缩小特征集(降阶)为思想,是一种收缩估计方法。Lasso方法可以将特征的系数进行压缩并使某些回归系数变为0,可以广泛地应用于模型改进与选择。通过选择惩罚函数,借用Lasso思想和方法实现特征选择的目的。模型选择本质上是寻求模型稀疏表达的过程,而这种过程可以通过优化一个“损失”+“惩罚”的函数问题来完成。

Lasso参数估计定义如式所示。

image.png

其中,λ为非负正则参数,控制着模型的复杂程度,λ越大对特征较多的线性模型的惩罚力度就越大,从而最终获得一个特征较少的模型, image.png 称为惩罚项。调整参数λ的确定可以采用交叉验证法,选取交叉验证误差最小的λ值。最后,按照得到的λ值,用全部数据重新拟合模型即可。

当原始特征中存在多重共线性时,Lasso回归不失为一种很好的处理共线性的方法,它可以有效地对存在多重共线性的特征进行筛选。在机器学习中,面对海量的数据,首先想到的就是降维,争取用尽可能少的数据解决问题,从这层意义上说,用Lasso模型进行特征选择也是一种有效的降维方法。从理论上来说,Lasso对数据类型没有太多限制,可以接受任何类型的数据,而且一般不需要对特征进行标准化处理。

Lasso回归方法的优点是可以弥补最小二乘法和逐步回归局部最优估计的不足,可以很好地进行特征的选择,可以有效地解决各特征之间存在多重共线性的问题。缺点是如果存在一组高度相关的特征时,Lasso回归方法倾向于选择其中的一个特征,而忽视其他所有的特征,这种情况会导致结果的不稳定性。虽然Lasso回归方法存在弊端,但是在合适的场景中还是可以发挥不错的效果的。在财政收入预测中,各原始属性存在着严重的多重共线性,多重共线性问题已成为主要问题,这里采用Lasso回归方法进行特征选取是恰当的。使用Lasso回归方法进行关键属性选取,关键代码如下:

Lasso回归选取关键属性

image.png

通过代码清单得到各个属性的系数,如表所示

image.png

由表可看出,利用Lasso回归方法识别影响财政收入的关键影响因素是社会从业人数(x1)、社会消费品零售总额(x3)、城镇居民人均可支配收入(x4)、城镇居民人均消费性支出(x5)、全社会固定资产投资额(x7)、地区生产总值(x8)、第一产业产值(x9)和居民消费水平(x13)。

7.模型构建

7.1.灰色预测算法

灰色预测法是一种对含有不确定因素的系统进行预测的方法。在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据处理后的时间序列即称为生成列。灰色系统常用的数据处理方式有累加和累减两种。

灰色预测是以灰色模型为基础的,在众多的灰色模型中,GM(1,1)模型最为常用。

image.png

image.png


3)求解微分方程,即可得到预测模型,如式(6-3)所示。

image.png

4)由于GM(1,1)模型得到的是一次累加量,将GM(1,1)模型所得数据 image.png 经过累减还原为 image.png ,即X0的灰色预测模型如式(6-4)所示。

image.png

后验差检验模型精度如表所示。

后验差检验判别参照表

image.png

灰色预测法的通用性较强,一般的时间序列场合都适用,尤其适合那些规律性差且不清楚数据产生机理的情况。灰色预测模型的优点是预测精度高、模型可检验、参数估计方法简单、对小数据集有很好的预测效果;缺点是对原始数据序列的光滑度要求很高,在原始数据列光滑性较差的情况下灰色预测模型的预测精度不高,甚至通不过检验,结果只能放弃使用灰色模型进行预测。

7.2.SVR算法

image.png

image.png

image.png

image.png

再求极大问题(取负号变极小问题)如式(6-11)和式(6-12)所示。

image.png

条件如式(6-13)所示。

image.png

image.png

由于支持向量机拥有完善的理论基础和良好的特性,人们对其进行了广泛的研究和应用,涉及分类、回归、聚类、时间序列分析、异常点检测等诸多方面。具体的研究内容包括统计学习理论基础、各种模型的建立、相应优化算法的改进以及实际应用。支持向量回归也在这些研究中得到了发展和逐步完善,已开展了许多富有成果的研究工作。

相比较于其他方法,支持向量回归的优点是:不仅适用于线性模型,也能很好地抓住数据和特征之间的非线性关系;不需要担心多重共线性问题,可以避免局部极小化问题,提高泛化性能,解决高维问题;虽然不会在过程中直接排除异常点,但会使得由异常点引起的偏差更小。缺点是:计算复杂度高,在面临数据量大的时候,计算耗时长。

7.3.构建财政收入预测模型

依据Lasso回归选取的关键变量构建灰色预测模型,并预测2014年和2015年的财政收入,关键代码如下:

image.png

依据灰色预测的结果构建支持向量回归预测模型,并预测2014年和2015年的财政收入,如代码清单所示。

 构建支持向量回归预测模型

image.png

8.结果分析与模型评估

Lasso回归选取的社会从业人数(x1)、社会消费品零售总额(x3)、城镇居民人均可支配收入(x4)、城镇居民人均消费性支出(x5)、全社会固定资产投资额(x6)、地区生产总值(x7)、第一产业产值(x8)和居民消费水平(x13)属性的2014年及2015年通过建立灰色预测模型得出的预测值,如表所示。

通过灰色预测模型得出的预测值

image.png

将表的预测结果代入地方财政收入建立的支持向量回归预测模型,得到1994年至2015年财政收入的预测值,如表所示,其中y_pred表示预测值。

1994年至2015年财政收入的预测值

image.png

image.png

地方财政收入真实值与预测值的对比图如图所示。

image.png

地方财政收入真实值与预测值对比图表

采用回归模型评价指标对地方财政收入的预测值进行评价,得到的结果如表所示。

 模型评价指标

均方根误差RMSE

均方误差MSE

解释方差得分

R平方得分

58.0185

3366.15

0.99

0.99

由表可以看出,平均绝对误差与中值绝对误差较小,可解释方差值与R方值十分接近1,表明建立的支持向量回归模型拟合效果优良,可以用于预测财政收入。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/18GCu_yMS5aJhiQ2MHDPx6g 
提取码:yig3

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
23 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
29天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
257 55
|
17天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
110 66
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
176 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
7天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
21天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
55 20
|
11天前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
14天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
19天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
47 5
|
20天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
29 6