这是我的专栏里之前写的一篇文章,抛砖引玉吧。用lasso/gbm/random forest/deep learning来研究螺纹钢分笔数据的。
比如一开始先简单准备一下数据,这是螺纹钢某段历史的数据,150天吧,40天训练,10天验证,100天测试,够意思了吧。- train.range gbm.test.pred R2(gbm.test.pred, test.mat$y)[1] 0.01765722
复制代码 然后看看样本外,同样的数据这次是0.01765722,比lasso好多了,5900多秒不是吃干饭的。。。
然后看看随机森林,说实话这个我不大熟,貌似好慢。。。那就试试h2o这个包吧,还是挺高达上的,很多斯坦福统计系教授是它的顾问,包括Elements of Statistical Learning的几个作者。。。- > library(h2o)> h2o.init(+ nthreads=-1,+ max_mem_size = "8G")Connection successful!R is connected to the H2O cluster: H2O cluster uptime: 4hours 4 minutes H2O cluster version: 3.10.5.3 H2O cluster version age: 1month and 30 days H2O cluster name: H2O_started_from_R_pc_igo044 H2O cluster total nodes: 1 H2O cluster total memory: 6.42GB H2O cluster total cores: 20 H2O cluster allowed cores: 20 H2O cluster healthy: TRUE H2O Connection ip: localhost H2O Connection port: 54321 H2O Connection proxy: NA H2O Internal Security: FALSE RVersion: R version 3.3.3(2017-03-06) > h2o.removeAll() # Clean slate - just incase the cluster was already running[1] 0
复制代码 我的电脑配置一般啦,人穷志短,莫笑。。。。还要对数据进行处理- > train.frame valid.frame test.frame dim(train.frame)[1] 1609232 12
复制代码 然后就可以建模了。。。其实对随机森林真心不大熟,就对深度进行优化吧,省略一些过程:- > best best[1] 10可见最优的模型是深度为10的情况,我们看看样本外的结果:> h2o.rf.model h2o.test.pred R2(h2o.test.pred, test.mat$y)[1] 0.0133576
复制代码 最后10层最优,跟gbm貌似一样,gbm我随便取的10层哈。。。结果是0.0133576,比lasso好,比gbm差,这是样本外的。。。。
好了,最后关键时刻到了,deep learning粉末登场!!!
其实这个deep learning参数有点多,我先放代码再解释:
[code]n.level |