Sim, neste post vamos aprender a estudar Machine Learning (ML). Na prática, o que vamos fazer é dar um passo para trás (sem retroceder), sair da confusão, olhar o problema por fora e por um outro ângulo. O nome disso é abstração ou generalização da “coisa” que você quer aprender. Ah sim, você pode seguir esta lógica para aprender qualquer assunto.

Vamos combinar uma coisa aqui: Vamos nos divertir e não sofrer, certo? Já sabemos que existem milhares de técnicas, ferramentas, algoritmos e teorias sobre ML. Também não vamos nos preocupar com termos e definições extremamente detalhadas. Como eu disse, sem sofrimento.

Lhe garanto: ao final deste post você será capaz de participar de uma banca de TCC para avaliar um projeto de aprendizagem de máquina.

Muito bem, vamos cravar nossa principal premissa: Qual a missão de um projeto de ML? Resposta: Descobrir padrões em um conjunto de dados. Deixe isso guardado em algum canto da sua mente.

Sabendo disso, sempre considere fazer a seguinte pergunta: Pessoas poderiam descobrir estes padrões nos dados melhor (incluindo custo benefício) do que máquinas (lembre-se que Machine Learning = Aprendizado de Máquina)? Se sim, esqueça as máquinas e contrate as pessoas.

Vamos inverter o centro da discussão: Não se trata de Machine Learning, mas sim de análise de dados. Sempre que possível siga o padrão KISS (Keep It Simple, Stupid). Essa foi nossa primeira lição.

Passei pelos primeiros critérios e realmente preciso aplicar ML para descobrir estes padrões. Muito bem, agora fale minha língua: O que são estes malditos padrões que tanto falamos? Acho que você estava pensando nisso…não?

Considere padrões como aquilo que você quer aprender com os dados. Por exemplo, qual a probabilidade de uma determinada transação de cartão de crédito ser falsa? Para responder a esta pergunta é necessário descobrirmos o padrão de uma transação de cartão de crédito falsa! Sem mágicas.

Então, considere que os algoritmos de aprendizagem de máquina utilizam os dados para treinar e descobrir estes padrões. Sempre que alguém te falar que está treinando um modelo, significa que a pessoa está usando um algoritmo de aprendizagem de máquina para descobrir padrões em um conjunto de dados. Mas aqui vai o ponto principal desta discussão: como o algoritmo está aprendendo?

Há duas formas em que um algoritmo pode aprender: supervisionado por uma classe ou não supervisionado. Na abordagem supervisionada, nós informamos ao algoritmo a classificação dos dados para que ele encontre o padrão.

No nosso exemplo de cartão de crédito, seria mais ou menos assim:

ID Valor da transação Tipo da transação Classificação
1 R$ 100,00 Crédito a prazo Normal
2 R$ 150,00 Crédito a prazo Normal
3 R$ 120,00 Crédito a prazo Normal
4 R$ 4.000,00 Crédito a vista Normal
5 R$ 3.500,00 Crédito a prazo Fraude

Basicamente estou dizendo ao algoritmo que eu não sei qual o padrão existente nos dados, mas sei que a transação 5 é fraude. Talvez o algoritmo descubra que toda transação de crédito a prazo com valor acima de R$ 1000 é fraude (esse é o padrão).

Como isso se operacionaliza? Simples também: Você poderia criar uma processo de negócio que, antes de processar uma transação com estas características, faça algumas perguntas de segurança ao dono do cartão.

Agora imagine um conjunto de dados com 300 colunas e 1 milhão de observações…É por isso que a máquina passa a ser importante para analisar os dados.

Desta vez, imagine que o algoritmo receba um conjunto de dados sem a classe:

ID Valor da transação Tipo da transação
1 R$ 100,00 Crédito a prazo
2 R$ 150,00 Crédito a prazo
3 R$ 120,00 Crédito a prazo
4 R$ 4.000,00 Crédito a vista
5 R$ 3.500,00 Crédito a prazo

Viu só, difícil dizer o que é fraude, não? Mas podemos identificar anomalias nestes dados e chegar a conclusões parecidas. Talvez dizer que o valor da transação 5 está muito longe do valor médio de uma transação de crédito a prazo. É assim que os algoritmos não supervisionados trabalham.

Então esta foi a nossa segunda lição: Identificar se o problema está relacionado ao aprendizado supervisionado ou não supervisionado.

Muito bem! Agora que você já sabe qual a classificação do seu problema, você vai definir toda a estratégia do seu modelo. Considere modelo como as etapas que você seguirá para desenvolver uma solução.

E agora nossa terceira lição: Criar o mapa mental do seu projeto de ML. Recentemente apresentei a figura abaixo em um fórum que discutia a metodologia para desenvolver modelos.

mapa

A nossa lição três se resume a saber que existe um conjunto de macro atividades que devem ser conduzidas para criação de um modelo de ML. Estas atividades começam na definição clara e objetiva do problema e se estende até a operacionalização do modelo.

Então, se você estiver avaliando um projeto de ML, você poderia perguntar:

  • Houve alguma preparação prévia dos dados?
  • Quais algoritmos de ML foram testados?
  • Como o modelo foi validado?

Olha o especialista aparecendo! É isso pessoal, entender o processo genérico lhe dará a base necessária para entrar nos detalhes:

  • Quando você ler um artigo sobre feature selection (escolha das variáveis para treinar um algoritmo), posicione sua mente no item 2 do mapa acima.
  • Se alguém começar a falar sobre model selection (escolha do melhor algoritmo para encontrar os padrões), lembre-se que você está no item 3 do mapa
  • Quando começar a ler artigos sobre métricas de avaliação de modelos (como accuracy, recall, curva ROC, etc), então você está na fase 4 do mapa.

Aos poucos você vai perceber que algumas técnicas podem transcender este mapa e aparecer em mais de um lugar…aos poucos os pontos se conectam, desde que estas lições estejam na sua mente.

Recentemente li um artigo muito interessante em http://machinelearningmastery.com/ que quebrava este mapa que apresentei em tarefas que efetivamente serão feitas. Achei que você gostaria de saber:

# 1. Prepare Problem
# a) Load packages
# b) Load dataset
# c) Split-out validation dataset

# 2. Summarize Data
# a) Descriptive statistics
# b) Data visualizations

# 3. Prepare Data
# a) Data Cleaning
# b) Feature Selection
# c) Data Transforms

# 4. Evaluate Algorithms
# a) Test options and evaluation metric
# b) Spot-Check Algorithms
# c) Compare Algorithms

# 5. Improve Accuracy
# a) Algorithm Tuning
# b) Ensembles

# 6. Finalize Model
# a) Predictions on validation dataset
# b) Create standalone model on entire training dataset
# c) Save model for later use

Minha última dica (essa é de ouro): Existem inúmeras referências de livros e cursos sobre este tema. Porém, se você ler os livros de Jason Brownlee em https://machinelearningmastery.com e fizer a especialização de data Science da Johns Hopkins University em https://www.coursera.org/specializations/jhu-data-science, certamente você estará pronto para trabalhar nesta área.

Se resolver estudar com Jason Brownlee, sugiro que adquira o material pelo site oficial. Não é caro, aliás, se compararmos com o seu retorno está de graça.

Sobre o tempo, vai depender apenas de você! Espero ter ajudado na sua jornada.

Grande abraço.
Weslley Moura

Anúncios