《吴恩达机器学习》11 机器学习系统设计

前言

前面的学习我们介绍了机器学习模型评估的办法,如将数据划分为训练集,验证集和测试集,通过不同的偏差和方差分析模型的好坏已经改进的方法,那么这一节来学习设计一个机器学习的系统方法

一、首先要做什么

比如设计一个垃圾邮件分类器,我们可以从下面的方式开始

  1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
  2. 基于邮件的路由信息开发一系列复杂的特征
  3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
  4. 为探测刻意的拼写错误(把 watch 写成 w4tch)开发复杂的算法

也就是数据的初始化以及模型的选择,我们将在随后的课程中讲误差分析,我会告诉你怎样用一个更加系统性的方法,从一堆不同的方法中,选取合适的那一个。

二、误差分析

所谓的误差分析就是指已最快的方式构建你的机器学习的模型,即使你的模型并不好,但是我们可以通过学习曲线等模型评估的方式知道你优化的方向,构建一个学习算法的推荐方法为:

  1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
  3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势

三、查准率(Precision)和查全率(Recall)

1、定义

例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有 0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有 0.5%。然而我们通过训练而得到的神经网络算法却有 1%的误差。这时,误差的大小是不能视为评判算法效果的依据。
查准率(Precision)查全率(Recall) 我们将算法预测的结果分成四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真

则:
查准率=TP/(TP+FP)。在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
查全率=TP/(TP+FN)。在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
这样,对于我们刚才那个总是预测病人肿瘤为良性的算法,其查全率是 0
在这里插入图片描述

2、查全率和查准率之间的权衡

如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准率,我们可以使用比 0.5 更大的阀值,如 0.7, 0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。
如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。我们可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数
据的不同而不同。
我们希望有一个帮助我们选择这个阀值的方法。一种方法是计算 F1 值(F1 Score),其中P是查准率,R是查全率。其计算公式为:
F1Score = 2(PR)/(P + R)
我们通过计算F1的值来得到阈值最大的P和R
在这里插入图片描述

四、机器学习的数据

机器学习的数据几乎是决定算法好坏的最基本的标准,我们这里不讨论机器学习数据初始化(如训练一个图像识别猫狗的模型,我们需要将拍摄的图片做分类,裁剪成统一尺寸等)我之前也看过一句话就是人工智能就是拼数据量的,谁的数据量多,谁的模型就越准,现在想想是有他一定的道理的。如下图训练一个语义分析的算法时,采用不同的算法当数据量达到一定程度时,他们的误差会越来越小。那么机器学习算法的核心找到一个在于同一份数据集中最优解。
在这里插入图片描述
现在假设我们使用了非常非常大的训练集,在这种情况下,尽管我们希望有很多参数,但是如果训练集比参数的数量还大,甚至是更多,那么这些算法就不太可能会过度拟合。也就是说训练误差有希望接近测试误差。
另一种考虑这个问题的角度是为了有一个高性能的学习算法,我们希望它不要有高的偏差和方差。因此偏差问题,我们将通过确保有一个具有很多参数的学习算法来解决,以便我们能够得到一个较低偏差的算法,并且通过用非常大的训练集来保证
在这里插入图片描述

总结

以上就是《吴恩达机器学习》系列视频 机器学习系统设计 的内容笔记,以便后续学习和查阅。

猜你喜欢

转载自blog.csdn.net/qq8993174/article/details/87350027