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

ML.NET(MachineLearningfor.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模型,这使得该框架更具扩展性,并扩大了支持的场景数量。

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

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

性能

模型构建工具

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

模型的可解释性

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

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

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

AI学校机器学习课程

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

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

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

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

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

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

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

使用PowerBI、MicrosoftDefender、Outlook和Bing等公认的Microsoft产品使用的相同ML框架。

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

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

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

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

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

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

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

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

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

数据处理

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

机器学习功能

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

机器学习算法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

整体流程如下所示:

ML.NET用作.NETFramework库并在本地(如果在PowerBIDesktop中使用)或在云中运行(如果在PowerBI服务中使用)。PowerBI中的数据集以AnalysisServices原生的二进制格式存储。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

THE END
1.开源项目推荐:C练习平台——Exercism.csharpExercism.csharp 是一个致力于提升C#程序员技能的开源项目,它隶属于广受欢迎的Exercism学习平台。这个项目通过一系列精心设计的编程练习,帮助开发者从初学者到高级水平的逐步成长。Exercism.org提供了一个互动的学习环境,鼓励编码实践,并通过社区反馈促进学习。 https://blog.csdn.net/gitblog_00608/article/details/143616467
2.哪里可以找到适合小白练手的C#项目?nopCommerce(电商)Star 数:6.3k|语言:C# 免费开源基于http://ASP.NET电商购物平台。习惯了用 Javahttps://www.zhihu.com/question/443266821/answer/54438633084
3.算法自动训练平台算法自动训练平台算法自动训练平台是专门为AI算法开发打造的算法训练平台,以拖拉拽方式快速实现0代码开发AI算法模型,形成企业业务与智能化算法的闭环。https://www.013zn.com/products.php?VID=239
4.微软AzureUnity - 使用 Unity 和 C#(第 2 部分)开发您的首个游戏 DirectX 因子-顶点着色器和转换 与c + +-DirectComposition 的窗口:转换和动画 Windows 应用商店 —— 一个位置感知应用程序创建具有地理围墙 编者的话-六个自由度的活 !360 现代应用程序-生成 Windows 平台的通用程序 https://msdn.microsoft.com/zh-cn/magazine/dn781358
5.C#开源跨平台机器学习框架ML.NET二元分类情绪分析选择这个txt文件后,要记得把文件属性中复制到输出目录设置为如果较新则复制,这样的话会把TXT输出到程序所在目录,保存程序能加载到训练数据。 03 创建数据类 这里我们创建两个类,一个qingxubase类和一个qingxufenxi类 qingxubase.cs qingxubase类中有两个属性,一个string类型qingxutext代表输入的场景文本,一个boolhttps://cloud.tencent.com/developer/article/1500592
6.人工智能训练平台数据集管理和自定义算法管理的一站式人工智能训练平台。 立即体验 统一的人工智能运行环境 兼容以TensorFlow、PyTorch、Caffe为主的人工智能计算框架,支持多种计算运行库, 提供容器化与虚拟化计算资源,利用分布式计算优势,提高模型训练效率。 立即体验 工业智能平台,开放智慧企业ET大脑服务能力 https://ei.casicloud.com/
7.技术成就梦想51CTO51CTO是中国知名的数字化人才学习平台和技术社区,以服务一亿数字化人才职业成长为己任,对中国数千万数字化人才拥有强大的影响力和服务能力。通过技术社区、技术博客和新媒体矩阵等综合产品服务体系,凝聚了2000万+IT技术人员、50万+位技术博主和近千家IT公司的CTO;通过丰https://other.51cto.com/
8.学习编程的快乐时光免费送精美礼品编程猫的学习平台稳定且功能强大,为孩子提供了丰富的学习资源和个性化的学习路径。 家长可以随时查看孩子的学习进度和成果,与孩子一起分享成长的喜悦。 学校还定期举办线上竞赛和活动,让孩子在竞争中成长,在合作中进步。 编程猫·专业少儿编程以其卓越的教学质量、趣味性的学习方式和贴心的服务,赢得了我们家长和孩子的https://m.dianping.com/ugcdetail/296672801?sceneType=0&bizType=29&msource=baiduappugc