问题:
模型是用一些用户数据,和共享单车的数据,来预测某一次共享单车骑行会不会超过3km。
数据有30万行,特征不到20个
我现在用random forest一直出现过拟合的情况,train的时候接近100%,test就70%,但是我设置数的深度和个数来调整train accuracy的时候,train accuracy降下来了,但是test没有任何提示?
想问问大家这有什么办法解决?
是需要收集更多特征吗?还是调参?
3个回答
交叉验证了解一下
SofaSofa数据科学社区DS面试题库 DS面经
试过了,没有明显的效果。我用了random search 100次加上交叉验证,结果还是差不多,我想问这种情况正常吗?就是training accuracy一直很高,虽然可以调参让它降下去,但是testing的一直升不上来?
-
superives
2018-05-07 11:23
你的test set是哪里来的?如果test set和training set不是来自于同一个总体,或者分布差距很大,的确会出现题主的情况。
test就是我从train的选出来的20%,是来自同一总体的。我想问一下是,random forest经常会出现这种情况吗?还是我调参不够好
-
superives
2018-05-07 13:21
1.有可能问题本身就很难。你可以把骑行距离的直方图或PCA后的散点图(scatter)画出来,看3km是否是一个好的分类的划分值。比如3km是一个峰值,左右两边都集中有很多数据,这样的分类问题就很困难。如果没有特殊要求,可以考虑变为其他值,或者变成回归问题。
2.每次只Random Search一项参数,这样search的精度更高,容易找到重要的参数。
3. 试试其他方法,比如Neural Network。一般Neural Network 分类优于Ramdom Forest。
SofaSofa数据科学社区DS面试题库 DS面经
谢谢提醒,我试过了nn,调了不一样的参数后,得到的结果居然和rf也差不多,可能我要看看3km是不是个好分类器。。
-
superives
2018-05-08 00:20
有时test error是有上限的,比如说强行要把一个高斯从中间分为两个高斯,可以从理论上计算出error的上限。
-
Zealing
2018-05-09 02:20