Machine Learning: tudo o que você precisa saber

Por Matheus Cardoso, Nayane Maia e Jonathan Batista

Matheus Silva Cardoso
neurondsai
10 min readJun 18, 2021

--

O que é ?

Em ao menos algum momento de nossa existência, todos nós já olhamos para o céu e nos deparamos com a imensidão do conhecimento humano. Toda a forma de vida humana, todas as pessoas que conhecemos e todos os nossos sonhos subitamente parecem pequenos diante da imensidão do universo. Consigo me lembrar de momentos como esses em que eu pensava, ainda na infância, sobre a ideia de carros que se dirigiam sozinhos, robôs que conversariam com os humanos e uma medicina automatizada. Quem diria que não muito distante de mim, estaria um futuro tão extraordinário como o que estamos vivenciando regidas por transformações tecnológicas que se baseiam em conceitos de Aprendizado de Máquina.

Mas o que viria a ser exatamente o conceito de aprendizado de máquina?

O aprendizado de máquina (Machine Learning — ML) é um método da ciência de dados que automatiza o aprendizado. É um ramo da inteligência artificial (IA) baseado na ideia de que sistemas podem aprender com dados, esse sistema é capaz de analisar uma grande quantidade de dados por meio de métodos estatísticos específicos, além de usar uma variedade de algoritmos para encontrar padrões no banco de dados. Atualmente a ciência de dados está em todas as partes, que inicia desde a assistente virtual ao telefone até ao relógio no nosso pulso. Também está presente em diversas áreas, como no serviço financeiro, Marketing, Vendas, Transportes, Medicina, Agronomia, ou seja, a todo momento estamos gerando dados e a todo momento algoritmos de Machine learning estão aprendendo com eles.

Aprendizado de máquina, em inteligência artificial (matéria da ciência da computação) é a disciplina voltada para a implementação de softwares que possam aprender de forma autônoma.

Como surgiu?

Em 1950, Alan Turing (pai da ciência da computação) teve a ideia de testar a capacidade de uma máquina de aprender a partir de dados atribuídos pelo homem, porém não obteve êxito na elaboração de um sistema que alcançasse seus objetivos. Depois disso, o precursor da IA foi Arthur Samuel, que escreveu o primeiro programa que, no final dos anos 50, pode supera-lo no jogo de damas, assim definiu como aprendizado de máquina (ML) um estudo que possibilita que os computadores exerçam atividades atribuídas pelo ser humano.

Mais recentemente na historia, foi desenvolvido o sistema ELIZA por Joseph Weizenbaum, professor do laboratório de Inteligência Artificial do Instituto de Tecnologia de Massachusetts (Massachusetts Institute of Technology — MIT), em meados dos anos 60. ELIZA era um programa que simulava diálogos com uma psicóloga, construía novas perguntas com base no que era dito pelo próprio paciente.

Nos dias de hoje, vivenciamos a era da inteligência Artificial e, desde a aplicação de Redes Neurais Artificiais que mudaram para sempre o mundo com suas diversas aplicações, mais e mais aplicações nós mostram um novo universo de possibilidades, seja com carros autônomos que dispensam a necessidade de motoristas humanos, aplicações bancarias e concedem e dispensam crédito, ou algorítimos de aprendizado de máquina que traçam os anúncios perfeitos para cada pessoa no mundo das redes sociais, cada vez mais algoritmos inteligentes já são parte de nosso dia-a-dia.

Diferença entre AI, Machine Learning, Deep Learning e Data Science

Você pode entender a diferença entre os conceitos de AI, Machine Learning, Deep Learning e Data Science com esse vídeo incrível do Minerando Dados.

Possibilidades do Mercado

Você pode ser um: Data Scientist / Cientista de dados ou Data Engineering ou Machine learning Engineering

E se eu lhe disser que o mercado de Data Science e Machine Learning é a Profissão mais sexy do século XXI?

Isso mesmo, essa é uma das profissões mais sexy do mercado, além de ter uma alta demanda de profissionais , também tem um dos salários mais altos do mercado e uma das melhores oportunidades de crescimento de carreira.

Ficou animado não é mesmo?

Então aqui vão algumas dicas e histórias inspiradoras:

Mercado para cientistas de dados é um dos mais promissores em TI

Como conseguir um emprego de ciências de dados

Como eu consegui 2 ofertas de emprego na área de dados na Europa

Como virar Analista de Dados do zero em 1 ano

Mão na Massa

Após tudo isso é chegado o momento de você finalmente ver como é feita uma aplicação de Machine Learning. Então pega um lápis e um caderno porque ver como esses conceitos são aplicados na prática.

Hands on: o modelo Random Forest Regressor

Vamos para a parte prática, porque nem só de teoria vive o homem, não é mesmo??? Como o espaço é pequeno e queremos ser diretos, o notebook completo da nossa análise você encontra aqui. Nosso objetivo aqui é estimar as notas dos alunos do primeiro período letivo (G1) de uma escola do Reino Unido, o dataset você encontra no Kagle.

Nessa análise, realizamos os processos de:

1. Abrir o dataset e explorar esses dados, verificar anormalidades

2. Transformar dados categóricos e numéricos para fins de regressão

3. Seleção de variáveis e como fazer isso

5. Achar os melhores parâmetros e calibrar o modelo

6. Evitar que ocorra Overfitting ou Underfitting

7. Testar o modelo e avaliar o desempenho

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv(‘student-mat.csv’)
df.head()

Como podemos ver, temos dados categóricos e inteiros, precisamos transformar todos esses dados para números. Somente após transformar podemos seguir os próximos passos para realizar a regressão. Vamos analisar a correlação entre os dados:

# Matriz de Correlação
corr = df.corr()
plt.figure(figsize=(14, 6))
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(corr, annot=True, mask=mask)

Usando o método de seleção de variáveis pelo método de RandomForest

Queremos estimar a nota dos alunos do primeiro período letivo (G1), para isso, precisamos definir quem vai ser as nossas variáveis dependentes e independentes, como abaixo:

Como podemos ver, temos 30 features como variáveis independentes (X). Esse número grandes de variáveis pode deixar o treinamento do modelo muito lento, ou pode ter muitas variáveis com multicolinearidade, que afetam o desempenho do nosso modelo, além disso, pode deixar o nosso modelo com Underfitting. Para evitar isso, vamos usar um método para seleção de variáveis, para saber um pouco mais sobre alguns métodos, você pode encontrar aqui. No nosso caso, vamos usar um método super simples, que é o método MDI (Mean Decrease Impurity) usando o Random Forest, como:

plot_feature_importance(mdi_importances, oob_score=oob_score, oos_score=oos_score)

Importante lembrar que o número de variáveis selecionadas depende muito do ponto de vista do negócio também, do que adianta eu selecionar 10 variáveis , mas que não fazem sentido nenhum para o negócio ou responder as minhas dúvidas. No entanto, o contrário também existe, pode ser que apenas 4 ou 5 variáveis não seja o suficiente para explicar a sua solução. Então nessa fase, pesa muito as noções de negócio e seu entendimento de mundo como cientista de dados da área a qual você é especialista.

Testando o algoritmo Random Forest Regressor

Para o modelo não identificar e decorar tendências nos dados, vamos dividir o dataset em treinamento e teste. Em que 70% dos dados vão para treinamentos e 30% dos dados para teste, como:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=1)
print(X_train.shape); print(X_test.shape)

Chegou a hora de treinar o seu modelo de Machine Learning e não deixar a peruca cair!

O nosso modelo foi previamente calibrado usando o crossvalidation, dividindo o dataset em 5 partes, o código completo você encontra aqui para ver como foi feito. Após calibrar o modelo e achar os melhores parâmetros, vamos obter a estimação das notas do primeiro período letivo (G1) usando o RandomForestRegressor e avaliar o desempenho do modelo:

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators=150,max_depth= 2, random_state=1)
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
# Avaliação do desempenho do modelo
print(‘R2 do teste:’, r2_score(y_test, y_pred))
print(‘RMSE:’ , sqrt(mean_squared_error(y_test, y_pred)))
print(“MAPE=”,np.mean(np.abs((y_test — y_pred) / y_test))* 100 )
import seaborn as sns
sns.distplot(y_pred, hist = False, color = ‘r’, label = ‘Predicted Values’)
sns.distplot(y_test, hist = False, color = ‘b’, label = ‘Observado Values’)
plt.title(‘Observado vs Estimado’, fontsize = 16)
plt.xlabel(‘Values’, fontsize = 12)
plt.ylabel(‘Frequency’, fontsize = 12)
plt.legend(loc = ‘upper left’, fontsize = 13)

Questionamentos

O que poderia ser feito nesse modelo para aumentar a precisão??

Talvez inserir outras features?

Outro método de seleção de variáveis?

Transformar e padronizar os dados de entrada?

Fazer teste de multicolinearidade e eliminar variáveis tendenciosas?

Fica aí esses questionamentos para vocês resolverem! #peace

No kagle, percebemos que a maior precisão encontrada para esse Dataset usando o Random Forest foi de R2=0.86. No entanto, quando fomos analisar as features de entrada que eles usaram, uma das melhores variáveis selecionadas foram as notas do bimestre dois e notas finais (G2, G3). Decidimos não inserir essas features como variáveis independentes porque achamos que seria muito tendencioso, ja que foram as variáveis com a maior correlação de pearson.

No kagle mesmo eles dizem que: “o atributo alvo G3 tem forte correlação com os atributos G2 e G1. Isso ocorre porque G3 é a nota do último ano (emitida no 3º período), enquanto G1 e G2 correspondem às notas do 1º e 2º períodos. É mais difícil prever G3 sem G2 e G1, mas essa previsão é muito mais útil (consulte a fonte do artigo para obter mais detalhes).”

Vamos imaginar que você seja contratado como cientista de dados para estimar as notas dos alunos de uma escola, e se acontecer de uma escola não ter outras turmas para estimar as notas ou outros períodos letivos? E se todas as variáveis disponíveis forem ausência, sexo, saúde, razões, etc?? Para evitar que nosso modelo fosse tendencioso por causa das notas das outras turmas, colocamos todas as variáveis, exceto as notas dos outros períodos avaliativos, talvez por isso a precisão foi tão baixa do nosso modelo. Mas temos que lembrar que nem sempre podemos olhar apenas a precisão do modelo, e lembrar que o nosso erro de notas foi baixo, variando de 2.8 para mais ou para menos (RMSE), o que representa um erro médio de aproximadamente 24% (MAPE). Portanto, o ideal aqui seria testar outros modelos para ver se a acurácia e a precisão vão melhorar.

Como prosseguir no caminho da força:

Para Finalizar, te darei o caminho para você se juntar ao Lado Negro da Força

Saca essas dicas massa, para melhorar ainda mais, conheça 6 formas de se aprender Machine Learning:

1. Estude álgebra linear, cálculo, probabilidade e estatística.

2. Aprenda linguagens e lógica de programação, como R e Python.

3. Leia livros dedicados ao assunto.

4. Procure por cursos on-line (no YouTube tem um mundo disponível!!).

5. E para fechar, não esqueça de participar de competições no Kaggle e comunidades como o Neuron- DS&AI.

Dicas de Cursos e Livros:

Para finalizar vamos dar algumas dicas de cursos e materiais para você conseguir também avançar nessa área incrível.

E alguns dos melhores cursos e materiais são 100% gratuitos:

Python for Data Science and Machine Learning Bootcamp

Machine Learning A-Z™: Hands-On Python & R In Data Science

Aprendizagem Automática

Aprendizado de máquina: uma abordagem estatística

Aprenda as habilidades de dados mais solicitadas do mundo.

Sua Carreira Profissional Elevada a Outro Nível

Após tudo isso ainda posso te contar um pequeno segredo

O grupo Neuron Data Science and Artificial Intelligence, já criou materiais completos e 100% gratuitos com Notebooks e PDFs para você aprender do Zero Machine Learning.

Acesse já o link do repositório do GitHub para você aproveitar:
https://github.com/Neuron-Data-Science/Datsc-neuron/tree/main/materiais_pdf/Data_Science(curso_de_2019)/Machine%20Learning

Agora que você chegou ao final da jornada, pedirei que você apoie nossa inciativa da seguinte forma:

Siga nossa página no linkedin

Siga nosso Instagram

E Curta nossa postagem aqui no Medium

Em caso de dúvidas ou sugestão, estamos abertos para conexões no LinkedIn, Matheus, Nayane e Jonathan.

--

--