网站建设费用申请报告,太原门户网站,网站规划的基本内容不包括,文化建设设计网站本周.NET生态圈内的更新源源不断#xff0c;除了.NET Core 2.2#xff0c;ASP.NET Core 2.2和Entity Framework Core 2.2之外#xff0c;ML.NET 0.8也一并登上舞台。新的推荐场景ML.NET使用基于矩阵分解(Matrix Factorization)和场感知分解机(Field-aware Factorization Mac… 本周.NET生态圈内的更新源源不断除了.NET Core 2.2ASP.NET Core 2.2和Entity Framework Core 2.2之外ML.NET 0.8也一并登上舞台。新的推荐场景ML.NET使用基于矩阵分解(Matrix Factorization)和场感知分解机(Field-aware Factorization Machine)的方法来作推荐。一般而言场感知分解机是矩阵分解更通用的例子它允许传入额外的元数据。在ML.NET 0.8中新加了运用矩阵分解的推荐场景。推荐场景推荐方案示例链接基于产品Id评价用户Id和诸如产品描述用户特征(年龄国家)的额外元数据的产品推荐场感知分解机ML.NET 0.3基于产品Id评价用户Id的产品推荐矩阵分解ML.NET 0.7基于产品Id和与其一同购买的产品Id的产品推荐One Class矩阵分解ML.NET 0.8在新的推荐场景中即使没有可用的评价也可以通过历史购买数据为用户构建经常一起购买的产品(Frequently Bought Together)的列表。通过预览数据改进调试功能在多数例子里当开始运行你的机器学习管道(pipeline)且加载数据时能看到已经载入的数据是很有用的功能。尤其是在某些中间转换过程之后需要确保数据如预期的一样发生变化。现在当你想要预览DataView的数据模式(Schema)时可以悬停鼠标在IDataView对象上展开它观察它的数据模式属性。而要查看DataView中已加载的实际数据通过以下三步可以达成目标。在调试模式中打开观察窗口输入DataView对象的变量名调用它的Preview方法点开想看的某行这样就能显示其中实际加载的数据默认情况下只会显示100行的数据但可以在Preview方法里传入参数比如Preview(500)以获得更多的数据。模型可解释性为了让模型更具可解释性ML.NET 0.8引入了新的API用以帮助理解模型的特征重要性(整体特征重要度(Overall Feature Importance))以及创建能被其他人解释的高效模型(广义加性模型(Generalized Additive Models))。整体特征重要度用于评判在模型中哪些特性是整体上最重要的。它帮助理解哪些特征是最有价值的从而得到更好的预测结果。例如当预测汽车价格时一些特性比如里程数和生产商品牌是更重要的而其它特性如汽车颜色则是影响甚小。模型的整体特征重要度可以通过排列特征重要度(Permutation Feature Importance)(PFI)技术来获得。PFI借由如果特征值设为随机数会怎样影响模型这一问题以测量特征重要度。PFI方法的好处是其与模型无关任何模型都可以用它作评估并且它还可以使用任意数据。使用PFI的方法如下例代码所示// Compute the feature importance using PFIvar permutationMetrics mlContext.Regression.PermutationFeatureImportance(model, data);// Get the feature names from the training setvar featureNames data.Schema.GetColumns().Select(tuple tuple.column.Name) // Get the column names.Where(name name ! labelName) // Drop the Label.ToArray();// Write out the feature names and their importance to the models R-squared valuefor (int i 0; i featureNames.Length; i)Console.WriteLine(${featureNames[i]}\t{permutationMetrics[i].rSquared:G4});生成的结果包括了特征名与它的重要度。Console output:Feature Model Weight Change in R - Squared--------------------------------------------------------RoomsPerDwelling 50.80 -0.3695EmploymentDistance -17.79 -0.2238TeacherRatio -19.83 -0.1228TaxRate -8.60 -0.1042NitricOxides -15.95 -0.1025HighwayDistance 5.37 -0.09345CrimesPerCapita -15.05 -0.05797PercentPre40s -4.64 -0.0385PercentResidental 3.98 -0.02184CharlesRiver 3.38 -0.01487PercentNonRetail -1.94 -0.007231广义加性模型拥有很好的预测可解释性。在便于理解上它类似于线性模型但更加灵活并具有更佳的性能以及利于分析的可视化能力。更多的API增强在DataView中过滤行有时你会需要对数据集过滤一部分数据比如那些离群值(outlier)。ML.NET 0.8中新加入了FilterByColumn()API可以帮助解决类似问题。使用方法如下面的代码所示IDataView trainingDataView mlContext.Data.FilterByColumn(baseTrainingDataView, FareAmount, lowerBound: 1, upperBound: 150);缓存功能的API当对同一数据作多次迭代处理时通过缓存数据可以大幅减少训练时间。以下例子可以减少50%的训练时间var dataProcessPipeline mlContext.Transforms.Conversion.MapValueToKey(Area, Label).Append(mlContext.Transforms.Text.FeaturizeText(Title, TitleFeaturized)).Append(mlContext.Transforms.Text.FeaturizeText(Description, DescriptionFeaturized)).Append(mlContext.Transforms.Concatenate(Features, TitleFeaturized, DescriptionFeaturized)) //Example Caching the DataView .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.AveragedPerceptron(DefaultColumnNames.Label, DefaultColumnNames.Features,numIterations: 10));以IDataView二进制格式保存读取数据将经过转换的数据保存为IDataView二进制格式相较普通的文本格式可以极大地提升效率。同时由于此格式保留了数据模式所以可以方便读取而不需要再指定列类型。读取与保存的API如下所示十分简单mlContext.Data.ReadFromBinary(pathToFile);
mlContext.Data.SaveAsBinary(pathToFile);用于时间序列问题的状态性预测引擎ML.NET 0.7里可以基于时间序列处理异常检查问题。然而其预测引擎是无状态的这意味着每次要指出最新的数据点是否是异常的需要同时提供历史数据。新的引擎中可以保留时间序列的状态所以现在只要有最新的数据点即可以进行预测。需要改动的地方是将CreatePredictionFunction()方法替换成CreateTimeSeriesPredictionFunction()。原文地址:https://www.cnblogs.com/kenwoo/p/10090881.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com