如何解决为什么每次训练后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 举报,一经查实,本站将立刻删除。