Machine Learning

O que devemos saber

  • Existe a bastante tempo mas só recemente vem se popularizando
  • Companhias querem usar ML, mas não possuem certeza sobre o que é isso ou aonde aplicar
  • Possui um grande potencial mas não da resultados instantaneos, é preciso responder as perguntas certas e planejar cuidadosamente o projeto
  • Tenha certeza que você possui: dados certos, pessoas e processos. Se tudo estiver certo, tenha certeza que um projeto de ML pode salvar boas quantias de dinheiro e aumetar a produtividade após algum meses de desenvolvimento!

Aplicações

Analises e Manutenção Preditivas

  • Falhas e Configuração de Equipamentos
  • Controle de Qualidade
  • Quais ações são mais efetivas
  • Escolha de investimentos e parceiros
  • Previsão de demanda
  • Treinamentos de robôs

Passos para Aplicação de ML

Dados

  • Coletar fontes diferentes. Históricos, ERP, etc.
  • Coleta automizada
  • Qualidade é mais importante que quantidade

Classificar Dados

  • Pessoas domínio do processo para classificar os dados como bons ou ruins

Escolher uma questão

  • Começar com o que você realmente quer saber
  • Função de custo

Usar conhecimento do processo (Domain Knowledge)

  • Quais dados podem responder sua questão?
  • É possível adquirir dados nulos?
  • Qual a qualidade dos dados?
  • Eliminar variáveis dependentes. Mais atributos = Modelo mais complexo.

ETL (Extract, Transform, Load)

  • Posso automatizar cada passo?
  • Posso obter novos dados automaticamente?
  • O quão limpos os dados devem estar?
  • Como os valores nulos serão manipulados? Remoção completa, substituído pela média ou pelo valor recorrente?

Visualizar seus dados

Procurar por:

  • Problemas nos dados
  • Tendências
  • Algoritmo

Qual algoritmo usar?

  • Classificação ou Regressão?
  • Dados Classificados ou não classificados?
  • Regras de associação
  • Tolerante a dados nulos?
  • Aprendizado Incremental/Tardio (Lazy Learners)? Gerar um novo modelo(retraining)?
  • Black box vs Maior legibilidade?
  • Tolerante a outliers?

Qual plataforma utilizar?

  • Computação na nuvem ou local?
  • Quão flexível é?
  • Quão fácil é obter dados nessa plataforma?
  • Quão fácil é obter resultados utilizáveis? Poder ser automatizado?

Testar o modelo

  • Técnicas de testes
  • Quão preciso é?
  • Possuir históricos dos passos e reavaliar quando necessário

Como Funciona

Treinamento e Criação do Modelo!

Predição pelo Computador

Machine Learning em Python

Exemplo utilizando a biblioteca scikit-learn e algoritmo KNN

Dataset utilizado: Boston house prices

Objetivo do exemplo é predizer o valor de um imóvel em Boston utilizando dados já existentes referente a outros imóveis.

In [1]:
from sklearn.datasets import load_boston

import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor

boston = load_boston()
#numero de vizinhos próximos
K = 9
#algoritmo para ser utilizado
knn = KNeighborsRegressor(n_neighbors=K)

Separa os dados para serem utilizado no treinamento do algoritimo

  • x são os dados de entrada
  • y valor do imóvel
In [2]:
#numero de registros utilizado para gerar o modelo
n_data = 100

x, y = boston.data[:n_data], boston.target[:n_data]

Executa o Treino com os dados

In [3]:
knn.fit(x, y)
Out[3]:
KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',
          metric_params=None, n_jobs=None, n_neighbors=9, p=2,
          weights='uniform')

Executa a Predição

In [4]:
valor_predicao = knn.predict([boston.data[0]])
In [5]:
valor_real= boston.target[0]

print("Valor Real: ",valor_real)
print("Valor Estimado: ",valor_predicao[0])
Valor Real:  24.0
Valor Estimado:  21.08888888888889

Comparação entre Valores Preditos x Valores Reais

In [6]:
import numpy as np

#Predizendo N_data valores
y_predicted = knn.predict(x)

#Visualização gráfica
plt.plot(np.linspace(-1, 1, n_data), y, label='Valores Reais', color='black')
plt.plot(np.linspace(-1, 1, n_data), y_predicted, label='Valores Preditos', color='red')
plt.legend()
plt.show()

Ajustando parâmetros do algoritimo, como por exemplo o K, ou utilizando mais dados a precisão do modelo pode aumentar ou diminuir.