R语言最优化模型怎么做

Python035

R语言最优化模型怎么做,第1张

参考代码:

dat <- read.table("clipboard",header = T)

dat

lm.d<- lm(y~x1+x2+x3+x4+x5,data = dat)

summary(lm.d)

lm.d2 <- step(lm.d) #逐步回归法,挑选变量子集

summary(lm.d2)

newd <- data.frame(x1=12135,x2=28679,x3=19978,x4=502,x5=24950)

predict(lm.d,newd,interval = "prediction")#预测值

predict(lm.d,newd,interval = "prediction",scale = T) #预测均值

这是代码加速的问题。且默认您的数据读入速度没有问题(数据量级在百万以下)。

如果只是建立模型的那一行代码跑的很慢,如果建立模型的代码本身没有提供并行计算功能,部分模型可以尝试把公式换成则分别传入x=, y= 参数,多数模型无法加速。再除非有其他R包,可以建立同样的模型,并且速度更快。比如随机森林的RandomForest的速度慢,可以换成ranger。因为ranger (Wright 2017)是用C语言优化的,是一个非常有趣的替代方案,尤其是在处理高维数据集时。它通常可以显著减少计算时间,同时提供与随机森林基本相同的结果。

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

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

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

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

安装包

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

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

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

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

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

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

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