ML.NET Model Builder 是一个直观的图形化 Visual Studio 扩展,用于构建、训练和部署自定义机器学习模型。它利用自动化机器学习(AutoML)来探索不同的机器学习算法和设置,帮助您找到最适合您场景的那个。
使用 Model Builder 不需要机器学习专业知识。您只需要一些数据和一个需要解决的问题。Model Builder 会生成代码,以便将模型添加到您的 .NET 应用程序中。
1.创建一个Model Builder项目
当你首次启动Model Builder时,它会要求你为项目命名,然后在项目内部创建一个mbconfig配置文件。mbconfig文件用于记录你在Model Builder中所进行的所有操作,以便你可以重新打开会话。
训练完成后,会在*.mbconfig文件下生成三个文件:
Model.consumption.cs:此文件包含ModelInput和ModelOutput模式以及为消费模型生成的Predict函数。
Model.training.cs:此文件包含Model Builder为训练模型所选择的训练管道(数据转换、算法、算法超参数)。你可以使用这个管道来重新训练你的模型。
Model.zip:这是一个序列化的zip文件,代表你训练好的ML.NET模型。
当你创建mbconfig文件时,系统会提示你输入一个名称。这个名称会被应用到consumption、training和model文件上。在这个例子中,使用的名称是Model。
2.应用场景
您可以将许多不同的场景带到 Model Builder 中,为您的应用程序生成机器学习模型。
场景是对您希望使用数据进行的预测类型的描述。例如:
根据历史销售数据预测未来产品销售量。
根据客户评论将情感分类为正面或负面。
检测银行交易是否存在欺诈。
将客户反馈问题路由到公司中的正确团队。
哪个机器学习场景适合我?
在 Model Builder 中,您需要选择一个场景。场景的类型取决于您想要进行的预测类型。
表格数据
表格数据分类:分类用于将数据划分为不同的类别。
值预测:值预测属于回归任务,用于预测数字。
推荐场景:推荐场景根据用户与其他用户喜好和厌恶的相似程度,为该用户预测一系列建议的项目。当您有一组用户和一组“产品”(如待购买的商品、电影、书籍或电视节目)以及用户对这些产品的“评分”时,可以使用推荐场景。
预测场景:预测场景使用的是具有时间序列或季节性成分的历史数据。您可以使用预测场景来预测产品的需求或销量。
计算机视觉
图像分类:图像分类用于识别不同类别的图像。例如,不同类型的地形、动物或制造缺陷。如果您有一组图像,并且希望将这些图像分类到不同的类别中,则可以使用图像分类场景。
目标检测:目标检测用于在图像中定位并分类实体。例如,在图像中定位并识别汽车和人物。当图像包含多种不同类型的对象时,您可以使用目标检测。
自然语言处理
文本分类:文本分类对原始文本输入进行分类。如果您有一组文档或评论,并且希望将它们分类到不同的类别中,则可以使用文本分类场景。
3.训练环境
根据您的场景,您可以在本地计算机上或Azure云端训练机器学习模型。
在本地训练时,您会受到计算机资源(CPU、内存和磁盘)的限制。在云端训练时,您可以扩展资源以满足场景的需求,特别是对于大型数据集。
4.数据
选择好场景后,Model Builder 会要求您提供一个数据集。该数据用于训练、评估和为您的场景选择最佳模型。
Diagram showing Model Builder steps
Model Builder 支持 .tsv、.csv、.txt 和 SQL 数据库格式的数据集。如果您的文件是 .txt 格式,那么列之间应使用逗号 (,)、分号 (😉 或制表符 (\t) 分隔。
如果数据集由图像组成,支持的文件类型是 .jpg 和 .png。
选择要预测的输出(标签)
数据集是一个由训练样本行和属性列组成的表格。每一行包含:
一个标签(您想要预测的属性)。
特征(用作输入来预测标签的属性)。
对于房价预测场景,特征可能是:
房屋的平方英尺数。
卧室和浴室的数量。
邮政编码。
标签则是该行对应的平方英尺数、卧室和浴室数量以及邮政编码的历史房价。
Table showing rows and columns of house price data with features consisting of size rooms zip code and price label
图像分类示例数据:
http://download.tensorflow.org/example_images/flower_photos.tgz
5.训练
一旦您选择了场景、环境、数据和标签,Model Builder 就会开始训练模型。
什么是训练?
训练是一个自动过程,通过该过程,Model Builder 会教会您的模型如何针对您的场景回答问题。训练完成后,您的模型就可以对之前未见过的输入数据进行预测。例如,如果您正在预测房价,并且市场上出现了一栋新房子,您就可以预测其售价。
因为 Model Builder 使用的是自动化机器学习(AutoML),所以在训练过程中不需要您提供任何输入或进行调整。
我应该训练多长时间?
Model Builder 使用 AutoML 来探索多个模型,以为您找到性能最佳的模型。
更长的训练时间允许 AutoML 探索更多具有更广泛设置的模型。
训练的确切时长取决于:
用作模型输入的特征(列)数量。
列的类型。
机器学习任务类型。
用于训练的机器的CPU、磁盘和内存性能。
通常建议使用的数据集行数超过100行,因为少于这个数量的数据集可能无法产生任何结果。
6.评估
评估是衡量模型好坏的过程。Model Builder 使用训练好的模型对新的测试数据进行预测,然后衡量这些预测的准确性。
Model Builder 将训练数据分为训练集和测试集。训练数据(80%)用于训练模型,而测试数据(20%)则保留下来用于评估模型。
如何理解模型性能?
一个场景对应一个机器学习任务。每个机器学习任务都有其自己的一套评估指标。
值预测
值预测问题的默认指标是RSquared,其值范围在0到1之间。1是可能的最佳值,换句话说,RSquared的值越接近1,模型的性能就越好。
报告的其他指标,如绝对损失、平方损失和均方根损失,是额外的指标,可以用来理解模型的性能,并将其与其他值预测模型进行比较。
分类(2个类别)
分类问题的默认指标是准确率。准确率定义了模型在测试数据集上做出正确预测的比例。准确率越接近100%或1.0,就越好。
报告的其他指标,如AUC(曲线下面积),衡量的是真阳性率与假阳性率之间的关系,对于可接受的模型来说,AUC应该大于0.50。
F1分数等其他指标可以用来控制精确率和召回率之间的平衡。
分类(3+个类别)
多类分类的默认指标是微准确率。微准确率越接近100%或1.0,就越好。
多类分类的另一个重要指标是宏准确率,与微准确率类似,宏准确率越接近1.0,就越好。理解这两种准确率的一个好方法是:
微准确率:进来的工单被正确分类到正确团队的频率是多少?
宏准确率:对于平均团队而言,进来的工单对其团队来说正确的频率是多少?
7.改进
如果您的模型性能得分不如预期,您可以:
延长训练时间。更多的时间可以让自动化机器学习引擎尝试更多的算法和设置。
增加更多数据。有时数据量不足以训练出高质量的机器学习模型。这在样本数量较少的数据集中尤其明显。
平衡数据。对于分类任务,确保训练集在各类别之间保持平衡。例如,如果您有100个训练示例和四个类别,其中前两个类别(tag1和tag2)用于90条记录,而后两个类别(tag3和tag4)仅用于剩余的10条记录,那么数据的不平衡可能会导致模型难以正确预测tag3或tag4。
8.使用
在评估阶段之后,Model Builder会输出一个模型文件和代码,您可以使用这些代码将模型添加到您的应用程序中。ML.NET模型保存为zip文件。加载和使用模型的代码会作为新项目添加到您的解决方案中。Model Builder还会添加一个示例控制台应用程序,您可以运行该应用程序以查看模型的实际效果。
此外,Model Builder还提供了创建使用您的模型的项目的选项。目前,Model Builder可以创建以下项目:
控制台应用程序:创建一个.NET控制台应用程序,以便从您的模型进行预测。
Web API:创建一个ASP.NET Core Web API,让您可以通过互联网使用您的模型。