提高模型识别率——偏差、方差问题

来源:互联网 发布:人工智能产品开发论文 编辑:程序博客网 时间:2024/06/05 00:48

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都高,当然最好。但是往往,一个算法得到的曲线是下图:


那么有没有一个指标平衡他们的关系?


这个指标越高说明分类效果越好!!尤其是这种斜偏类问题!!


大数据问题

先来看一个图:


上图特点:

横坐标是训练集规模,纵坐标是准确度。这四种算法都有相似性能,随着训练数据集增大,

算法性能对应增强。给一个劣质算法更多的数据,效果可能比优质算法还好。因此,几个普遍共识是:“取得成功的人不是拥有最好算法 的人,而是拥有最多数据的人”。

这种情况什么时候是真的?

满足下面情况:

这个算法拥有很多参数来避免高偏差,也就是说在此算法下会得到低偏差的训练误差。

其次,拥有足够多的数据,使得避免模型过拟合,也就是说在“大数据”下会得到低方差模型。

此时,测试误差会接近训练误差,最终使得测试误差变小。



总结一下:

上述给出了如何评价一个模型好坏的几种方法以及相关指标;同时给出了针对不同的问题(偏差、方差)给出了相应的解决方案;最后特别指出,大数据的作用!这也是大数据成为主流的原因!

下一步实践!多参加比赛,多做项目!才是王道!

阅读全文
1 0
原创粉丝点击