PROCESSO DE CIÊNCIA DE DADOS: MODELOS DE APRENDIZADO DE MÁQUINA EM AÇÃO

Inteligencia Artificial

,

Inteligencia de dados

PROCESSO DE CIÊNCIA DE DADOS: MODELOS DE APRENDIZADO DE MÁQUINA EM AÇÃO

Manuel Torres | Jul 04, 2019

Se você tem acompanhado a nossa série de publicações sobre o Processo de Ciência de Dados, com certeza, teve acesso às palavras dos profissionais mais bem informados do setor que explicaram todo este processo e como abordar - com sucesso - as diversas etapas deste percurso. As etapas iniciais são, algumas vezes, negligenciadas porém fundamentais para o resultado global e são a base para a análise e modelagem das soluções.

Sem a correta formulação do problema, os dados corretos, confiáveis e significativos, a habilidade em ouvir com atenção o que os dados têm a dizer, os modelos de algoritmos e o aprendizado de máquina são praticamente inúteis.

Como Moustapha Cisse, chefe do Google AI Center em Accra, Ghana disse: "como somos o que comemos, algumas vezes alimentamos nossos "modelos" com junk food".

Supondo que o modelo seja saudável e tendo enfrentado os desafios colocados nas etapas anteriores, atingimos um outro ponto crítico em nosso processo. O Aprendizado de Máquina é uma das mais poderosas ferramentas de computação disponíveis e está ajudando todos os tipos de empresas a analisar seus desempenhos, maximizar receitas e gerar novos modelos de negócios.

Aplicação do Aprendizado de Máquina

O aprendizado de máquina é uma série de técnicas que permitem aos sistemas de computação a realizar previsões, classificar, ordenar, tomar decisões e geralmente extrair informações dos dados sem a necessidade de definir regras explícitas para executar essas tarefas. É um subcampo da inteligência artificial que visa ensinar aos computadores a habilidade de executar tarefas com base em exemplos sem a programação explícita. Devido ao aumento contínuo da complexidade das empresas e da quantidade de dados a serem analisados, partimos de uma inteligência baseada em regras para uma inteligência orientada a dados, como representado no esquema abaixo:

ML1

Os dados são usados para treinar modelos para que aprendam a extrair conhecimento. Esses modelos são treinados usando diferentes algoritmos que são determinados pelo tipo de tarefa que queremos que a nossa solução execute. 

Tipos de Aprendizado de Máquina

A seleção do modelo é determinada pelo problema da empresa. A fase de formulação do problema nos ajuda a definir o tipo de resposta que estamos procurando: Vamos explicar a situação atual? Vamos prever resultados futuros? Estamos tentando classificar os itens da nossa empresa? 

Dependendo das respostas serão escolhidos um ou vários modelos:

ML2

Vamos observar apenas um exemplo para cada classe de modelo:

  • A classificação de gastos é a etapa decisiva de qualquer análise de aquisição, as transações de gastos são classificadas em um número finito de classes com base em suas características.
  • O clustering, ou agrupamento, é amplamente utilizado em gerenciamento de marketing e relacionamento com o cliente e permite agrupar os clientes em conjuntos não definidos a priori com base no comportamento de compra.
  • Os chatbots, ou robôs, e assistentes digitais pessoais exploram os modelos de processo de linguagem neural (PNL) para interpretar e compreender o que os usuários finais digitam ou dizem.
  • A previsão de demanda permite aos fornecedores prever a quantidade de energia que eles têm de fornecer com base no consumo dos anos anteriores e outros regressores como previsão de temperatura ou índica de radiação solar.

Como a máquina aprende?

Os processos de aprendizado de máquina são frequentemente assimilados da mesma maneira como as crianças aprendem, e o exemplo é tão eficaz que podemos usá-lo para nossos propósitos.

Aprendizado Supervisionado

Um professor explica para os alunos como escrever apresentando exemplos de palavras corretas. Os conjuntos de dados de treinamento contêm rótulos que indicam se a única entrada está correta ou não (por exemplo, eles têm o valor de saída esperado ou a classe já anexada a eles), modelos são treinados para combinar os exemplos assim como também aprender como reconhecer situações "corretas" em dados novos. Os sistemas de tradução automática são exemplos de aprendizado supervisionado. O Google Tradutor, partindo do modelo estatístico anterior, mudou para um modelo de rede neural em 2016 e reduziu o código de 500.000 linhas para apenas 500.

Aprendizado não Supervisionado

Os bebês aprendem a associar formas e lacunas brincando com elas e ganhando experiência; eles aprendem que o objeto com quatro lados iguais e quatro ângulos iguais se encaixa na lacuna que corresponde ao quadrado. No aprendizado não supervisionado, o modelo é treinado para extrair características comuns a vários exemplos (dados de treinamento) e, em seguida, reaplicar esse conhecimento para classificar ou detectar anomalias em novos conjuntos de dados. Algoritmos de classificação que reconhecem rostos diferentes em imagens permitindo que eles seja marcados, como aqueles disponíveis no Google, iOs Photos e alguns aplicativos de redes sociais, são exemplos de aprendizado não supervisionado.

Aprendizado por reforço

O treinamento de filhotes é baseado neste conceito; quando um animal responder corretamente a um comando, ele é recompensado com um biscoito e, com o tempo, será capaz de repetir o comportamento esperado mesmo em um ambiente diferente daquele no qual foi treinado. No aprendizado por reforço, modelos são treinados para executar ações dentro de um ambiente definido para maximizar uma recompensa ou prêmio objetivo e manter essa habilidade mesmo quando o ambiente muda. Os sistemas de direção automática, como o piloto automático da Tesla, usam o aprendizado por reforço para mover o volante, acelerar e frear usando a informação dos sensores do carro para detectar o ambiente e maximizar uma função que mantém o carro seguro e na pista.

Processo Interativo

A análise aprofundada é geralmente um processo cíclico no qual definimos um modelo para o nosso problema, testamos resultados e refinamos o modelo (adicionando parâmetros, alterando pesos, adaptando a arquitetura) ou o descartamos e tentamos um novo modelo.

Em muitos casos, podemos pensar que os melhores resultados (que mais ou menos significa o mínimo de erros) não são alcançados por um único modelo, mas sim por um grupo de modelos trabalhando em conjunto. Nessa configuração, um modelo pode prever ou classificar melhor um subconjunto de dados de entrada enquanto outro modelo executa com excelência outro subconjunto, obtendo melhores resultados em conjunto do que os modelos individuais.

tim-mossholder-1265371-unsplash

Toolbox de Aprendizado de Máquina

Para tornar esse processo exploratório interativo mais rápido, usamos o Jupyter Notebook ou alternativas similares na Nuvem (Google Colab, Azure Notebooks, Amazon EMR ou Notebooks Sagemaker). Nesses notebooks podemos combinar textos, gráficos e código Phyton ou R para executar modelos e algoritmos. Os notebooks são convenientes porque criam uma "base comum" tanto para a equipe técnica quando para o pessoal da empresa. Na Techedge, utilizamos os notebooks em ondas Agile, ou agéis, para verificar nosso progresso e explicar aos clientes o que descobrimos em seus dados, comparar vários resultados de modelos e identificar os melhores algoritmos para serem usados com determinados conjuntos de dados. 

Ferramentas para automatizar o treinamento, a validação e a seleção de algoritmos têm sido lançadas nos últimos anos: marcas como DataRobot ou Ce3.ai prometem automatizar muitas etapas do Processo de Dados tornando-as acessíveis à comunidade dos "não cientistas de dados". De modo geral, essas ferramentas podem agregar bom valor às tarefas específicas (por exemplo: pontuação e comparação de modelos) e apresentar algumas limitações óbvias devido ao design específico e a automação que introduzem. Em resumo, ainda não vemos a oportunidade de aplicá-las continuamente em uma implementação complexa de aprendizado de máquina.

Para criar modelos e executar algoritmos, podemos utilizar várias bibliotecas "ML" capazes de simplificar o trabalho do cientista de dados em muitas tarefas diferentes; todas são livres e de código aberto (open source) e nos oferece um poderoso kit de ferramentas para criar e executar modelos de aprendizado de máquina.

Scikit-learn

Scikit-learn é uma biblioteca de aprendizado de máquina para Phyton. Nós a utilizamos principalmente para vários algoritmos de aprendizado de máquinas clássicos (máquinas de vetores de suporte ou florestas aleatórias, para citar alguns). É uma biblioteca bem organizada, confiável e fácil de usar que se integra com as bibliotecas numéricas e científicas do Phyton NumPy e Scipy. 

TensorFlow + Keras

TensorFlow é uma biblioteca de matemática simbólica, criada para fluxo de dados e programação diferenciável em uma série de tarefas. É provavelmente a biblioteca mais usada para criar e treinar redes neurais. A TensorFlow foi desenvolvida pela equipe do Google Brain para uso interno do Google sendo liberada, em seguida, como  recurso open source.
 
Ela oferece um grande desempenho tanto em treinamento quanto em inferência, mas sua sintaxe pode ser  bastante complicada. A Keras é uma biblioteca de rede neural escrita em Python que é executada em cima da TensorFlow e abstrai a maior parte das dificuldades de criação de redes neurais em TensorFlow.
 
A TensorFlow 2.0, lançada em versão alfa em abril, inclui a Keras como API de alto nível padrão para criar e treinar modelos de aprendizado de máquina.

 

Pytorch + Fastai

Assim como a TensorFlow e a Keras, a Pytorch e a Fastai são duas bibliotecas Python que se complementam muito bem. 

A PyTorch é uma biblioteca de aprendizagem de máquina em Python, usada principalmente para aplicativos como processamento de linguagem natural e visão computacional, originalmente desenvolvida pelo grupo de pesquisa de inteligência artificial do Facebook. A Fastai é uma biblioteca que roda em cima da Pytorch e simplifica ao  máximo o processo de criação, treinamento e aperfeiçoamento dos modelos de aprendizado de máquina, nos
permitindo prototipar e criar modelos com muita rapidez.

Para finalizar, a análise aprofundada (também conhecida como modelagem) aplica as informações obtidas nas fases anteriores para definir, treinar, selecionar e executar os modelos visando obter as respostas empresariais que havíamos definido como nosso objetivo no início do processo de Ciência de Dados.

Tenha sempre em mente que o objetivo não é criar um modelo de aprendizado de máquina maravilhoso, mas resolver um problema de negócios real e concreto, explorando o potencial que o uso dos dados e a inovação digital nos oferece.

Interessado em saber mais?

Você está preparado para uma estratégia mais orientada a dados? Veja nossos serviços e soluções para inteligência de dados. 

ACESSE AQUI

 

 

Inscreva-se!