关于ML.NET v0.7的发布说明

我们很高兴宣布推出ML.NET 0.7--面向.NET开发人员的最新版本的跨平台和开源机器学习框架(ML.NET 0.1发布于// Build 2018)。此版本侧重于为基于推荐的ML任务提供更好的支持,实现异常检测,增强机器学习管道的可定制性,支持在x86应用程序中使用ML.NET等。

本文提供了有关ML.NET 0.7版本中以下主题的详细信息:

  • 使用Matrix Factorization增强对推荐任务的支持
  • 启用异常检测方案 - 检测异常度
  • 改进了ML管道的可定制性
  • x86支持
  • NimbusML - ML.NET的实验性Python绑定

使用Matrix Factorization增强对推荐任务的支持

 

推荐系统可以为目录,歌曲,电影等中的产品生成推荐列表。我们通过添加矩阵分解(MF)改进了对在ML.NET中创建推荐系统的支持,当您获得有关用户如何评价目录中项目的数据时,这是推荐的常用方法。例如,您可能知道用户如何评价某些电影,并希望推荐下一部他们可能观看的其他电影。

我们将MF添加到ML.NET,因为它通常比Field-Aware Factorization Machines(我们在ML.NET 0.3中添加明显更快,并且它可以支持连续数字等级(例如1-5星)而不是布尔值的等级(“喜欢”或“不喜欢”)。即使我们刚刚添加了MF,如果您想利用用户分配给项目的评级之外的其他信息(例如电影类型,电影发布日期,用户个人资料),您可能仍然希望使用FFM。可以在此处找到对差异的更深入讨论

MF的样品用法可在此处找到该示例是通用的,但您可以想象矩阵行对应于用户,矩阵列对应于电影,矩阵值对应于评级。由于用户仅对目录的一小部分进行了评级,因此该矩阵将非常稀疏。

ML.NET的MF使用LIBMF

启用异常检测方案 - 检测异常事件

 

异常检测可以识别异常值或事件。它用于欺诈检测(识别可疑信用卡交易)和服务器监控(识别异常活动)等场景。

ML.NET 0.7支持检测两种类型的异常行为:

  • 棘波检测:棘波归因于输入数据的值临时突变。由于中断,网络攻击,病毒式网络内容等,这些可能是异常值。
  • 变化点检测:变化点标记数据行为中更持久的偏差的开始。例如,如果产品销售相对一致并且变得更受欢迎(每月销售额增加一倍),则趋势发生变化时会有一个变化点。

可以使用不同的ML.NET组件在两种类型的数据上检测到这些异常:

  • IidSpikeDetectorIidChangePointDetector用于假定来自一个固定分布的数据(每个数据点独立于先前的数据,例如每个推文的转发数量)。
  • SsaSpikeDetectorSsaChangePointDetector用于具有季节/趋势组件的数据(可能按时间排序,例如产品销售)

可以在此处找到使用ML.NET异常检测的示例代码

改进了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可以在此处找到更完整的示例

除了x64之外还支持x86

 

有了这个ML.NET版本,您现在可以在x86 / 32位架构设备上训练和使用机器学习模型(目前仅适用于Windows)。以前,ML.NET仅限于x64设备(Windows,Linux和Mac)。
请注意,某些基于外部依赖关系的组件(例如TensorFlow)在x86-Windows中不可用。

NimbusML - ML.NET的实验性Python绑定

Python徽标

NimbusMLML.NET提供实验性的Python绑定。我们已经看到外部社区和内部团队对使用多种编程语言的反馈。我们希望尽可能多的人能够从ML.NET中受益,并帮助团队更轻松地协同工作。ML.NET不仅使数据科学家能够在Python中训练和使用机器学习模型(也可以在scikit-learn管道中使用组件),而且还可以通过ML.NET保存可以在.NET应用程序中轻松使用的模型。(有关详细信息,请参见此处)。

 

posted on 2018-11-10 17:30  Bean.Hsiang  阅读(757)  评论(2编辑  收藏  举报