楼主: yaoqsm321
57204 80

[问答] 随机森林过拟合问题,在训练集上表现很好,在测试集上的表现很差 [推广有奖]

21
foozhencheng 学生认证  发表于 2016-12-10 14:23:57
jgchen1966 发表于 2016-12-6 21:36
randomForest 、SVM、等等机器学习算法,有个很关键,但常被忽视的问题:数据必须满足“独立同分布”条件 ...
哪里有讨论SVM的数据必须要iid?非常希望能看到相关资料,感谢指点~

22
jameschin007 发表于 2016-12-11 00:01:54
yaoqsm321 发表于 2016-12-9 17:15
这段代码是不是加载我的那段代码后边就行了?
还有个问题,就是我用决策树来建模,决策树会自动选择变量 ...
取代你原来的代码。
查了一下help
把method 改成 rft 就行了。

这是树的剪枝啊。 RF 模型出来之后,你看一下变量的importance吧。
不是所有变量都要加进去。


23
jameschin007 发表于 2016-12-11 00:03:23
jgchen1966 发表于 2016-12-9 19:47
不作样本的预测是,是可以这样认为,计量经济学基本是这样做的,经五十年挣扎,现基本承认,计量经济学无 ...
这个两个问题好吧。
题主说他的问题过拟合了。 你非说是分布不一致的问题。 人家是同样的数据集,随机取的。肯定分布是一致的。

你说现实世界的问题, 我也没否认啊。

24
jgchen1966 发表于 2016-12-11 12:54:58
jameschin007 发表于 2016-12-11 00:03
这个两个问题好吧。
题主说他的问题过拟合了。 你非说是分布不一致的问题。 人家是同样的数据集,随机取 ...
一个是因,一个是果,是一个问题嘛!! 过似本身没啥子可讨论的,结果就放在眼前,有价值的是它后面不为常人所知的原因!!!!

25
jgchen1966 发表于 2016-12-11 12:56:38
“随机取的。肯定分布是一致的”????????????????????????????????????????????????????????????????????

26
jameschin007 发表于 2016-12-11 20:12:16
jgchen1966 发表于 2016-12-11 12:56
“随机取的。肯定分布是一致的”??????????????????????????????????? ...
前提是在一个总数据集里随机取,当然分布一致了。如果分布不一致。
那就无法分出trainnig 和 test set 了。

27
jameschin007 发表于 2016-12-11 20:13:14
jgchen1966 发表于 2016-12-11 12:54
一个是因,一个是果,是一个问题嘛!! 过似本身没啥子可讨论的,结果就放在眼前,有价值的是它后面不为常 ...
你跟楼主谈现实世界,人家楼主在谈这个具体的问题。
显然不是一回事好吧。

28
yaoqsm321 发表于 2016-12-12 11:03:13
jameschin007 发表于 2016-12-11 00:01
取代你原来的代码。
查了一下help
把method 改成 rft 就行了。
我想说,我用这个代码跑出来的结果,全是1

radata <- read.csv("E://jue//chong.csv",header=T)
ind <- sample(2, nrow(radata), replace=TRUE, prob=c(0.8, 0.2))
traindata <- radata[ind==1,]
testdata<- radata[ind==2,]
traindata$id <- as.factor(traindata$id)
traindata$a <- as.factor(traindata$a)
traindata$b <- as.factor(traindata$b)
traindata$c <- as.factor(traindata$c)
traindata$g <- as.factor(traindata$g)
traindata$h <- as.factor(traindata$h)
traindata$n <- as.factor(traindata$n)

traindata$r <- as.factor(traindata$r)

traindata$ae <- as.factor(traindata$ae)
traindata$ag <- as.factor(traindata$ag)
traindata$aj <- as.factor(traindata$aj)
traindata$am <- as.factor(traindata$am)
traindata$an <- as.factor(traindata$an)

testdata$a <- as.factor(testdata$a)
testdata$b <- as.factor(testdata$b)
testdata$c <- as.factor(testdata$c)
testdata$g <- as.factor(testdata$g)
testdata$h <- as.factor(testdata$h)
testdata$n <- as.factor(testdata$n)

testdata$r <- as.factor(testdata$r)

testdata$ae <- as.factor(testdata$ae)
testdata$ag <- as.factor(testdata$ag)
testdata$aj <- as.factor(testdata$aj)
testdata$am <- as.factor(testdata$am)
testdata$an <- as.factor(testdata$an)


library(ggplot2)
library(caret)

train_control <- trainControl(method="cv", number=10)
model <- train(id~a+b+c+g+h+j+k+l+m+n+r+v+w+x+y+z+aa+ab+ac+ad+ae+af+ag+ah+aj+ak+al+am+an+ao+ap+aq+ar+as+at+au, data=traindata, trControl=train_control, method="rf")
print(model)
pre<-predict(model,newdata=testdata,type="prob")
write.csv(pre,"E://predictdata18.csv")

29
yaoqsm321 发表于 2016-12-12 11:09:37
jameschin007 发表于 2016-12-9 14:02
3
4
5
我怎么感觉是这个数据根本就做不了随机森林啊,都绝望了,好多方法都试过了。只有决策树效果还稍微好点。

30
jameschin007 发表于 2016-12-12 11:37:21
yaoqsm321 发表于 2016-12-12 11:09
我怎么感觉是这个数据根本就做不了随机森林啊,都绝望了,好多方法都试过了。只有决策树效果还稍微好点。
随机森林应该是适应性最强的算法了。
feature 都是什么类型的?
你有查过 importance 吗?考虑去除一些变量

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 11:55