Posted on 18. November 2018

Встречайте ML.NET 0.7 (Машинное обучение .NET)

https://blogs.msdn.microsoft.com/dotnet/2018/11/08/announcing-ml-net-0-7-machine-learning-net/

Встречайте ML.NET 0.7 (Машинное обучение .NET)

Microsoft рады объявить о выпуске ML.NET 0.7 - новой версии кроссплатформенной и открытой системы машинного обучения для .NET разработчиков (ML.NET 0.1 была выпущена в // Сборке 2018). В этом выпуске основное внимание уделяется обеспечению лучшей поддержки ML задач, основанных на рекомендациях, включению обнаружения аномалий, улучшению настраиваемых конвейеров машинного обучения, возможности использования ML.NET в x86 приложениях и многому другому.

В этом блоге расматриваются следующие темы касательно ML.NET 0.7 выпуска:

Расширенная поддержка для выполнения рекомендаций с помощью Matrix Factorization

Рекомендательные системы позволяют создавать список предложений для продуктов в каталоге, песнях, фильмах и т. д. Команда Microsoft улучшила поддержку создания систем рекомендаций в ML.NET, добавив матричную факторизацию (MF). Это общий подход к рекомендациям, когда Вы можете получить данные о том, как пользователи оценивают элементы в Вашем каталоге. Например, Вы можете знать, как пользователи оценивали некоторые фильмы. Благодаря этому Вы можете предложить другие фильмы для дальнейшего просмотра.

Microsoft добавили MF в ML.NET, потому что он значительно быстрее, чем Field-Aware Factorization Machines (добавлены в ML.NET 0.3), и он может поддерживать рейтинги, которые являются непрерывными числовыми оценками (например, 1-5 звездочек) вместо логических значений («Понравилось» или «Не понравилось»). Несмотря на то, что был добавлен MF, Вы все равно можете использовать FFM, если хотите воспользоваться другой информацией, которую пользователь присваивает элементу (например, жанр фильма, дата выпуска фильма, профиль пользователя). Более подробное обсуждение различий можно найти здесь.

Пример приложения, использующего матричную факторизацию, можно найти здесь. В нем вы можете увидеть, как использовать ML.NET для создания механизма рекомендаций к фильмам, в котором у вас есть такие данные, как UserId, ProductId и Ratings, доступные для покупок и оценок пользователей.

MF ML.NET использует LIBMF.

Сценарии обнаружения аномалий - обнаружение необычных событий

Обнаружение аномалий позволяет идентифицировать необычные значения или события. Этот инструмент используется в таких случаях, как обнаружение мошенничества (выявление подозрительных транзакций по кредитным картам) и мониторинг сервера (выявление необычной активности).

ML.NET 0.7 позволяет обнаруживать два типа аномального поведения:

  • Обнаружение скачков: скачки относятся к внезапным временным скачкам в значениях входных данных. Они могут проявляться из-за сбоев в работе, кибератак, вирусного веб-контента и т. д.
  • Обнаружение точки изменения: точки изменения отмечают начало более стойких отклонений в поведении данных. Например, если продажи продукта относительно постоянны и становятся более популярными (ежемесячные продажи удваиваются), появляется точка изменения.

Эти аномалии могут быть обнаружены на двух типах данных с использованием различных ML.NET компонентов:

  • IidSpikeDetector и IidChangePointDetector используются для данных, принадлежащих одному стационарному распределению (каждая точка данных не зависит от предыдущих данных, например, количество ретвитов каждого твита).
  • SsaSpikeDetector и SsaChangePointDetector используются для данных, содержащих компоненты сезонности/тренда (возможно, упорядоченные по времени, например, продажи продукта)

Пример кода с использованием обнаружения аномалий в ML.NET можно найти здесь.

Улучшенная настройка ML.NET pipelines


ML.NET предлагает множество модификаций данных (например, обработка текста, изображений, категориальных функций и т. д.). Тем не менее, для некоторых случаев использования необходимы специфичные преобразования, например, вычисление косинусного сходства между двумя текстовыми столбцами. Теперь Microsoft добавили поддержку пользовательских преобразований, чтобы Вы могли легко включить пользовательскую бизнес-логику.

CustomMappingEstimator позволяет Вам писать Ваши собственные методы для обработки данных и переносить их в ML.NET pipelines. Вот как это будет выглядеть в pipeline:

 

var estimator = mlContext.Transforms.CustomMapping(MyLambda.MyAction, "MyLambda")
    .Append(...)
    .Append(...)

 

Ниже приведено определение того, как будет вести себя это пользовательский маппинг. В этом примере преобразовывается текстовая метка (“spam” или “ham”) в логическую метку (true или false).

public class MyInput
{
    public string Label { get; set; }
}

public class MyOutput
{
    public bool Label { get; set; }
}

public class MyLambda
{
    [Export("MyLambda")]
    public ITransformer MyTransformer => ML.Transforms.CustomMappingTransformer(MyAction, "MyLambda");

    [Import]
    public MLContext ML { get; set; }

    public static void MyAction(MyInput input, MyOutput output)
    {
        output.Label= input.Label == "spam" ? true : false;
    }

Более обширный пример CustomMappingEstimator можно найти здесь.

Поддержка x86 в дополнении к x64

В сборке ML.NET Вы сможете использовать модели машинного обучения на устройствах с архитектурой x86 / 32-bit (пока только для Windows). Ранее ML.NET был ограничен x64 устройствами (Windows, Linux и Mac).

Обратите внимание, что некоторые компоненты, основанные на внешних зависимостях (например, TensorFlow), недоступны в x86-Windows.

NimbusML - экспериментальные привязки Python для ML.NET


NimbusML предоставляет экспериментальные привязки Python для ML.NET. Microsoft получили отзывы от внешних сообществ и внутренних групп разработчиков относительно использования нескольких языков программирования. Microsoft стремится к тому, чтобы как можно больше людей пользовались преимуществами ML.NET, а командам было легче работать вместе. ML.NET не только позволяет ученым использовать модели машинного обучения в Python (с компонентами, которые также могут использоваться в scikit-learn pipelines), но также позволяет сохранять модели, которые могут быть использованы в .NET приложениях через ML.NET (здесь Вы найдете более подробную информацию).

Если Вы пропустили: оставьте свой отзыв о новом API

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

Хотите принять участие? Оставьте Ваш отзыв на ML.NET GitHub!

Дополнительные источники:

 

  • Наиболее важные моменты ML.NET представлены здесь.
  • Руководство по использованию API данных для различных существующих и новых сценариев можно найти здесь.
  • Справочник по API ML.NET со всеми документированными API Вы найдете здесь.

 

Начните уже сейчас!


Если у Вас еще нету новой сборки, скачайте ML.NET здесь. Затем изучите другие полезные ресурсы:

 

 

Microsoft с нетерпением ждет ваших отзывов и ппредложений по улучшению ML.NET на GitHub.

Источник



Comments are closed