【发布时间】:2019-06-02 16:58:45
【问题描述】:
这个example 展示了如何使用矩阵分解来构建推荐系统。这个例子特别适用于只有两个相关 id 的数据集,比如对应用户购买的用户 id 和产品 id。
基于这个例子,我准备了如下的输入数据。
[UserId] [ProductId]
3 1
3 15
3 23
5 9
5 1
8 2
8 1
.
.
并更改列名,使TextLoader。
var reader = ctx.Data.TextReader(new TextLoader.Arguments()
{
Separator = "tab",
HasHeader = true,
Column = new[]
{
new TextLoader.Column("Label", DataKind.R4, 0),
new TextLoader.Column("UserId", DataKind.U4, new [] { new TextLoader.Range(0) }, new KeyRange(0, 100000)),
new TextLoader.Column("ProductId", DataKind.U4, new [] { new TextLoader.Range(1) }, new KeyRange(0, 300))
}
});
效果很好。它推荐目标用户可以购买的产品列表,并带有个人分数。但是,它不适用于初始输入数据中不存在的新客户数据,例如UserId 1,它会根据预测给出分数NaN。
重新训练模型可能是一个显而易见的答案,但每次有新数据进入时重新训练模型似乎是徒劳的。我认为肯定有一种方法可以更新现有模型,但我找不到相关文档、API 或随处取样。我最终离开了a question in the official github of ML.NET,但到目前为止我还没有得到任何答复。
问题很简单,简而言之,如何在 ML.NET 中更新经过训练的模型?链接相关信息源也将不胜感激。
【问题讨论】:
标签: machine-learning matrix-factorization ml.net