机器学习之模型参数调节篇

前言

同特征工程一样,模型参数调节也是一项非常繁琐但又非常重要的工作。当建模进入到调参阶段,意味着工作也即将进入尾声。通常我们会运用Scikit-Learn来构建传统机器学习模型,那么这里我就默认为调参是在Scikit-Learn之下进行的。

根据模型复杂程度的不同,需要调节的参数数量也不尽相同。简单如逻辑回归,需要调节的通常只有正则项系数C;复杂如随机森林,需要调节的变量会多出不少,最核心的如树的数量n_estimators,树的深度max_depth等等。参数越多,调参的难度自然也越来越大,因为参数间排列组合的可能性越来越多。理论上来讲,Scikit-Learn的GridSearch可以帮助我们自动寻找指定范围内的最佳参数组合。但实际情况是,GridSearch通常需要的运行时间过长,长到我们不太能够忍受的程度。总而言之,参数调节需要自己手动先排除掉一部分数值,然后或自己组合,或使用GridSearch来进一步选择最佳组合。

下面就来跟大家聊聊如何学习手动排除掉这一部分数值。

1.算法的原理

算法的原理一定是我们避无可避的,尤其是在调参的时候。调参的大前提,是我们了解每一个参数分别是做什么的,就好像我们的面前有多个阀门一样,我们需要搞清楚哪个阀门控制哪一项功能才能动手去调节阀门。参数就好像是模型的阀门一样,控制着模型的好坏,以个人经验来讲(以分类问题为例),在不改变其他条件的情况下,调参能提升模型0.01-0.02的AUC分数,如果模型本身分数在0.83左右的话,0.01-0.02的分数提升可以算得上是巨大的提升了。

那么,对算法的原理应该了解到什么程度呢?我以前也被这个问题困扰,现在还是以个人经验来讲,算法的掌握程度≠调参能力。我见过许多同学,在学习算法时可谓是非常认真,把所有的原理,包括优化参数的方法以及优化过程中每一个步骤的推导都掌握的非常清楚,这样固然是极好的,但是往往也容易让我们陷入到过于细节的问题当中无法自拔。当然,如果是岗位需求或是在攻读博士学位的话,这种学习方式是完全没有任何问题的;但是对于大部分的同学来说,远远不需要掌握到如此细致的程度。

2.经验!经验!经验!再加一点点方法

同特征工程一样,与其说调参是基于对算法原理的理解,不如说调参是一个积累经验的过程。以随机森林中最重要的参数(树的数量n_estimators)为例,树的数量过少会造成欠拟合现象,过多则会造成过拟合现象,这是我们在了解算法原理之后就明白的,但究竟多少是少,多少又是多,这个往往是需要实践经验来判定的(通常在50-500范围内,有时会达到几千)。模型中的许多参数,都是需要我们通过大量的建模实践来摸索出一定的规律的,这也是工作经验在这个行业当中的重要性。作为一个经验丰富的工程师,能够轻易地利用特征工程创造出关键性的变量,并且准确的找到各个关键参数的大致范围,这样可以保证整个团队能够在高效率高质量的完成任务。

关于经验这个事情,我还是建议多听听他人的经验,多看看Kaggle竞赛上排名前列的队伍的代码及讲解,并根据别人的经验总结一下调参的方法,这样一定会事半功倍,帮助你尽快建出优秀的模型。

结语

从事机器学习的初期和中期,了解各种方法和算法固然重要,但更应该去多去参考别人的代码和方法。身处在这个阶段的我们,并不是为了开发新的算法,也不是为了改进现有的算法。这个阶段的我们,更多的是为了建立出好的模型,解决更多的实际问题。尤其是在找工作和面试当中,公司更关心的是我们有没有能力来用自己所学解决公司的实际问题,而不仅仅是对理论知识的掌握。

想成为一名合格的机器学习工程师吗?关注“机器学习学社”获取每天一份的新鲜咨询,为你开拓属于你自己的AI之路

微信扫码关注机器学习学社

    THE END
    喜欢就支持一下吧
    点赞8 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容