选择场景并准备数据
本单元将介绍如何选择场景、选择训练环境以及准备要在 Model Builder 中进行训练的数据。
开始训练过程
若要开始训练过程,需要向新的或现有的 .NET 应用程序添加新的机器学习模型 (ML.NET) 项。
提示
类库的一个优点就是可移植性。 使用类库,可以轻松地从控制台、桌面、Web 和任何其他类型的 .NET 应用程序引用其中的任何模型。 建议将机器学习模型 (ML.NET) 项添加到类库中。
机器学习模型 (ML.NET) 项向项目添加一个文件扩展名为 .mbconfig 的文件。 使用 .mbconfig 扩展名的文件是采用 JSON 格式编写的 Model Builder 配置文件。 使用这些文件可以执行以下操作:
- 为你的模型提供一个名称。
- 通过源代码管理与团队中其他人协作。
- 保留状态。 如果在训练过程中(时间点不限)需要关闭 Model Builder,系统会保存你的状态,让你可以从离开的位置继续。
选择方案
训练机器学习模型的第一步是根据你要预测的内容确定哪种场景和机器学习任务最适合。
什么是方案?
场景可描述你想使用数据解决的问题。 常见的场景包括上一个单元中列出的场景:
- 对数据进行分类:按主题整理新闻文章。
- 预测数值:估算房价。
- 对具有类似特征的项目分组:细分客户。
- 对图像进行分类:根据图像内容标记图像。
- 推荐项目:推荐电影。
- 检测图像中的物体:检测十字路口的行人和自行车。
这些场景对应机器学习任务。 机器学习任务是根据要询问的问题和可用数据进行的预测或推断类型。
机器学习任务通常分为两类:
- 受到监督
- 非监督式
这两类的主要区别在于尝试预测的标签或值是否已知。
对于监督式任务,标签是已知的。 监督式机器学习任务的示例包括:
- 分类
- 二元(两个类别)
- 多类(两个或更多类别)
- 映像
- 回归
对于非监督式任务,标签是未知的。 非监督式机器学习任务的示例包括:
- 群集
- 异常检测
Model Builder 中支持的场景
Model Builder 支持对应机器学习任务的以下方案:
方案 | 机器学习任务 | 用例 |
---|---|---|
数据分类 | 二元分类和多类分类 | 按主题整理文章。 |
值预测 | 线性回归 | 根据房屋特点预测房价。 |
图像分类 | 图像分类(深度学习) | 根据图像内容按动物种类整理图像。 |
建议 | 建议 | 根据相似用户的喜好推荐电影。 |
对象检测 | 物体检测(深度学习) | 识别图像中的物理损坏。 |
选择预测性维护的场景
根据数据的情况,可以通过不同的任务对预测性维护问题进行建模。 对于你的用例,由于标签是用来描述机器是否损坏的二进制值(0 或 1),因此适合采用数据分类场景。
选择环境
选择数据分类后,可以选择要训练机器学习模型的环境。 环境描述用于训练机器学习模型的计算资源。
Model Builder 中支持的环境
Model Builder支持以下环境选项:
场景 | 本地 CPU | 本地 GPU | Azure GPU |
---|---|---|---|
数据分类 | ✔ | ❌ | ❌ |
值预测 | ✔ | ❌ | ❌ |
图像分类 | ✔ | ✔ | ✔ |
建议 | ✔ | ❌ | ❌ |
物体检测 | ❌ | ❌ | ✔ |
根据你的用例,你可能因多种原因选择本地或 Azure 环境。
本地环境
可能考虑本地计算环境的原因包括:
- 由于使用的是计算机的资源,因此在本地训练不会产生任何费用。
- 你不希望数据离开你的计算机或数据中心。
Azure 环境
图像分类和物体检测等场景会消耗大量资源。 使用 GPU 通常可以加快训练过程。 如果没有 GPU 或计算机没有足够 CPU 或 RAM,将训练过程卸载到 Azure 可以减轻系统上的负载。
加载和准备数据
选择了场景和训练环境后,可以加载和准备数据。
数据是用于生成机器学习模型的最重要组件。 将数据加载到 Model Builder 的过程包括三个步骤:
- 选择数据源类型。
- 提供你的数据的位置。
- 选择列用途。
选择数据源类型
根据你的场景,Model Builder 支持从以下源加载数据:
- 分隔的文件(以逗号、分号和制表符分隔)
- 本地和远程 SQL Server 数据库
- 图像(.jpg 和 .png)
提供数据的位置
选择数据源类型后,必须提供存储数据集的位置。 此位置可以是目录、文件路径或数据库连接字符串。 这也取决于所选的场景和数据源类型。
在 Model Builder 中选择数据源后,它会分析数据,并尽可能地识别以下项:
- 标题和列名
- 列分隔符
- 列数据类型
- 列用途
- 小数点分隔符
加载数据后,Model Builder 将显示数据集中某些元素的预览。
选择列用途
根据所选的场景,你需要定义某些列的用途。 在数据分类和值预测等场景中,必须选择要预测的列(标签)。
默认情况下,不是标签的所有其他列都用作特征。 特征是用作输入的列,用于预测标签。
高级数据选项
若要自定义加载数据的方式,Model Builder 提供了高级数据选项。 利用这些选项,你可以自定义与列和数据集格式相关的设置。
对于列,你可以选择以下设置:
- 用途:列应该是特征、标签还是应该忽略? 只能选择一列作为标签。
- 数据类型:值是单精度浮点值、字符串或布尔值?
- 分类:列是否表示分类值(例如:低、中或高)?
若要设置数据格式,可以选择数据是否包含列标题、列分隔符(逗号、分号或制表符)以及小数点分隔符类型(句点或逗号)。
了解预测性维护数据集
此模块中使用的数据集是 AI4I 2020 预测性维护数据集。 此综合数据集反映了在行业中遇到的实际预测性维护数据。 该数据集包含 10,000 个数据点和 14 列。 来源:
“Explainable Artificial Intelligence for Predictive Maintenance Applications”,Stephan Matzka,Third International Conference on Artificial Intelligence for Industries (AI4I 2020), 2020(待刊),“托管在 UCI 机器学习存储库”- Dua, D. 和 Graff, C. (2019)。 UCI 机器学习存储库 http://archive.ics.uci.edu/ml。 加州大学欧文分校的信息与计算机科学学院。
下面是数据的预览:
UDI | 产品 ID | 类型 | Air temperature [K] | Process temperature [K] | Rotational speed [rpm] | Torque [Nm] | Tool wear [min] | Machine failure | TWF | HDF | PWF | OSF | RNF |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | M14860 | M | 298.1 | 308.6 | 1551 | 42.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
162 | L47341 | L | 298.3 | 308.1 | 1412 | 52.3 | 218 | 1 | 0 | 0 | 0 | 1 | 0 |
这些列定义如下:
- UDI:行的索引。
- Product ID:包含产品类型类别和特定款式序列号的产品标识符。
- Type:产品质量类别。 这些值是 L(低;所有产品的 50%)、M(中;30%)或 H(高;20%)。
- Air temperature [K]、Process temperature [K]、Rotational speed [rpm]、Torque [Nm]、Tool wear [min]:从传感器收集的值。
- Machine failure:二进制标签(0 或 1),用来指示机器是否出现了故障。
- TWF、HDF、PWF、OSF、RNF:独立的机器故障模式。 值为 1 表示出现了相应的故障模式。
本场景不会使用数据集中的所有列,因为这些列不会为预测提供信息或包含冗余信息。
由于你希望能够预测机器是否会出现故障,因此“Machine failure”列是标签。 在 Model Builder 中,对于特征,你可以使用“Product ID”、“Type”和各种传感器列中的数据。
尽管故障模式对于诊断故障的根本原因非常有用,但它们对用例没用。 原因是你只想知道机器是否出现了故障。 此外,“Machine failure”列已捕获类似的信息。 因此,可以忽略这些列。
继续学习下一单元,检查有关场景、环境和数据准备的知识。