В этом примере показано, как использовать матричную факторизацию для построения системы рекомендаций. Этот пример особенно подходит для набора данных только с двумя связанными идентификаторами, такими как идентификатор пользователя и идентификатор продукта, которые приобрел соответствующий пользователь.
На основе этого примера я подготовил входные данные, как показано ниже.
[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 или образец где угодно. Я закончил тем, что оставил вопрос в официальном github ML.NET , но у меня пока нет ответов.
Вопрос был бы очень прост, в двух словах, как я могу обновить обученную модель в ML.NET? Ссылка на соответствующий источник информации также будет принята с благодарностью.