乐趣区

关于算法:R语言基于Bagging分类的逻辑回归Logistic-Regression决策树森林分析心脏病患者

原文链接:http://tecdat.cn/?p=22448

===

明天,咱们将看下 bagging 技术外面的启发式算法。

通常,bagging 与树无关,用于生成森林。但实际上,任何类型的模型都有可能应用 bagging。回顾一下,bagging 意味着 “boostrap 聚合 ”。因而,思考一个模型 m:X→Y。让 示意从样本中失去的 m 的预计

当初思考一些 boostrap 样本,,i 是从 {1,⋯,n} 中随机抽取的。基于该样本,预计。而后抽出许多样本,思考取得的估计值的一致性,应用少数规定,或应用概率的平均值(如果思考概率主义模型)。因而

Bagging 逻辑回归 

考虑一下逻辑回归的状况。为了产生一个 bootstrap 样本,天然要应用下面形容的技术。即随机抽取一对(yi,xi),平均地(概率为)替换。这里考虑一下小数据集。对于 bagging 局部,应用以下代码

for(s in 1:1000){df_s = df\[sample(1:n,size=n,replace=TRUE)
  logit\[s\]= glm(y~., df_s, family=binomial

而后,咱们应该在这 1000 个模型上进行汇总,取得 b agging 的局部。

  unlist(lapply(1:1000,function(z) predict(logit\[z\],nnd))}

咱们当初对任何新的察看都有一个预测

vv = outer(vu,vu,(function(x,y) mean(pre(c(x,y)))
contour(vu,vu,vv,levels = .5,add=TRUE)

Bagging 逻辑回归 

另一种可用于生成 bootstrap 样本的技术是保留所有的 xi,但对其中的每一个,都(随机地)抽取一个 y 的值,其中有

因而

因而,当初 Bagging 算法的代码是

glm(y~x1+x2, df, family=binomial)
for(s in 1:100)
  y = rbinom(size=1,prob=predict(reg,type="response")
  L\_logit\[s\] = glm(y~., df\_s, family=binomial)

bagging 算法的 agg 局部放弃不变。在这里咱们取得

vv = outer(vu,vu,(function(x,y) mean(pre(c(x,y)))))
contour(vu,vu,vv,levels = .5,add=TRUE)

当然,咱们能够应用该代码,查看预测取得咱们的样本中的察看。

在这里思考心肌梗塞数据。

数据

咱们应用心脏病数据,预测急诊病人的心肌梗死,蕴含变量:

  1. 心脏指数
  2. 心搏量指数
  3. 舒张压
  4. 肺动脉压
  5. 心室压力
  6. 肺阻力
  7. 是否存活

其中咱们有急诊室的察看后果,对于心肌梗塞,咱们想理解谁存活下来了,失去一个预测模型

reg = glm(as.factor(PRO)~., carde, family=binomial)
for(s in 1:1000){L\_logit\[s\] = glm(as.factor(PRO)~., my\_s, family=binomial)
}

unlist(lapply(1:100,predict(L_logit\[z\],newdata=d,type="response")}

对于第一个察看,通过咱们的 1000 个模仿数据集,以及咱们的 1000 个模型,咱们失去了以下死亡概率的预计。

v_x = p(x)
hist(v_x,proba=TRUE,breaks=seq(,by.05),=",="",
segments(mean(v\_x),0,mean(v\_x,5="=2)

因而,对于第一个察看,在 78.8% 的模型中,预测的概率高于 50%,均匀概率实际上靠近 75%。

或者,对于样本 22,预测与第一个十分靠近。

histo(23)
histo(11)

咱们在此察看到

Bagging 决策树

Bagging 是由 Leo Breiman 于 1994 年在 Bagging Predictors 中介绍的。如果说第一节形容了这个程序,那么第二节则介绍了 “Bagging 分类树 ”。树对于解释来说是不错的,但大多数时候,它们是相当差的预测模型。Bagging 的想法是为了进步分类树的准确性。
bagging 的想法是为了生成大量的树

for(i in 1:12)
  set.seed(sed\[i\])
idx = sample(1:n, size=n, replace=TRUE)
cart =  rpart(PR~., md\[idx,\])

这个策略其实和以前一样。对于bootstrap 局部,将树存储在一个列表中

for(s in 1:1000)
idx = sample(1:n, size=n, replace=TRUE)
  L_tree\[\[s\]\] = rpart(as.(PR)~.)

而对于汇总局部,只需取预测概率的平均值即可

p = function(x){unlist(lapply(1:1000,function(z) predict(L_tree\[z\],newdata,)\[,2\])

因为在这个例子中,咱们无奈实现预测的可视化,让咱们在较小的数据集上运行同样的代码。

for(s in 1:1000){idx = sample(1:n, size=n, replace=TRUE)
  L_tree\[s\] = rpart(y~x1+x2,}
  unlist(lapply(1:1000,function(z) predict(L_tree\[\[z\]\])
outer(vu,vu,Vectorize(function(x,y) mean(p(c(x,y)))

从 bagging 到森林

在这里,咱们生成了很多树,但它并不是严格意义上的随机森林算法,正如 1995 年在《随机决策森林》中介绍的那样。实际上,区别在于决策树的创立。当咱们有一个节点时,看一下可能的宰割:咱们思考所有可能的变量,以及所有可能的阈值。这里的策略是在 p 中随机抽取 k 个变量(当然 k <p,例如 k =sqrt{p})。这在高维度上是乏味的,因为在每次宰割时,咱们应该寻找所有的变量和所有的阈值,而这可能须要相当长的工夫(尤其是在 bootstrap 程序中,指标是长出 1000 棵树)。


最受欢迎的见解

1. 用机器学习辨认一直变动的股市情况—隐马尔科夫模型 (HMM) 的利用

2.R 语言 GARCH-DCC 模型和 DCC(MVT)建模预计

3.R 语言实现 Copula 算法建模依赖性案例剖析报告

4.R 语言 COPULAS 和金融工夫序列数据 VaR 剖析

5.R 语言多元 COPULA GARCH 模型工夫序列预测

6. 用 R 语言实现神经网络预测股票实例

7.r 语言预测稳定率的实现:ARCH 模型与 HAR-RV 模型

8.R 语言如何做马尔科夫转换模型 markov switching model

9.matlab 应用 Copula 仿真优化市场危险

退出移动版