endjin revoluciona tarefas simples com ML.NET
Cliente
endjin
Produtos e serviços
ML.NET
AutoML
Azure
Setor
Tecnologia da Informação e Serviços
Tamanho da Organização
Pequena (1-100 funcionários)
País/região
Reino Unido
A endjin é uma empresa estilo boutique de consultoria de tecnologia sediada no Reino Unido e Parceira de Ouro da Microsoft para Plataforma de Nuvem, Plataforma de Dados, Análise de Dados e DevOps. A endjin tem um grande entusiasmo pelo revolucionário poder da tecnologia e por aproveitar esse poder para ajudar os clientes a resolverem problemas difíceis. Recentemente, seu foco se concentrou no uso do aprendizado de máquina para resolver problemas comerciais comuns, mas muito importantes. Isso demonstrou que, embora o aprendizado de máquina seja considerado excelente para resolver casos de uso inéditos, sua capacidade de revolucionar tarefas simples e rotineiras geralmente é ignorada.
Ficamos impressionados com a facilidade com que AutoML e ML.NET podem ser usados para reduzir o tempo gasto em tarefas demoradas e monótonas. A liberdade obtida com o uso dessas tecnologias acessíveis e poderosas nos permite concentrar nosso tempo em análises orientadas pelo pensamento criativo e obter insights valiosos dos dados que elas produzem."
Problema de negócios
No 2014, endjin criou Azure Weekly, um boletim informativo gratuito que resume as principais notícias da semana no ecossistema do Azure. Para os primeiros 25 problemas, a equipe em endjin manualizou o boletim informativo, mas como o volume de conteúdo cresceu, eles perceberam que isso não é sustentável. Eles aplicaram sua mantra de empresa do \ "trabalhar de forma mais inteligente " e automatizaram o processo de ponta a ponta criando seu próprio classificador de texto C# personalizado para classificar artigos de mais de 300 Blogs em 19 categorias, incluindo AI + Machine Learning, Analytics, DevOps, Internet das Coisas, rede e Web. Isso funcionou relativamente bem, mas, além da necessidade de manter uma lista ativa de palavras-chave para classificar, as correções manuais eram necessárias toda semana, o que causou uma sobrecarga de manutenção importante.
Mais de 200 problemas e muitos milhares de assinantes mais tarde, a endjin decidiu começar a examinar uma solução de aprendizado de máquina. A empresa sabia que, no cerne da plataforma de conteúdo, tinha duas questões principais para resolver: um problema de classificação binária ("esse é um artigo sobre o Azure?") e um problema de classificação de várias classes ("qual área do Azure esse artigo aborda?"). Com isso em mente, a endjin decidiu usar o ML.NET para resolver esses problemas, aprimorar sua plataforma e remover as despesas gerais da manutenção manual.
Quando você olha para o trabalho/processos realizados pela maioria das organizações, você pode dividi-los em uma série de etapas de decisão de 1 segundo. Se você aplicar aprendizado de máquina, fluxos de trabalho reativos e economia de API ao espaço do problema, começaremos a entender o que é a 4ª Revolução Industrial poderia entregar"
Por que ML.NET?
Embora a linguagem de programação de sua escolha seja C#, a falta anterior de uma estrutura de aprendizado de máquina de primeira classe para .NET significava que o ponto de extremidade estava usando R e Python em seus experimentos diários de ML e ciência de dados voltados para o cliente. No entanto, a produção de modelos de machine learning escritos em R e Python era problemática devido a opções de hospedagem limitadas. O restante da plataforma de conteúdo da endjin's é criada usando componentes PaaS e sem servidor, portanto, a combinação de ML.NET e Azure Functions foi incrivelmente atraente para a empresa; assim que ML.NET foi anunciado em //build 2018, eles começaram a usar a estrutura de machine learning para seu aplicativo.
Impacto de ML.NET e AutoML
Endjin foi muito beneficiada com o alto desempenho do ML.NET, não apenas em termos de melhorias de velocidade ao classificar artigos, mas também em termos de precisão. Desde a adoção ML.NET, eles têm visto muito menos artigos categorizados incorretamente, o que se traduz em menos intervenção manual e produção de conteúdo mais rápida.
O uso ML.NET CLI com AutoML também tornou todo o processo de treinamento, avaliação e geração do código para usar ML.NET à prova de falhas. Usar o AutoML para escolher o modelo de melhor desempenho e gerar automaticamente o código de treinamento e consumo de modelo para classificação (em comparação com a escolha manual das transformações de dados, algoritmos e opções de algoritmo para criar um modelo e código do ML.NET) melhorou a precisão do modelo de 68% para 78% e a execução desse modelo em dados históricos não apenas realça muitos artigos que foram classificados incorretamente, mas também identificou muitos artigos válidos que foram excluídos pelo modelo de classificação original.
Arquitetura da solução
Criando um aplicativo com ML.NET
Quando a endjin começou a usar ML.NET, eles criaram uma ferramenta para converter os dados de plataforma de conteúdo histórico em um conjunto de dados CSV para treinar manualmente um modelo do ML.NET e criaram outra ferramenta para selecionar aleatoriamente 20% do conjunto de dados de treinamento como um conjunto de dados de validação. Depois, criaram manualmente um modelo do ML.NET para prever a qual categoria um artigo pertence.
Depois que a CLI do ML.NET com AutoML estava disponível para uso, simplificava o processo e produziu resultados significativamente melhores. Primeiro, o AutoML gerou automaticamente um conjunto de dados de validação do conjunto de dados de treinamento, portanto, a segunda ferramenta personalizada do endjin não era mais necessária. Em segundo lugar, definir um tempo de exploração máximo para uma hora, o AutoML foi capaz de treinar, ajustar e avaliar vários modelos de classificação e exibir os 5 principais modelos de execução.
Após a endjin ter os modelos ML.NET treinados gerados pelo AutoML, eles integraram os modelos à plataforma de conteúdo existente, simplesmente trocando os algoritmos de classificação personalizados existentes. Os modelos do ML.NET foram hospedados dentro de uma função do Azure para habilitar a escala elástica da avaliação do modelo. Uma nova função durável foi usada para permitir que os modelos sejam destreinados sob demanda.
Processamento de dados
Felizmente, a equipe da endjin sabia quando criou a versão original da plataforma de conteúdo que, um dia, gostaria de aprimorá-la usando o aprendizado de máquina, para manter todos os dados usados para gerar os boletins informativos em formatos brutos e processados (mais de 4.000 arquivos JSON que estavam em torno de 3 GB de tamanho total). Eles foram transformados em dois conjuntos de dados de treinamento: um de 28 MB. Arquivo CSV para classificação binária e 9 MB. Arquivo CSV para classificação multiclasse.
Transformações de dados e algoritmos de aprendizado de máquina
Como o título e o conteúdo das postagens de blog que estão sendo classificadas são texto livre, ambos precisam ser convertidos usando a transformação de dados Featurize Text. Em seguida, o título e o conteúdo foram unidos em um único campo usando a transformação de dados Concatenate.
O modelo original que a endjin criou manualmente usou o algoritmo de classificação multiclasse SdcaMaximumEntropy. No entanto, quando usou a CLI do ML.NET com o AutoML, a endjin descobriu modelos de desempenho ainda melhor para suas situações.
Para o primeiro cenário ("é um artigo sobre o Azure?") O AutoML selecionou AveragedPerceptronBinary como o algoritmo de melhor desempenho. Para o segundo cenário ("qual área do Azure este artigo aborda?") O AutoML selecionou LightGbmMulti como o algoritmo de maior desempenho e gerou o código a seguir para treinar o classificador multiclasse:
public static IEstimator
BuildTrainingPipeline(MLContext mlContext){
// Data process configuration with pipeline data transformations
var dataProcessPipeline = mlContext.Transforms.Conversion.MapValueToKey("CategoryId", "CategoryId")
.Append(mlContext.Transforms.Text.FeaturizeText("Title_tf", "Title"))
.Append(mlContext.Transforms.Text.FeaturizeText("Content_tf", "Content"))
.Append(mlContext.Transforms.Concatenate("Features", new[] { "Title_tf", "Content_tf", "Issue" }));
// Set the training algorithm
var trainer = mlContext.MulticlassClassification.Trainers.LightGbm(labelColumnName: "CategoryId", featureColumnName: "Features")
.Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel", "PredictedLabel"));
var trainingPipeline = dataProcessPipeline.Append(trainer);
return trainingPipeline;
}
A endjin usou o ML.NET para aprimorar seu processo de seleção e categorização de artigos para o seu boletim informativo do Azure. O uso do ML.NET e do AutoML para gerar modelos de aprendizado de máquina também permitiu que a empresa se concentrasse menos nos parâmetros do modelo de sintonia fina e mais em cumprir suas promessas aos clientes.
Pronto para começar?
Nosso tutorial passo-a-passo irá ajudá-lo a usar o ML.NET em seu computador.