ML.Net переобучает существующую модель вместо обучения новой модели - PullRequest
0 голосов
/ 24 сентября 2018

Я тренирую модель машинного обучения ML.Net.Я могу обучать и прогнозировать, а также сохранять / загружать с диска.Но мне нужно иметь возможность загрузить его с диска, затем переобучить или добавить к нему новую информацию, чтобы улучшить ее с течением времени.

Кто-нибудь знает, возможно ли это?Я не нашел ничего в документах MS о том, как это сделать, но это довольно стандартная вещь для ML, поэтому я буду удивлен, если это невозможно.

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Если вы в конечном итоге загляните в ML.NET, я рекомендую взглянуть на ML.NET Model Builder - здесь есть действительно простое руководство .По сути, вы можете скачать расширение Visual Studio, которое позволяет использовать графический интерфейс для создания новой модели.Он даже обрабатывает ваши данные с помощью множества алгоритмов машинного обучения и оценивает наиболее точный из них.Как только ваша модель создана, расширение Visual Studio генерирует исходный код, который она использовала для создания модели, так что вы можете просмотреть, что именно она сделала, и внести коррективы, где это необходимо!

Создаваемую модель можно легко переобучить влюбая точка.Вы можете следовать документации Microsoft здесь , чтобы переучить модель.Все, что вам нужно сделать, это загрузить модель и конвейер, которые она использовала ранее, а затем запустить через них новый набор данных.Затем он сохраняет переобученную модель обратно на диск.

Просто примечание, которое я нашел, сохранив .zip-файл конвейера на диск при первоначальном создании модели, упростило его позднее при переобучении.

0 голосов
/ 24 сентября 2018

Эта функциональность существует в ML.NET, но невозможна с существующими API LearningPipeline.Это будет продемонстрировано в новых API ML.NET, и пример включения этого сценария можно найти здесь .Соответствующий код:

// Train the first predictor.
var trainer = new LinearClassificationTrainer(env, new LinearClassificationTrainer.Arguments
{
    NumThreads = 1
}, "Features", "Label");
var firstModel = trainer.Fit(trainData);

// Train the second predictor on the same data.
var secondTrainer = new AveragedPerceptronTrainer(env, new AveragedPerceptronTrainer.Arguments());

var trainRoles = new RoleMappedData(trainData, label: "Label", feature: "Features");
var finalModel = secondTrainer.Train(new TrainContext(trainRoles, initialPredictor: firstModel.Model));

Эти API все еще в движении, но, возможно, это помогает.Это еще не является частью официального выпуска ML.NET, поэтому вам нужно получить NuGet от здесь или построить репо .

Примечание: я нахожусь накоманда ML.NET.

...