逐步回归的R语言实现

Python015

逐步回归的R语言实现,第1张

逐步回归的R语言实现

定义类型

向前引入法

从一元回归开始,逐步增加变量,使指标值达到最优为止

相互删除法

从全变量回归方程开始,逐步删去某个变量,使指标值达到最优为止

逐步筛选法

综合上述方法

衡量标准

R2:越大越好

AIC:越小越好

step()

usage:

step(object, scope, scale = 0,

direction = c("both", "backward", "forward"),

trace = 1, keep = NULL, steps = 1000, k = 2, ...)

这个函数可以用来对已建立的lm or glm model进行逐步回归分析。

其中,direction分为”both”, “backward”, “forward”,分别表示逐步筛选、向后、向前三种方法。

注意,这个函数筛选的依据是AIC,而不是R2。

example:

最后

鉴于step()有时候会出现莫名其妙的错误,因此再介绍一个可以做逐步回归的手工方法。

add1()

drop1()

主成分分析和探索性因子分析是两种用来探索和简化多变量复杂关系的常用方法。

主成分分析(PCA)是一种将数据降维技巧,它将大量相关变量转化成一组很少的不相关变量,这些无相关变量称为主成分。

探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法。

R基础安装包提供了PCA和EFA的函数,分别是princomp()和factanal()。本章重点介绍psych包中提供的函数,该包提供了比基础函数更丰富和有用的选项。

最常见步骤

1、数据预处理,在计算前请确保数据没有缺失值;

2、选择因子模型,是选择PCA还是EFA,如果选择EFA,需要选择一种估计因子模型,如最大似然法估计;

3、判断要选择的主成分/因子数目;

4、选择主成分/因子;

5、旋转主成分/因子;

6、解释结果;

7、计算主成分或因子得分。

加载psych包

library(ggplot2)

library(psych)

展示基于观测特征值的碎石检验、根据100个随机数据矩阵推导出来的特征值均值、以及大于1的特征值准则(Y=1的水平线)

fa.parallel(USJudgeRatings[, -1], fa = "pc", n.iter = 100, show.legend = FALSE, main = 'Scree plot with parallel analysis')

对数据USJudgeRatings进行主成分分析

pc<-principal(USJudgeRatings[, -1],nfactors=1)

pc

样本不均衡问题是指在机器学习分类任务中,不同类型的样本占比差距悬殊。

比如训练数据有100个样本,其中只有5个正样本,其余均为负样本,这样正样本:负样本=5%:95%,训练数据中负样本过多,会导致模型无法充分学习到正样本的信息,这时候模型的正确率往往较高,但特异性却很低,即模型识别正样本的能力很差。这样的模型是无法投入实际项目中的,我们需要解决不均衡问题带来的影响。

解决样本不均衡,采用的方法是重采样。根据采样的方法,分为欠采样、过采样和组合采样。

在R语言中, ROSE 包用于处理样本不均衡问题。

安装包

加载示范数据,查看列联表。可以看到训练数据 hacide.train 出现了样本不均衡,正样本1只有20个,负样本0有980个。

欠采样会缩小训练数据。训练数据虽然正负样本均衡了,但由于原始的正样本很少,导致处理后总样本数减少很多。这个方法适用于训练数据很大,且正样本也较大的情况,可以用欠采样来减少训练数据规模,提高训练速度。

过采样会增大训练数据。该方法适用于训练数据中正样本数量较少的情况。

组合采样会同时增加正样本和减少负样本。参数 N 表示处理后样本总数,一般设置为训练数据样本数。

不均衡样本对模型的训练结果会产生较大偏差,以实际分类问题为例,对比一下处理与不处理均衡样本的结果。

从预测的结果来看,均衡处理与不均衡处理的模型准确率都很高,都超过了98%,貌似模型都很好。但均衡处理后模型的特异性达到了73.68%,未采用均衡处理的模型只有36.84%,显然 均衡处理能提高模型的特异性

处理样本不均衡问题是做分类问题不可或缺的的一步,针对训练数据的情况,可以采用不同的均衡处理方法。均衡处理的目的是尽可能多的且高效的利用训练数据里的信息,不至于后续训练出的模型学习的不够充分,出现较大偏差。均衡处理对于既要求准确率高,又要求特异性高的模型来说尤为重要。