机器学习(二):如何使用机器学习来解决一个问题?

本文介绍了如何使用机器学习解决实际问题,包括构建机器学习流水线,通过ceiling analysis确定改进步骤,设计和改进单个算法,以及处理过拟合的方法。流水线分为文本检测、字符分割和字符识别三个阶段,通过分析发现应优先改进文本检测。设计算法时,应从简单开始,逐步改进并使用error analysis进行深入分析。过拟合可通过增加数据量和正则化来缓解。
摘要由CSDN通过智能技术生成

给定一个问题,如何设计机器学习系统来解决此问题?

1. 机器学习流水线

1.1设计问题的流水线

什么是“machine learning pipeline”?对于一个由多个阶段/模块组成的系统,当系统中含有机器学习的阶段/模块时,我们就说这是一个机器学习流水线。
Photo OCR问题:识别图片中的文字。
这里写图片描述
我们将这一问题分成三部分:首先是检测到图片中存在文字的部分,然后将文字分割成一个个的字符,最后识别每一个字符。
其流水线如下:
这里写图片描述
这样我们就可以分模块的进行机器学习算法设计了。
假设三个模块都使用机器学习算法,而且对于每一个模块,都有一个简单的机器学习算法。现在我们想要改进整个系统的性能,那么,从哪个模块开始改进比较好?

1.2 使用ceiling analysis决定下一步的工作

这里写图片描述
如图所示:
使用测试数据集test set:
1. 首先得出最初整个系统的准确率为72%;
2. 采用人工标记的方式,将text detection的输出校正,使得text detection的准确率为100%,此时得到整个系统的准确率为89%;
3. 采用人工标记的方式,将Character segmentation的输出校正,使其准确率为100%,此时得到整个系统的准确率为90%;
4. 采用人工标记的方式,将Character recognition的输出校正,使其准确率为100%,此时得到整个系统的准确率为90%;
5. 我们可以发现:
- 改进text detection:最多可以提升17%的性能;
- 改进Character segmentation:最多可以提升1%的性能;
- 改进Character recognition:最多可以提升10%的性能;
6. 所以我们按照优先级:先改进第一个模块;再改进第三个模块;最后是第二个模块。

2. 单个机器学习算法的设计和改进

根据机器学习(一):统计学习问题概述中关于机器学习步骤的描述,可以得知设计一个机器学习算法时,我们需要考虑的问题有很多,如何有序、有效的处理这些问题呢?

2.1 设计机器学习算法的方法

这里写图片描述
分三步:
1. 设计一个比较简单的算法;
2. 改进这个算法;
3. 使用error analysis来深入分析这个算法
其中,设计简单算法这一步不需要过多的解释。

2.2 改进初始算法的性能

首先设计一个比较简单的算法,然后测试其性能。发现其性能不好,如何改进?
这里写图片描述
如上图所示,可能增大训练集、增加/减小特征量,使用多项式特征量/非线性特征量,使用较大/较小的正则化……等等,每一个改进方法都需要花费大量的时间,那么我们如何选择有效的改进方法呢?

我们根据之前的知识可以得出:
如果性能不好的话,可以有两种理由:
- 欠拟合,也就是说模型的复杂度不够,这个时候我们要做的事情就是:使用更复杂的假设空间H。
- 过拟合,过拟合的影响因素有哪些?根据之前的讨论,有训练数据集大小N,模型复杂度和噪声多少。
首先我们需要确定初始模型性能不好的原因,然后再针对各种原因选择有效的改进方法。但是,无论哪种改进方法,都需要涉及到多个假设空间H,所以数据集分三个部分:training set、validation set和test set。

2.3 确定是欠拟合还是过拟合

根据 EoutEin+ϵ 和欠拟合、过拟合的定义:
对于欠拟合, Ein 很大, ϵ 较小,从而 EoutE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值