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

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

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

【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万+

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

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

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

使用 Spark ML Pipeline 进行机器学习

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

小数据研究院 6547

美团团购单交易额预估问题

本文转载自美团点评技术团队文章http://tech.meituan.com/mt-mlinaction-how-to-ml.html

TangowL 4862

关于Ceiling Analysis(上限分析)的思考

废话多说,先上原图。这张图出自吴恩达机器学习课程。这节课讲到了Ceiling Analysis: What Part of the Pipeline to Work on Next。我们姑且翻译为上限分析。 我们可以用Ceiling Analysis这种方法分析Photo OCR pipeline里的各个模块,发现系统的短板,以决定接下来做什么。 当前整个系统的输出准确率是72% 1、首先,确保...

weixin_43106248的博客 998

11.4 上限分析-机器学习笔记-斯坦福吴恩达教授

上限分析(Ceiling analysis) 光学字符识别并不是一个单一的过程,而是由若干过程构成的流水线。我们知道,字符识别作为该流水线的出口,其将是衡量光学字符识别准确率的依据。工程浩瀚,我们不可能在流水线的每一步都花费巨额的精力来作出改善,因此,我们需要一种手段来知道去改善哪一步是最值得的,**上限分析(Ceiling analysis)**就是手段之一。 所谓上限分析,就是我们假定某个组...

赵继超的笔记 1108

如何利用大规模机器学习解决实际问题

1.背景介绍 大规模机器学习(Large-Scale Machine Learning, LSML)是一种利用计算机科学技术来解决复杂问题的方法。它主要关注于如何在有限的计算资源和时间内,处理大规模数据集,并找到有效的模型。这种方法在许多领域得到了广泛应用,如图像识别、自然语言处理、推荐系统、金融风险管理等。 大规模机器学习的核心概念包括: 数据:大规模数据集通常包含数百万甚至数亿个样本,...

AI天才研究院 1427

李宏毅机器学习的数据下载解决方法——如何避开使用!gdown

文章目录

qq_46126258的博客 1万+

Swift 与机器学习使用 Core ML 进行模型集成

Core ML 是苹果公司推出的机器学习框架,自 2017 年 6 月发布以来,一直致力于优化在移动设备上运行机器学习模型的性能。它为开发者提供了一套易于使用的 API,支持多种类型的机器学习模型,如神经网络、树集成、支持向量机和广义线性模型等。无论是处理图像、文本、音频还是其他数据类型,Core ML 都能提供高效的解决方案。通过本文的介绍,我们详细了解了如何使用 Swift 与 Core ML 框架进行机器学习模型的集成。

数字魔方操控师的博客 1367

Unity 机器学习(ML-Agents) 基础

Unity 机器学习 ML-Agents 基础Unity 官方示例下载ML-Agents 部分Python 下载AnacondaAnaconda 虚拟环境构建 ML-Agents安装 ML-Agents Python 包安装 ML-Agents 包ML-Agents 入门指南Unity Hub 部分虚拟环境 训练虚拟环境 训练运行:虚拟环境 开始训练:虚拟环境 观察训练进度:虚拟环境 停止训练虚拟环境 恢复训练虚拟环境 训练模型ML-Agents 打造新的学习环境ML-Agents 资产导入 Unity 官

Maddie_Mo的博客 1万+

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

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

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

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

.NET ML 你在用了吗?

Kinfey 3707

ML.NET:一个.NET开源、免费、跨平台的机器学习框架

今天大姚给大家分享一个.NET开源、免费、跨平台(支持Windows、Linux、macOS多个操作系统)的机器学习框架:ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需具备开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据加载的数据。数据库,支持数据转换,并包含许多机器学习算法

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 2570

Unity中训练一个ML-Agents项目—解决torch和mlagents配置问题

本文主要介绍了Unity的ML-Agents项目如何在自己的环境下成功运行。涉及到了Anaconda虚拟环境的搭建、关联的torch和mlagents包的安装、Unity中mlagents场景的构建,以及如何成功的执行训练文件并完成输出。

LLLQQQismmmmme的博客 2391

机器学习ML.NET

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

A_nanda的博客 4601

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

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

java专栏 4000

ML-lib机器学习库常见问题解决方案

ML-lib机器学习库常见问题解决方案 ML-lib是一个由Christopher Jenness开发的广泛机器学习库,全部由Python编写而成。该库包含多种机器学习算法,支持监督学习和非监督学习,并且为决策树和集成方法提供了大量工具。 基础介绍和主要编程语言 ML-lib是一个全面的机器学习库,其特点是从头开始构建(不使用现有的高级库如scikit-learn)。主要使用的编程语言是Pytho...

gitblog_00919的博客 965

ML.NET 机器学习实用指南(一)

机器学习(ML)在许多行业中得到广泛应用,如科学、医疗保健和研究,其受欢迎程度仍在不断增长。2018 年 3 月,微软推出了 ML.NET,以帮助.NET 爱好者与机器学习(ML)进行工作。通过这本书,你将探索如何使用 C#代码构建 ML.NET 应用程序,并使用各种 ML 模型。本书首先为你概述了机器学习使用的 ML 算法类型,同时介绍了 ML.NET 是什么以及为什么需要它来构建 ML 应用程序。然后,你将探索 ML.NET 框架、其组件和 API。本书将作为一本实用指南,帮助你使用 ML.NET 库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值