|
|
# 机器学习技术
|
|
|
|
|
|
构建、使用和维护机器学习模型及其使用数据的过程,与许多其他开发工作流程有很大不同。在本课中,我们将揭开这一过程的神秘面纱,并概述您需要了解的主要技术。您将:
|
|
|
|
|
|
- 以高层次理解支撑机器学习的过程。
|
|
|
- 探索“模型”、“预测”和“训练数据”等基本概念。
|
|
|
|
|
|
## [课堂前测验](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
[](https://youtu.be/4NGM0U2ZSHU "机器学习初学者 - 机器学习技术")
|
|
|
|
|
|
> 🎥 点击上方图片观看关于本课的简短视频讲解。
|
|
|
|
|
|
## 介绍
|
|
|
|
|
|
从宏观角度来看,创建机器学习(ML)流程的技艺包括多个步骤:
|
|
|
|
|
|
1. <strong>确定问题</strong>。大多数机器学习流程从提出一个不能通过简单条件程序或基于规则的引擎回答的问题开始。这些问题通常围绕基于一组数据的预测展开。
|
|
|
2. <strong>收集和准备数据</strong>。为了回答您的问题,您需要数据。数据的质量以及有时的数据量将决定您能多好地回答最初的问题。数据可视化是这一阶段的重要环节。此阶段还包括将数据拆分为训练组和测试组,以构建模型。
|
|
|
3. <strong>选择训练方法</strong>。根据您的问题和数据的性质,您需要选择如何训练模型,以最好地反映数据并做出准确预测。这是机器学习流程中需要特定专业知识且通常需要大量试验的部分。
|
|
|
4. <strong>训练模型</strong>。利用训练数据,您将使用各种算法训练模型,以识别数据中的模式。模型可能利用可调整的内部权重,优先考虑数据的某些部分,从而构建更好的模型。
|
|
|
5. <strong>评估模型</strong>。使用未见过的数据(测试数据)来检验模型表现如何。
|
|
|
6. <strong>参数调优</strong>。根据模型的表现,可以使用不同参数或变量重新进行训练,这些参数控制用于训练模型的算法行为。
|
|
|
7. <strong>预测</strong>。使用新的输入来测试模型的准确度。
|
|
|
|
|
|
## 要问什么问题
|
|
|
|
|
|
计算机特别擅长发现数据中的隐藏模式。这对于研究人员非常有用,他们有一些问题,不能通过构建基于条件规则引擎的方法轻易回答。举例而言,在精算任务中,数据科学家可能能够围绕吸烟者和非吸烟者的死亡率构建人工规则。
|
|
|
|
|
|
然而,当引入许多其他变量时,机器学习模型可能更加高效地根据过去的健康记录预测未来的死亡率。一个更愉快的例子是,基于纬度、经度、气候变化、靠近海洋程度、急流模式等数据,预测某地四月份的天气。
|
|
|
|
|
|
✅ 这份关于天气模型的[幻灯片](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了有关天气分析中使用机器学习的历史视角。
|
|
|
|
|
|
## 构建前的任务
|
|
|
|
|
|
在开始构建模型之前,您需要完成若干任务。为测试您的问题并根据模型预测形成假设,您需要识别并配置几个要素。
|
|
|
|
|
|
### 数据
|
|
|
|
|
|
为了有把握地回答您的问题,您需要大量且类型合适的数据。此时需要做两件事:
|
|
|
|
|
|
- <strong>收集数据</strong>。牢记上一课关于数据分析公正性的内容,谨慎收集数据。关注数据来源、潜在偏见,并记录其来源。
|
|
|
- <strong>准备数据</strong>。数据准备过程包含多个步骤。当数据来源多样时,可能需要合并数据、进行归一化处理。可通过转换字符串为数字等方法提升数据的质量和数量(如我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做)。还可以基于原始数据生成新数据(参见[分类](../../4-Classification/1-Introduction/README.md))。您也可以清洗和编辑数据(我们将在[Web 应用](../../3-Web-App/README.md)课前进行)。最后,可能需要根据训练方法,将数据随机化和打乱。
|
|
|
|
|
|
✅ 收集和处理数据后,请花时间检查数据形态是否能支持您计划解决的问题。正如在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的,数据可能并不适合所给任务!
|
|
|
|
|
|
### 特征和目标
|
|
|
|
|
|
[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可测量属性。在许多数据集中,它表现为列标题,如“日期”、“大小”或“颜色”。特征变量通常用代码中的 `X` 表示,代表将用来训练模型的输入变量。
|
|
|
|
|
|
目标是您试图预测的对象。目标通常用代码中的 `y` 表示,代表您想问数据的问题答案:十二月里,什么<strong>颜色</strong>的南瓜最便宜?在旧金山,哪些社区的房地产<strong>价格</strong>最好?有时目标也称为标签属性。
|
|
|
|
|
|
### 选择特征变量
|
|
|
|
|
|
🎓 <strong>特征选择与特征提取</strong> 如何知道构建模型时选哪个变量?您可能会通过特征选择或特征提取流程,挑选出最合适的变量以获得最佳模型效果。但两者不同:“特征提取通过原始特征的函数创建新特征,而特征选择则返回原始特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection))
|
|
|
|
|
|
### 可视化数据
|
|
|
|
|
|
数据科学家工具箱中重要的一环是利用诸如 Seaborn 或 MatPlotLib 这类优秀库进行数据可视化。通过可视化数据,您可能发现可利用的隐藏相关性。您的可视化也能帮助发掘偏见或数据不平衡问题(如我们在[分类](../../4-Classification/2-Classifiers-1/README.md)所见)。
|
|
|
|
|
|
### 拆分数据集
|
|
|
|
|
|
训练前,您需将数据集拆分为两个或更多不等大小的部分,但仍能良好代表数据。
|
|
|
|
|
|
- <strong>训练集</strong>。用于“拟合”模型以训练它。这部分数据集是原始数据集的主体。
|
|
|
- <strong>测试集</strong>。测试数据集是一个独立数据组,通常从原始数据中获取,用来确认已构建模型的性能。
|
|
|
- <strong>验证集</strong>。验证集是一小部分独立样本,用于调优模型的超参数或结构,从而改善模型。根据数据大小和问题,您可能不需要构建这一第三组(如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中提到)。
|
|
|
|
|
|
## 构建模型
|
|
|
|
|
|
利用训练数据,目标是通过各种算法<strong>训练</strong>构建模型,或说构建数据的统计表示。训练模型时,模型会暴露于数据中,并尝试对其发现、验证、接受或拒绝的模式做出假设。
|
|
|
|
|
|
### 决定训练方法
|
|
|
|
|
|
依照问题及数据性质,您将选择训练方法。浏览[Scikit-learn 的文档](https://scikit-learn.org/stable/user_guide.html) —— 本课程使用它 —— 您可探究多种训练模型方法。根据经验,可能需尝试多种方法以构建最佳模型。数据科学家通常会通过输入未见数据,检查准确度、偏见及其他影响质量的问题,并据此选择最适合的训练方法。
|
|
|
|
|
|
### 训练模型
|
|
|
|
|
|
有了训练数据,您便可以“拟合”模型。许多机器学习库中会看到代码如 model.fit —— 就在这时,您将以数组形式(通常是‘X’)输入特征变量以及目标变量(通常是‘y’)。
|
|
|
|
|
|
### 评估模型
|
|
|
|
|
|
当训练过程完成(对于大型模型,可能需要多轮“迭代”或“epoch”)后,您可以使用测试数据评估模型质量。测试数据是原始数据的一个子集,模型之前未见过。您可以输出模型质量的指标表。
|
|
|
|
|
|
🎓 <strong>模型拟合</strong>
|
|
|
|
|
|
在机器学习中,模型拟合指的是模型在尝试分析不熟悉数据时的准确性。
|
|
|
|
|
|
🎓 <strong>欠拟合</strong>和<strong>过拟合</strong>是常见问题,降低模型质量。欠拟合时,模型表现不佳,既不能准确分析训练数据,也不能分析未见数据。过拟合时,模型过于“刻意”地记住训练数据细节与噪音,自己“学得太好”,因而在新数据上表现欠佳。
|
|
|
|
|
|

|
|
|
> 信息图作者:[Jen Looper](https://twitter.com/jenlooper)
|
|
|
|
|
|
## 参数调优
|
|
|
|
|
|
完成初步训练后,观察模型质量并考虑通过调整“超参数”来改进。详情请参阅文档:[超参数调优](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。
|
|
|
|
|
|
## 预测
|
|
|
|
|
|
此时,您可以使用全新数据测试模型准确性。在“应用型”机器学习环境中,构建网络资产以在生产环境中使用模型时,通常会捕获用户输入(比如按钮点击),设置变量并将其发送到模型进行推断或评估。
|
|
|
|
|
|
在这些课程中,您将发现如何利用这些步骤准备、构建、测试、评估和预测——作为数据科学家所掌握的全部动作,助您逐步成长为“全栈”机器学习工程师。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 挑战
|
|
|
|
|
|
绘制一个反映机器学习实践者步骤的流程图。您目前处于该过程的哪个阶段?您预测在哪些环节会遇到困难?哪些环节对您来说较为容易?
|
|
|
|
|
|
## [课堂后测验](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## 复习与自学
|
|
|
|
|
|
在线搜索数据科学家的采访,了解他们的日常工作。这里有一个[视频](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。
|
|
|
|
|
|
## 作业
|
|
|
|
|
|
[采访一位数据科学家](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免责声明**:
|
|
|
本文件使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版本的文件应被视为权威来源。对于关键信息,建议采用专业人工翻译。我们对因使用此翻译而产生的任何误解或误释概不负责。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |