乘风破浪,遇见微软开源跨平台机器学习框架ML.NET - 为.Net开发者带来基于模型的机器学习分析和预测能力

什么是ML.NET

image

https://dot.net/ml

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet

https://docs.microsoft.com/zh-cn/dotnet/machine-learning/

https://github.com/dotnet/machinelearning/

image

ML.NET(Machine Learning for .NET)是一个用于C#和F#编程语言的免费软件机器学习库。当与NimbusML一起使用时,它还支持Python模型。ML.NET的预览版包括用于特征工程的转换,如n-gram创建,以及处理二元分类、多类分类和回归任务的学习器。此后,还增加了额外的ML任务,如异常检测和推荐系统,其他方法如深度学习也将包括在未来版本中。

ML.NET是一个跨平台的.NET开源机器学习(ML)框架。

ML.NET允许开发者在他们的.NET应用程序中轻松建立、训练、部署和消费自定义模型,而不需要事先具备开发机器学习模型的专业知识或使用Python或R等其他编程语言的经验。该框架提供了从文件和数据库加载数据的功能,实现了数据转换,并包括许多ML算法。

利用ML.NET,你可以为各种场景训练模型,如分类、预测和异常检测。

你还可以在ML.NET中使用TensorFlow和ONNX模型,这使得该框架更具扩展性,并扩大了支持的场景数量。

机器学习(Machine Learning)

https://en.wikipedia.org/wiki/ML.NET

ML.NET为现有的.NET开发者带来了基于模型的机器学习分析和预测能力。该框架建立在.NET核心和.NET标准之上,继承了在Linux、Windows和MacOS上跨平台运行的能力。尽管ML.NET框架是新的,但其起源于2002年,当时是一个名为TMSN(文本挖掘搜索和导航)的微软研究项目,在微软产品内部使用。后来在2011年左右,它被重新命名为TLC(学习代码)。微软研究院的James McCaffrey博士说,ML.NET源于TLC库,并在很大程度上超过了它的母公司

开发人员可以训练一个机器学习模型,或者重新使用第三方的现有模型,并在任何环境下离线运行。这意味着开发者不需要有数据科学的背景就可以使用该框架。从ML.NET的0.3版本开始,引入了对开源的Open Neural Network Exchange(ONNX)深度学习模型格式的支持。该版本还包括其他值得注意的增强功能,如因子化机器、LightGBM、Ensembles、LightLDA变换和OVA。从0.5版本开始,ML.NET对TensorFlow的集成已经启用。在0.7版本中增加了对x86和x64应用程序的支持,包括增强了矩阵分解的推荐能力。完整的计划功能路线图已在官方GitHub repo上公布。

该框架的第一个稳定的1.0版本在Build(开发者大会)2019年宣布。它包括增加了一个模型生成器工具和AutoML(自动机器学习)功能。Build 1.3.1引入了一个使用Tensorflow的C#绑定的深度神经网络训练预览,以及一个能够在数据库上进行模型训练的数据库加载器。1.4.0预览版增加了ARM处理器上的ML.NET评分,以及Windows和Linux上使用GPU的深度神经网络训练

性能

微软关于用ML.NET进行机器学习的论文表明,它能够使用大型数据集训练情感分析模型,同时实现高精确度。其结果显示,在亚马逊的9GB评论数据集上有95%的准确率

模型构建工具

ML.NET CLI是一个命令行界面,它使用ML.NET AutoML来进行模型训练并为数据挑选最佳算法。ML.NET模型生成器预览版是Visual Studio的一个扩展,它使用ML.NET CLI和ML.NET AutoML来使用GUI输出最佳的ML.NET模型。

模型的可解释性

近年来,人工智能的公平性和可解释性一直是人工智能伦理学家争论的一个领域。机器学习应用的一个主要问题是黑箱效应,即终端用户和应用的开发者不确定算法是如何做出决定的,或者数据集是否包含偏见。Build 0.8包含了微软内部使用的模型可解释性API。它增加了理解模型的特征重要性的能力,增加了 "整体特征重要性"和"广义加权模型"。

当有几个变量对总分有贡献时,可以看到每个变量的细分,以及哪些特征对最终得分的影响最大。官方文件表明,评分指标可以输出,用于调试目的。在模型的训练和调试过程中,开发者可以预览和检查实时过滤的数据。这可以通过Visual Studio DataView工具实现

Infer.NET

微软研究院宣布,自2008年以来在学术机构中用于研究的流行的基于模型的机器学习框架Infer.NET已经开源,现在是ML.NET框架的一部分。Infer.NET框架利用概率编程来描述概率模型,具有可解释性的额外优势。Infer.NET命名空间后来被改为Microsoft.ML.Probabilistic,与ML.NET命名空间一致

NimbusML支持Python

微软承认Python编程语言在数据科学家中很受欢迎,所以它推出了NimbusML,即ML.NET的实验性Python绑定。这使得用户可以在Python中训练和使用机器学习模型。它与Infer.NET类似,都是开源的

浏览器中的机器学习

ML.NET允许用户将训练好的模型导出为Open Neural Network Exchange(ONNX)格式。这就为在不使用ML.NET的不同环境中使用模型建立了机会。使用ONNX.js可以在浏览器的客户端运行这些模型,ONNX.js是以Onnx格式创建的深度学习模型的一个Javascript客户端框架。

AI学校机器学习课程

在推出ML.NET预览版的同时,微软还推出了免费的人工智能教程和课程,以帮助开发者了解使用该框架所需的技术

为.NET开发者生成

https://dotnet.microsoft.com/zh-cn/learn/ml-dotnet/what-is-mldotnet

使用ML.NET,无需离开.NET生态系统,便可以使用C#或F#创建自定义ML模型。

ML.NET可供你重新使用作为.NET开发人员已经拥有的所有知识、技能、代码和库,以便你可以轻松地将机器学习集成到Web、移动、桌面、游戏和物联网应用中。

//Step 1. Create an ML Context
var ctx = new MLContext();

//Step 2. Read in the input data from a text file for model training
IDataView trainingData = ctx.Data
    .LoadFromTextFile<ModelInput>(dataPath, hasHeader: true);

//Step 3. Build your data processing and training pipeline
var pipeline = ctx.Transforms.Text
    .FeaturizeText("Features", nameof(SentimentIssue.Text))
    .Append(ctx.BinaryClassification.Trainers
        .LbfgsLogisticRegression("Label", "Features"));

//Step 4. Train your model
ITransformer trainedModel = pipeline.Fit(trainingData);

//Step 5. Make predictions using your trained model
var predictionEngine = ctx.Model
    .CreatePredictionEngine<ModelInput, ModelOutput>(trainedModel);

var sampleStatement = new ModelInput() { Text = "This is a horrible movie" };

var prediction = predictionEngine.Predict(sampleStatement);

ML.NET示例

image

更多案例:https://github.com/dotnet/machinelearning-samples/blob/main/README.mdhttps://docs.microsoft.com/zh-cn/dotnet/machine-learning/tutorials/

使用AutoML简化自定义ML

ML.NET提供Model Builder(简单的UI工具)和ML.NET CLI,使生成自定义ML模型变得非常容易。

这些工具使用最前沿的技术自动化ML(AutoML),该技术可将为机器学习场景构建最佳性能模型这一流程自动化。你只需要加载数据,AutoML便会负责模型构建流程的剩余工作。

image

使用TensorFlow&进行扩展更多

ML.NET被设计为一个可扩展平台,因此可以使用其他流行的ML框架(TensorFlow、ONNX、Infer.NET等)并访问更多机器学习场景,如图像分类、物体检测等。

image

image

高性能和高准确性

使用9GB的Amazon评审数据集,ML.NET以95%的准确率训练了情绪分析模型。由于内存错误,其他热门机器学习框架无法处理数据集。在10%的数据集上进行训练,为了让所有框架完成训练,ML.NET展示了最高的速度和准确性。

性能评估在其他机器学习方案中找到类似的结果,包括点击率预测和航班延迟预测。

image

数据来源于使用ML.NET在Microsoft进行机器学习文章。情绪分析结果,使用约900MB的Amazon审阅数据集。较高准确度与较短运行时间更好。

获得在规模的信任广泛验证

使用Power BI、Microsoft Defender、Outlook和Bing等公认的Microsoft产品使用的相同ML框架。

image

ML.NET客户展示:世界各地的客户(在许多不同的行业中)都依赖.NET来解决他们遇到的业务难题

https://dotnet.microsoft.com/zh-cn/platform/customers/mlnet

SigParser

image

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet/customers/sig-parser

SigParser将电子邮件签名转换为联系人并消除手动数据输入;它使用ML.NET预测电子邮件发件人是人类还是自动化系统。

SigParser是一种API和服务,可自动执行添加到和维护客户关系管理(CRM)系统这一繁琐(通常成本高昂)过程。SigParser从电子邮件签名中提取联系人信息,例如姓名、电子邮件地址和电话号码,并将所有这些信息作为联系人输入到CRM系统或数据库

image

业务问题

当SigParser为公司处理电子邮件时,许多电子邮件是不是人为发送的(例如新闻稿、付款通知、密码重置等)。此类电子邮件中的发件人信息不应显示在联系人列表中或推送到CRM系统中。因此,SigParser决定使用机器学习来预测电子邮件是否是“垃圾邮件”

以下面的论坛通知电子邮件为例。此电子邮件的发件人不是应出现在CRM中的联系人,因此机器学习模型预测“isSpammyLookingEmailMessage”为true:

image

image

为什么选择ML.NET?

当SigParser团队决定使用机器学习时,他们最初尝试使用R; 但是,他们发现很难维护API并与.NET Core生成的API集成。

SigParser的首席执行官兼创始人PaulMendoza表示R"与开发过程的连接太远。我们使用R生成所有常数,然后将这些常数复制并粘贴到.NET中,然后实践试用该模型并发现它不太有效,然后必须重复。这太慢了。"

因此,他们转而选择ML.NET将所有内容整合进一款应用中。

“借助ML.NET,我们能够训练模型,然后立即在代码中进行测试。这样可以更快地发布新的更改,因为所有工具都集中在一起。” —— PaulMendoza,总裁兼创始人SigParser

ML.NET的影响

从R移动到ML.NET的影响是生产力提高了10倍。此外,在SigParser移动到R之前,他们只利用一个机器学习模型。自转换为ML.NET以来,他们现已拥有6个机器学习模型,以用于电子邮件分析的各个方面。之所以出现这种增长,是因为现在可以使用ML.NET快速试验新的机器学习创意并在应用程序中快速显示结果

解决方案体系结构

数据处理

SigParser首先使用著名的Enron数据集来训练其模型,但当他们意识到该数据集已经过时时,他们最终将自己的电子邮件帐户中的数千封电子邮件(符合GDPR规定)标记为人为或非人为,并将其用作训练数据集。

机器学习功能

SigParser的ML.NET模型提供两个功能(用于预测“IsHumanemail”):

  • HasUnsubscribes—如果电子邮件正文中有“取消订阅”或“选择退出”,则为True
  • EmailBodyCleaned—规范化HTML电子邮件正文,使电子邮件语言不可知,并删除任何个人身份信息

机器学习算法

这两个特征被输入到BinaryFastTree算法中,该算法是一种用于分类场景的算法,输出是预测电子邮件是来自“真人”还是来自自动化来源。目前,SigParser每月使用此ML.NET模型处理数百万封电子邮件

var mlContext = new MLContext();

var(trainData, testData) = mlContext.BinaryClassification.TrainTestSplit(mlContext.CreateStreamingDataView(totalSampleSet), testFraction:0.2);

var pipeline = mlContext.Transforms.Text.FeaturizeText("EmailBodyCleaned", "EmailHTMLFeaturized")
    .Append(mlContext.Transforms.Concatenate("Features", "HasUnsubscribes", "EmailHTMLFeaturized"))
    .Append(mlContext.BinaryClassification.Trainers.FastTree(labelColumn: "IsHumanEmail", featureColumn: "Features"));

Console.WriteLine("Fitting data");
var fitResult = pipeline.Fit(trainData);

Console.WriteLine("Evaluating metrics");
var metrics = mlContext.BinaryClassification.Evaluate(fitResult.Transform(testData), label: "IsHumanEmail");
Console.WriteLine("Accuracy: " + metrics.Accuracy);

using (var stream = File.Create(emailParsingPath + "EmailHTMLTypeClassifier.zip"))
{
    mlContext.Model.Save(fitResult, stream);
}

SigParser将ML.NET的数据转换和算法用于多种机器学习解决方案,包括上面提到的垃圾邮件检测模型,这使它们能够从电子邮件签名中自动将正确的联系信息导出到客户数据库,而无需再手动输入练习输入,该过程耗时且容易出错

endjin

image

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet/customers/endjin

endjin将ML.NET与AutoML配合使用,以改进为Azure新闻稿分类文章的流程,并彻底改变简单的日常任务。

Endjin是一家位于英国的精品企业、技术咨询公司以及Microsoft云平台、数据平台、数据分析和DevOps的金级合作伙伴。Endjin对技术的革命性力量以及利用这种力量帮助客户解决难题有着极具感染力的热情。最近,他们专注于使用机器学习来解决平凡但高价值的商业问题。这表明,虽然机器学习非常适用于解决新用例,但其彻底改变简单的日常任务的能力往往受到忽视

“AutoML和ML.NET的易用性让我们十分惊讶,它们可用来减少耗时和枯燥的任务所花费的时间。借助这些易于访问且功能强大的技术,我们可以将宝贵时间集中在创造性的思维导向分析上,并从它们产生的数据中获取有价值的见解。” —— CarmelEve, 软件工程学徒II endjin

业务问题

2014年,endjin创建了Azure周报,一个免费新闻稿,总结了Azure生态系统中本周的热门新闻。对于前25个问题,endjin的团队手动特选新闻稿,但是随着内容量的增长,他们意识到这是不可持续的。他们应用了公司的座右铭“更智能地工作”,并通过创建自己的自定义C#文本分类器,将300多篇博客中的文章分类为19个类别,包括AI+机器学习、分析、DevOps、物联网、网络和Web,从而自动完成端到端过程。此操作效果相对良好,但除了需要保留要分类的关键字有效列表外,每周还需要手动更正,这会导致重大维护开销。

image

在出现200多个问题和成千上万的订阅者之后,endjin决定开始研究机器学习解决方案。他们知道在内容平台的中心,他们有两个核心问题需要解决-二元分类问题(“这是一篇有关Azure的文章吗?”)和多分类问题(“这篇文章涵盖了Azure的哪个区域?”)。因此,endjin决定使用ML.NET,以便解决这些问题、改进他们的平台,并去除手动维护开销。

“当你查看大多数组织执行的工作/流程时,可以将它们分解为一系列的1秒决策步骤。如果你将机器学习、反应式工作流和API经济应用于问题空间,我们将开始了解第四次工业革命可以带来什么影响的核心” —— Howard van Rooijen,共同创始人endjin

为什么选择ML.NET?

虽然他们选择的编程语言是C#,但由于以前缺少适用于.NET的一流机器学习框架,endjin一直在面向客户的日常数据科学和ML试验中使用R和Python。但是,由于托管选项有限,以R和Python编写的机器学习模型的生产存在问题。endjin的其余内容平台是使用PaaS和无服务器组件构建的,因此,ML.NET和AzureFunctions的组合对公司非常有吸引力。在//build 2018 ML.NET宣布后,他们就立即开始将机器学习框架用于其应用

ML.NET和AutoML的影响

ML.NET的高性能极大地帮助了endjin,不仅包括对项目进行分类时的速度改进,在准确性方面也是如此。自采用ML.NET以来,它们看到的误分类文章要少得多,这就减少了手动干预,加快了内容生产速度。

将ML.NET CLI与AutoML结合使用,让整个训练、评估和生成代码,以使用ML.NET的整个流程变得再简单不过。使用AutoML选择最佳模型,并自动生成分类的训练和用于分类消耗量(与手动选择数据转换、算法和算法选项来创建ML.NET模型和代码相比),可将模型精度从68%提升到78%,并且对照历史数据运行此模型不仅能够突出显示被错误分类的许多文章,还能发现许多被原始分类模型排除的有效文章。

解决方案体系结构

image

使用ML.NET创建应用程序

endjin最初开始使用ML.NET时,他们创建了将历史内容平台数据转换为CSV数据集的工具,以手动训练ML.NET模型,并创建了另一个工具以随机选择20%的训练数据集作为验证数据集。然后,他们手动创建了ML.NET模型来预测文章所属类别。

可以使用具有AutoML功能的ML.NET CLI后,将简化进程并生成明显更好的结果。首先,AutoML能自动从训练数据集生成验证数据集,因此不再需要endjin的第二个自定义工具。其次,设置一个小时的最大探索时间,AutoML能够训练、调整和评估多个分类模型并显示前5个模型。

在endjin拥有由AutoML生成的已接受训练的ML.NET模型后,它们已将模型集成到现有内容平台中,只需交换现有的自定义分类算法即可。ML.NET模型托管在Azure函数内,以启用模型评估的弹性缩放。新的Durable Function用于允许按需重新训练模型

image

数据处理

幸运的是,endjin团队在构建内容平台的原始版本时就希望未来能使用机器学习进行改进,因此他们以原始格式和已处理格式(超过4000个JSON文件,总大小约为3GB)保留了用于生成新闻稿的所有数据。这些数据集转换为两个训练数据集:一个28MB,用于二进制分类的CSV文件,以及9MB,用于多类分类的CSV文件。

数据转换和机器学习算法

由于要分类的博客文章的标题和内容都为自由文本,因此需要使用特征化文本数据转换对两者进行转换。然后,使用Concatenate数据转换使标题和内容一同联接到单一字段。

endjin手动创建的原始模型使用SdcaMaximumEntropy多类分类算法。但是,当endjin将ML.NET CLI和AutoML配合使用时,其发现了适用于其场景的更高性能的模型。

对于第一个场景(“这是一篇关于Azure的文章吗?”),AutoML选择AveragedPerceptronBinary作为性能最佳的算法。对于第二个场景(“本文涵盖Azure的哪个区域?”),AutoML选择LightGbmMulti作为性能最高的算法,并生成以下代码来训练多类分类器:

public static IEstimator
    BuildTrainingPipeline(MLContext mlContext){
    // Data process configuration with pipeline data transformations
    var dataProcessPipeline = mlContext.Transforms.Conversion.MapValueToKey("CategoryId", "CategoryId")
    .Append(mlContext.Transforms.Text.FeaturizeText("Title_tf", "Title"))
    .Append(mlContext.Transforms.Text.FeaturizeText("Content_tf", "Content"))
    .Append(mlContext.Transforms.Concatenate("Features", new[] { "Title_tf", "Content_tf", "Issue" }));

    // Set the training algorithm
    var trainer = mlContext.MulticlassClassification.Trainers.LightGbm(labelColumnName: "CategoryId", featureColumnName: "Features")
    .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel", "PredictedLabel"));

    var trainingPipeline = dataProcessPipeline.Append(trainer);

    return trainingPipeline;
}

Endjin使用ML.NET改进了为Azure新闻稿选择和分类文章的流程。使用ML.NET和AutoML生成机器学习模型也帮助该公司减少了对微调模型参数的关注,转而更专注于提供商业价值。

Microsoft Real Estate & Security

image

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet/customers/microsoft-real-estate-and-security

Microsoft房地产和安全使用ML.NET检测和分类Microsoft校园中的HVAC系统故障,并将其转换为工作订单。

Microsoft的房地产与安全(RE&S)组负责运营全球化公司中最复杂的设施基础结构之一:“全球城市”,其在112个国家/地区拥有1,116座员工大楼和数据中心。RE&S管理一切事务,从食物准备、总线维护、家具订购到供暖和冷却系统。让这个城市持续平稳运行是一项大型任务,RE&S依赖于智能建筑自动化来帮助控制供暖、通风和空调、照明以及其他系统

image

仅在Microsoft总部所在的皮吉特湾,就有100多座建筑,共拥有33000多台HVAC设备。每天,从支持物联网的设备收集约4900万个故障,这些设备将设备遥测发送到第三方建筑管理系统(BMS),如ICONICS。从BMS传输到Dynamics365连接现场服务的物联网故障将成为警报,相关警报将转换为工单。工单可为建筑资产安排维护和维修。

业务问题

当RE&S组首先实现了从ICONICS到Dynamics365的连接器时,每个Energy Smart建筑平均每天发生大约2,000个HVAC设备故障。该组受其可载入Dynamics365的建筑物数量的限制,为约2,000x100=约200K/天,这会使数据库不堪重负,对最终用户和技术人员而言是不安全的。因此,非常需要选择正确的故障并降低噪音,以帮助减少故障数量,并预测哪些故障可能成为工作指令

因此,RE&S组决定实现机器学习模型(Dynamics 365外部),该模型可以选取正确的错误集,并转换为工作订单,这样消除干扰的可能性要高得多。

为什么选择ML.NET?

出于多个原因,Microsoft的RE&S组决定使用ML.NET。其中一个原因是团队对.NET技术非常熟悉

“.NET在RE&S组中广为人知,且我们的开发团队整体在.NET技术方面具有高水平的专业知识。使用ML.NET有助于我们克服其他数据科学框架、工具以及IDE的技术知识缺口,从而在实现机器学习解决方案时实现快速周转。” —— Kundan Karma,高级软件工程师Microsoft

此外,该组还发现ML.NET易于使用,尤其是在将AutoML与模型定型的Visual Studio中的ML.NET Model Builder配合使用时。RE&S组还认为,ML.NET是机器学习的成本优化解决方案,且他们能够同时在本地和Azure DevOps管道中轻松实现ML.NET。

ML.NET的影响

RE&S组的ML.NET解决方案产生了重大影响。借助其准确性约为99%的ML.NET模型,Dynamics365中创建的IoT警报已减少约70-80%。这允许该组安全载入了更多建筑、帮助减少了噪音,并使焦点转移到真正需要采取措施应对的警报上。

以下仪表板显示了7天内两种ML解决方案之间的差异(例如,基于设备类型和设备信息的两种不同的ML.NET模型):

image

解决方案体系结构

Microsoft的RE&S组使用Azure DevOps管道进行ML.NET模型训练和开发部署即服务。

image

连接到HVAC设备的IoT设备将设备遥测发送到名为ICONICS的第三方构建管理系统,该系统运行各种规则来确定是否存在IoT故障。然后,R&S小组将收集训练数据,并从ICONICS的数据库中提取所有故障。他们收集两种类型故障的设备数据:常规故障和智能(或标准化)故障,然后使用这些数据创建两种基于以下功能的机器学习模型:

  • 设备类型
  • 规范化分数
  • 智能分数
  • %己标记
  • 己标记严重性
  • 节能机会
  • 基础设备类
  • 错误严重性
  • 舒适风险
  • 可能的原因

该组的训练管道由OneHotEncoding和Concatenation数据转换组成,并且它们使用LightGBM算法执行二进制分类。

当拥有经过训练的ML.NET模型后,小组会将其模型作为Azure函数部署到HTTP触发器。这些函数由ICONICS调用到Dynamics365连接器,后者决定故障是否应成为工作订单

Power BI

image

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet/customers/power-bi

Power BI使用ML.NET帮助用户识别关键影响者和客户群体,以便他们能够了解推动其业务指标的因素。

Power BI是由Microsoft开发的一种业务分析解决方案,允许用户可视化数据、跨组织共享见解或将其嵌入到应用中。Power BI提供了各种可视化效果,例如图表、图形和仪表,可帮助用户根据其数据创建报表。最近,Power BI一直在利用机器学习来简化用户的复杂任务,以使组织中的每个人都能利用AI的力量做出更好的决策。2019年2月,Power BI预览了其第一个采用人工智能技术的可视化效果“关键影响因素”,它在后台利用ML.NET以一种自然的方式处理数据和分析见解

image

业务问题

对于任何业务而言,确定和理解关键影响因素(业务绩效和结果的主要驱动因素)和客户细分对于制定战略性业务决策、确定业务更改的优先级以及获得竞争优势至关重要。分析关键影响因素可以揭示哪些因素对业务绩效的影响最大,并可以帮助企业回答诸如“哪些因素会导致客户对此服务留下负面评价?”或“哪些因素会影响房价的增加?”等问题

然而,此类数据分析流程需要花费关键影响者和客户细分市场大量的时间、精力和专业知识;通常需要在代码端编写多个函数、进行抽样、显著性测试和排名结果。因此,Power BI演变为机器学习解决方案,以便能够帮助用户更快地获取有意义的见解,并且无需花费时间编写复杂的代码,即可进行统计分析

关键影响因素和ML.NET

Power BI将关键影响者可视化效果创建为机器学习解决方案,使企业能够利用人工智能,以便在更短的时间内分析数据,更快地做出关键业务决策。换言之,用户可以使用关键影响者花更少的时间分析数据,把主要时间用于根据AI可视化收集的见解采取行动。

用户选取关键性能指标(KPI)以进行分析(例如,保留率、点击率等)后,“关键影响因素”可视化会使用ML.NET提供的机器学习算法确定驱动指标中最重要的内容,并查找有趣区段以供进一步调查。“关键影响因素”会分析用户数据、对重要因素设置级别、对比这些因素的相对重要性,并将其显示为分类指标和数值指标的关键影响因素和顶层区段。

解决方案体系结构

Power BI以多种形式提供。移动、桌面、共享服务和高级服务表单支持关键影响因素可视化效果。

当用户向“关键影响者”视觉对象添加列时,将触发其中培训数据将发送到Analysis Services(Power BI背后的数据库引擎)的流。Analysis Services运行ML.NET来训练机器学习模型,并返回结果。因此,每当用户更新选定功能时,都会对模型进行训练。总体目标是在几秒钟内完成分析,实现交互式体验。

整体流程如下所示:

image

ML.NET用作.NET Framework库并在本地(如果在Power BI Desktop中使用)或在云中运行(如果在Power BI服务中使用)。Power BI中的数据集以Analysis Services原生的二进制格式存储。

分类关键影响因素

分类指标可以包括评级或排名等内容。在下面的示例中,指标是“评级”,并且可视化效果已确定“组织中的角色是消费者”是影响低评级可能性的首要因素。可视化效果会在右窗格中显示其他信息,例如:

  • 14.93%的客户给予低分。
  • 平均而言,其他所有角色的时间分数较低,为5.78%。
  • 使用者给出低评分的可能性比所有其他角色高出2.57倍。

image

“关键影响因素”将ML.NET用于对分类指标运行逻辑回归,使用独热编码、替换缺少值、规范化均值方差数据转换以及L-BFGS逻辑回归算法。在本例中,算法会在数据中搜索模式,并查找给予低评级的客户与给予高级别的客户之间可能存在的差异。例如,其可能会发现,与支持票证少或没有票证的客户相比,支持票证多的客户给予低评级的百分比更高。

数字键影响因素

数值指标可以包括价格或销售数据之类的内容。在下面的示例中,指标为“房价”,并且可视化效果确定“厨房质量优秀的”是一项会影响房价增加可能性的主要单个因素。

image

“关键影响因素”使用ML.NET运行线性回归,使用与分类关键影响因素相同的数据转换,并使用SDCA回归算法。在本例中,该算法会根据解释因素(例如卧室数量或建筑面积)研究房价的变化情况。在本例中,其研究拥有优质厨房将对房价产生的影响。

计算排名靠前的段

顶级客户细分显示为所选指标值做出贡献最多的组。细分由值的组合组成。例如,以下部分是用户或管理员的人员,他们的支持票证超过4个,成为客户的时间已超过29个月。此细分中74.3%的客户给了低评级,而相较平均客户中,当时只有11.7%的人给了低评级。

image

顶级段使用ML.NET运行决策树,使用快速树算法(分类和数值),以查找有趣的子组。目标是最终得到数据点的一个子组,这些数据点在相关度量值方面相对较高。这可能是评级较低的客户或价格较高的房屋。

该算法采用每个解释因素,并尝试推断哪个因子为其提供最佳拆分。在决策树进行拆分后,它将获取数据的子组,并确定该数据的下一个最佳拆分。在这种情况下,子组是评论安全性的客户。每次拆分后,它还考虑它是否有足够的数据点使此组具有足够的代表性来推断模式,或者它是否在数据中异常,而不是实际段。决策树完成运行后,将采用所有拆分,例如安全注释和大型企业,并创建段。

Power BI使用ML.NET来帮助客户轻松识别业务中的关键影响因素,从而为他们节省时间和精力,使他们能够专注于根据ML.NET模型生成的分析和见解,进行更改和制定业务决策

Microsoft Defender ATP

image

https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet/customers/microsoft-defender

Microsoft Defender ATP使用ML.NET生成各种机器学习模型,以保护5亿用户的计算机免受恶意软件攻击。

Microsoft Defender高级威胁防护(ATP)是Microsoft的统一安全平台,用于智能预防性保护、违约后检测、自动调查和响应;它保护端点免受网络威胁,检测高级攻击和数据泄露,自动化安全事件,并结合使用云、行为分析和机器学习的强大功能改进安全态势。

业务问题

Microsoft Defender ATP每天处理数万亿信号,每个月则处理50亿个新出现的威胁。这些威胁从试图钓鱼用户凭据的PDF和包含武器化宏的文档文件,到包含多态恶意软件可执行文件的受密码保护的zip文件,不一而足。

能够在第一次看到时预测和停止这些威胁对于客户端安全性至关重要。但是,人类只能一次性查看和记住一定数量的信息。手动完成其中每个属性都是一项耗时的任务,速度很慢,无法抵御传入的威胁。随着每月出现的新威胁的规模增大,人类完成的手动过程永远缩放不了,因此机器学习不仅适合这项任务,它对保护用户也是必需的。此外,有人可能会在查看一个恶意软件时找到一些使它成为恶意软件的属性,但实际上,恶意软件可能具有数十万个其他属性,这些属性指示着人类无法花时间找出的威胁。

另一方面,计算机具有更大的容量和更快的响应时间;他们可以即刻查看所有(可能数十万)潜在威胁的属性,并选出所有将威胁标记为恶意软件的属性。然后,计算机可以使用找到的属性来发现人类仅使用少量属性可能无法预测的新恶意软件

image

因此,Microsoft Defender ATP决定利用机器学习和ML.NET(从技术上讲,ML.NET的衍生TLC是Microsoft在过去10年多间使用的内部机器学习框架),可提高防止用户遭受恶意软件攻击的能力,以便它们能够更轻松、准确地预测信号是否是恶意软件,并且阻止来袭的威胁,保护他们的用户的计算机安全。

ML.NET的影响

Microsoft Defender ATP使用分类算法来标记和显示威胁(包括以前看不到的威胁),否则这些威胁在数十亿个正常事件中仍然无法觉察,并且第一代传感器无法对不熟悉和细微的刺激做出反应。Microsoft Defender ATP的模型优化了Microsoft Defender ATP可用的大量数据和计算资源的使用。此外,根据Microsoft Defender ATP对实际警报的分析,所使用的机器学习技术至少比手动设计的启发技术精确20%。ML.NET的受监督机器学习算法在预泄露级别阻止了35%的威胁,从而抵御了恶意URL、电子邮件附件和其它新出现威胁中恶意软件的侵害

解决方案体系结构

image

数据处理和功能选择

对于Microsoft Defender ATP,拥有一组包含训练数据集中的清理数据和恶意软件的大量标记的训练数据非常重要,这使得它可以模仿实际应用场景,并演示真正的客户每天所看到的内容。以平均训练周期计算,Microsoft Defender ATP中的一个模型可能占用大约1亿行数据,其中每个行都有190,000个功能。

在训练检测恶意软件的模型时,选择好特性非常重要。研究人员和计算机查找两种类型的功能: 静态文件特性和行为组件。静态文件属性包括如文件已签名、签名者和各种模糊哈希之类的内容。行为特性包括以下内容(如文件与其他文件相关)、此文件是否从其他文件中插入,文件所连接到的LP以及对系统所做的更改。训练数据集可包含几千到几百万种特性。

模型定型

Microsoft Defender ATP有多种模型可用于多种用途。例如,它们有一些模型侧重于首次发现的PE威胁、宏威胁和基于脚本的攻击。还有一些模型侧重于基础数据;例如,一些模型专门针对文件的模糊哈希进行训练。除此之外,它们还有另一层集成模型,这些模型从这些单独的分类器接收信号,再次检查系统活动是否是恶意的。

Microsoft Defender ATP每天对最新数据训练这些模型。模型经过训练后便会保存下来,工程管道会将其加载到Defender云基础结构,在那里由客户端进行查询。

“模型多样化对于拥有篡改-可复原的机器学习系统非常重要。” —— HollyStewart,Microsoft Defender ATP首席研究主管

使用ML.NET算法,Microsoft Defender ATP能够生成大量机器学习模型,以更有效地保护其用户免受潜在威胁,使5亿人的计算机免受恶意软件的攻击

ML.NET教程-10分钟入门

https://dotnet.microsoft.com/zh-cn/learn/ml-dotnet/get-started-tutorial/install

参考

posted @ 2022-07-30 00:49  TaylorShi  阅读(1233)  评论(0编辑  收藏  举报