Обновление обученной модели в ML.NET - PullRequest
0 голосов
/ 08 января 2019

В этом примере показано, как использовать матричную факторизацию для построения системы рекомендаций. Этот пример особенно подходит для набора данных только с двумя связанными идентификаторами, такими как идентификатор пользователя и идентификатор продукта, которые приобрел соответствующий пользователь.

На основе этого примера я подготовил входные данные, как показано ниже.

[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? Ссылка на соответствующий источник информации также будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 января 2019

В этом конкретном примере из-за выполняемой задачи вы ограничены областью наблюдений, на которой обучалась модель, и можете делать прогнозы на этом наборе. Как вы упомянули, хорошим способом было бы переобучиться. Я не пробовал это сам, но вы можете попробовать один из следующих:

  1. Запустите функцию Fit снова, используя новые данные, с которыми вы хотите тренироваться, в качестве ввода. Модель должна не только продолжать предыдущее обучение, но и проходить повторное обучение, используя дополнительные данные, которые вы ей предоставили.
  2. Сохранение модели в файл, Загрузка сохраненной модели, Запуск функции Fit, как указано выше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...