第一部分:模型评估
1.改进模型的方法
常规的方法是增加训练样本数量,但是往往也是实现难度最高的,往往还有以下几类方法
1.尝试减小特征的数量
2.尝试获得更多的特征
3.尝试增加多项式特征
4.尝试减小正则化程度
5.尝试增加正则化程度
2.评估一个假设的方法
各种类型的数据混淆后,将70%的数据作为训练集,将30%的数作为测试集。
在训练集训练出模型的参数后,对于线性回归模型,直接利用测试机算出代价函数。对于逻辑回归模型,除了利用测试集计算代价函数外,也可以对测试集使用误比例分析然后求其平均值:
3.模型的选择方法:
问题:在以下10个 中选择一个合适假设函数
解决方案:使用交叉验证集帮助选择模型。60%的数据作为训练集,20%的数据作为交叉验证集,20%的数据作为测试集。具体步骤为:
1. 使用训练集训练出10个模型
2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
3. 选取代价函数值最小的模型
4. 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)
4.关于偏差与方差——高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。
*可以将训练集和交叉验证集误差的代价函数误差与多项式的次数绘制在同一张图上:
*对于训练集,当 𝑑 较小时,模型拟合程度更低,误差较大;随着𝑑的增长,拟合程度提高,误差减小。
*对于交叉验证集,当 𝑑 较小时,模型拟合程度低,误差较大;但是随着𝑑的增长,误差呈现先减小后增大的趋势,转折点是我们的模型开始过拟合训练数据集的时候。
5.正则化和偏差\方差
*如何选怎正则化参数:
选择一系列的想要测试的𝜆值,通常是0-10之间的呈现 2 倍关系的值(如: 0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12 个)。我们同样把数据分为训练集、交叉验证集和测试集。
1.使用训练集训练出 12 个不同程度正则化的模型
2.用 12 个模型分别对交叉验证集计算的出交叉验证误差
3.选择得出交叉验证误差最小的模型
4.运用步骤 3 中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与 λ 的值绘制在一张图表上:
6.学习曲线
学习曲线:学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(𝑚)的函数绘制的图表。
原理:当训练较少行数据的时候,训练的模型将能够非常完美地适应较少的训练数据,但是训练出来的模型却不能很好地适应交叉验证集数据或测试集数据。
7.关于模型评价
1. 获得更多的训练实例——解决高方差
2. 尝试减少特征的数量——解决高方差
3. 尝试获得更多的特征——解决高偏差
4. 尝试增加多项式特征——解决高偏差
5. 尝试减少正则化程度 λ——解决高偏差
6. 尝试增加正则化程度 λ——解决高方差
*使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合。
*神经网通罗层数的选择:从一层开始逐渐增加层数,把数据分为训练集、交叉验证集和测试集。针对不同隐藏层层数的神经网络训练神经网络, 然后选择交叉验证集代价最小的神经网络。
*在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助。
第二部分:系统设计
1.预先准备
以垃圾邮件分类为例子,如果要分类垃圾邮件,可以选100个垃圾邮件常见词,看看他们是否在邮件中出现,出现为1,没出现为0,尺寸为100*1
搭建这个算法,可以做的事情有
1.收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
2.基于邮件的路由信息开发一系列复杂的特征
3.基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
4.为探测刻意的拼写错误(把 watch 写成 w4tch)开发复杂的算法
接下来的几点会帮助我们判断选择哪一个入手优化。
2.误差分析
1.从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
2.绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择(检验高方差或者高偏差的问题
3.进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势
3.类偏斜的误差测量
查准率(Precision)和查全率(Recall) 我们将算法预测的结果分成四种情况:
1. 正确肯定(True Positive,TP):预测为真,实际为真
2. 正确否定(True Negative,TN):预测为假,实际为假
3. 错误肯定(False Positive,FP):预测为真,实际为假
4. 错误否定(False Negative,FN):预测为假,实际为真
则:
查准率=TP/(TP+FP)。例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿 瘤的病人的百分比,越高越好。
查全率=TP/(TP+FN)。例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的 病人的百分比,越高越好。
4.查准率和查全率之间的权衡
在应用中,我们希望保持查准率的召回率保持平衡。核心就在选择判断阈值。
*以肿瘤预测为例子(根据需求自选)
如果我们希望更高的查准率,我们可以使用比 0.5 更大的阀值,如 0.7,0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。
如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地 检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。
*将不同情况的查全率和查准率的关系绘制成图表,曲线的形状根据数据的不同而不同
有一种自动选择阈值的方法是计算F1,并选择我F1值最高的阈值
5.关于数据(略)