O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018

34 visualizações

Publicada em

Data Mining e Machine Learning são tópicos com bastante apelo na academia e na indústria, devido a sua importância na ciência de dados. Estes conceitos costumam ser tratados de forma conjunta, pois se complementam na sua função de interpretação e modelagem da informação. As técnicas de Data Mining permitem que pesquisadores e desenvolvedores entendam melhor os seus dados, automatizando tarefas importantes como detecção de correlações e padrões, eliminação de informações ruidosas etc. Já as técnicas de ML possibilitam a geração de modelos inteligentes, capazes de assimilar as relações presentes entre os dados para tomar decisões ou prever resultados com base na informação de entrada. Dentre as diversas plataformas disponíveis para desenvolvimento de aplicações de Data Mining/Machine Learning, a linguagem Python se destaca como uma das mais utilizadas para esse propósito, devido a sua ampla coleção de bibliotecas e por ter uma comunidade de desenvolvedores bastante ativa. Essa palestra vai abordar as questões práticas de desenvolvimento em Data Mining e Machine Learning com Python, além de apresentar uma breve fundamentação teórica das técnicas discutidas.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelotas 2018

  1. 1. Data Mining e Machine Learning com Python Prof. Mateus Grellert Universidade Católica de Pelotas
  2. 2. Introdução Link para download da palestra e documentos úteis https://tinyurl.com/tchelinux-grellert QR Code PROF. MATEUS GRELLERT 2
  3. 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. 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. 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. 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. 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. 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. 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. 10. Acessando um Banco em Python Duas formas comuns de acessar bancos em Python com Pandas PROF. MATEUS GRELLERT 10
  11. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 26. Transformação de Dados – Norm. + PCA PROF. MATEUS GRELLERT 26 Código em Python usando os métodos StandardScaler() e PCA()
  27. 27. Transformação de Dados – Norm. + PCA PROF. MATEUS GRELLERT 27 Dados normalizados geram uma distribuição PCA mais separável!
  28. 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. 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. 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. 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. 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. 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. 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
  35. 35. 5 – Avaliação Acurácia da nossa Árvore para o data set “Pima” PROF. MATEUS GRELLERT 35
  36. 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. 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. 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. 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. 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. 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
  42. 42. Salvando Modelos Código para salvar um classificador treinado como uma Rede Neural: PROF. MATEUS GRELLERT 42
  43. 43. Sumarizando Tarefa Método Lib Abrir banco em CSV dataset = read_csv( path, sep = “t” ) Pandas Detectar dados inválidos dataset.isnull( ).any( ) Pandas Imputar dados inválidos dataset.fillna( valor ) Pandas Computar correlação entre colunas df_correlacao = dataset.corr() Pandas Plotar correlação heatmap(df_correlacao) Seaborn Plotar histograma da coluna atributo dataset[atributo].plot.hist( ) Pandas Agrupado por desfecho dataset.groupby("Outcome")[atributo].plot.hist( ) Pandas Normalizar dados de X StandardScaler().fit_transform(X) Scikit-learn PROF. MATEUS GRELLERT 43
  44. 44. Sumarizando Tarefa Método Lib PCA de 3 componentes Xt = PCA(n_components=3).fit_transform(X) Scikit-learn Selecionar K melhores atributos best = SelectKBest( k = K ).fit( X, y ) Scikit-learn Treinar Dec. Tree clf = DecisionTreeClassifier().fit( X, y ) Scikit-learn Obter resultado de CV com 5 subpartições scores = cross_val_score(clf, X, y, cv=5) Scikit-learn Concatenar objetos scikit- learn pipe = Pipeline( [ ( 'scaling', StandardScaler() ), ('clf', DecisionTreeClassifier()) ] ) Scikit-learn Testar combinações de parâmetros com CV-5 gs_clf = GridSearchCV(pipe, params, cv = 5) Scikit-learn Salvar modelo final dump(objeto, arquivo_binario) Pandas Ler o modelo modelo = load(arquivo_binario) Pandas PROF. MATEUS GRELLERT 44
  45. 45. Obrigado! Data Mining e Machine Learning com Python https://tinyurl.com/tchelinux-grellert

×