微软发布了 ML.NET 0.7,此版本侧重于为基于推荐的机器学习任务提供更好的支持,主要实现了异常检测、增强了机器学习 pipeline 的可定制性,并且支持在 x86 应用程序中使用等。 ML.NET 是一个跨平台的机器学习框架,旨在让 .NET 开发者更快上手机器学习,它允许 .NET 开发者开发他们自己的模型,并将自定义 ML 注入到应用程序中。 0.7 主要更新内容: 使用 Matrix Factorization 增强对推荐任务的支持 推荐系统可以为目录、歌曲、电影等中的产品生成推荐列表,通过添加矩阵分解(Matrix Factorization,MF)改进了对在 ML.NET 中创建推荐系统的支持。MF 通常情况下比 ML.NET 0.3 中引入的 Field-Aware Factorization Machines 明显更快,并且它可以支持连续数字等级(例如 1-5 星)而不是布尔值的等级(“喜欢”或“不喜欢”)。 启用异常检测方案 异常检测用于欺诈检测(识别可疑信用卡交易)和服务器监控(识别异常活动)等场景。 ML.NET 0.7 支持检测两种类型的异常行为:
改进了 ML.NET pipeline 的可定制性 ML.NET 提供各种数据转换(例如处理文本、图像、分类特征等)。但是,某些用例需要特定于应用程序的转换,例如计算两个文本列之间的余弦相似度。0.7 中添加了对自定义转换的支持,可以轻松地包含自定义业务逻辑。 CustomMappingEstimator 用于编写自己的方法以处理数据并将它们带入 ML.NET pipeline: 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; } } 支持 x86 ML.NET 此前仅限于 x64 设备,0.7 将其引入了 x86 32 位设备,不过需要注意,某些基于外部依赖项的组件(例如 TensorFlow)在 x86 中将不可用。 详情见发布公告。 |