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

Error Analysis 误差分析 误差分析:多种类型的误差,有效数字,浮点数 阅读详情

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

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 确定是欠拟合还是过拟合

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

【AI】用iOS的ML(机器学习)创建自己的AI App 在机器学习中,一切都始于模型,这是进行预测或识别的系统。教计算机学习涉及使用训练数据的机器学习算法进行学习。从训练中生成的输出通常称为机器学习模型。有不同类型的机器学习模型来解决同一个问题(例如对象识别),但使用不同的算法。是其中一些机器学习算法。 阅读详情

相关推荐

Spark 2.0 机器学习 ML 库:常见的机器学习模型(Scala 版)

一、前言 机器学习中,人为地设计算法,需要一定的知识积淀。 而使用别人设计好的机器学习库如 Spark 2.0 ML,那是基本不需要什么基础的,开箱即用。 首先,看一个简单、完整、规范的案例,无疑是最好的方式。 之前的文章(内含短小精悍的案例): Spark 2.0 机器学习 ML 库:特征提取、转化、选取(Scala 版) Spark 2.0 机器学习 ML 库:机器学...

IT小村 1万+

使用 Spark ML Pipeline 进行机器学习

Spark ML Pipeline 的引入,是受到scikit-learn的启发,虽然 MLlib 已经足够简单实用,但如果目标数据集结构复杂,需要多次处理,或是在学习过程中,要使用多个转化器 (Transformer) 和预测器 (Estimator),这种情况下使用 MLlib 将会让程序结构极其复杂。所以,一个可用于构建复杂机器学习工作流应用的新库已经出现了,它就是 Spark 1.2 ...

小数据研究院 7237

用 ML.NET 开发智能应用:让 .NET 程序员轻松掌握机器学习

ML.NET是一个由微软开发的开源跨平台机器学习框架,专为 .NET 开发者设计,允许他们在不离开 C# 或 F# 编程语言的情况下,进行机器学习建模和应用。通过 ML.NET,开发者无需学习 Python 或深度学习框架的复杂操作,就能在其现有的 .NET 应用中集成强大的机器学习功能。ML.NET 支持各种机器学习任务,包括分类、回归、聚类、推荐、异常检测、自然语言处理等。无论是开发企业级应用、Web 应用,还是桌面应用,ML.NET 都能为你的项目带来智能化提升。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3781

在 Azure ML 上用 .NET 跑机器学习

.NET ML 你在用了吗?

Kinfey 4371

ML:MLOps系列讲解之《设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?》解读

ML:MLOps系列讲解之《设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?》解读 导读:设计机器学习驱动的软件,这部分致力于任何软件项目中最重要的阶段之一——理解业务问题和需求。 由于这些同样适用于基于 ML 的软件,因此您需要确保在开始设计之前有一个很好的理解。 任何软件项目中最重要的阶段都是理解业务问题并创建需求。基于ML的软件在这里也不例外。最初的步骤包括对业务问题和需求的彻底研究。这些需求被转换成模型目标和模型输出。需要指定可能的错误和启动的最低成功率。继续研究A

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 2809

机器学习ML.NET

是用于 .NET 的跨平台开源机器学习 (ML) 框架。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载数据,支持数据转换,并包含许多 ML 算法。借助 ML.NET,您可以针对(如分类、预测和异常检测)训练模型。您还可以在 ML.NET 中使用 TensorFlow 和 ONNX 模型,这使得框架更具可扩展性,并扩展了支持的方案数量。

A_nanda的博客 5481

C# ML.NET机器学习入门:5步轻松搞定,代码详解+实战演练

通过以上五个步骤,你已经成功地使用C#和ML.NET创建并使用了一个简单的机器学习模型。是不是感觉比想象中简单多了?其实,机器学习并没有那么高深莫测,只要你愿意动手实践,就能轻松上手。希望这篇教程对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言交流!接下来,你可以尝试使用更多的数据集和不同的任务类型,进一步提升你的机器学习技能。加油,未来的机器学习专家!🌟✨😊✨。

java专栏 4713

ADC(三)Guard ring的设计艺术:从单元到系统的隔离策略

本文深入探讨了ADC设计中Guard ring(保护环)从单元到系统的多层次隔离策略。文章分享了从新手到专家的认知升级过程,详细分析了在单元内部进行微隔离、在模块间建立噪声屏障以及在系统层面规划全局隔离带的实用方法与设计艺术,强调了Guard ring对于提升混合信号电路性能和可靠性的关键作用。

weixin_28312391的博客 152

编译原理考试大题分析【太原理工大学】

看完本篇大题拿 85% 的分应该没问题,TYUT 太原理工大学编译原理期末考试。

m0_52861684的博客 1万+

基于IMU的纯惯性导航轨迹绘制实践与优化

本文深入探讨了基于IMU的纯惯性导航轨迹绘制实践。通过修改开源组合导航算法KF-GINS,屏蔽GPS更新并简化地球参数,实现了仅依赖IMU数据的轨迹解算。文章详细介绍了代码改造、轨迹可视化方法,并分析了误差累积的根本原因,为深入理解惯性导航原理与传感器融合的必要性提供了宝贵的实践经验。

ff678的博客 395

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...

qryzhfj的博客 2188

解决银河麒麟V10分辨率问题:xrandr命令详解与常见错误排查

本文详细解析了在银河麒麟V10系统中使用xrandr命令调整屏幕分辨率的方法,包括核心功能解析、常见问题排查及持久化配置技巧。通过实战指南帮助用户解决分辨率缺失、配置失效等典型问题,提升多显示器环境下的工作效率。

weixin_30642561的博客 504

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

如何做好软件需求分析?

软件需求分析也称为系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。

qq_41854911的博客 1415

Oracle11g下载与安装(windows)

一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 机器学习(一):统计学习问题概述
下一篇: 机器学习(三):拉格朗日乘子与梯度下降法
wangyanphp
博客等级 码龄14年 90粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值