机器学习:模型评价和优化方法

评价参数

高偏差和高方差

机器学习中的高偏差指的是模型的损失函数校验中,训练集和测试集error大,模型欠拟合;高方差是指训练集的error小,测试集的error大,模型过拟合。通俗来说,高偏差问题就是采用训练集训练效果都不太好的模型,而高偏差问题就是训练效果好,但是测试效果不好的模型,绘制学习曲线有助于了解算法是高偏差问题还是高方差问题,

针对高偏差的优化方向:

  • 尝试增加特征
  • 尝试添加多项式特征
  • 尝试引入核函数

针对高方差的优化方向:

  • 引入L1正则惩罚向,或增大λ的值(即惩罚项的值),增大训练的冗余,缩小权重;
  • 引入交叉验证,通过交叉验证合理设置参数(如λ)
  • 增加训练集的大小
  • 尝试减少特征
  • 尝试使用特征降维
  • 神经网络这样的黑箱算法可以尝试增加dropout层,或者减小keep_proportion的值

交叉验证

一般在做机器学习时,通常会将数据集分为训练集和测试集,用训练集来训练、测试集做验证。但是这种方式的弊端就是,模型对数据集的划分相对敏感,而且可能对未来的新数据不适应(偏差过高)。此外,也有的方法会将数据集分为训练集、验证集和测试集,通过训练、验证集得出的最优算法,用于测试集,这样可以有效规避一些新数据不适应的问题,但是问题依旧存在。
因此交叉验证就应运而生,交叉验证顾名思义,就是将数据集分为多个部分,来进行训练和测试,最终得出一个评价指标,交叉验证也是模型评价方法的一种优化:

  • 简单交叉验证:将数据集平均分为两部分,分别用作训练和测试,得出两个评价指标,取平均值;
  • K折交叉验证(KFold):将数据集平均分为K份(K>2),分别把每一份当做测试集,其余作为训练集进行模型计算,得出K个模型的评价指标,取平均值作为整个模型的评价指标;
  • 留一验证(LOOCV):即数据集有个N个样本,就做N折交叉验证,这种方式结果最可靠,但是计算量也大。

学习曲线和验证曲线

学习曲线和验证曲线可用于观察模型的优劣性,学习曲线和验证曲线通常也需要采用交叉验证的方式来计算,提高可靠性。

  • 学习曲线(learning curve):横轴训练样本,纵轴为评价函数值,用来观察模型是否存在高偏差和高方差问题。
  • 验证曲线(validation curve):横轴为模型参数,纵轴为评价函数值,用来进行参数选择。

网络搜索

网络搜索(GridSearch)通常用于模型的超参数选择,模型的参数分为两类:

  • 训练模型中学习的参数,如回归分析中的权重
  • 超参数:模型的调优参数,例如L1或L2正则项的系数等
    超参数的调优通常不会随着训练进行,而需要我们自己人为调优,网络搜索就为此而生。
    网络搜索是一种暴力算法,它通过给定的多个参数可选值,枚举其中的每一个组合选择,进行模型计算(通常带有交叉验证),得出性能最好的参数。
    这种方式也分为几种方式,一种极端的方式是每步只调整一个参数的值,另外一种极端是全部一起调整。显然后面一种方式计算量更大(因为枚举更多),选择不同的网络搜索方式,需要根据模型。
嵌套式交叉验证

这是一种计算量更大的网络搜索,做法是在K折交叉验证上再套一层内循环(再套一层交叉验证),目的是为了让模型更能适应未见过的数据。具体做法是,K折中,每次分到的训练集又采用交叉验证分为训练集和验证集,内部交叉验证完成后,得出的模型给外侧的测试机进行评价。

模型评价指标优化

模型的评价性能指标通常有很多种:

  • 二分类任务:准确率、精度、召回率、f1_score,ROC等
  • 多分类任务:准确率、交叉熵等
  • 回归:MSE、MAPE、MAE等
    针对不同任务和数据集情况,应选择合理的性能指标函数(损失函数loss function)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值