用sklearn包进行机器学习是一件很舒服的事情,以往写一页的代码,用sklearn的一个参数就搞定,多么酸爽。然而由于包是人家的,所以参数设置什么的咱们是被动的。只有好好读官方文档才能搞清楚每个参数的意义是什么,这是调参前的重要武装。
大家都知道sklearn调参有一个核武器---gridsearchcv,它存在的意义就是自动调参,只要把参数输进去,人家乖乖地就把最优化的结果和参数跑了出来。然而,在小数据集上还可以小打小闹。一旦数据的量级上去了,估计电脑跑废了也跑不出结果。这个时候就是需要动脑筋了。在这里分享一个快速调优的方法---坐标下降。有仁兄说了,坐标下降我知道,但是那也得遍历循环呀,还不是废电脑。好吧,那就称它伪坐标下降法,它其实是一种贪心算法:拿当前对模型影响最大的参数调优,直到最优化。再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。这个方法的缺点就是可能会调到局部最优而不是全局最优,但是省时间省力,巨大的优势面前,还是试一试吧,后续可以再拿bagging再优化。
拿kaggle上最经典的数据Digit Recognizer为例,用RandomForestClassifier算法,采用gridsearchcv自动调参交叉验证计算准确度。
具体代码见我的github链接:https://github.com/AlanLin2015/Project-Code/tree/master/kaggle-Digit%20Recognizer