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

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

九、机器学习系统的设计


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



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


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


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


目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
185 4
|
12天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
43 5
|
1月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
26 2
|
1月前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
31 1
|
1月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
66 1
|
2月前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
50 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
114 2
基于python 机器学习算法的二手房房价可视化和预测系统
|
3月前
|
机器学习/深度学习 算法
【Deepin 20系统】机器学习分类算法模型xgboost、lightgbm、catboost安装及使用
介绍了在Deepin 20系统上使用pip命令通过清华大学镜像源安装xgboost、lightgbm和catboost三个机器学习分类算法库的过程。
49 4
|
3月前
|
机器学习/深度学习 数据可视化 数据处理
Python vs R:机器学习项目中的实用性与生态系统比较
【8月更文第6天】Python 和 R 是数据科学和机器学习领域中最受欢迎的两种编程语言。两者都有各自的优点和适用场景,选择哪种语言取决于项目的具体需求、团队的技能水平以及个人偏好。本文将从实用性和生态系统两个方面进行比较,并提供代码示例来展示这两种语言在典型机器学习任务中的应用。
92 1
|
4月前
|
机器学习/深度学习 数据采集 运维
智能化运维:利用机器学习优化系统性能
在当今快速发展的信息技术时代,传统的运维方式已难以满足日益增长的业务需求和复杂性。本文将探讨如何通过机器学习技术来提升运维效率,确保系统的高可用性和性能优化。我们将深入分析机器学习模型在预测系统负载、自动故障检测与响应以及资源分配中的应用,并讨论实施这些策略时可能遇到的挑战和解决思路。

热门文章

最新文章

下一篇
无影云桌面