Primeiros Passos

1 - O que é Aprendizagem de Máquina?

A aprendizagem de máquina (machine learning) é uma mecanismo poderoso para cálculo de previsões e sugestões, utilizando a análise de dados. Não é necessariamente preciso criar novos algoritmos, mas é essencial entender e dominar os algoritmos mais comuns, sejam eles utilizando método de aprendizado supervisionado, não supervisionados ou por reforço. Alguns exemplos são: análise de componentes principais (PCA), redes neurais, máquinas de suporte vetorial (SVM) e algoritmo de cluster k-means (KNN). É muito importante conhecer a teoria e os detalhes de implementação por trás desses algoritmos, além de conhecer os prós e contras, entendendo a aplicabilidade de cada um.

1.1 - Aprendizagem Supervisionada

A aprendizagem supervisionada é útilizada quando o conjunto de dados possui rótulos que classifica cada instância utilizada. Esse rótulo pode ser tanto um valor numérico quanto uma categoria ou classe. Esse método de aprendizagem consiste em encontrar um modelo que seja capaz de identificar um padrão utilizando um conjunto de amostras de entrada. De posse do modelo, o próximo passo é avaliar a probabilidade de que uma instância obtenha desempenho específico em um conjunto de amostras diferente. Resumindo, na aprendizagem supervisionada existe o treino e o resultado esperado para cada exemplo. Exemplo: conjunto de dados de tweets marcados como positivos, negativos ou neutros. De posse desse conjunto de dados de tweets é possível criar um modelo (aplicação) com um classificador para análise de sentimento.

Alguns métodos de aprendizagem supervisionada:

  • Árvores de decisões
  • Algoritmo Naive Bayes
  • Método dos mínimos quadrados (MMQ)
  • Regressão logística
  • Redes neurais
  • Máquinas de suporte vetorial (SVM)

1.1.1 - Aprendizagem Semi Supervisionada

Entre a aprendizagem supervisionada e o não supervisionada, existem ainda as técnicas de aprendizagem semi supervisionada. Para obter bons resultados com aprendizagem supervisionada, normalmente é preciso de muitas observações de variáveis de entrada X, etiquetadas com as variáveis de saída Y. No entanto, dados nomeados com Y são escassos, muitas vezes porque o custo de nomeá-los é alto demais. Pense por exemplo, em um estudo que tenta mapear a melhor composição para um medicamento, dada as características físicas de uma pessoa. Nesse caso, seria custoso demais vacinar experimentalmente milhares de pessoas; por outro lado, coletar as características físicas delas é bem mais simples.

A aprendizagem semi supervisionada atua nessas situações, na qual muitas das observações X não estão nomeadas com seus pares Y. Sendo um dos grandes desafios no campo de aprendizagem de máquina, no qual as aplicações bem sucedidas não são tão abundantes. Talvez os avanços mais notáveis obtidos com aprendizagem semi supervisionada são na área de processamento de linguagem natural, quando primeiro se aprende regras semânticas para as palavras e depois utiliza-se a semântica aprendida para realizar previsões.

1.2 - Aprendizagem Não Supervisionada

Nem sempre o objetivo é prever o valor de uma propriedade específica. Muitas vezes o objetivo é descobrir as relações ocultas dentro de um determinado conjunto de dados. Um exemplo disso seria o agrupamento (cluster) de objetos que são similares uns aos outros (de acordo com algum critério de similaridade) e dissimilares a objetos pertencentes a outros clusters. Nessas situações, o conjunto de dados não define os grupos e, como resultado, os itens não podem ser pré-designados. Ao contrário dos modelos preditivos (supervisionados) que se concentram em prever o comportamento de uma única entidade, os modelos descritivos identificam muitos relacionamentos diferentes entre as entidades, agrupando em clusters os elementos com características similares ou dissimilares. Resumindo, na aprendizagem não-supervisionada buscamos extrair informação relevante de dados não rotulados.

Alguns métodos de aprendizagem não supervisionada:

  • Algoritmos de clustering
  • Análise do componente principal (PCA)
  • Decomposição em valores singulares (SVD)
  • Análise de componentes independentes (ICA)

1.3 - Aprendizagem por Reforço

Na abordagem de aprendizagem por reforço, a máquina tenta aprender qual é a melhor ação a ser tomada, dependendo das circunstâncias na qual determinada ação será executada. Nesse caso, o futuro é uma variável aleatória no qual não se sabe que irá acontecer. Faz-se necessário uma abordagem que seja capaz de levar em consideração a incerteza e que consiga incorporar eventuais mudanças durante o processo de seleção da melhor decisão a ser tomada. Essa ideia é derivada do conceito de aprendizagem por reforço da psicologia, no qual uma recompensa ou punição é dada a um agente, dependendo da decisão tomada. Com o tempo e a repetição dos experimentos, espera-se que o agente consiga associar as ações que geram maior recompensa para cada situação que o ambiente apresenta, e passe a evitar as ações que geram punição ou recompensa menor.

Dentre o conjunto de cenários futuros possíveis, escolher uma ação a se tomar e receber a melhor recompensa associada a essa ação dentro dos cenários possíveis faz com que esse tipo de aprendizagem de máquina aprenda qual é a melhor política ao maximizar a recompensa ao longo das interações com o ambiente.

A aprendizagem por reforço tem bastante influência da Psicologia e da Economia, particularmente do campo de Teoria dos Jogos. Algumas das aplicações de aprendizagem por reforço são construir oponentes em videogames, movimentação de robôs, simulações de ambientes complexos e aprender estratégias de troca no mercado financeiro.

Alguns exemplos de algoritmos de aprendizagem por reforço:

  • Q-learning
  • Sarsa
  • Q(λ)

2 - Avaliação do Modelo de Classificação

A avaliação do sistema de aprendizagem de máquina utiliza as suas duas etapas principais (treinamento e teste) para verificar o desempenho do modelo. Na fase de treinamento, o algoritmo de aprendizagem de máquina constrói indutivamente um modelo do problema com base nos dados de treinamento. De posse desse modelo, o algoritmo produz saídas que provavelmente correspondem às entradas atuais na fase de teste. Essas saídas devem ser passar por um processo de validação para verificar a adequação do sistema de aprendizado. A avaliação do desempenho da classificação consiste em considerar uma das classes de saída como a classe positiva e definir:

  • verdadeiros positivos – nº de amostras corretamente rotuladas na classe positiva
  • falsos positivos - nº de amostras incorretamente rotuladas na classe positiva
  • negativos verdadeiros – nº de amostras corretamente rotuladas como não na classe positiva
  • falsos negativos – nº de amostras incorretamente rotuladas como não na classe positiva

As saídas destes modelos, conforme a Tabela 1, produz a Matriz de Confusão, que indica a quantidade de instâncias foi classificada corretamente e incorretamente para cada classe do problema. Desse modo, verificamos a quantidade de acertos na classificação, falsos positivos e falsos negativos.

Tabela 1 - Matriz de Confusão

Matriz de Confusão

3 - Estatística

A estatística é essencial para a aprendizagem de dados e para a ciência de dados. Os fundamentos básicos da estatística são necessários para, por exemplo, interpretar os dados coletados. Por exemplo, em um teste A/B é importante estar familiarizado com testes estatísticos, distribuições, estimadores de valores máximo ou mínimo, dentre outros. De modo geral, é muito importante saber quais técnicas podem ou não ser aplicadas em um determinado conjunto de dados.

3.1 - Estatística Inferencial ou Descritiva

A amostragem é um dos conceitos mais importantes para compreender a estatística. Quando um conjunto de dados é coletado, de certo modo, apenas uma parte de todos os possíveis dados naquela área específica foi obtida. Esse subconjunto de dados é conhecido como população. A estatística descritiva ocorre quando as medidas quantitativas descrevem as propriedades de uma amostra, representando os dados de forma condensada e clara. Já a estatística inferencial utiliza um subconjunto de dados para inferir as propriedades de uma população maior.

Alguns métodos de estatísticas inferenciais ou descritivas:

  • Média, mediana e moda
  • Desvio padrão e variância
  • Distribuições de dados
  • Teste de significância
  • Teste de hipóteses

4 - Programação

Programar é uma competência essencial nos dias atuais e primordial para quem pretende se tornar um cientista de dados, analista de dados ou estatístico. A grande maioria dos algoritmos utilizados já está disponível para uso em alguma ferramenta ou linguagem de programação, porém, em algum momento será necessário programar um novo sistema de extração e coleta de dados, adaptar um algoritmo de aprendizagem de máquina para outra linguagem de programação ou acessar um banco de dados na nuvem, dentre outra atividades.

Por isso, é muito importante saber o básico quanto o uso de uma ou mais linguagens de programação para poder utilizar suas bibliotecas e pacotes da melhor maneira possível. Boa parte dos pesquisadores, empresas e profissionais em ciência de dados utilizam as linguagens de programação R, Python e Scala. Python vem se tornando uma das mais populares, sendo adotada como linguagem de programação em diversos programas de graduação e pós graduação nas instituições de ensino mais prestigiadas do mundo, como Stanford, MIT e USP. Os exemplos apresentados por aqui serão, na grande maioria das vezes, feitos em Python.

4.1 - Python

Desde que Python passou a ser uma das linguagens de programação mais utilizada na aprendizagem de dados, muitas blibliotecas foram criadas para os mais diversos fins. Python se caracteriza por ser uma linguagem de programação de fácil aprendizado, além de ser muito poderosa e poder ser utilizada em diversas plataformas. Possui uma comunidade ativa que contribui com novas bibliotecas e módulos que são disponibilizados para uso geral de forma gratuita.

Algumas bibliotecas Python:

  • ggplot - biblioteca para a criação de representações gráficas
  • Matplotlib - utilizada para plotagem 3D e capaz de gerar visualizações interativas
  • NumPy - utilizada para análises numéricas amplas e matrizes multidimensionais
  • Pandas - biblioteca para análise de dados
  • SciPy - biblioteca voltada para a computação científica e computação técnica
  • Scikit-learn - biblioteca de aprendizagem de máquina desenvolvida em NumPy, SciPy e Matplotlib