吴恩达机器学习笔记(五)

吴恩达机器学习笔记(五)

标签: 机器学习


1.评估假设(Evaluating a Hypothesis)

如果训练出现误差比较大,可以尝试:
1. 尝试使用更多的训练集
2. 尝试使用更少的特征
3. 尝试增加更多的特征
4. 尝试更多的多项式特征
5. 尝试增加获减少λ

如果一个假设对训练集的误差很小,也有可能出现过拟合的可能
我们可以将数据分为训练集和测试集(训练集70%,测试集30%)

  1. 先使用训练集学习训练最小化Jtrain(θ)
  2. 再计算测试集的误差Jtest

1.1测试集误差计算方法

1.用线性回归计算

Jtest(Θ)=12mtesti=1mtest(hΘ(x(i)test)y(i)test)2

2.进行分类

err(hΘ(x),y)=10if hΘ(x)0.5 and y=0 or hΘ(x)<0.5 and y=1otherwise

3.测试集的平均测试误差为

Test Error=1mtesti=1mtesterr(hΘ(x(i)test),y(i)test)

1.2训练集、交叉验证集与测试集(Train/Validation/Test Sets)

  • 训练集:60%
  • 验证集:20%
  • 测试集:20%

先用训练集训练不同的多项式找到使J最小的θ
再使用交叉验证集计算该θ在该多项式中的误差,找到使误差最小的多项式
对多项式使用测试集计算其泛化误差(generalization error)

1.3判断欠拟合与过拟合

当我们的预测很糟糕的时候,可能是高偏差或者高方差
搞偏差是欠拟合,高方差是过拟合

高偏差:Jtrain(θ)Jcv(θ)同时很大,而且Jtrain(θ)Jcv(θ)
高方差:Jtrain(θ)很小,而Jcv(θ)远大于Jtrain(θ)

吴恩达机器学习笔记(五)

1.4选择合适的正则化λ

在线性回归中选择合适的λ来避免过拟合或者欠拟合
1. 建立一个λ的列表(即λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
2. 建立一个有不同变量的模型
3. 迭代列表中的λ学习到对应的θ
4. 用JCV(Θ)交叉验证集验证学习到的θ
5. 选择验证集产生的最小误差的λθ组合
6. 将学习到的λθ计算Jtest(Θ)测试学习效果

1.5学习曲线

当训练集很小时随着训练集的增大,假设函数的误差会增加
在一定量的训练集m后,误差会趋于稳定

高偏差:
训练集较少:Jtrain(Θ)会很小,而JCV(Θ)会很大
训练集较大:Jtrain(Θ)JCV(Θ)都会很大,而且Jtrain(Θ)JCV(Θ)

如果一种学习算法存在高偏差,那么使用更多的培训数据将不会有多大帮助。
吴恩达机器学习笔记(五)

高方差:
训练集较少:Jtrain(Θ)会很小,而JCV(Θ)会很大
训练集较大:随着训练集的增大,Jtrain(Θ)会一直增加而JCV(Θ)会一直减小,但是Jtrain(Θ)JCV(Θ)的差异仍然明显
吴恩达机器学习笔记(五)
如果一种学习算法存在高方差,那么使用更多的培训数据可能会有帮助。

1.6优化模型方法

诊断神经网络

一个神经网络如果参数太少容易导致欠拟合,但是运算量小
一个神经网络如果参数过多容易导致过拟合,运算量大,在这种情况下,你可以使用正则化(λ)解决过度拟合。

可以使用一个隐藏层作为神经网络的初始值,用交叉训练集训练神经网络然后找最优秀的

模型复杂性的影响:
低阶多项式(低模型复杂度)具有高偏差和低方差。在这种情况下,模型的一致性很差。
高阶多项式(高模型复杂度)非常适合训练数据,而且测试数据非常糟糕。这些对训练数据有较低的偏差,但差异非常大。
在现实中,我们想要选择介于两者之间的模型,这可以很好地推广,但也能很好地适应数据。

**- 获得更多的训练集: 用于解决高方差(过拟合)
- 减少特征: 用于解决高方差(过拟合)
- 增加特征: 用于解决高偏差(欠拟合)
- 增加多项式特征: 用于解决高偏差(欠拟合)
- 增加 λ: 用于解决高偏差(欠拟合)
- 减少 λ: 用于解决高方差(过拟合)**

2.构建复杂的机器学习模型

例如垃圾邮件分类
先选取所有邮件中词频最高的10000-50000个单词,然后为每一个邮件构建一个向量,如果有则为1,如果没有该词则为0,然后进行逻辑回归学习
1. 获取大量的训练集(例如”蜜罐”(honeypot),但不总是有用的)
2. 提取更加复杂的特征(例如邮件的标题)
3. 增加输入的方式(例如识别垃圾邮件的拼写错误)

建议用以下方法解决机器学习问题:
1. 用一个简单的算法作为开始,快速的实现一遍,然后用交叉验证集验证数据
2. 绘制学习曲线,判断应该增加更多训练集、增加更多特征还是其他方法
3. 手动检查交叉验证集中的例子中的错误,并找出错误发生的趋势。

例如我们可以将垃圾邮件错误分类最多的一类邮件特殊加一些特征,然后观察训练效果
然后将误差结果作为评估,如果添加特征后误差率下降了则应该保留这个特征,反之则不保留特征

2.1偏斜类问题的评估

例如某算法对癌症的评估准确率为99.5%
看起来似乎训练效果很好,但是可能算法将所有患者归为未患病
这个时候需要计算查准率与召回率,防止算法欺骗我们
吴恩达机器学习笔记(五)

Precision=True positives# predicted as positive=True positivesTrue positives + False positives

Recall=True positives# actual positives=True positivesTrue positives + False negatives

2.2权衡查准率与召回率

根据不同的需求,调整threshold的数值
hθ(x)threshold
hθ(x)<threshold.
然后用F1score=2PRP+R来比较不同需求下的查准率与召回率,比较学习效果

1.数据集必须含有足够的特征的判断结果
2.人类专家可以通过这些特征判断结果
满足上述两条,则理论上可以训练优秀的模型