提高模型识别率——偏差、方差问题
2017-07-22 22:09
281 查看
Introduction
参考链接:2014斯坦福大学机器学习视频
本篇是针对当凭直觉做完一个Baseline以后,如何提高现有的识别率?依然凭直觉有以下几种方法:
1、增加训练数据集
2、挑选出更少的特征
3、增加其他特征
4、增加多项式x1*x2
5、减少或增加惩罚系数
然而,事实上虽然花了大量时间完成上述工作,效果不一定好(以上一篇Titanic为例,事实证明,三天的优化,识别率下降了。。。。)。再思考一下,识别率低的原因是什么?——欠拟合或者过拟合。因此,解决欠拟合和过拟合的方法就是提高识别率的方法。
Method
一、首先什么是欠拟合,过拟合?
过拟合会导致,训练集损失函数小,测试集损失函数大,该假设不能很好的拟合测试集数据
从偏差(bias)和方差(variance)角度来说两种状态特点,欠拟合状态下,训练集和测试集误差都高;
过拟合状态下,训练集误差极低,测试集误差极高。下图,横坐标为模型最高次数,纵坐标为误差值
二、那么如何判断此时模型是欠拟合还是过拟合?
采用交叉验证法:
正则化系数
正则化方法防止过拟合,但如何选择惩罚系数?惩罚系数为多少时,验证集误差率最低?
很明显可以看出,惩罚系数太小,容易过拟合即高方差;惩罚系数太大,欠拟合即高偏差。
蓝线是训练集误差,紫色线是验证集误差,横坐标是惩罚系数,纵坐标是误差值。
学习曲线
学习算法偏差、方差的检验方法,描述了训练集数量与训练集和验证集误差的关系图。
欠拟合状态下:增加数据不一定有太大帮助
过拟合状态下:训练数据少容易过拟合,增加训练集可能会减少误差
综合以上内容:
上述手段的适应范围如下:
但是,你的模型并非只是单纯的拟合问题,即便拟合的很好,误差依然不令人满意。怎么办?
可以进行误差分析
误差分析
其实就是亲自去看看,到底哪些样本被算法分错了?从中找到规律并寻找新的特征。
强烈推荐在训练集上进行误差分析,而非测试集。因此,最好先用简单的算法做一个不太完美的模型,通过上述方法不断优化你的模型,在交叉验证集上验证。最后再在测试集上运用。同时运用评估方法,帮助你 评价此时的模型的好坏。
(数据不平衡)偏斜类误差度量问题
以癌症预测问题为例,1%的错误率对于只有0.5%实例是恶性肿瘤的测试集而言,问题依然很严峻。换句话说,这个模型并不是很好。所以,错误率作为模型评价标准已经不可靠了。
Precision = 真阳性/预阳性=TP/(TP+FP);
Recall = 真阳性/实阳性 = TP/(TP+FN);
以上都是数量之比,都为正实数
阳性表示(y=1),数量少的那一类型。
此案例而言,查准率:在所有预测为恶性肿瘤的病人中,实际上有恶性肿瘤的百分比。当然是越高越好
查全率:在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人百分比。当然是越高越好
存在的问题:
一山不能容二虎,除非一公和一母!
如果P高,R低:非常确信的情况下才认为是癌症,会存在一些是癌症患者被确诊为不是的风险。
如果P低,R高:比较保守,看似像癌症的情况确认为癌症,会存在误诊的风险。
如果P, R都高,当然最好。但是往往,一个算法得到的曲线是下图:
那么有没有一个指标平衡他们的关系?
这个指标越高说明分类效果越好!!尤其是这种斜偏类问题!!
大数据问题
先来看一个图:
上图特点:
横坐标是训练集规模,纵坐标是准确度。这四种算法都有相似性能,随着训练数据集增大,
算法性能对应增强。给一个劣质算法更多的数据,效果可能比优质算法还好。因此,几个普遍共识是:“取得成功的人不是拥有最好算法 的人,而是拥有最多数据的人”。
这种情况什么时候是真的?
满足下面情况:
这个算法拥有很多参数来避免高偏差,也就是说在此算法下会得到低偏差的训练误差。
其次,拥有足够多的数据,使得避免模型过拟合,也就是说在“大数据”下会得到低方差模型。
此时,测试误差会接近训练误差,最终使得测试误差变小。
总结一下:
上述给出了如何评价一个模型好坏的几种方法以及相关指标;同时给出了针对不同的问题(偏差、方差)给出了相应的解决方案;最后特别指出,大数据的作用!这也是大数据成为主流的原因!
下一步实践!多参加比赛,多做项目!才是王道!
参考链接:2014斯坦福大学机器学习视频
本篇是针对当凭直觉做完一个Baseline以后,如何提高现有的识别率?依然凭直觉有以下几种方法:
1、增加训练数据集
2、挑选出更少的特征
3、增加其他特征
4、增加多项式x1*x2
5、减少或增加惩罚系数
然而,事实上虽然花了大量时间完成上述工作,效果不一定好(以上一篇Titanic为例,事实证明,三天的优化,识别率下降了。。。。)。再思考一下,识别率低的原因是什么?——欠拟合或者过拟合。因此,解决欠拟合和过拟合的方法就是提高识别率的方法。
Method
一、首先什么是欠拟合,过拟合?
过拟合会导致,训练集损失函数小,测试集损失函数大,该假设不能很好的拟合测试集数据
从偏差(bias)和方差(variance)角度来说两种状态特点,欠拟合状态下,训练集和测试集误差都高;
过拟合状态下,训练集误差极低,测试集误差极高。下图,横坐标为模型最高次数,纵坐标为误差值
二、那么如何判断此时模型是欠拟合还是过拟合?
采用交叉验证法:
正则化系数
正则化方法防止过拟合,但如何选择惩罚系数?惩罚系数为多少时,验证集误差率最低?
很明显可以看出,惩罚系数太小,容易过拟合即高方差;惩罚系数太大,欠拟合即高偏差。
蓝线是训练集误差,紫色线是验证集误差,横坐标是惩罚系数,纵坐标是误差值。
学习曲线
学习算法偏差、方差的检验方法,描述了训练集数量与训练集和验证集误差的关系图。
欠拟合状态下:增加数据不一定有太大帮助
过拟合状态下:训练数据少容易过拟合,增加训练集可能会减少误差
综合以上内容:
上述手段的适应范围如下:
但是,你的模型并非只是单纯的拟合问题,即便拟合的很好,误差依然不令人满意。怎么办?
可以进行误差分析
误差分析
其实就是亲自去看看,到底哪些样本被算法分错了?从中找到规律并寻找新的特征。
强烈推荐在训练集上进行误差分析,而非测试集。因此,最好先用简单的算法做一个不太完美的模型,通过上述方法不断优化你的模型,在交叉验证集上验证。最后再在测试集上运用。同时运用评估方法,帮助你 评价此时的模型的好坏。
(数据不平衡)偏斜类误差度量问题
以癌症预测问题为例,1%的错误率对于只有0.5%实例是恶性肿瘤的测试集而言,问题依然很严峻。换句话说,这个模型并不是很好。所以,错误率作为模型评价标准已经不可靠了。
Precision = 真阳性/预阳性=TP/(TP+FP);
Recall = 真阳性/实阳性 = TP/(TP+FN);
以上都是数量之比,都为正实数
阳性表示(y=1),数量少的那一类型。
此案例而言,查准率:在所有预测为恶性肿瘤的病人中,实际上有恶性肿瘤的百分比。当然是越高越好
查全率:在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人百分比。当然是越高越好
存在的问题:
一山不能容二虎,除非一公和一母!
如果P高,R低:非常确信的情况下才认为是癌症,会存在一些是癌症患者被确诊为不是的风险。
如果P低,R高:比较保守,看似像癌症的情况确认为癌症,会存在误诊的风险。
如果P, R都高,当然最好。但是往往,一个算法得到的曲线是下图:
那么有没有一个指标平衡他们的关系?
这个指标越高说明分类效果越好!!尤其是这种斜偏类问题!!
大数据问题
先来看一个图:
上图特点:
横坐标是训练集规模,纵坐标是准确度。这四种算法都有相似性能,随着训练数据集增大,
算法性能对应增强。给一个劣质算法更多的数据,效果可能比优质算法还好。因此,几个普遍共识是:“取得成功的人不是拥有最好算法 的人,而是拥有最多数据的人”。
这种情况什么时候是真的?
满足下面情况:
这个算法拥有很多参数来避免高偏差,也就是说在此算法下会得到低偏差的训练误差。
其次,拥有足够多的数据,使得避免模型过拟合,也就是说在“大数据”下会得到低方差模型。
此时,测试误差会接近训练误差,最终使得测试误差变小。
总结一下:
上述给出了如何评价一个模型好坏的几种方法以及相关指标;同时给出了针对不同的问题(偏差、方差)给出了相应的解决方案;最后特别指出,大数据的作用!这也是大数据成为主流的原因!
下一步实践!多参加比赛,多做项目!才是王道!
相关文章推荐
- 为什么交叉熵损失可以提高具有sigmoid和softmax输出的模型的性能,而使用均方误差损失则会存在很多问题
- 机器学习(十) - - 模型评估和选择⑤偏差和方差
- 对模型方差和偏差的解释之一:过拟合
- 方差-偏差平衡(Bias-Variance Balance)与模型选择
- 对模型方差和偏差的解释之二:泛化误差
- 评估模型的方差-偏差
- 误差模型:过拟合,交叉验证,偏差-方差权衡
- 模型评估-偏差bias和方差variance
- 误差模型:过拟合,交叉验证,偏差-方差权衡
- 对模型方差和偏差的解释之一:过拟合
- 从集成学习到模型的偏差和方差的理解
- 对模型方差和偏差的解释之二:泛化误差
- 模型的偏差bias以及方差variance
- 偏差方差权衡问题
- bagging与boosting两种集成模型的偏差bias以及方差variance 的理解
- 斯坦福机器学习第六周(模型选择、高偏差、高方差、学习曲线)
- 模型评估与选择 ( Bias(偏差),Error(误差),和Variance(方差) )
- 模型的偏差与方差的理解
- Bias-Variance Tradeoff(权衡偏差与方差)
- windows下训练FCN模型所遇到的问题