一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 3940|回复: 26
收起左侧

[DataScience] 一个关于cross-validation的问题,求助~~~

[复制链接] |试试Instant~ |关注本帖
地有多大产 发表于 2014-7-1 01:58:18 | 显示全部楼层 |阅读模式
1小米
对Introduction to statistical learning 这本书第6章lab部分对ridge regression,  lasso, 和 Principal Components Regression的比较有个疑问,书里介绍的步骤如下:
1. 把整个dataset分成了training和test两部分.鐣欏璁哄潧-涓浜-涓夊垎鍦
2. 用training部分做cross-validation来为ridge regression选取合适的lambda, 然后用test data 得到 test MSE
3. 用training部分做cross-validation来为lasso选取合适的lambda, 然后用test data 得到 test MSE
4. 用training部分做cross-validation来为PCR选取合适的变量个数, 然后用test data 得到 test MSE
5. 比较 2,3,4中 Ridge regression, lasso, PCR各自的test MSE
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
不明白为什么要先用cross-validation来选择tuning parameter,然后用 Validation Set Approach 的方法比较各个model的test MSE。为什么不能直接对整个数据做cross-validation,得到ridge regression, lasso, PCR各自的最小的test MSE直接进行比较呢?
-google 1point3acres. 鍥磋鎴戜滑@1point 3 acres

最佳答案

查看完整内容

哈哈,我之前也困惑过有了CV到底还需不需要holdout,最后还是在书上找到了答案,就是depend on how many data you have 至于为什么会低估,其实我也不是很确定,所以理由还是和之前的一样。然后你想想,CV的目的就在于Tune Parameter to have the best model of that technique, 比如randomforest,选择最好的n (# of trees)和m (# of initial features),在这其中CV 的MSE就起作用了,这里CV MSE的作用是自己跟自己比,RF1 ...
mlq90103 发表于 2014-7-1 01:58:19 | 显示全部楼层
地有多大产 发表于 2014-7-1 11:11. from: 1point3acres.com/bbs
感激, 貌似只有你理解了我的意思。。。data scientist对表达能力要求那么高,开始怀疑我到底适不适合。 ...

哈哈,我之前也困惑过有了CV到底还需不需要holdout,最后还是在书上找到了答案,就是depend on how many data you have

至于为什么会低估,其实我也不是很确定,所以理由还是和之前的一样。然后你想想,CV的目的就在于Tune Parameter to have the best model of that technique, 比如randomforest,选择最好的n (# of trees)和m (# of initial features),在这其中CV 的MSE就起作用了,这里CV MSE的作用是自己跟自己比,RF1 和 RF2 比,ANN1 和 ANN2 比。

但是,当我们要选择到底是RF好还是ANN好的时候,我们希望有个新的dataset,从来没有用在 training 里面,然后分别用最好的RF + 最好的ANN + 最好的其他 在这个 holdout上evaluate,然后选出the best one,这里就是test MSE。我们最终希望score MSE最小(就是apply到未来的数据后的MSE)。而在这个过程中, test MSE更接近于score MSE的地位,而不是CV MSE。

当然如果数据不够,CV MSE也可以用,大概就是这样. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

还有,CV的作用应该是tune parameter,而不是将他们combine在一起作为model。CV的感觉有点像ensemble,但是ensemble如bagging,boosting,multilearner,etc等在resampling的过程中更全面一点,所以lower bias + variance要用ensemble而不仅是CV,至于你说的holdout方法我不确定是什么

回复

使用道具 举报

parachutemd 发表于 2014-7-1 03:02:42 | 显示全部楼层
then you are training and testing on the same dataset.
回复

使用道具 举报

xingzhui222 发表于 2014-7-1 03:28:02 | 显示全部楼层
为什么不能直接对整个数据做cross-validation,得到ridge regression, lasso, PCR各自的最小的test MSE直接进行比较呢?
. from: 1point3acres.com/bbs
cross validation and test set should be totally separated. That said, test set is assumed to be unknown to modeller. If you do cross validation on training set and test set, you are using the test set to tune the parameter. Then when you try to apply your model (tuned from your training set and test set), you will get a "better" test MSE. But in fact,  the 'true' MSE is anticipated to be higher. Namely, your model performance will be too good to be true.
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 03:30:02 | 显示全部楼层
parachutemd 发表于 2014-7-1 03:02
then you are training and testing on the same dataset.

为什么最后要用validation set approach计算test MSE而不是用cross-validation计算呢?不是说好用cross-validation比用validation set approach估计test MSE更好的吗?
cross-validation里面并没有涉及你说的 “training and testing on the same dataset” 的问题啊. visit 1point3acres.com for more.
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 03:42:34 | 显示全部楼层
xingzhui222 发表于 2014-7-1 03:28
cross validation and test set should be totally separated. That said, test set is assumed to be un ...

In fact, I just used the training data to tune the parameter. For example, there are 10 folders in total , then I just use 9 of the folders to tune the parameter and use the one left to estimate test MSE, and then I repeat it for 10 times. Although I average the 10 test MSEs finally, it doesn't mean I used both the training and test data for tuning.
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 03:46:13 | 显示全部楼层
xingzhui222 发表于 2014-7-1 03:28
cross validation and test set should be totally separated. That said, test set is assumed to be un ...
. 1point 3acres 璁哄潧
I understand what you said is reasonable if we want to calculate the test MSE using validation set approach in the last step. However, since we have already got the test MSE when tuning the parameters, why don't we use the test MSE we have already got directly?
回复

使用道具 举报

parachutemd 发表于 2014-7-1 05:08:06 | 显示全部楼层
地有多大产 发表于 2014-7-1 03:30
为什么最后要用validation set approach计算test MSE而不是用cross-validation计算呢?不是说好用cross-v ...
. From 1point 3acres bbs
I consider cross validation as part of training because you are still tuning your parameter to get the best model, this data will not serve as an independent result to justify your choice
回复

使用道具 举报

mlq90103 发表于 2014-7-1 05:31:28 | 显示全部楼层
一般来说,两个都没错,但是如果数据量足够大的时候,一般留一个holdout,training时别碰,最后得到model了在holdout上测试。.鐣欏璁哄潧-涓浜-涓夊垎鍦
如果直接用CV,毕竟holdout的信息不在当前的model,但包含在了别的model里。一般数据量很小的时候可以这么干,极端的例子就是leave-one-out CV。
一般数据足够大的话,还是有一个holdout比较好
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 05:52:33 | 显示全部楼层

RE: 一个关于cross-validation的问题,求助~~~

mlq90103 发表于 2014-7-1 05:31
一般来说,两个都没错,但是如果数据量足够大的时候,一般留一个holdout,training时别碰,最后得到model了 ...
. Waral 鍗氬鏈夋洿澶氭枃绔,
"毕竟holdout的信息不在当前的model,但包含在了别的model里"

我对这句话不太理解,虽然holdout包含在了别的model里,但是别的model又有其他的holdout,并没有把这个holdout当做test data啊
回复

使用道具 举报

mlq90103 发表于 2014-7-1 06:44:36 | 显示全部楼层
本帖最后由 mlq90103 于 2014-7-1 06:46 编辑
地有多大产 发表于 2014-7-1 05:52
"毕竟holdout的信息不在当前的model,但包含在了别的model里"
. 1point3acres.com/bbs
我对这句话不太理解,虽然holdout包含在 ...
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
是的没错,所以用CV的MSE并没有错~

只是有一个holdout不在CV里更能模拟真实的情况,因为真正预测的时候我们是没有label的,所以也不会把这些数据放到CV里。.鏈枃鍘熷垱鑷1point3acres璁哄潧
The idea就是如果用CV的MSE,我们的model理论上来说是用了所有training的信息的,所以 有可能 会低估error,如果有个holdout就不用担心这个情况了
回复

使用道具 举报

xingzhui222 发表于 2014-7-1 08:15:24 | 显示全部楼层
地有多大产 发表于 2014-7-1 03:46
I understand what you said is reasonable if we want to calculate the test MSE using validation set ...

没太看懂你的问题。你是说有这么几个模型,每个都cv出来参数,之后是怎么做?

test set是不能用来改进模型的。当你在对不同模型的test set的mse做比较的时候,其实就是有针对性的对这个test set有training了,出来的结果有过于乐观的“嫌疑”。所以在比较多个模型的时候会有一个validation的set,在中间过渡。
不知道这是不是你的问题。
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 08:24:00 | 显示全部楼层
xingzhui222 发表于 2014-7-1 08:15
. From 1point 3acres bbs没太看懂你的问题。你是说有这么几个模型,每个都cv出来参数,之后是怎么做?-google 1point3acres
. more info on 1point3acres.com
test set是不能用来改进 ...

"你是说有这么几个模型,每个都cv出来参数,之后是怎么做?"

这样的话 参数对应的test MSE不就已经求出来了,也就是说每个模型都有了对应的参数和test MSE,然后直接比较这些test MSE可以吗?
回复

使用道具 举报

RonHe 发表于 2014-7-1 09:17:40 | 显示全部楼层
training的时候假设你是不知道test数据的,何来整个数据。。
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 09:41:45 | 显示全部楼层
RonHe 发表于 2014-7-1 09:17 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
training的时候假设你是不知道test数据的,何来整个数据。。

整个数据是给定的,这里为了看预测效果,人为地划分出了一块当做test data~ 我当然也有权利不让它当test data就是啦
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 10:21:36 | 显示全部楼层
RonHe 发表于 2014-7-1 09:17
training的时候假设你是不知道test数据的,何来整个数据。。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
我的意思是为什么不能不分成training和test data,直接进行cross-validation~
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 11:11:32 | 显示全部楼层
mlq90103 发表于 2014-7-1 06:44
. visit 1point3acres.com for more.是的没错,所以用CV的MSE并没有错~

只是有一个holdout不在CV里更能模拟真实的情况,因为真正预测的时 ...

感激, 貌似只有你理解了我的意思。。。data scientist对表达能力要求那么高,开始怀疑我到底适不适合。。。. Waral 鍗氬鏈夋洿澶氭枃绔,
.1point3acres缃
stackoverflow上的这个回答貌似跟你说的挺像的,如下:. 1point 3acres 璁哄潧
http://stackoverflow.com/questions/7911891/cross-validation-with-training-testing-sets
我还有个问题,你说 “The idea就是如果用CV的MSE,我们的model理论上来说是用了所有training的信息的,所以 有可能 会低估error,如果有个holdout就不用担心这个情况了”,但是k-folder CV中从来都没有用training data进行估计过test MSE, K次中每次的training和test都是各自分开的,为啥还会低估test MSE呢?不是说好的CV比holdout方法bias更小的吗?
回复

使用道具 举报

 楼主| 地有多大产 发表于 2014-7-1 14:48:01 | 显示全部楼层
mlq90103 发表于 2014-7-1 12:46. from: 1point3acres.com/bbs
哈哈,我之前也困惑过有了CV到底还需不需要holdout,最后还是在书上找到了答案,就是depend on how many  ...

感激~~活菩萨!
回复

使用道具 举报

mlq90103 发表于 2014-7-1 22:08:21 | 显示全部楼层
.鐣欏璁哄潧-涓浜-涓夊垎鍦
哈哈,想通就好!
回复

使用道具 举报

xingzhui222 发表于 2014-7-2 01:24:35 | 显示全部楼层
地有多大产 发表于 2014-7-1 08:24
"你是说有这么几个模型,每个都cv出来参数,之后是怎么做?"
. From 1point 3acres bbs
这样的话 参数对应的test MSE不就已经求 ...

翻了下楼下,貌似你的问题已经解决了。不过anyway,我再试着用我的话回答一下。
CV里面你拿出来作为"test set"的数据不是真的test set。因为你用它来寻找自己的模型。举个例子,假设现在就3fold cv, 把training set分为A,B,C。
A作为“test set” (或者你叫它hold out?)的时候,你尽力利用B,C的信息去tune pamameter来寻找 针对A 而言的“好模型”
B作为"test set"的时候,你找到 针对B 而言 的“好模型”
同理,C。这样CV实际上还是总体上来说找了个针对你的training set的模型。如果最后不用真正的test set去再测量一下的话,可能就不太保险。
不过,我的感觉是,如果你的training set本身数据就比较nice,那可能test set出来的mse和cv的也不会差距太远。而数据很少的时候,可能就要根据实际情况和自己经验来判断了。
个人愚见。。。
回复

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-11 01:48

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表