为啥 ML.NET 矩阵分解使用回归评估?

Posted

技术标签:

【中文标题】为啥 ML.NET 矩阵分解使用回归评估?【英文标题】:Why ML.NET Matrix Factorization uses a regression evaluation?为什么 ML.NET 矩阵分解使用回归评估? 【发布时间】:2019-10-19 12:57:29 【问题描述】:

The example of ML.NET for Matrix Factorization here 没有用于测试模型的评估方法。这是一个one-class matrix factorization 示例,因为它的trainer 选项设置为options.LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass;

我进一步搜索发现another matrix factorization example。虽然不是one-class matrixfactorization,但这次有评测。然而,评估方法是针对回归模型的。 var metrics = mlcontext.Regression.Evaluate(prediction, labelColumnName: "Label", scoreColumnName: "Score");

矩阵分解不是一类二元分类吗?对模型使用回归评估是否有效?实际上,我在 ML.NET 的 community chat 上提出了几次这个问题,但到目前为止我还没有得到任何答案。任何 cmets 或答案将不胜感激。

【问题讨论】:

【参考方案1】:

如果您查看line 55,第二个示例试图解决的问题是推荐。

用于评估的指标与回归指标相同,这就是使用它们的原因。

有关矩阵分解的更多示例,您可以查看文档:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.trainers.matrixfactorizationtrainer?view=ml-dotnet-preview

https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Recommendation

【讨论】:

这两个例子是推荐模型。是的,指标是回归模型的,所以它有RMSRsquared等等。我要问的是为什么他们在推荐模型上使用Regression评估方法,而推荐是binary classification的类(我不确定这是不是真的) 它可以是二进制分类,如果你的标签是二进制的(喜欢/不喜欢),或者它可以是回归,如果你的标签是对产品评分的星数。 quora.com/…

以上是关于为啥 ML.NET 矩阵分解使用回归评估?的主要内容,如果未能解决你的问题,请参考以下文章

推荐算法之隐语义模型(LFM)矩阵分解梯度下降算法实现

推荐算法之隐语义模型(LFM)矩阵分解梯度下降算法实现

线性回归——最小二乘法_实例

【转】矩阵分解之SVD和SVD++

奇异值分解SVD

矩阵的lu分解及应用