吴恩达-机器学习(6)

Evaluating a Learing Algorithm

Decidding what to try next

当预测新的数据集,效果很差时:
1. 获取更多的训练数据
2. 减小特征数量
3. 尝试获取附加特征
4. 尝试添加多项式特征
5. 尝试减小λ
6. 尝试增加λ

机器学习诊疗法:可以帮助你知道机器学习算法是否在工作,而且可以知道提高算法性能的最好的方法

Evaluating your hypothesis

将数据集按照7:3的比例分为训练集和测试集
吴恩达-机器学习(6)
线性回归
吴恩达-机器学习(6)
逻辑回归
吴恩达-机器学习(6)

Model selection and Train/Validation/Test Sets

模型选择,对每个多项式进行训练,选择测试机误差最小的模型,但这并不能评估模型在新的数据集中表现
吴恩达-机器学习(6)
将数据集分为6:2:2的三段,第一段为训练集,第二段为交叉验证集、第三段为测试集
吴恩达-机器学习(6)
选择交叉验证误差最小的模型,这就避免使用测试集
吴恩达-机器学习(6)

Bias vs Variance

Diagnosing bias vs variance

随着多项式的增加,训练集的误差逐渐减小,验证集的误差先减小后增大
高偏差(欠拟合):Jtrain(θ)Jcv(θ)都很高,且Jtrain(θ)Jcv(θ)
高方差(过拟合):Jtrain(θ)很小,Jcv(θ)Jtrain(θ)大很多
吴恩达-机器学习(6)

Regularization and Bias/Variance

吴恩达-机器学习(6)
选取模型和λ的步骤:
1. 创建λ的列表 (i.e. λ∈{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. 使用最好的模型和λ,在测试集上测试性能

吴恩达-机器学习(6)
吴恩达-机器学习(6)

Learning Curves

学习曲线是误差和训练集大小的曲线
吴恩达-机器学习(6)
高偏差时:
小的训练集导致Jtrain(θ)很小Jcv(θ)很高
大的训练集导致Jtrain(θ)Jcv(θ)都很高且Jtrain(θ)Jcv(θ)
当学习算法是高偏差时,增大训练集并不能改善其性能
吴恩达-机器学习(6)
高方差时:
小的训练集导致Jtrain(θ)很小Jcv(θ)很高
随着训练集的增大Jtrain(θ)增大Jcv(θ)减小且都不会趋于平稳,Jtrain(θ)<Jcv(θ)且差异很大
吴恩达-机器学习(6)
模型改善方法总结
吴恩达-机器学习(6)
吴恩达-机器学习(6)

Building a Spam Classifier

Prioritizing What to Work on

垃圾邮件分类:
给定一组电子邮件数据,我们可以为每个电子邮件构造一个向量。这个向量中的每个元素代表一个单词。向量通常包含10,000到50,000个条目,这是通过查找我们数据集中最常用的单词来收集。如果要在邮件中找到一个单词,我们将分配它各自的条目1,否则如果没有找到,这个条目就是0。一旦我们准备好所有的x向量,我们训练我们的算法,最后,我们可以用它来分类一个邮件是否是垃圾邮件。
吴恩达-机器学习(6)
如何提高分类器的准确性:
- 收集大量的数据,如‘honeypot’项目
- 寻找更加复杂的特性(例如:在垃圾邮件中使用电子邮件头数据)
- 从邮件内容中寻找复杂的特征
- 开发算法检测错误拼写
吴恩达-机器学习(6)

Error Analysis

解决机器学习问题的建议方法是:
- 从一个简单的算法开始,快速实现它,并在交叉验证数据的早期测试它。
- 绘制学习曲线来判断更多的数据,更多特征是否有帮助
- 误差分析:手动检查交叉验证集中的例子中的错误,并尝试找出大多数错误发生的趋势。

误差分析
吴恩达-机器学习(6)

Handing Skewed Data

Error Metrics for Skewed Classes

Skewed Classes:对于分类问题,y=1和y=0,在样本数量中y=1的数量远小于y=0的数量。
假设你的算法在测试集上只有1%的错误,可实际上,测试集中只有0.5%的病人患有癌症,所以错误率并不能评价这个算法的优劣,所以就提出了Precision和Recall
吴恩达-机器学习(6)
吴恩达-机器学习(6)

Trading Off Precision and Recall

  1. 为了防止癌症误诊断给人造成压力,所以要有很大的把握判断的了癌症,所以提高阈值,这将造成precision较高,recall较低
  2. 为了防止错误的诊断癌症为没有癌症,导致没有及时治疗,所以要通过降低阈值防止漏了癌症病人,这将造成precision较低,recall较高
    吴恩达-机器学习(6)
    将两者合并为一个量
    吴恩达-机器学习(6)

Using Large Data Sets

Data For Machine Learning

吴恩达-机器学习(6)