为什么每次训练后ML.NET MatrixFactorization都会得到不同的结果,却没有任何有意义的建议

问题描述

我使用ML.NET矩阵分解开发了产品推荐器。 训练数据仅包含一对产品ID,因此我根据Microsoft文档对训练器进行了相应的修改

有两个问题:

1-每次我使用完全相同的数据训练模型时,都会得到相同产品的最高得分结果。

2-有时结果甚至没有意义,因为在为男士产品提出建议时,建议使用女士产品。火车数据产品对始终是成对的男性产品或成对的女性产品,从来没有混合。

数据处理管道似乎正确:

产品ID是文本,因此我使用ML.NET MapValuetoKey对其进行规范化。

var dataProcesspipeline = mlContext.Transforms.Conversion
                .MapValuetoKey("copurchaseProductIdEncoded","copurchaseProductId")
                .Append(MLContext.Transforms.Conversion.MapValuetoKey("ProductIdEncoded","ProductId"));

传递给培训师的选项是:

MatrixFactorizationTrainer.Options options = new MatrixFactorizationTrainer.Options();
            options.MatrixColumnIndexColumnName = "ProductIdEncoded";
            options.MatrixRowIndexColumnName = "copurchaseProductIdEncoded";
            options.LabelColumnName = "Label";
            options.LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass;
            options.Alpha = 0.01;
            options.Lambda = 0.025;
            options.NumberOfIterations = 500;
            var est = MLContext.Recommendation().Trainers.MatrixFactorization(options);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)