Aplicativos Web Usando Modelos de IA

  • Treine um modelo de machine learning usando bibliotecas Python em um Jupyter Notebook
  • Incorporar um modelo de machine learning treinado em um aplicativo web Streamlit

Estas são as atividades para esta lição:

TRABALHAR COM MODELOS DE APRENDIZADO DE MÁQUINA

Outro recurso importante do Jupyter Notebooks, Python e Streamlit é a capacidade de treinar modelos de machine learning e fazer previsões. 

Se você for iniciante em Inteligência Artificial, talvez queira ver as lições de IA neste curso para aprender os conceitos básicos antes de entrar nos conceitos mais avançados programação envolvidos aqui. Você pode usar uma plataforma modelo de machine learning fácil de usar, como o Teachable Machine, para criar um modelo e ainda incorporá-lo a um Python aplicativo web. 

Se você já tem alguma experiência com inteligência artificial e trabalha com conjuntos de dados usando o Jupyter Notebooks, esta é uma boa próxima etapa para você. 

Nesta lição, você aprenderá sobre algumas das bibliotecas de machine learning do Python e sobre alguns dos diferentes modelos de machine learning que podem ser criados com o Python. 

Em resumo, para criar um modelo de machine learning, há três partes principais. 

CONJUNTO DE DADOS

ENCONTRA PADRÕES COM O ALGORITMO DE APRENDIZAGEM


PREDIÇÃO/PREVISÃO!

O conjunto de dados é sua entrada para o modelo. Ele pode incluir texto, imagens, sons ou poses. Trabalhamos com dados numéricos e de texto na Unidade 2 usando o Jupyter Notebooks. Continuaremos a trabalhar com dados de texto nesta lição, na forma de uma planilha.

Encontrar padrões é essencialmente construir o modelo de machine learning usando um conjunto de dados. O Python contém muitas bibliotecas que criarão um modelo de IA a partir dos dados. Neste curso, usaremos muitas das funções do pacote scikit-learn. Além das bibliotecas que ele fornece, o site contém muitas informações excelentes sobre machine learning e o processo de criação de modelos. É um ótimo recurso para aprender mais!

Depois de criar o modelo, ele pode ser usado para prever um resultado com base em novas informações. Mais uma vez, o Python fornece bibliotecas que permitem isso.

PRÉ-PROCESSAMENTO DE DADOS

Antes que seu conjunto de dados possa ser enviado ao algoritmo para construir o modelo, ele deve ser pré-processadoou "limpo" para que o algoritmo de criação de modelos possa trabalhar com ele e criar o modelo mais preciso possível. De fato, a maior parte do trabalho para criar um modelo de machine learning está no pré-processamento. Você precisará examinar cuidadosamente os dados para decidir o que é importante, o que pode ser deixado de fora e o que precisa ser limpo.

O que envolve o pré-processamento? Com um conjunto de dados baseado em texto, aqui estão alguns aspectos a serem tratados.

 

Valores nulos

Às vezes, o conjunto de dados contém valores em branco ou nulos, especialmente se os dados forem de pesquisa. Às vezes, você eliminará todas as linhas que tenham dados nulos.

Entretanto, se o número de amostras for baixo, talvez você não queira eliminá-las. Outra opção é substituir um valor nulo por algum outro valor. Ele pode ser zero ou pode ser a média de todos os outros valores desse campo.

Outliers

Às vezes, os dados contêm uma ou duas amostras que são muito diferentes do restante dos dados, o que é chamado de outlier. Isso pode distorcer o modelo. Você não quer que esses outliers afetem a forma como o modelo é criado, portanto, muitas vezes os outliers são eliminados do conjunto de dados.

Por exemplo, você pode ter um conjunto de dados em que 95% das amostras são de pessoas com idade entre 10 e 30 anos, mas há algumas amostras aleatórias em que as pessoas têm mais de 50 anos. Como a grande maioria das amostras está na faixa etária de 10 a 30 anos, você pode considerar a remoção das amostras da faixa etária mais velha.

Padronização

Muitas vezes, os números em um grande conjunto de dados variam, dependendo de quais recursos são representados. Por exemplo, você pode ter idade, que varia de 0 a 70, mas também pode ter salário, que varia de 0 a 500.000! As escalas são muito diferentes, portanto, um recurso pode contar mais no modelo.

Para corrigir isso, é possível padronizar os dados para que fiquem em uma única escala. O scikit-learn fornece um StandardScaler, que atualiza cada recurso para que a média seja 0 e o desvio padrão seja 1.

Outro aspecto a ser considerado é um número equilibrado de amostras para cada classe ou rótulo. Você quer ter certeza de que há aproximadamente o mesmo número de cada classe em seu conjunto de dados.

Codificação

A IA gosta de números, não necessariamente de palavras. Portanto, é útil ter todos os dados convertidos em números. O scikit-learn fornece funções de codificador para que você possa converter facilmente um intervalo de possíveis valores de texto em um intervalo de números.

Um exemplo poderia ser os níveis de atividade, com valores de amostra sedentários, leves, moderados e altos. Essas respostas poderiam ser codificadas como valores 0, 1, 2 e 3, o que é muito mais fácil para o algoritmo de criação de modelos.

DIVISÃO DE DADOS

Depois de pré-processar os dados, você precisa dividi-los em um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento será usado para treinar e criar o modelo. Em seguida, você testará o modelo usando o conjunto de teste para ver o desempenho dele.

Há maneiras padrão de dividi-lo (geralmente 75% para treinamento e 25% para teste), mas você pode dividi-lo como quiser. Novamente, são fornecidas funções para que tudo seja automatizado para você. 

CRIANDO O MODELO

A próxima etapa é a criação do modelo. Uma grande decisão a ser tomada é: qual algoritmo devo usar? Há muitos algoritmos diferentes de aprendizado supervisionado para escolher, e é difícil saber qual deles usar. Um bom processo é experimentar vários algoritmos diferentes e ver qual deles oferece a melhor precisão. 

A primeira etapa é decidir se você precisa de uma classificação ou um algoritmo de regressão algoritmo de regressão. Isso depende do que você está tentando prever. 

Algoritmos de classificação são usados para prever alvos ou classes discretas. Por exemplo, classificar um e-mail como spam ou não spam seria um problema de classificação

Algoritmos de regressão são usados para prever algo que está em um intervalo contínuo. Um exemplo seria a previsão do salário que uma pessoa receberá. A previsão é um intervalo de números e o resultado pode ser qualquer valor ao longo desse intervalo. 

Aqui estão apenas alguns dos tipos mais populares de algoritmos de criação de modelos.

rede neural

Classificação

  • Árvore de decisão
  • Floresta aleatória 
  • Vizinhos mais próximos K
  • Naive Bayes
  • Regressão logística
  • Máquina de vetor de suporte

Regressão

  • Regressão linear
  • Regressão Ridge
  • Regressão Lasso
  • Regressão polinomial
  • Regressão linear bayesiana
  • Regressão de vetor de suporte

Observe que alguns algoritmos se enquadram em ambos os tipos. Por exemplo, há um Classificador de Árvore de Decisão e um Regressor de Árvore de Decisão. E uma máquina de vetor de suporte funciona para classificação, e a regressão de vetor de suporte funciona para regressão. 

Então, como você decide qual deles usar? Você deve pesquisar para ver o que outros cientistas de dados usam em diferentes situações para ver o que pode servir para o seu modelo. Você também deve experimentar alguns algoritmos diferentes com seus dados e descobrir qual deles oferece a melhor precisão. Você também pode ajustar os parâmetros de um determinado algoritmo para ver se ele retorna um modelo mais preciso. 

O scitkit-learn fornece funções para todos esses algoritmos, portanto, é fácil criar o modelo. 

AVALIAÇÃO DO MODELO

Você deseja que seu modelo seja o melhor possível, portanto, é necessário avaliar seu desempenho. Duas variáveis comuns na avaliação de um modelo são a tendência e a variação. 

Viés é a diferença entre o valor previsto do modelo e o valor correto. 

Variância é o quanto as previsões mudam quando dados diferentes são usados. 

Você deseja obter um bom equilíbrio entre a tendência e a variação.

Alta tendência -> subajuste.

Subajuste ocorre quando o modelo é simples demais para levar em conta o ruído nos dados de treinamento. Isso pode ocorrer se não houver dados suficientes ou recursos (colunas) insuficientes, ou se houver muito ruído nos dados. Se um modelo não tiver um bom desempenho nos dados de treinamento e nos dados de teste, isso indica subajuste.

Alta variação -> ajuste excessivo.

Sobreajuste acontece quando você treina um modelo em um conjunto de dados e ele tem um desempenho muito bom, mas se você o apresentar a novos dados, ele não terá um bom desempenho. Isso pode ocorrer se o modelo for excessivamente complexo e tentar se ajustar muito bem aos dados de treinamento. O modelo pode prever muito bem os dados de treinamento, mas depois ter um desempenho ruim nos dados de teste.

Uma técnica para verificar o desempenho de um modelo é a validação cruzada.

Validação cruzada significa treinar seu modelo várias vezes, usando diferentes divisões de dados de treinamento/teste a cada vez. Seu conjunto de dados é dividido em várias dobrasou subconjuntos. Em seguida, uma dobra é mantida como conjunto de validação ou teste e as dobras restantes são usadas para treiná-la. Isso é feito várias vezes, portanto, a cada vez, os conjuntos de treinamento e teste mudam. 

 

O sciikit-learn também fornece uma função métricas para que você possa obter facilmente pontuações de desempenho para seus modelos. 

  • pontuação de precisão = previsões corretas/total de previsões
  • precisão = positivos verdadeiros/(positivos verdadeiros + falsos positivos)
  • recall = verdadeiros positivos/(verdadeiros positivos + falsos negativos)
  • Pontuação F1 = (2 x precisão x recuperação)/(precisão + recuperação)
  • especificidade = verdadeiro negativo/ (verdadeiros positivos + falsos negativos)
  • matriz de confusão - mostra as contagens de verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos

Ao verificar as métricas de vários algoritmos, você pode escolher o melhor modelo. 

PREDICANDO!

Quando você tiver um modelo que a satisfaça, poderá usá-lo no app. 

É prática comum fazer o pré-processamento, a criação e a avaliação do seu modelo usando Python, em um ambiente como o Jupyter Notebooks. A partir daí, você pode exportar seu modelo como um arquivo.

Em seguida, no aplicativo Streamlit, você pode carregar o modelo e usá-lo para fazer previsões. 

Nas atividades desta lição, você passará por todo esse processo usando um conjunto de dados de risco de AVC. Você verá como pré-processar os dados, criar modelos usando diferentes algoritmos e, em seguida, usar um modelo em um aplicativo Streamlit simples para prever o risco de AVC, considerando algumas características de entrada. 

ATIVIDADE 1: TREINE UM MODELO DE IA NO JUPYTER NOTEBOOK

Tempo estimado: 60 minutos

Explore um conjunto de dados de risco de derrame para criar um modelo de IA

Siga isto vídeo para:
  1. Faça o download de um conjunto de dados de previsão de AVC do Kaggle.
  2. Trabalhe com os dados em um Jupyter Notebook para:
    • Revise os dados
    • Pré-processe os dados para prepará-los para o modelo
    • Crie alguns modelos diferentes
    • Avaliar e escolher um modelo para o app
    • Exporte o modelo
Download do Notebook

DESAFIO

Experimente um modelo diferente dos que estão no Jupyter Notebook. 

  1. Pesquise no site do scikit-learn outros algoritmos de classificação e dê uma olhada em outros exemplos de criação de modelos no Kaggle.
  2. Escolha um algoritmo e adicione o código ao seu notebook para criar o modelo.  
  3. Use as métricas do scikit-learn para verificar a precisão. 

Qual é o desempenho de seu modelo? Ele é melhor do que qualquer um dos outros algoritmos do notebook?

ATIVIDADE 2: CRIE UM APLICATIVO DE PREVISÃO

Tempo estimado: 45 minutos

Use seu modelo em um aplicativo Streamlit

Siga este vídeo para criar um aplicativo web que fará uma previsão de risco de AVC com base na entrada do usuário.

DESAFIO

O conjunto de dados Iris é um conjunto de dados clássico que classifica as flores de íris em três espécies (setosa, versicolor e virginica) com base nas dimensões da pétala e da sépala.

  1. Faça uma pesquisa sobre o conjunto de dados para conhecer seus recursos e alvos. 
  2. Você pode fazer o download do conjunto de dados e criar seu próprio modelo ou usar este modelo(arquivo pickle) criado usando o K-nearest neighbors. Observe que nenhum dimensionador foi necessário para esse conjunto de dados. O arquivo pickle contém apenas o modelo.
  3. Importe o modelo e crie um aplicativo Streamlit para prever as espécies de íris com base nos quatro recursos do conjunto de dados.

INSPIRAÇÃO TECHNOVATION

Aqui estão alguns exemplos incríveis de participantes do Technovation que usaram Python e Streamlit para criar aplicativos web incorporando modelos de machine learning. 

REFLEXÃO

Você passou por todo o processo de pré-processamento de um conjunto de dados, criou vários modelos, avaliou e escolheu um para usar em um aplicativo. Isso é MUITO para aprender em uma única lição!

reflexão
Que tipo de modelo você acha que precisará para sua solução - classificação ou regressão?
Quais partes você achou difíceis de entender?
Que medidas você pode tomar agora para aprender mais e criar sua solução?
Slide anterior
Próximo slide

REVISÃO DOS PRINCIPAIS TERMOS

  • Pré-processamento - pegar um conjunto de dados e garantir que os dados nele contidos sejam adequados para treinar um modelo de machine learning com
  • Algoritmo de classificação - um algoritmo usado para treinar um modelo de machine learning que classificará ou preverá valores discretos
  • Algoritmo de regressão - algoritmo usado para treinar um modelo de machine learning para prever um valor em um intervalo contínuo
  • Viés - a diferença entre o valor previsto do modelo e o valor correto, devido a suposições incorretas que simplificam o modelo
  • Variância - a quantidade de variabilidade nas previsões do modelo, quando um modelo é incapaz de generalizar quando confrontado com novos dados
  • Ajuste excessivo - quando o modelo se ajusta muito bem aos dados de treinamento e não consegue prever bem os novos dados, o que é causado pela alta variação no modelo
  • Subajuste - quando um modelo é simplificado demais e não apresenta bom desempenho nos dados de treinamento ou de teste, causado por alta tendência ou suposições no modelo
  •  

RECURSOS ADICIONAIS

Machine Learning (Aprendizado de máquina) 

Streamlit