咱们很高兴宣布推出ML.NET 0.7--面向.NET开发人员的最新版本的跨平台和开源机器学习框架(ML.NET 0.1发布于// Build 2018)。此版本侧重于为基于推荐的ML任务提供更好的支持,实现异常检测,加强机器学习管道的可定制性,支持在x86应用程序中使用ML.NET等。ios
本文提供了有关ML.NET 0.7版本中如下主题的详细信息:git
推荐系统能够为目录,歌曲,电影等中的产品生成推荐列表。咱们经过添加矩阵分解(MF)改进了对在ML.NET中建立推荐系统的支持,当您得到有关用户如何评价目录中项目的数据时,这是推荐的经常使用方法。例如,您可能知道用户如何评价某些电影,并但愿推荐下一部他们可能观看的其余电影。github
咱们将MF添加到ML.NET,由于它一般比Field-Aware Factorization Machines(咱们在ML.NET 0.3中添加)明显更快,而且它能够支持连续数字等级(例如1-5星)而不是布尔值的等级(“喜欢”或“不喜欢”)。即便咱们刚刚添加了MF,若是您想利用用户分配给项目的评级以外的其余信息(例如电影类型,电影发布日期,用户我的资料),您可能仍然但愿使用FFM。能够在此处找到对差别的更深刻讨论。编程
MF的样品用法可在此处找到。该示例是通用的,但您能够想象矩阵行对应于用户,矩阵列对应于电影,矩阵值对应于评级。因为用户仅对目录的一小部分进行了评级,所以该矩阵将很是稀疏。服务器
ML.NET的MF使用LIBMF。网络
异常检测能够识别异常值或事件。它用于欺诈检测(识别可疑信用卡交易)和服务器监控(识别异常活动)等场景。架构
ML.NET 0.7支持检测两种类型的异常行为:app
可使用不一样的ML.NET组件在两种类型的数据上检测到这些异常:框架
IidSpikeDetector
并IidChangePointDetector
用于假定来自一个固定分布的数据(每一个数据点独立于先前的数据,例如每一个推文的转发数量)。SsaSpikeDetector
并SsaChangePointDetector
用于具备季节/趋势组件的数据(可能按时间排序,例如产品销售)能够在此处找到使用ML.NET异常检测的示例代码。机器学习
ML.NET提供各类数据转换(例如处理文本,图像,分类功能等)。可是,某些用例须要特定于应用程序的转换,例如计算两个文本列之间的余弦类似度。咱们如今添加了对自定义转换的支持,所以您能够轻松地包含自定义业务逻辑。
它CustomMappingEstimator
容许您编写本身的方法来处理数据并将它们带入ML.NET管道。这是管道中的样子:
var estimator = mlContext.Transforms.CustomMapping<MyInput, MyOutput>(MyLambda.MyAction, "MyLambda") .Append(...) .Append(...)
如下是此自定义映射将执行的操做的定义。在此示例中,咱们将文本标签(“spam”或“ham”)转换为布尔标签(true或false)。
public class MyInput { public string Label { get; set; } } public class MyOutput { public bool Label { get; set; } } public class MyLambda { [Export("MyLambda")] public ITransformer MyTransformer => ML.Transforms.CustomMappingTransformer<MyInput, MyOutput>(MyAction, "MyLambda"); [Import] public MLContext ML { get; set; } public static void MyAction(MyInput input, MyOutput output) { output.Label= input.Label == "spam" ? true : false; } }
CustomMappingEstimator
能够在此处找到更完整的示例。
有了这个ML.NET版本,您如今能够在x86 / 32位架构设备上训练和使用机器学习模型(目前仅适用于Windows)。之前,ML.NET仅限于x64设备(Windows,Linux和Mac)。
请注意,某些基于外部依赖关系的组件(例如TensorFlow)在x86-Windows中不可用。
NimbusML为ML.NET提供实验性的Python绑定。咱们已经看到外部社区和内部团队对使用多种编程语言的反馈。咱们但愿尽量多的人可以从ML.NET中受益,并帮助团队更轻松地协同工做。ML.NET不只使数据科学家可以在Python中训练和使用机器学习模型(也能够在scikit-learn管道中使用组件),并且还能够经过ML.NET保存能够在.NET应用程序中轻松使用的模型。(有关详细信息,请参见此处)。