Como começar em Machine Learning

 

   Eu recebo muitos e-mails de estudantes e profissionais de diversas áreas que querem começar em ML.

   A primeira pergunta que faço é o que os está impedindo de começar?

   E a resposta é quase sempre se baseia em uma crença auto limitante do tipo - se eu começar a aprender ML, vou falhar porque não tenho base pois todos os Cientistas de Dados têm um Ph.D. e são exímios em matemática.

   Este post tenta desmistificar esta imagem.

1.Conhecimento prévio

   O maior limitante que eu percebo nas pessoas e empresas que querem usar  ML é a crença de que não se pode começar até que se tenha algum conhecimento prévio específico. O problema é que o conhecimento prévio que você acha que precisa pode não ser necessário ou é tão vasto em escopo que até mesmo especialistas nesse assunto não sabem tudo.

   Por exemplo: "Preciso saber Cálculo e SQL". Mas, que áreas do Cálculo, e quanto de SQL e por que você precisa conhecê-las já?

   Algumas das crenças auto limitantes mais comuns em habilidades ou conhecimento prévio que supostamente devem existir antes que você possa começar no ML são imaginar que é necessário ter um grau de Mestre ou Doutor em Ciência da Computação, Engenharia ou Matemática, ou dominar várias linguagens programação como Java e SQL.

A Ciência de Dados

   A primeira coisa é saber é do que trata a “Ciência de Dados”.  Do ponto de vista prático isto significa ter boa experiência com planilhas e dashboards, ferramentas indispensáveis para conhecer seus dados. Sem conhecer os dados você não vai a lugar nenhum. Basicamente você tem que ser capaz de:

 

  • Mergulhar fundo nos dados, entender sua estrutura, e tipos. Entender por que e como todos esses dados foram coletados, como estão  armazenados e como foram processados  antes do armazenamento

  • Limpar os dados, processá-los de várias formas e gerar gráficos. Redigir relatórios sucintos, porque em geral, as pessoas não têm tempo nem interesse para lê-los. Mas com gráficos interessantes e  consistentes, demonstrando o que você quer dizer, e conseguindo sintetizar suas conclusões sua chance de uma boa receptividade aumenta muito.

 

Um exemplo de dashboard:

 

  • Também é importante saber contar uma história. O que significa simplesmente que você deve ser capaz de dizer ao presidente da empresa como você chegou, passo a passo, nas conclusões. Lembre-se que, em geral, as pessoas não estão interessadas  somente em números.  Um bom cientista de dados também é um verdadeiro apresentador dos dados.

 

Um projeto de ML

   Como na maioria das ciências, ML oferece oportunidades para aplicações práticas e para pesquisa. A pesquisa em ML usa muita matemática, trabalha com abstrações e para aprende-la será necessário pelo menos um curso de pós-graduação de 2 anos. Já para aprender ML na prática é se concentrar em  como aplicá-la, não projetar o algoritmo. Veja da seguinte maneira: se você precisa classificar os dados em ordem alfabética, não precisa inventar um algoritmo de classificação, simplesmente você escolhe um algoritmo apropriado e aplica-o corretamente.

   O que você precisa saber é quais são as principais opções (por exemplo, regressão linear, redes neurais, árvores de decisão, etc.), como alimentá-las e como usar os dados produzidos.

   Se você conhece estatística e alguma programação e está incrivelmente difícil aprender ML, provavelmente você está tentando aprender as coisas erradas.

   O Cientista de Dados é um profissional multidisciplinar, com conhecimentos em ciência da computação, matemática, estatística e, principalmente, conhecimentos do negócio onde está inserido. Quem exatamente é esta figura ainda não está claro, mas podemos dizer que o papel de um Cientista de Dados é gerir os dados da empresa, através de uma estratégia baseada em valor para o negócio.

   A figura abaixo mostra as áreas de conhecimento básicas para um Cientista de Dados.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   Os projetos de ML geralmente são executados nas seguintes etapas:

  • Eles começam com dados e um novo objetivo de negócios.

  • Os dados, em geral, não estão preparados porque não foram coletados com o novo objetivo de negócios em mente.

  • Depois de preparados, os algoritmos de ML são executados nos dados para produzir um modelo.

  • O modelo é então avaliado em dados novos e imprevistos para verificar se foi extraído algum valor dos dados. Em caso afirmativo, ele é implantado em um ambiente de produção, onde é usado para fazer previsões sobre novos dados.

  • Finalmente, voce deve monitorar a eficácia das previsões do modelo, comparando-as com as reais e corrigir o modelo se necessário, e ainda ter em mente que os pressupostos podem mudar ao longo do tempo.

 

   Há muita flexibilidade nesse processo. Por exemplo, a etapa de estabelecer um objetivo deve fazer sentido para a alta direção da empresa, e para isso são necessários ao menos três pontos:

  • Qual é o problema que se propõe resolver? Descreva o problema de maneira informal e formal e liste suposições e problemas semelhantes.

  • Por que o problema precisa ser resolvido? Liste sua motivação para solucionar o problema, os benefícios que uma solução oferece e como a solução será usada.

  • Como resolvo o problema? Descreva como o problema seria resolvido manualmente se isto fosse possível.

 

2.Linguagens de programação para ML

   Os Cientistas de Dados  gastam uma quantidade significativa de tempo organizando dados de maneira compreensível e procurando padrões para descobrir correlações ou para encontrar uma solução para um problema específico.

   Para esse fim, eles preferem linguagens e ferramentas que lhes permitam fazer análises de ponta a ponta, realizando tarefas que vão desde a preparação preliminar de dados até a aplicação de uma ampla gama de algoritmos e técnicas estatísticas.

Sofware de código aberto (open source) ou comercial?

   Ao se interessar por ML, você enfrenta uma escolha importante: que software devo usar?

   Bem, você tem muitas opções para escolher. Python, R, SAS, Matlab, Azure… a lista continua. Mas primeiro, você precisa fazer outra escolha: devo usar software de código aberto ou comercial?

   O código-fonte aberto está disponível gratuitamente e pode ser redistribuído e modificado. A comunidade suporta o código. Por outro lado, o software comercial é desenvolvido e mantido por uma única empresa.

   Python e R são linguagens de programação com ricos ecossistemas de código aberto. Por exemplo, o Python  tem o Scikit Learn, uma estrutura poderosa para ML que pode executar classificação, regressão, clustering e outras tarefas prontas para uso. O Python também possui pacotes especializados para deep learning e NPL (processamento de linguagem natural), como o TensorFlow, Theano e o Keras, estes últimos usados principalmente em deep learning.

   Veja os módulos do Scikit Learn para ML

   O R  também possui pacotes maduros para ML. Eles incluem algoritmos específicos, como RandomForest para classificação e regressão, bem como o Caret, uma estrutura de ML que pode interagir com muitos outros pacotes.

  Os softwares de código aberto são livres para usar e personalizar, e tendem a atrair grandes comunidades. Isso significa mais pessoas para melhorá-lo e depurá-lo. Por exemplo, o StackOverflow é um dos recursos mais valiosos para esclarecer suas dúvidas. Outro motivo para usar o código aberto é que, devido à sua popularidade, muitas vezes é mais fácil recrutar membros experientes.

  Os sofwares comerciais, tem a grande vantagem de exigir menos conhecimento de programação que os de código aberto. A interface GUI, (Graphical User Interface) é um tipo de interface que permite a interação do usuário por meio de elementos gráficos como ícones e outros indicadores visuais, em contraste a interface de linha de comando. Na figura abaixo  vemos um exemplo disto no RapidMiner.

 

 

  Note que tanto o software com código aberto como os comerciais possuem  bibliotecas de algoritmos, métodos de pré-processamento de dados e opções de implantação de modelo prontos para uso. Em geral os software comerciais possuem  versões com capacidade reduzida que são perfeitas para o aprendizado. Também as diferenças de investimento entre os programas pode ser bastante significativa.

   Obviamente, o software escolhido dependerá das necessidades da sua equipe. Do ponto de vista de funcionalidade pura, você pode encontrar as tarefas de ML mais comuns em qualquer uma das opções. Para projetos menores, especialmente projetos de uma pessoa ou projetos simples, o software de código aberto é perfeito. Por exemplo, não é o fim do mundo se um programa ficar off-line por algumas horas.

   Em geral, faz sentido começar com software de código aberto graças às suas grandes comunidades ativas. Recomendo o Python, porque ele também é uma linguagem de programação de propósito geral que pode ser mais facilmente integrada com pipelines de dados e aplicativos de usuário final.

Então, à medida que seu projeto começar a se expandir para mais dados ou usuários, você terá a opção de adquirir um parceiro comercial, e poderá descarregar algumas das suas necessidades de suporte e manutenção. Essa abordagem híbrida permitirá que você aproveite uma grande comunidade de código aberto e, ao mesmo tempo, tenha acesso a um suporte dedicado individual.

   Para aplicativos de nível corporativo é possível reduzir seus recursos humanos em programação tendo um bom software comercial.

Os mais usados

De acordo com uma pesquisa do KDnuggets, até 2016,  os usuários identificaram o R como uma ferramenta principal para análise de dados, entretanto em 2017 o Python, cujo uso tem crescido mais rapidamente que o R nos últimos anos, finalmente alcançou o R.

O RapidMiner continua a ser a plataforma geral mais popular  com cerca de 33% de uso, quase exatamente o mesmo que em 2016. 

Abaixo a  enquete de software do KDnuggets Analytics das principais ferramentas em 2017 e sua evolução desde 2015.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Também a consultora Gartner fez sua avaliação dos softares comerciais mostrada abaixo

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Tanto o Python quanto o R estão entre as linguagens mais populares para ML e têm seus apoiadores e oponentes. Embora o Python seja frequentemente elogiado por ser uma linguagem de propósito geral com uma sintaxe fácil de entender, a funcionalidade do R foi desenvolvida com a estatística em mente possuindo excelentes recursos para visualização de dados,por outro lado se você não é um programador você pode obter resultados totalmente aceitáveis com linguagens como RapidMiner e KNIME.

3.Machine Learning e Big Data

   O termo Big Data está bastante na moda e muitas vezes se confunde com "Ciências de Dados" e "Machine Learning", porém se tratam de animais muito diferentes. ML e a análise de Big Data estão sob a égide da Ciência de Dados. Embora eles tenham uma conexão, existem vários aspectos  que os separam em termos de definição e aplicação.

   Big Data é um termo amplamente utilizado na atualidade para nomear conjuntos de dados muito grandes ou complexos, que os aplicativos de processamento de dados tradicionais ainda não conseguem lidar. Os desafios desta área incluem: análise, captura, curadoria de dados, pesquisa, compartilhamento, armazenamento, transferência, visualização e informações sobre privacidade dos dados.Diz-se que o Big Data se baseia em 5 'V's : velocidade, volume, variedade, veracidade e valor.

 

 

 

 

 

 

 

 

 

 

 

   A maioria das atividades de análise de dados em Big Data pode ser feito sem o envolvimento de ML. No entanto, se também a análise preditiva  for necessária, existem ferramentas específicas desenvolvidas para isso, que se integram  com a maaioria dos softwares de ML.

   A análise de Big Data utiliza ferramentas inicialmente desenvolvidas pela Apache Software Foundation (ASF), uma organização sem fins lucrativos criada para suportar projetos de código aberto. O Apache Hadoop® é uma estrutura em código aberto para armazenamento e processamento distribuídos de grandes conjuntos de dados em hardware simples. O Hadoop permite que as empresas obtenham insights de quantidades enormes de dados estruturados e desestruturados de forma rápida. Entretanto os módulos de software usados pelo Hadoop e os aplicativos  para Big Data exigem o conhecimento de vários programas, como pode ser visto no ecosistema abaixo.

4.Pratique ML

   A melhor maneira de começar é praticar em bases de dados que possuem características específicas. Eu recomendo que você selecione características que você precisará abordar quando começar a trabalhar em problemas próprios, tais como:

  • Diferentes tipos de aprendizagem supervisionada, como classificação e regressão.

  • Conjuntos de dados de tamanhos diferentes de dezenas, centenas, milhares e milhões de observações.

  • Números diferentes de atributos de menos de dez, dezenas, centenas e milhares de atributos

  • Diferentes tipos de atributos:  real, inteiro, categórico, ordinal,...

  • Diferentes domínios que o forçam a entender e caracterizar rapidamente um novo problema no qual você não tem experiência anterior.

 

   Eu aconselho a pensar sobre as características dos problemas que você gostaria de aprender. Essas podem ser características que você gostaria de modelar (como a regressão), ou algoritmos que você gostaria de ter mais habilidade em usar (como Random Forest para classificação de várias classes).

   Você pode usar bases de dados abertas como  no site da  Universidade da Califórnia em Irvine ML Repository, que tradicionalmente hospeda bases de dados de ML usados ​​pela comunidade de pesquisa.

  Recomendo começar com as bases de dados abaixo, pois elas são tradicionalmente usadas pela comunidade para treinamento e estão presentes nos tutoriais da maioria dos softwares.

Medidas de flores preveem as espécies de íris.

Dados do censo, que indivíduos ganham mais de US $ 50.000 por ano.

Uma análise química dos vinhos para prever sua origem.

 Detalhes sobre carros para prever sua segurança.

Dados os resultados de um teste de diagnóstico no tecido mamário,  prever se a massa é um tumor ou não.

Dadas as medidas de abalone prever a idade do abalone.

Dadas várias medições de vinho prever a qualidade do vinho.

Tendo em conta os resultados de vários testes de diagnóstico em um paciente prever a doença cardíaca no paciente.

Dado um banco de dados de mãos de poker prever a qualidade da mão.

Dados de movimento do telefone inteligente prever o tipo de atividade realizada pela pessoa que detém o telefone inteligente.

Dada a meteorologia e outros fatores prever a área queimada de incêndios florestais.

Dados os detalhes das imagens nas páginas da web, preveja se uma imagem é um anúncio ou não.

Uma das estratégias que usei para aprender ML foi treinar nestas bases de dados e comparar meus resultados com os de outros que fizeram o mesmo exercício.

 

Onde estudar

Existem muitos excelentes cursos e livros sobre ML. Para os iniciantes eu recomendo apenas um livro e um curso, ambos  grátis, que serão mais que suficientes para seu aprendizado inicial.

 

  • The Elements of Statistical Learning, 2001- Hastie, Friedman, and Tibshirani

  • Machine Learning  - Andrew Ng, Stanford University via Coursera

Referências

Machine Learning (Stanford)

Caltech Machine Learning

Intro to Machine Learning 

Machine Learning with Python 

3 Dimensões

Inteligência Artificial nas Empresas

Al. das Papoulas, 147 - Santana de Parnaíba - Alphaville, SP 06539-180 - (11) 4153 6004  - (11) 9 9795 9765

michel@3dimensoes.com.br