python进行回归分析与检验,Python回归算法
1导言
在学校的时候,我跟着jmdpw做了一个文献计量学的研究(使用逐步回归分析对科学论文的引用影响预测),试图预测一篇论文发表五年后的引用次数。在数据获取阶段,jmdpw获取了很多领域,在特征构建阶段,充分利用领域知识和想象力,最终构建了很多特征。我们要回答一个问题:这些特征中是否有一些与论文的引用次数无关?
后来利用逐步回归分析,从原始特征集中选出一个最优子集,过滤掉与论文被引用次数关系不大的特征,在此基础上构建预测模型。
为什么要用逐步回归分析?逐步回归分析虽然名字里有“回归”,但实际上是一种特征选择方法。图1-1显示了与逐步回归分析相关的一些概念及其关系。图1-1逐步回归的相关概念
2特征工程、降维和特征选择
2.1特色工程
2.1.1原始数据不能直接使用。
学术期刊出版社很有远见,很早就开始系统记录以论文为载体的科研活动。出版社记录的是除论文正文以外的所有信息,包括作者、作者工作的机构、论文项目基金来源、发表年份、引用文献信息等,如表1-1所示。
表2-1一篇论文的原始数据
我们需要回归分析。这些信息有什么用?它们要么是一串字符串,要么是年份等序列数据,不适合作为多元线性回归模型的输入。
我们需要做特征工程,把原始数据做成多元线性回归模型可以处理的形式。
2.1.2什么是特色工程?
工程是指将原始数据整理成特定形式以满足特定模型要求的活动。比如从表1-1中抽取表1-2中的数据就是特色工程。
表2-2特性工程结果
2.2原创功能的问题
2.2.1数据过大。
身边的老程序员偶尔会给我讲讲他们刚入行时的事情。那时候大家的电脑都比较弱,内存大小是以KB为单位来衡量的,CPU主频的单位是MHz。在这种条件下,如果要做一个回归模型来预测股价,就需要特别注意节约资源。如果空间和时间的复杂度太高,模型就不起作用或者太慢而不实用。
随着社会的发展,科技的进步,我们手中的电脑越来越强大,以至于以前的数据都变成了“小数据”,很容易处理。
但是我们收集和存储数据的能力也有了很大的提高,导致新时代的程序员仍然要面对大数据带来的困难。——数据的数量和特征的数量都大大增加了。
2.2.2鱼龙混杂的特点
有时候,我们构建的特征与预测的目标关系不大。举一个极端的例子,特征“论文标题中的图片数量”的值必须为0(不能用于任何预测),与论文被引用的数量无关。这样的特征不应该进入回归模型。
有些特征与预测目标密切相关,但受维度等因素限制,表现力较差。有些特征如“被引论文占作者全部论文的比例高”,其取值范围为[0,1],远小于“被引论文数高”或“全部论文被引数之和”等特征的绝对值。虽然这三个特征可以很好的反映一个学者的学术水平,但是在某些维度上,样本的区分度不够。这对回归模型或分类模型都是不利的。
2.3降维与特征选择
2.3.1一石二鸟,降维
我们可以用“压缩数据”的思路,把原来的特征映射到一个更低纬度的空间,也就是降维。降维方法有很多种,包括主成分分析(PCA)、随机投影等。
2.3.2简单粗暴的特征选择
另一个更简单的策略是从原始特征集中提取“高质量”子集。
2.3.4三个特征选择和建模框架
常见的特征选择方法根据特征打分的方式可以分为三类:(1)过滤;(2)华珀;(3)嵌入。
2.3.4.1滤波器类型
我们可以基于特征和预测目标之间的相关性从原始特征集中选择更好的子集。比如我们可以计算每个特征与预测目标的相关系数,然后删除相关系数小于某个阈值的特征,得到一个高质量的特征子集。
过滤特征选择的特点是特征打分的方式不涉及任何模型,选择操作与模型训练没有直接关系。
在构造决策树分类器时,我们会利用信息熵等指标,挑出剩余特征中“最有利于分割样本”的那一个,引入模型。这也是一种过滤特征选择方法。图2-2过滤器特征选择
2.3.4.2包装类型
我们还可以基于模型效果对特征子集进行评分,选择最佳模型对应的特征子集。
一般来说,我们不会穷尽所有的特征子集,然后计算每个子集的得分,因为这样做的成本太高。一种现实的方法是使用某种搜索策略来最小化候选特征子集的数量。图2-3过滤器特征选择
嵌入式2.3.4.3
通过修改模型获得的稀疏参数是嵌入的特征选择。
回归模型中添加了一些机制来限制或奖励特征及其系数。例如,我们可以在多元线性回归模型的损失函数中添加一个L1正则项:
L1正则化的特点会使模型中出现一些取值为0的参数。这些参数对应的特征对模型的输出值没有影响,相当于完成了特征选择。
3逐步回归分析
在“link.springer.com中使用逐步回归分析预测科学论文的引用影响”一文中
在中,我们使用基于多元线性回归模型的打包特征选择来构建回归模型,以预测论文被引用的数量。
3.1基于逐步回归分析的特征选择
逐步回归分析的过程如图3-1所示。主要步骤包括:
(1)从原始特征集中随机选择一个特征,而不将其放回;
(2)建立该特征和特征子集,建立回归模型,并进行统计检验;
(3)如果获得了表明该特征有用的显著模型,则将该特征包括在特征子集中;如果模型不明显,这个特性就没用了,需要删除。图2-4逐步回归分析
遍历原始特征集后,我们得到一个高质量的特征子集和一个显著的回归模型。
逐步回归只是这样:它首先是一种特征选择的策略,然后才具有建立回归模型的功能。
3.2逐步回归分析的python实现
逐步回归分析的实现比较简单,主要工作量是多元线性回归模型及其检验:李鹏宇尔/data science github.com https://github . com/李鹏宇尔/data science/blob/master/src/algorithm/regression/stepwise regression . py github.com。
4结论
一般来说,当人们提出一个观点、一个想法或者其他需要公众理解的东西时,他们会给自己想要输出的内容命名。所有的算法或者方法都有一个名字,用来表示这个算法的一些特征。“逐步”的意思是“一次做一件事”,“逐步回归”这个名字突出了逐步回归分析中遍历和检查每个特征的操作。理解了算法名的含义后,算法的内容就更容易记住了。
注:本文为ykdy(https://www.zhihu.com/people/py-li-34,知乎个人主页)原创作品,受版权法律法规保护。如需引用或转载,请注明出处信息:(1)作者姓名,即“YKDY”;(2)原网页链接,即当前页面地址。如果你有任何问题,请发电子邮件到:lipengyuer@126.com找我。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。