如何提高机器学习模型准确率?

在公司日常的开发机器学习模型工作流程中,我经常发现大家在拿到数据后就迫不及待要开始调用接口,用TensorFlow或pyTorch写代码,洋洋洒洒写了几百行代码执行后才发现正确率还没达到预期一半的目标。

这种事情真的非常常见,研发工程师就经常会有这种问题,觉得自己模型实现只要写好代码逻辑就行,管什么数据逻辑,怼上去就完事。
《如何提高机器学习模型准确率?》

往往有时候居然还怼对了,这无疑给他们自信,有时我还真说不过他们,反正下次继续这样搞还快准狠。然而却对数据本身的挖掘和分析基本没有,所以模型的开发大多后面形成了一种玄学。(虽然也有部分玄学在里面,但大多数还是有逻辑可以参照的)
《如何提高机器学习模型准确率?》

如果我们想提高模型的准确率,一般有以下几种方法:

一、加大模型规模

这种做法在弱模型通过集成学习后成为强模型的效果非常明显。例如决策树和随机森林,通过准确率低的分类器集成在一起进行加权投票得到更精确的结果,犹如三个臭皮匠赛过诸葛亮。神经网络模型也是这种体现,因为深度学习近乎是个可以拟合任何数据集的函数,如果神经元的数量加大,那么它能更好地拟合数据集,当然如果存在方差变大的情况,那么通过正则化可以抵消方差的增加。

《如何提高机器学习模型准确率?》

二、修改模型架构

像集成学习,有Bagging、Boosting和Stacking这几种。在树模型使用这几种方法进行集成时,不同模型架构对数据集的方法会不同,一般来说,Bagging会显著降低偏差和稍减方差,而Boosting更针对方差,对方差的削减会更大,所以Boosting一般精度会更高。

而在神经网络中,不同架构对结果影响更大,所以要针对数据集去做具体地调整和适应。
《如何提高机器学习模型准确率?》

三、减少特征和添加更多的训练数据

添加更多的训练数据可以减少方差,因为越多的数据代表着数据分布越稳定,但对减少偏差无意义。而减少特征意义在于当特征间的相关性越强,特征所造成的噪声越大,减少无意义的特征显然可以降低模型的整体方差。

四、减少或删除正则化

正则化(L1、L2、Dropout)目的在于让模型不要过分拟合数据集,但若训练集偏小或模型迭代次数不够,模型就无法迭代到一个较优的局部极小值,那么此时应该减少部分正则化去提高拟合效果,减低偏差,但同时也会增大方差。

《如何提高机器学习模型准确率?》

    原文作者:我叫沐叔
    原文地址: https://blog.csdn.net/allenyzx/article/details/87939451
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞