【吴恩达机器学习笔记】九、机器学习系统的设计

简介: 【吴恩达机器学习笔记】九、机器学习系统的设计

九、机器学习系统的设计


1. 确定执行的优先级

现在我们先来看一个关于分类垃圾邮件和非垃圾邮件的例子。


这里所用到的就是监督学习,我们会选取一定的特征量x表示文章中出现的单词,下面就是选取了100个特征关键词作为判断标准,然后给于训练集在垃圾和非垃圾邮件中去判断其中这些单词是否出现。


而特征值等于1说明出现了,等于0说明没有出现。

a420823b002342d894684d2acc514139.png



这里需要注意的是,在现实中,我们通常会在训练集中选取出现频率最高的单词作为特征,一般数量在1000到50000个,而不是像我们上面那样手动选取100个特征来那个。


那么,该如何提高分类的准确度而降低错误率呢,这有以下几个方法:


增加你的训练数据集。

用更复杂的特征关注于邮件的标题。

对于文章主体即正文使用更复杂的特征。

用一些更复杂的算法来检测出拼写错误。


2. 误差分析

上面我们介绍过利用图像来判断高方差和高偏差的问题,能够帮你节省很多没必要的时间,接下来我将为你介绍另一个方法,能够帮助你更好的去完善模型,那就是误差分析。


还是拿上面垃圾邮件分类的例子,你可以通过分析那些被分错的邮件有哪些共同之处,然后可以去增加一些特征量,去想一个更好的模型,如下所示:


271c8b3b396e4a8dacbb0fde2b5c0ad4.png


假设分类算法错误分类了100个邮件,这时你可以手动的分类,观察它们哪些类别的邮件出错率很高,比如可能钓鱼邮件分类错误率高,这时就去观察这些邮件中有什么共同之处,比如拼写错误、奇怪的来源或者是不正常的标点。假设有不正常的标点特征的邮件居多,这可能就值得你去花时间去思考一些新的特征量新的模型去改善这些情况,提高分类的准确度。


除此之外,我们最好能有一个单一规则的数值评价指标,能帮助我们快速分辨出某些算法适不适用于我们的模型,如果没有一个指标来评估,手动来测试好坏往往会使我们难以判断是否要用这些算法。


最后,还有一个建议就是,在你所有一切开始的时候,最好快速的先实现一个算法,不要管他是好是坏,人们一般在第一步构建上面花费太多时间即便是一个很简单的算法。快速的实现一个算法后你就可以通过误差分析等方法,快速的去改善你的算法。


3. 不对称分类的误差评估

上节课我们提到了数值评估,它可以帮助我们快速决定算法的适用性,但是如果出现偏斜类(skewed classes)问题,这种方法就很难进行判断,如下:


c5c571a8cbc64b398c9bf0febd1179f1.png


这个例子中是对癌症进行分类,上面原先的模型假设误差由1%,但是当我们换一个算法,就只判断是否y=0,这显然并不是一个很好的分类方法,但我们通过数值估计发现误差竟然降低了,因为上面这个偏斜类问题中,正样本数量远少于负样本数量,故我们无法很好的判断这个方法与我们原先用的模型哪个更适合。


面对这种偏斜类问题时,我们希望能有不同的误差度量值或者不同评估度量值,而其中一种误差度量值就是查准率和召回率,如下:

65dffaab00064b97884eba645c3845fc.png



上面这种指标一般用于我们想要预测某种十分稀少的情况,比如说癌症。


而我们一般会先将所分出来的数据集划分为四个部分,分别是真阳性(True postive)即预测与实际都为1,假阳性(False postive)即预测为1但实际为0,假阴性(False negative)即预测为0但实际为1,真阴性(True negatvie)即预测与实际都为0。然后再对查准率和召回率进行定义。


查准率(Precision)


在所有预测为癌症的患者中,有多少患者是真真切切是患有癌症的。


召回率(Recall)


在所有实际患有癌症的患者中,有多少病人是你正确预测患有癌症的。


通过上面这两个度量指标,再回过去看之前那个总是预测y=0的模型,我们就可以得到它的召回率为0,因为他总是不预测是否患有癌症,故可以清楚知道这个模型并不好。


4. 查准率和召回率的权衡

通过上节课我们了解了查准率和召回率,这节课我们来学习该如何权衡这两者,在此之前我们先看下面这些情况:


52b10a786c0c492f954543bb73829ecc.png


你可以通过改变临界值来得到你想要的结果:


如果你想有十足的把握告诉病人他得了癌症,避免误判,那么你可以设置较高的临界值例如0.7,只有当hθ(x)大于0.9,才会预测为1,这种情况下就会得到高查准率,低召回率。

如果你不想漏掉一些本该得了癌症的病人,那么你可以设置很低的临界值例如0.3,当hθ(x)大于0.3时,就会预测为1,这种情况下就会得到高召回率,低查准率。

所以有时候想要得到高查准率或者高召回率就要舍弃另一边的准确率,这就需要我们去权衡,可以通过画出查准率与召回率的曲线,来选择你想要的结果,那么是否一种方法可以自动的选择临界值呢。

930daa35ac614a25aeb66316cf55bed5.png



上面我们说如果单一看一个评估数值无法很好判断算法好坏,所以引出了查准率和召回率,但是还存在一个问题,就算我们得到了这两个数值,我们也还是要花很长时间去思考去对比每个算法的查准率和召回率,这样效率仍然不高。所以我们就又要需要一个数值通过查准率和召回率帮助我们判断算法的好坏,但是如果仅算这两者的平均值,得到的结果仍然不准确,这就要引入第三个度量值F值(F score)。


这样,就算你一边很高但是另一边很低,得到的F值也会很低,从而排除掉一些极端的算法。


5. 机器学习数据

我们先来看一个例子,下面这是一个比较有影响力的研究。



ecbd7152f4bc4d9f97436699e66e35e1.png

通过给四个算法不断地喂训练集,然后观察它们随训练集数量的增多效果的变化,结果发现数量集越多时劣质算法竟然效果会更好,甚至比优质算法效果还要好,所以有句话就说并不是那些拥有好算法的人是赢家,赢家往往是那些手里掌握着很多数据的人,那么这句话在什么情况下是真的呢,我们来举些例子。

c6d5205378ca4c7ab8ba4d3695b2c1d4.png



首先假设我们有足够多的特征信息能够准确判断y值,然后让我们去判断上面句子中的空白地方是填什么,通过大量的信息机器可能就知道这个地方要填two,而不是to或too,这样数据多看起来是一件不错的事情。


但是我们再来看一个反例,如果只给你一个特征即房屋的大小,不告诉你其它像房屋所处位置,房间个数等等信息,让你去预测房屋的价格,恐怕你有再多的数据集也无法很好的预测房屋的价格吧。


所以训练集越多效果越好是要分情况的,下面这种情况就完美的符合了。

f0eb5eb93cae404db8c6a32e24193223.png



我们可以用拥有很多参数的算法,这样我们就可以使偏差变得很低,并且训练误差会很小。


然后再通过很大的数据集去训练,这样就可以使方差变得很低,并且测试误差会接近于训练误差。


两者结合起来即解决了高偏差问题也解决了高方差问题,并且使训练误差也很低。


目录
相关文章
|
8月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
674 46
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
950 4
|
11月前
|
存储 人工智能 自然语言处理
基于QwQ-32B+Hologres+PAI搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于QwQ大模型的RAG服务,并关联Hologres引擎实例。Hologres与达摩院自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时、简单易用的向量计算能力。通过PAI-EAS,用户可以一键部署集成大语言模型(LLM)和检索增强生成(RAG)技术的对话系统服务,显著缩短部署时间并提升问答质量。具体步骤包括准备Hologres向量检索库、部署RAG服务、通过WebUI页面进行模型推理验证及API调用验证。Hologres支持高性能向量计算,适用于复杂任务的动态决策,帮助克服大模型在领域知识局限、信息更新滞后和误导性输出等方面的挑战。
|
11月前
|
人工智能 自然语言处理 API
Hologres × PAI × DeepSeek 搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于DeepSeek大模型的RAG(检索增强生成)服务,并关联Hologres引擎实例。Hologres与阿里云自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时的向量计算能力。通过PAI-EAS,用户可以一键部署集成了大语言模型和RAG技术的对话系统服务,显著缩短部署时间,并提高问答质量。部署步骤包括准备Hologres向量检索库、部署基于DeepSeek的RAG服务、通过WebUI进行模型推理验证,以及通过API调用进行模型推理验证。Hologres还提供了特色功能支持,如高性能向量计算等。
|
12月前
|
人工智能 自然语言处理 安全
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
263 0
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
779 4
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
430 1
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
528 5
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。

热门文章

最新文章