目录
一、罗列改进方案
1、选择更多的训练数据
2、试试更少的特征
3、增加新的特征
4、增加多项式的特征(x1^2,x2^2,x1x2,etc)
5、试图减少参数系数λ
6、试图增大参数系数λ
二、机器学习诊断法定义
三、如何评价你的学习算法
(一)划分训练集
前70%作为训练集,后30%作为测试集
(二)线性回归测试集误差
(三)逻辑回归测试集误差![](https://i-blog.csdnimg.cn/blog_migrate/a33de57cff568b25a10df086272e9950.png)
四、模型选择\训练\验证\测试
1、模型选择
step1:依次选择模型,最小化训练误差得到参数向量θ,再计算测试集误差,即测试集性能,最后选择测试集误差最小的,即测试集性能最好的
2、评估假设
step1:将数据集分为三类,分别是训练集(training set)、验证集(cross validation)、测试集(test set),典型比例是6:2:2
step2:训练集误差、交叉验证集误差、测试误差
用验证集来计算误差,选定d=4合适,省下测试集做泛化能力的评估
五、诊断偏差和方差
偏差较大:欠拟合,如下图d=1,一次项;
方差较大:过拟合,如下图d=4,四次项
注:横坐标是d的值,纵坐标是错误率;Jtrain(θ)是在训练集上的错误率,Jcv(θ)是在验证集上的错误率。所以左边是Bias偏差过大(即Jtrain(θ)高,Jcv约等于Jtrain),图右边Variance方差过大(即Jtrain低且远远小于Jcv)
六、正则化与偏差、方差的关系
(一)正则化对拟合的影响
(二)如何选择合适的λ
分别取值,算出最小化J(θ)的θ参数,再对验证集Jcv(θ)进行拟合,即每一个θ在交叉验证集上的平均的误差平方和,最后选择最小的模型
(三)正则化对交叉验证误差和训练误差影响
当λ—>small时,Jtrain此时过拟合,所以误差较小, 当λ—>large时,Jtrain此时高偏差,所以误差较大。
当λ—>small时,Jcv此偏方差,所以误差较大, 当λ—>large时,Jcv此时偏差,所以误差较大。
七、诊断方法之"学习曲线"
(一)学习曲线的定义
是一种工具,具备两种功能:1、改善算法的偏差/方差;2、检查算法是否正确
(二)绘制学习曲线
1、训练样本Jtrain
m = 1,2,3时(即代表样本很小时),能很好的拟合每一个训练样本,所以误差将会很小;
m = 4,5,6时(即代表样本变大时),不能很好的拟合每一个训练样本,即误差随m增大而增大
2、验证集样本Jcv
当训练集的样本越少,泛化能力越弱,所以验证集的误差就越大;训练集样本多时,就稳定在一个范围;所以误差会随着m的增大而减少
(三)高偏差情况下Jtrain和Jcv曲线图
1、高偏差时
①特点:一次项,函数欠拟合状态时;
②Jcv和Jtrain的走势
Jcv:训练集大小越大,Jcv的误差越小
Jtrain:训练集为1的时候,误差几乎没有;训练集越大,其误差越大。如下左图所示
③结论:增大训练集数量,不会起太大作用;如下右图所示:
2、高方差时:
①特点:过拟合,函数项数高,λ小即正则化弱
②Jcv和Jtrain的走势
Jtrain:训练集数量较小时,误差较小(拟合较好且过拟合);训练集逐渐增大,误差有所增长(仍然过拟合,但拟合每个数据又难度增加),但总体误差仍然很小
Jcv:由于过拟合,所以交叉验证集误差一直很大;训练误差和交叉验证集误差之间有一段很大的差距
③结论:增大训练集数量可能会对改进算法是有帮助,因为根据左下图,随着m增大,Jcv和Jtrain在相互靠近
(四)学习曲线如何指引下一步
1、高偏差和高方差适用的下一步
2、小网络和大网络的区别
小网络:隐藏层少、或隐藏单元少;计算量少,易趋于欠拟合,
大网络:隐藏层多,或隐藏单元多;计算量大,易趋于过拟合,但可通过正则化调节
在选择网络时,通常选择复杂网络性能好,过拟合后用正则化修正,这效果比选简单网络好
八、确定优先级步骤
设计复杂机器学习系统时,可能会遇到的问题,以及优先处理哪些问题
举例说明:构建一个垃圾邮件分类器
(一)构建机器学习的步骤
step1:选择特征值,此系统指的是邮件中的关键字
step2:遇到的问题一,如何使得分辨精度提高,错误率低(吴恩达都不知道哪种方案效率最高)
方案一:收集更多的数据
方案二:设计基于“邮件标题”的复杂特征
方案三:设计基于“邮件正文”的复杂特征
方案四:设计检测错误拼写的复杂算法(垃圾邮件通过故意拼错以逃避检测)
(二)误差分析思想
(1)作用:更系统的在众多方法中作出选择
(2)构建机器学习系统时推荐步骤
①用一个简单粗暴的算法可以快速执行(目的是找出现有算法最难以分类的样本)
②绘制学习曲线,决心定下一步改进方法
③误差分析,在验证集中分析问题,指导你想办法改进,
具体步骤例如下图所示,在错误分类的100个邮件中分析
(ⅰ )问题一,这个邮件是哪个类型——发现问题,在以下四种类型文件效果最差;下一步仔细研究这类邮件
(ⅱ)问题二,什么特征可以帮助算法正确分类他们;分析问题,涉及错误拼写的邮件数量较少,只有五封邮件,不值得花太多时间优化算法识别它;但是奇怪的标点方式是个明显的信号
(ⅲ)改进算法,运用数值估计法(即算法可返回一个数值评价指标,由此来在交叉验证集上评估算法的实验效果)
(ⅵ)结合词干提取法,借助词干提取法软件(Porter stemmer),算出使用词干提取法的错误率和不使用词干提取法的错误率进行比较
(三)新评估度量值
1、提出背景
数据集的极端情况——偏斜类,例如99.5%是一类,0.5%是另一类,因此即使全都预测为一类,其算法可能表现非常好,会获得很高的精确度,非常低的错误率。所以此时用“分类精确度”这个指标并不能很好地衡量算法。
2、查准率和召回率precision and recall
(1)定义
(2)注意
在召回率和查准率中,若某一类出现得非常少经常被定义为 y =1 ,或我们希望他是一个出现很少的情况如癌症,查准率和召回率会被定义为y = 1
(四)召回率和精确度的权衡
1、 召回率和查准率不一致的情况
case1:只有预测精度很高时,才能预测患癌;即hθ(x)≥0.7或者hθ(x)≥0.9时,predict y=1;
此时是高查准率,低召回率
case2:避免错判太多癌症病患,hθ(x)<0.3时,predict y=1;
此时是高召回率,低查准率
注明: 右图是召回率和查准率的二维图大致走向如图所示
2、如何权衡召回率和查准率
利用F值结合召回率和查准率
九、机器学习的数据
仅凭大量数据对可能对房价预测没有帮助,但对如下问题(语法问题,人类专家就可凭知识解决)还是有帮助的
此时:很多的参数+很大的数据集=高性能算法
此类问题 的关键判断点:一个人类专家看到特征x能否自信预测出y,因为此说明y可以根据特征x准确地预测出来,其次我们能否得到一个庞大的训练集,且有一个很多参数的学习算法