Machine Learning: Conceitos e Modelos — Parte I: Aprendizado Supervisionado*
Machine Learning — ou Aprendizado de Máquina — é uma das técnicas utilizadas na Inteligência Artificial que usa algoritmos baseados em matemática e estatística para realizar a tarefa de aprendizado. Machine Learning surge da necessidade de processar e obter informação útil a partir dos dados e, uma vez que é inviável realizar manualmente o processamento e análise da grande quantidade de dados que temos disponíveis atualmente, é necessário automatizar tarefas, simulando o comportamento humano.
Desta forma, podemos definir Machine Learning como a utilização de algoritmos com a finalidade de extrair informações de dados brutos e representá-los por meio de algum tipo de modelo matemático. Este modelo é então usado para fazer inferências — ou predições — a partir de novos conjuntos de dados. Machine Learning busca, em geral, descobrir padrões ou fórmulas matemáticas que expliquem o relacionamento entre os dados, e estuda formas de automatização de tarefas inteligentes que seriam difíceis ou até mesmo impossíveis de serem realizadas manualmente por seres humanos.
Vale a pena ressaltar que a maioria das técnicas de Machine Learning é antiga e, em sua grande parte, provenientes da Estatística. Porém, elas só passaram a ser efetivamente utilizadas para exploração de dados nos últimos anos devido a diversos fatores, como a disponibilidade de maior volume de dados devido a popularização de aplicativos e dispositivos móveis, popularização de técnicas de Data Warehousing (grandes armazéns de dados com arquitetura voltada para a tomada de decisão), melhoria exponencial da potência dos recursos computacionais, como capacidade de processamento, e forte competição empresarial.
Em Machine Learning, o aprendizado é o objetivo principal. Aprendizado é a capacidade de se adaptar, modificar e melhorar seu comportamento e suas respostas, sendo uma das propriedades mais importantes dos seres inteligentes (humanos ou não). Diz-se que se está aprendendo (treinando, construindo, formulando ou induzindo um modelo de conhecimento) a partir de um conjunto de dados quando se procura por padrões nestes dados. Quando se faz uma estimativa (teste, predição) dos valores desconhecidos para atributos do conjunto de dados, diz-se que o modelo está sendo aplicado.
Podemos dividir o aprendizado em Machine Learning em dois grandes tipos: supervisionado e não-supervisionado. No aprendizado supervisionado, o modelo (ou algoritmo) é construído a partir dos dados de entrada (também chamados de dataset), que são apresentados na forma de pares ordenados (entrada — saída desejada). Dizemos que estes dados são rotulados, pois sabemos de antemão a saída esperada para cada entrada de dados. Neste caso, o aprendizado (ou treinamento) consiste em apresentarmos para o algoritmo um número suficiente de exemplos (também chamados de registros ou instâncias) de entradas e saídas desejadas (já rotuladas previamente). Assim, o objetivo do algoritmo é aprender uma regra geral que mapeie as entradas nas saídas corretamente, o que consiste no modelo final. Os dados de entrada podem ser divididos em dois grupos:
- X, com os atributos (também chamados de características) a serem utilizados na determinação da classe de saída (também chamados de atributos previsores ou de predição)
- Y, com o atributo para o qual se deseja fazer a predição do valor de saída categórico ou numérico (também chamado de atributo-alvo ou target).
É comum que particionemos os dados de entrada (rotulados) em dois conjuntos: o conjunto de treinamento, que servirá para construir o modelo, e o conjunto de teste (também chamado na literatura de conjunto de validação), que servirá para verificar como o modelo se comportaria em dados não vistos, de forma que possamos ajustá-lo, se necessário para a construção final do modelo, a ser aplicado em novos dados que ainda não conhecemos a saída esperada. A figura a seguir ilustra o funcionamento de um modelo de aprendizado supervisionado:
Apesar da essência principal de Machine Learning consistir na construção de algoritmos de aprendizado supervisionado ou não supervisionado, esta não é a única etapa em que devemos nos concentrar. É muito importante que entendamos bem o problema a ser resolvido para que possamos traçar os objetivos principais. Em seguida, será necessário coletar e analisar os dados adequados para o problema e prepará-los, pois na maioria das vezes eles virão com informações faltantes, incompletas ou inconsistentes. Após estas etapas é que podemos construir o modelo de Machine Learning, que deve ser avaliado e criticado e, se necessário voltar à etapa de coleta e análise de dados, para a obtenção de mais dados, ou mesmo retornar à etapa de construção do modelo, usando diferentes estratégias. Quando se chegar a um modelo satisfatório para o problema, será necessário apresentar os resultados para o demandante e distribuir o modelo em ambiente produtivo. A sequência a seguir resume estas 7 etapas que, idealmente, devem ser realizadas em todos os projetos de Machine Learning.
- Entender o problema e definir objetivos — Que problema estou resolvendo?
- Coletar e analisar os dados — De que informações preciso?
- Preparar os dados — Como preciso tratar os dados?
- Construir o modelo — Quais são os padrões nos dados que levam a soluções?
- Avaliar e criticar o modelo — O modelo resolve meu problema?
- Apresentar resultados — Como posso resolver o problema?
- Distribuir o modelo — Como resolver o problema no mundo real?
A figura a seguir resume este fluxo:
São exemplos de problemas de aprendizado supervisionado a Classificação e a Regressão, queserão detalhados a seguir.
Classificação
Um exemplo típico de problema de Classificação é a detecção de clientes com perfis fraudulentos. Imagine a seguinte situação: um determinado cliente deseja obter um empréstimo de R$ 10.000,00. O gestor deste sistema poderia se perguntar: “Será que este cliente vai pagar o empréstimo?”. Ou ainda, “Qual é o melhor modelo de financiamento para este cliente (juros, prazo etc.)?”. Este é um problema típico de Classificação, pois deseja-se classificar um cliente em uma das possíveis classes do problema, por exemplo, bom pagador/mau pagador ou juros/prazo/outros.
A Classificação é uma das categorias de problemas de Machine Learning mais importantes e mais populares e o objetivo do algoritmo é aprender uma regra geral que mapeie as entradas nas saídas corretamente. Conforme já mencionamos, os dados de entrada podem ser divididos em dois grupos: X, com os atributos a serem utilizados na determinação da classe de saída e Y, que representa a classe de saída (o atributo para o qual se deseja fazer a predição do valor da classe), sendo que em problemas de Classificação, o Y é sempre categórico.
Informalmente, um problema de Classificação pode ser definido como a busca por uma função matemática que permita associar corretamente cada exemplo Xi de um conjunto de dados a um único rótulo categórico, Yi, denominado classe. Esta função, uma vez identificada, poderá ser aplicada a novos dados para prever suas respectivas classes. A figura a seguir ilustra este problema:
O fluxo resumido de um problema de Classificação inicia gerando, a partir de uma base de dados rotulada (aquela em que para cada exemplo, conhecemos a sua respectiva classe), dois subconjuntos disjuntos: a base de treino (contendo, por exemplo, 70% dos dados originais) e a base de teste (contendo, o restante dos dados originais, no caso, 30%).
Em seguida, é realizado o treinamento do modelo: a base de treino é submetida ao modelo (classificador) para que seus parâmetros sejam calibrados de acordo com os dados apresentados. Após esta etapa, ocorre a etapa de predição de classes: os exemplos da base de teste são apresentados para o modelo treinado para que este realize a predição de suas classes. Medimos a qualidade do modelo comparando as classes preditas com as classes verdadeiras da base de teste, permitindo medir sua habilidade em classificar corretamente exemplos não vistos durante o treinamento. Este fluxo pode ser resumido pela figura a seguir.
Existem diversas medidas para estimar o desempenho de um classificador, sendo a acurácia uma das mais utilizadas, que representa o percentual de acertos do classificador. Outra métrica bastante utilizada para problemas de classificação é a matriz de confusão, que oferece um detalhamento do desempenho do modelo de classificação, mostrando, para cada classe, o número de classificações corretas em relação ao número de classificações preditas pelo modelo. A matriz de confusão pode ser usada para calcular outras métricas, tais como o número de Falsos Positivos (quando o resultado esperado é negativo, mas o modelo resulta em positivo), Falsos Negativos (quando o resultado esperado é positivo, mas o modelo resulta em negativo), Verdadeiros Positivos (quando o resultado esperado é positivo e o modelo resulta em positivo) e Verdadeiros Negativos (quando o resultado esperado é negativo e o modelo resulta em negativo).
A figura a seguir ilustra a matriz de confusão para um problema de classificação binária, no qual há somente duas classes possíveis, C1 e C2. Para problemas de classificação múltipla (no qual há mais de duas classes possíveis), a matriz de confusão pode ser um pouco confusa de se interpretar, sendo desencorajado o seu uso como única métrica de avaliação neste caso.
Regressão
O problema de Classificação, apresentado anteriormente, pode ser considerado um subtipo do problema de Regressão, pois ambos são bem similares. Sua principal diferença consiste na saída do modelo: na Classificação, o resultado é categórico e na Regressão, o resultado é numérico (contínuo ou discreto). Um exemplo de problema de Regressão é a predição do valor estimado das vendas em uma nova filial de uma determinada cadeia de lojas. Se esta pergunta for mapeada em um problema de Classificação, as respostas possíveis poderiam ser: Alto/Médio/Baixo. Se mapeada em um problema de Regressão, as respostas poderiam ser valores monetários. As tarefas de separação em conjuntos de treino e teste, treinamento e teste são feitas de forma equivalente para ambos os problemas.
Assim como na Classificação, a Regressão consiste em realizar aprendizado supervisionado a partir de dados históricos. Além do tipo do resultado de saída do modelo, os dois problemas também se diferem quanto às métricas utilizadas para a avaliação de saída: na Regressão, verifica-se a distância ou o erro entre a saída do modelo e a saída desejada. A saída do modelo é um valor numérico que deve ser o mais próximo possível do valor desejado, e a diferença entre esses valores fornece uma medida de erro de estimação do algoritmo.
Podemos definir um problema de Regressão como: dado um conjunto de n padrões, cada um deles composto por variáveis explicativas (independentes) e por uma variável resposta contínua ou discreta (dependente), busca-se construir um modelo de Regressão que estime o valor mais esperado para a variável resposta dado um novo padrão i. Assim, seja di o valor de resposta desejada para o padrão i e seja zi a resposta predita do algoritmo, obtida a partir da entrada do padrão i, então di — zi é o erro observado para o objeto i. O processo de treinamento do modelo de regressão tem por objetivo “corrigir” este erro observado e, para tal, busca ajustar os parâmetros do modelo de forma a aproximar as saídas preditas dos valores de saída desejados.
Dentre as diversas métricas de avaliação utilizadas para problemas de regressão, uma das mais usadas é a RMSE (Root Mean Square Error, ou raiz do erro quadrático médio). Quanto menor o valor de RMSE, melhor é o modelo de regressão analisado. Outra métrica muito utilizada é o Coeficiente de Determinação, ou R2. Quanto mais próximo de 1, melhor é o ajuste do modelo.
Para cada um dos problemas de Machine Learning existem diversos algoritmos que podem ser utilizados. Entretanto, vale a pena mencionar o conhecido teorema “não existe almoço grátis”: não existe um algoritmo de aprendizado que seja superior a todos os demais quando considerados todos os problemas possíveis. A cada problema, os algoritmos disponíveis devem ser experimentados a fim de identificar aqueles que obtêm melhor desempenho. Em seguida, apresentaremos alguns dos modelos mais utilizados para aprendizagem supervisionada.
Algoritmos de Machine Learning
Árvore de Decisão
A Árvore de Decisão é inspirada na forma como humanos tomam decisão e, por este motivo, um dos modelos mais simples de se entender. Uma das principais vantagens deste algoritmo é a apresentação visual da informação, facilitando o entendimento pelo ser humano. As árvores podem ser usadas para problemas de Classificação (Árvores de Classificação) ou Regressão (Árvores de Regressão). De forma resumida, uma árvore de decisão usa amostras das características dos dados para criar regras de decisão no formato de árvore, mapeando os dados em um conjunto de regras que podem ser usadas para uma decisão.
As árvores de decisão costumam ter bons resultados e boa interpretabilidade, e podem realizar automaticamente a seleção de variáveis para compor suas estruturas. Cada nó interno representa uma decisão sobre uma característica, que determina como os dados serão particionados pelos seus nós filhos. Para aplicar o modelo a um novo exemplo, basta testar os valores dos atributos em cada nó da árvore e percorrê-la até se atingir um nó folha, que representará a classe ou o valor predito, dependendo do problema ser de Classificação ou de Regressão. A figura a seguir ilustra uma Árvore de Classificação.
Existem diferentes algoritmos para a elaboração de uma Árvore de Decisão. Alguns exemplos são: ID3, C4.5, C5.0 e CART. A ideia geral de todos estes algoritmos é bem parecida: a construção da árvore é realizada, em geral, de acordo com alguma abordagem recursiva de particionamento do conjunto de dados. A principal distinção entre os algoritmos está nos processos de seleção de variáveis, critério de particionamento e critério de parada para o crescimento da árvore.
K-Vizinhos mais próximos (KNN)
O algoritmo KNN (k-Nearest Neighbours ou k-Vizinhos Mais Próximos) é um algoritmo de simples entendimento e que funciona muito bem na prática, podendo ser utilizado tanto para problemas de Classificação quanto para problemas de Regressão. Sua ideia principal é considerar que os exemplos vizinhos são similares ao exemplo cuja informação se deseja inferir, uma ideia parecida com “Diga-me com quem andas e eu te direi quem tu és!”. O KNN considera que os registros do conjunto de dados correspondem a pontos no espaço Rn, em que cada atributo corresponde a uma dimensão deste espaço. A figura a seguir ilustra um exemplo no espaço R2.
No KNN, o conjunto de dados de treinamento é armazenado e, quando um novo exemplo chega, ele é comparado a todos os exemplos armazenados para identificar os k (que é um parâmetro de entrada do algoritmo) vizinhos mais próximos (mais semelhantes) de acordo com alguma métrica de distância (por exemplo, distância euclidiana). No caso de ser um problema de classificação, a classe do novo registro é determinada por inspeção das classes dos k vizinhos mais próximos, de acordo com a métrica escolhida. No caso de um problema de regressão, em vez da classe, examina-se o valor de Y dos k vizinhos. Na maioria das implementações do KNN, os atributos são normalizados no início do algoritmo, para que contribuam igualmente na predição da classe ou do valor.
As etapas a seguir resumem o algoritmo KNN:
- Definição da métrica de distância utilizada e valor de k.
- Cálculo da distância do novo exemplo a cada um dos exemplos existentes no conjunto inicial de entrada.
- Identificação dos k exemplos do conjunto de referência que apresentaram menor distância em relação ao novo exemplo (mais similares).
- Apuração da classe mais frequente entre os k exemplos identificados no passo anterior, usando votação majoritária (para problemas de classificação) ou estimação do valor Y como a média aritmética dos k-vizinhos mais próximos.
Regressão Linear
A Regressão Linear é um algoritmo utilizado apenas para problemas de Regressão, e, resumidamente, consiste em escolher coeficientes para construir uma reta que minimize a soma dos quadrados dos erros (SQE) entre os valores reais dos exemplos de treinamento e esta reta. Observe um exemplo de regressão linear para o problema de se estimar o faturamento esperado para uma filial em um bairro, considerando a renda per capita deste bairro, ilustrado na figura a seguir:
Neste caso, os coeficientes da reta de regressão linear são -24,49 e 0,15, e este modelo significa que, a cada aumento de R$100 na renda per capita do bairro, espera-se que isso reflita em 0,15 ∗ 100 = 15 mil de faturamento para a filial. Esta solução é dita ótima porque ela representa a reta que passa mais perto dos pontos (considerando a distância euclidiana), como ilustra a figura a seguir:
Assim, para cada escolha dos parâmetros β0 e β1 na equação (que especificam, respectivamente, o intercepto do eixo y e a inclinação da reta):
podemos calcular os erros (ou desvios) dessa escolha. Porém, observe que se somarmos todos os erros individuais para calcular o erro total do modelo eles irão se anular, uma vez que os erros individuais são positivos e negativos. Desta forma, é mais indicado trabalhar com a magnitude do erro, como, por exemplo, o erro ao quadrado.
É importante ressaltar que neste exemplo consideramos apenas a relação entre faturamento e renda per capita, mas, em problemas reais, dificilmente haverá uma única variável x capaz de prever a saída y. Assim, se quiséssemos adicionar uma ou mais variáveis x ao problema, teríamos uma Regressão Linear Múltipla, acrescentando mais coeficientes à equação, um para cada variável de X, e estendendo a equação da reta para a equação de um plano ( quando temos 3 dimensões) ou hiperplano (quanto temos mais de 3 dimensões).
Formalmente, a Regressão Linear modela a relação entre a variável de resposta y e as variáveis preditoras X, e corresponde ao problema de estimar uma função a partir de pares entrada-saída, considerando que y pode ser explicado por uma combinação linear de X. Assim, a solução de um problema de regressão consiste em encontrar valores para os coeficientes de regressão de forma que a reta (ou plano/hiperplano) se ajuste aos valores assumidos pelas variáveis no conjunto de dados.
A saída do modelo é um valor numérico contínuo que deve ser o mais próximo possível do valor desejado, e a diferença entre esses valores fornece uma medida de erro do algoritmo. Se a equação de regressão aproxima suficientemente bem os dados de treinamento, então ela pode ser usada com novos dados (nos quais não conhecemos o valor de y) para estimar y a partir do valor das variáveis X, assumindo uma relação linear entre estas variáveis. Em suma, a Regressão Linear procura pelos coeficientes da reta que minimizam a distância dos objetos à reta.
Regressão Logística
A Regressão Logística, apesar do nome, é um algoritmo utilizado exclusivamente para problemas de Classificação, mas seu funcionamento lembra muito o funcionamento do algoritmo de Regressão Linear. A Regressão Logística é usada para estimar valores discretos de classes binárias (valores como 0/1, sim/não, verdadeiro/falso) com base em um conjunto de variáveis independentes. Internamente, a Regressão Logística calcula a probabilidade de ocorrência de um evento, ajustando os dados a uma função logit, uma função que mapeia a saída em valores entre 0 e 1.
De forma similar à Regressão Linear, a Regressão Logística usa uma equação como representação: os valores de entrada X são combinados linearmente usando coeficientes para prever um valor de saída y. A diferença é que o valor de saída é modelado em valor de classe binário em vez de um valor numérico.
A Regressão Logística modela a probabilidade da classe padrão do problema. Por exemplo, se estivermos modelando o perfil de um cliente (bom ou mau pagador) dado seu salário, podemos escolher considerar a classe “bom pagador” como padrão, e iremos modelar a probabilidade de uma entrada X pertencer à classe padrão. Os melhores coeficientes resultarão em um modelo que vai prever um valor muito próximo de 1 para a classe padrão e um valor muito próximo de 0 para a outra classe. Após determinados os coeficientes e construir a equação resultante, basta utilizá-la para fazer predições para novos exemplos.
Naïve Bayes
O Naïve Bayes (Bayes Ingênuo), é um dos métodos mais utilizados para Classificação por ser computacionalmente rápido e por necessitar de poucos dados de treinamento. Por este motivo, é um modelo especialmente adequado quando o problema tem um grande número de atributos (características). Basicamente, este modelo determina a probabilidade de um exemplo pertencer a uma determinada classe.
O Naïve Bayes é chamado de ingênuo (naïve) porque desconsidera completamente qualquer correlação existente entre os atributos do dataset. Por exemplo, em um problema de classificação de animais, se determinado animal é considerado um “Gato” se tiver bigodes, rabo e aproximadamente 30 cm de altura, o algoritmo não vai levar em consideração a correlação entre esses fatores e tratará cada um deles de forma independente.
Além disso, este modelo foi assim batizado por ser baseado no Teorema de Bayes, estando relacionado com o cálculo de probabilidades condicionais. O Teorema de Bayes determina a probabilidade de um evento com base em um conhecimento prévio (a priori) que pode estar relacionado a este evento.
Formalmente, seja X(A1, A2, …, An, C) um conjunto de dados. Considere que c1, c2, …, cn são as classes do problema (valores possíveis do atributo alvo C) e que R é um novo exemplo que deve ser classificado. Sejam ainda a1, a2, …, ak os valores que R assume para os atributos previsores A1, A2, …, An, respectivamente. Resumidamente, o algoritmo consiste em dois passos:
- Calcular as probabilidades condicionais P(C=ci|R), i = 1, 2, …, k
- Indicar como saída do algoritmo a classe c tal que P(C=c|R) seja máxima, quando considerados todos os valores possíveis do atributo alvo C.
A intuição por trás do algoritmo é dar mais peso para as classes mais frequentes, considerando que os atributos são estatisticamente independentes entre si. Apesar de isto não ocorrer em muitos casos práticos, o método mostra-se bastante efetivo mesmo nos casos em que os atributos não sejam estatisticamente independentes.
Support Vector Machines (SVM)
O algoritmo Support Vector Machine (SVM, ou Máquina de Vetores de Suporte), é um dos algoritmos mais populares efetivos para problemas de classificação (apesar de também poder ser usado para problemas de regressão). Apesar de o treinamento do SVM geralmente ser lento, esses modelos exigem poucos ajustes e tendem a apresentar boa acurácia, conseguindo modelar fronteiras de decisão complexas e não lineares.
Resumidamente, o SVM realiza um mapeamento não linear (utilizando funções kernel) para transformar os dados de treino originais em uma dimensão maior, buscando nesta nova dimensão um hiperplano que separe os dados linearmente de forma ótima. Com um mapeamento apropriado para uma dimensão suficientemente alta, dados de duas classes poderão ser sempre separados por um hiperplano. O SVM encontra este hiperplano usando vetores de suporte (exemplos essenciais para o treinamento) e margens, definidas pelos vetores de suporte.
A figura a seguir ilustra um classificador linear (ilustrado pela reta sólida) e duas retas paralelas a este classificador, pontilhadas. Cada uma das retas pontilhadas é movida a partir da posição da reta sólida, e determina quando a reta paralela intercepta o primeiro ponto do conjunto de dados, que é denominado vetor de suporte. A margem é a distância construída entre estas duas retas paralelas pontilhadas.
Como na maioria das vezes infinitas retas (ou hiperplanos) dividem corretamente o conjunto de treinamento em duas classes, o SVM deve, então, realizar um processo de escolha da reta separadora dentre o conjunto infinito de retas possíveis. Assim como existem infinitas retas que separam os pontos em duas classes, há diversos tamanhos de margem possíveis dependendo da reta escolhida como classificador. A figura a seguir ilustra dos possíveis classificadores para um mesmo problema, com dois tamanhos de margem diferentes.
O classificador associado ao valor máximo de margem é denominado classificador linear de margem máxima, e geralmente é o classificador do SVM que apresenta o melhor resultado e então, é ele que procuramos. Os vetores de suporte são os pontos mais difíceis de classificar e, por construção, todos os vetores de suporte possuem a mesma distância em relação a reta do classificador linear (a metade do comprimento da margem).
Assim, o SVM realiza um processo de otimização, por meio do qual são determinados os parâmetros (coeficientes) do classificador linear que produzam o valor máximo para o comprimento da margem. A reta correspondente a este classificador linear é dita ótima porque, se ela for deslocada em alguma das duas direções das retas perpendiculares a ela, a probabilidade é menor de haver um erro de classificação. Assim, a posição do classificador linear correspondente ao comprimento de margem máximo é a mais segura possível com relação a eventuais erros de classificação, e quanto maior a distância de x para o hiperplano, maior a confiança sobre a classe a que x pertence. Uma vez obtidos os valores dos coeficientes e encontrado o classificador linear de margem máxima, aplica-se uma função de decisão para classificar um novo exemplo, cuja classe, é dada pelo sinal do resultado desta função.
Na prática, o SVM é implementado usando funções kernel, objetos matemáticos que permitem que trabalhemos um espaço de dimensão maior. Os tipos de kernel mais utilizados são linear, polinomial e radial. Para um conjunto de dados que não é linearmente separável, o SVM utiliza funções kernel para mapear o conjunto de dados para um espaço de dimensão maior que a original, e o classificador é ajustado neste novo espaço. Assim, o SVM é, na verdade, a combinação do classificador linear com um kernel não linear. O processo de mapeamento de um espaço em outro de dimensão maior é ilustrado pela figura a seguir:
Este artigo apresentou de forma resumida os principais conceitos e algoritmos de aprendizado supervisionado relacionados a Machine Learning. Caso você tenha interesse em se aprofundar no assunto, recomendamos a leitura dos seguintes livros:
- Tatiana Escovedo & Adriano S. Koshiyama. “Introdução a Data Science — Algoritmos de Machine Learning e métodos de análise”. Ed. Casa do Código, São Paulo, 2020. (Para comprar: https://www.casadocodigo.com.br/products/livro-data-science)
- Ronaldo Goldschmidt, Emmanuel Passos e Eduardo Bezerra. “Data Mining: Conceitos, Técnicas, Algoritmos, Orientações e Aplicações”. Rio de Janeiro, Elsevier, 2005.
- Tom Fawcett e Foster Provost. “Data Science para Negócios: O que você precisa saber sobre mineração de dados e pensamento analítico de dados”. Alta Books Editora, 2018.
- Jason Brownlee. “Machine Learning Mastery with Python”. Machine Learning Mastery Pty Ltd, 2016. (Para comprar: https://machinelearningmastery.com/machine-learning-with-python/)
- Laura Igual e Santi Seguí. “Introduction to Data Science: A Python Approach to Concepts, Techniques and Applications”. Springer, Cham, 2017.
A Parte II deste artigo, que trata de aprendizado não-supervisionado, está disponível em https://medium.com/@tatianae_79457/machine-learning-conceitos-e-modelos-parte-ii-aprendizado-n%C3%A3o-supervisionado-fb6d83e4a520.
Referências:
(ESCOVEDO & KOSHIYAMA, 2020) Tatiana Escovedo & Adriano S. Koshiyama. “Introdução a Data Science — Algoritmos de Machine Learning e métodos de análise”. São Paulo, Ed. Casa do Código, 2020.
*Este texto faz parte do livro colaborativo Jornada Python — Uma Jornada imersiva na aplicabilidade de uma das mais poderosas linguagens de programação do mundo, previsto para lançamento ainda em 2020 pela editora Brasport.
Github da Professora Tatiana Escovedo:
https://tatianaesc.github.io/portfolio/
- Categoria(s): ciencia de dados Estatística Machine learning Tatiana Escovedo