Este documento apresenta um resumo sobre data mining e machine learning com Python. Ele introduz os conceitos de ciência de dados, data mining e machine learning, discute exemplos de aplicações e fontes de dados. Também aborda ferramentas em Python como pandas e scikit-learn, e o fluxo de projeto que inclui limpeza, visualização, transformação, treinamento e avaliação de modelos preditivos.
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018
1. Data Mining e Machine
Learning com Python
Prof. Mateus Grellert
Universidade Católica de Pelotas
2. Introdução
Link para download da palestra e documentos úteis
https://tinyurl.com/tchelinux-grellert
QR Code
PROF. MATEUS GRELLERT 2
3. Introdução
Tanto Data Mining quando Machine Learning são ferramentas da
Ciência de Dados
A Ciência de Dados estuda métodos de extração de conhecimento
com base em informações coletadas de diferentes fontes
O objetivo é buscar a relação entre valores observáveis
(computáveis) e não observáveis (não computáveis)
Também usamos os termos atributos e desfecho/classe para
valores observáveis e não observáveis respectivamente
PROF. MATEUS GRELLERT 3
4. Introdução
PROF. MATEUS GRELLERT 4
Bancos
de Dados
Técnicas de
Processamento
e Análise
Algoritmos
de Modelagem
Machine
Learning
Data
Mining
Bibliotecas
e software
Ciência
de Dados
5. Data Mining x Machine Learning
Exemplos de aplicações que utilizam DM/ML
Reconhecimento de objetos/ações
Análise de sentimento
Diagnóstico de doenças
Prevenção de desastres naturais
Sistemas de recomendação
Sistemas autônomos
PROF. MATEUS GRELLERT 5
6. Mas afinal de onde vêm os dados?
Existem diversas fontes públicas que fornecem dados para
análise:
UCI Machine Learning Repository
Kaggle
Youtube-8M
APIs como Twitter Streaming
...
Fontes de Dados
PROF. MATEUS GRELLERT 6
7. Tipos de Dados
Os dados são normalmente categorizados conforme a faixa
de valores que eles representam, podendo ser:
Dados categóricos: são aqueles que assumem um subconjunto
finito de valores. Exemplo: a variável “Choveu” somente assume os
valores V ou F.
Dados numéricos: assumem uma faixa contínua de valores.
Exemplo: temperatura pode assumir qualquer valor entre (-273, inf)
PROF. MATEUS GRELLERT 7
8. Ferramentas de DM/ML
OK, já tenho os dados. Como começo a desenvolver aplicações
de DM/ML?
Hoje em dia, existem duas linguagens que se destacam para
esse propósito: Python e R
Algumas Bibliotecas em Python úteis para desenvolvimento de
aplicações DM/ML
numpy
pandas
scipy
PROF. MATEUS GRELLERT 8
scikit-learn
matplotlib
nltk
seaborn
imblearn
pickle
9. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 9
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação 6. Refinamento
Modelo
Preditivo
Data Mining Machine Learning
10. Acessando um Banco em Python
Duas formas comuns de acessar bancos em Python com
Pandas
PROF. MATEUS GRELLERT 10
11. Exemplo de Banco em CSV
PROF. MATEUS GRELLERT 11
Vamos ver como fica na prática usando um banco cujo desfecho é a
diabetes em mulheres indígenas (Pima Indians Dataset)
Fonte: https://www.kaggle.com/uciml/pima-indians-diabetes-database
atributos desfecho
12. Acessando um Banco em Python
Quando usamos Pandas, o banco fica armazenado em uma estrutura
chamada Dataframe, que é organizada em linhas e colunas
identificadas
PROF. MATEUS GRELLERT 12
13. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 13
Banco de
Dados
1. Limpeza/
Processamento
Data Mining Machine Learning
14. A primeira tarefa que realizamos é o tratamento dos dados
armazenados no banco
Dependendo de como os dados são adquiridos e representados,
essa tarefa pode ser até mesmo desconsiderada
Existem duas situações que exigem atenção:
Dados não estruturados: se estivermos trabalhando com esse tipo de
dado, essa etapa vai ser bem mais complexa
Dados não preenchidos ou mal preenchidos: normalmente são mais
simples de tratar
1 – Limpeza e Pré-processamento
PROF. MATEUS GRELLERT 14
15. 1 – Limpeza e Pré-processamento – missing
values
Podemos simplesmente remover as amostras com dados não preenchidos,
mas isso pode eliminar exemplos importantes de treinamento
Uma alternativa para isso é usar a imputação de dados
A técnica consiste em substituir os valores faltantes em cada coluna por
um valor neutro como a média (dados numéricos), a mediana ou a moda
(dados categóricos)
Alguns estatísticos criticam essa abordagem por gerar um desvio padrão
subestimado
Melhor imputar ou remover? Depende, vale sempre testar os dois casos
PROF. MATEUS GRELLERT 15
16. 1 – Limpeza e Pré-processamento – Imputação
PROF. MATEUS GRELLERT 16
detectamos colunas com
valores nulos pelo
método isnull.any()
para imputar dados em
colunas com valores
nulos, usamos o método
fillna(val)
val é o valor que vai
substituir. Nesse caso
usamos a média
(calculada pelo método
mean() )
17. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 17
Banco de
Dados
1. Limpeza/
Processamento
2. Visualização e
Análise
Modelo
Preditivo
Data Mining Machine Learning
18. Visualização e Análise de Dados
Permite avaliar de forma visual a distribuição dos dados
Para dados categóricos, usamos o histograma de valores,
que representa quantas vezes cada valor ocorreu
Para dados numéricos, podemos usar histogramas, ou a
função densidade de probabilidade (PDF) ou semelhante
É interessante agrupar os histogramas/PDFs de acordo com
o valor do desfecho (vamos ver o exemplo pra ficar claro)
PROF. MATEUS GRELLERT 18
19. Visualização e Análise de Dados
A visualização vai permitir uma análise inicial de que dados são úteis
para prever o nosso desfecho
Dados úteis são aqueles que nos permitem separar os grupos de
desfecho de forma homogênea (idealmente linear)
PROF. MATEUS GRELLERT 19
Fonte: http://www.cs.uccs.edu/~jkalita/work/cs587/2014/03SimpleNets.pdf
20. Visualização e Análise de Dados
20
Código para plotar histogramas usando o método plot.hist() do
pandas agrupados pelo desfecho de diabetes (coluna “Outcome”)
Usamos groupby(“Outcome”) para agrupar os dados primeiro
21. Visualização e Análise de Dados
PROF. MATEUS GRELLERT 21
- O nível de glicose pode ser útil
para separar os desfechoss de
diabetes.
- Na região (50, 100) existe maior
ocorrência de casos negativos.
- Na região (150, 200) de casos
positivos
22. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 22
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
Modelo
Preditivo
Data Mining Machine Learning
23. Transformação de Dados
Consiste em tratar os dados para:
aumentar a qualidade da informação de entrada
reduzir o número de atributos para gerar modelos mais simples
(Curse of Dimensionality)
normalizar os valores para a mesma escala (necessário para
algumas técnicas)
PROF. MATEUS GRELLERT 23
24. Transformação de Dados – Normalização
Normalizar os atributos é necessário para que algumas
técnicas funcionem corretamente (PCA e SVMs são exemplos
clássicos)
Para isso, mapeamos os valores para uma nova faixa de
representação
Standard Scaling: para cada atributo, subtraímos a média e
dividimos pela variância. Isso faz com que todos os atributos
tenham média zero e variância unitária.
PROF. MATEUS GRELLERT 24
25. Transformação de Dados – PCA
Um transformação comum para aumentar a qualidade e reduzir o conjunto de
atributos se baseia no método Principal Component Analysis (PCA)
O PCA combina os atributos linearmente, buscando por componentes que
maximizam a variância da distribuição dos dados e que são ortogonais entre si
PROF. MATEUS GRELLERT 25
1o componente principal
(máxima variância)
Fonte: adaptado de https://gerardnico.com/data_mining/pca
2o componente principal
26. Transformação de Dados – Norm. + PCA
PROF. MATEUS GRELLERT 26
Código em Python usando os métodos StandardScaler() e
PCA()
27. Transformação de Dados – Norm. + PCA
PROF. MATEUS GRELLERT 27
Dados normalizados
geram uma distribuição
PCA mais separável!
28. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 28
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento
Modelo
Preditivo
Data Mining Machine Learning
29. 4 – Treinamento
Consiste em treinar modelos preditivos usando um algoritmo
de Machine Learning
Existem diferentes algoritmos, cada um com suas vantagens
e desvantagens
Primeiro precisamos selecionar os algoritmos de acordo com
nosso desfecho:
Para desfecho categórico: usamos técnicas de classificação
Para desfecho numérico: usamos técnicas de regressão
PROF. MATEUS GRELLERT 29
30. 4 – Treinamento
Desfecho Algoritmo Scikit-learn
Categórico
Regressão Logística sklearn.linear_model.LogisticRegression
Árvores de Decisão sklearn.tree.DecisionTreeClassifier
SVMs de classificação sklearn.svm.SVC
Redes Neurais sklearn.neural_network.MLPClassifier
Numérico
Regressão Linear sklearn.linear_model.LinearRegression
SVMs de regressão sklearn.svm.SVR
Redes Neurais sklearn.neural_network.MLPClassifier
Regressor baseado em SGD sklearn.linear_model.SGDRegressor
PROF. MATEUS GRELLERT 30
31. 4 – Treinamento – Árvores de Decisão
Árvores de Decisão são ótimos modelos iniciais. São eficientes para muitos
casos e fáceis de interpretar
Para qualquer classificador, sempre vamos treiná-lo pelo método fit(X,y)
Para aplicar o modelo a uma entrada X, usamos o método predict(X) que retorna
um y predito.
PROF. MATEUS GRELLERT 31
Saída:
32. Glucose ≤ 127.5
gini = 0.454
samples = 768
value = [500, 268]
class = ~diabetes
Age ≤ 28.5
gini = 0.313
samples = 485
value = [391, 94]
class = ~diabetes
True
BMI ≤ 30.2
gini = 0.474
samples = 283
value = [109, 174]
class = diabetes
False
BMI ≤ 30.95
gini = 0.155
samples = 271
value = [248, 23]
class = ~diabetes
Glucose ≤ 103.5
gini = 0.443
samples = 214
value = [143, 71]
class = ~diabetes
gini = 0.026
samples = 151
value = [149, 2]
class = ~diabetes
gini = 0.289
samples = 120
value = [99, 21]
class = ~diabetes
gini = 0.32
samples = 90
value = [72, 18]
class = ~diabetes
gini = 0.489
samples = 124
value = [71, 53]
class = ~diabetes
gini = 0.452
samples = 81
value = [53, 28]
class = ~diabetes
Glucose ≤ 157.5
gini = 0.401
samples = 202
value = [56, 146]
class = diabetes
gini = 0.476
samples = 113
value = [44, 69]
class = diabetes
gini = 0.233
samples = 89
value = [12, 77]
class = diabetes
4 – Treinamento – Árvores de Decisão
Árvore obtida com o data set “Pima Indians Diabetes”
PROF. MATEUS GRELLERT 32
Atributo mais importante fica na raiz
da árvore
As decisões ficam sempre nas folhas.
A árvore é percorrida de acordo com
os testes lógicos feitos em cada nó.
33. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 33
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação
Modelo
Preditivo
Data Mining Machine Learning
34. 5 – Avaliação
A avaliação de desempenho de um modelo pode ser feita de
várias formas
Uma forma bastante comum é simplesmente computar a
taxa de acertos do modelo com relação a uma saída de
referência, chamado de acurácia
!"" =
∑(&'()*== &()!+)
|&|
Outras formas podem ser consideradas quando os erros
possuem pesos diferentes. Exemplo: diagnóstico de câncer
PROF. MATEUS GRELLERT 34
36. 5 – Avaliação – Overfitting
100% de acerto? A minha árvore é perfeita!!
Não é bem assim... isso pode ter ocorrido por causa de um
fenômeno conhecido como Overfitting
Overfitting: ocorre quando o modelo funciona muito bem
para os dados de treino, mas perde desempenho quando
outras amostras são testadas
Vamos usar uma técnica mais confiável
PROF. MATEUS GRELLERT 36
37. 5 – Avaliação – Validação Cruzada
Vamos checar o desempenho de nossa árvore usando uma técnica
mais confiável chamada Validação Cruzada (Cross Validation – CV)
A CV separa o conjunto de treino em N subpartições de tamanho
igual. N-1 subpartições são usadas para treino e 1 para teste.
PROF. MATEUS GRELLERT 37Fonte: https://www.kaggle.com/dansbecker/cross-validation
38. 5 – Avaliação – Validação Cruzada
PROF. MATEUS GRELLERT 38
O método para CV é:
cross_val_score(clf, X, y, cv)
clf é o classificador treinado
cv é número de subpartições
Notem que a acurácia da CV é
muito menor! Isso mostra que
precisamos refinar nosso
treinamento
39. Fluxo de projeto integrando DM e ML:
Desenvolvimento de Aplicações DM/ML
PROF. MATEUS GRELLERT 39
Banco de
Dados
1. Limpeza/
Processamento
3. Transformação
2. Visualização e
Análise
4. Treinamento 5. Avaliação 6. Refinamento
Modelo
Preditivo
Data Mining Machine Learning
40. 6 – Refinamento
Cada algoritmo de classificação possui parâmetros de treino
que alteram o modelo gerado
Dependendo dos parâmetros, vamos ter modelos melhores
ou piores
A etapa de refinamento consiste em explorar diferentes
valores para esses parâmetros, a fim de achar a melhor
combinação
PROF. MATEUS GRELLERT 40
41. Depois de passar horas treinando modelos, a melhor forma
de não passar por todo esse trabalho de novo é salvar o
objeto scikit-learn num arquivo
Para isso, existe uma biblioteca chamada pickle, pela qual
conseguimos salvar objetos e depois recarregá-los na
memória
pickle.dump( objeto, arquivo_binário ) : para salvar
objeto = pickle.load( arquivo_binário ) : para carregar
Salvando Modelos
PROF. MATEUS GRELLERT 41