近期团队在研究机器学习,希望通过机器学习实现补丁发布评估,系统异常检测。业务场景归纳一下:
收集整理数据(发布相关的异常日志、告警数据),标识出补丁发布情况(成功、失败)
选择一个机器学习的Model进行Train训练
基于训练出的模型(准确度要高)进行最新补丁发布情况预测
典型的机器学习-监督学习的场景。作为.Net的忠实用户,最近火热的ML.Net 务必要尝试、应用一把。今天这篇文章作为一个入门,分享给大家。
先拉个提纲吧:
1. ML.Net Model Builder 介绍及安装部署
2. 典型场景示例
一、ML.Net Model Builder介绍及安装部署
首先,ML.Net Model Builder是什么?它有什么作用?
https://marketplace.visualstudio.com/items?itemName=MLNET.07
Model Builder是一个简单的UI工具,供开发人员在其应用程序中构建,培训和发布自定义机器学习模型。
没有ML专业知识的开发人员可以使用这个简单的可视化界面连接到存储在文件或SQL Server中的数据,训练模型并生成用于模型培训和消费的代码。
一句话总结一下:机器学习建模工具,通过一个VS Designer 可视化构建一个机器学习模型。同时生成一个示例和向导代码,可重复使用。
1. 安装部署
官方的推荐是:Visual Studio 2017 15.9.12 or later
我本机安装了VS2019和VS2017 Enterprise版,直接通过https://marketplace.visualstudio.com/items?itemName=MLNET.07 下线了VS扩展插件MLNET_Model_Builder.vsix。双击安装:
VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products.
当前安装的VS无法安装这个扩展,一顿google,https://github.com/dotnet/machinelearning-samples/issues/451 依旧解决不了。重新安装了VS2017和VS2019 然并卵。
最后,找到官方的推荐的VS:Visual Studio 2017 15.9.12 or later 安装了VS2017的 vs_community__425161747.1541050689
终于安装成功。
2. 新建一个 .Net Core控制台Project,添加Machine Learning项目
弹出 ML.Net Model Builder设计器,说明可以开始机器学习建模了。
3. 开始机器学习建模
微软将机器学习建模的典型场景进行了抽象和分类,主要有以下三种:
regression:回归类机器学习模型:典型场景有:价格预测、销售额预测等等
binary classification:二元分类机器学习模型,典型场景有:用户评论情感分析(消极 or 积极)、交易风险预测(是 or 否)
multi-classification:多维分类机器学习模型。典型场景有:用户画像、数据分类
另外,ML.Net 还支持自定义建模。
4. 准备Train 机器学习训练需要的样本数据
通过微软提供的示例样本数据和场景下,目前机器学习训练的样本数据都是结构化的数据,确定的维度、值。同时,需要对要预测的维度数据进行Label标识和标注。
总结概况一下:
样本数据必须是结构化的数据,确定的列和值
样本数据由各个维度列和一个预测维度列组成
样本数据中预测维度列的值需要手工标注,以便进行机器学习训练
从上面的总结可以看出,ML.NET 属于监督学习这一类。
样本数据的格式:支持CSV(逗号间隔)、TSV(Tab间隔)和SQL Server。
至于怎么另存为TSV文件,其实很简单,Copy示例数据到文本编辑器,另存为**.tsv文件即可。https://raw.githubusercontent.com/dotnet/machinelearning/master/test/data/wikipedia-detox-250-line-data.tsv
选择输入结构化的样本数据后,要指定一个机器学习要预测的列。
5. Train训练、评估
指定输入的数据和要预测的列,进行训练。训练的过程会评估AutoML中提供的各种算法的准确度。
Train训练的时间,随数据量的不同而不同
训练完成后,会输出一个最佳准确度的算法,同时生产一个模型文件,MLModel.zip, 供后续预测使用。
6. 生成可重复执行的代码
即将ML.NET Model Builder 设计器向导的配置,生成可重复执行的代码:两个C# Project,一个Model的Project,一个Console的Project。
二、典型场景示例
第一大章节,我们将整个ML.NET的建模过程做了梳理,现在我们以微软的示例代码,做一个实践应用。