Traduzido de: Essentials of Machine Learning Algorithms (with Python and R Codes)
Introdução
Os robôs e os carros de auto condução do Google têm gerado grande interesse por
parte da mídia, mas o verdadeiro futuro da empresa está na tecnologia de aprendizado
de máquina que permite aos computadores ficarem mais esperto e mais pessoais.
O que torna este período excitante para alguém como eu é a democratização das
ferramentas e técnicas que acompanharam o aumento na computação. Hoje, como um
Cientista de Dados, eu posso construir máquinas que trituram dados com algoritmos
complexos com alguns dólares por hora. Mas, chegar aqui não foi fácil! Eu também
tive meus dias e noites sombrias.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 1/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Eu deliberadamente evitarei as estatísticas por trás das técnicas, já que não se tem que
entendê-las aqui. Assim, se você procura entender estatisticamente estes algoritmos,
procure em outro lugar. Mas se o que você quer é se equipar para construção de
projetos de machine learning, você ficará surpreso.
Como Funciona: nestes algoritmos, nós não temos variáveis target, ou variáveis de
saída para serem estimadas. São feitos agrupamentos de população em diferentes
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 2/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Como funciona: estes algorítmos são utilizados para que a máquina seja treinada para
decisões específicas. Funciona assim: a máquina é exposta a um ambiente onde ela se
treina continuamente usando tentativa e erro. A máquina aprende a partir das
experiências passadas e tenta capturar o melhor conhecimento possível para tomar
decisões de negócios precisas. Exemplos de aprendizado por reforço: Processo de
decisão Markov.
1. Regressão Linear
2. Regressão Logística
3. Árvore de Decisão
4. MVS
5. Naive Bayes
6. KNN
7. K-Means (aproximação de médias)
8. Floresta Aleatória
9. Algoritmo de Redução de Dimensionalidade
10. Gradient Boost e Adaboost
1. Regressão Linear
É utilizada para estimar valores reais (custo de residências, número de chamadas,
vendas totais, etc) baseado em variáveis contínuas.
Nesta equação:
Y – Variável Dependente
a – Declive
X – Variável independente
b – Intercepção
Veja o exemplo abaixo. Aqui nós identificamos a melhor linha de ajustamento tendo a
equação linear y = 0.2811x + 13,9. Agora, usando esta equação, podemos encontrar o
peso, sabendo a altura de uma pessoa.
Python Code
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 4/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
#Import Library
#Import other necessary libraries like pandas, numpy...
from sklearn import linear_model
#Load Train and Test datasets
#Identify feature and response variable(s) and values must be
x_train=input_variables_values_training_datasets
y_train=target_variables_values_training_datasets
x_test=input_variables_values_test_datasets
# Create linear regression object
linear = linear_model.LinearRegression()
# Train the model using the training sets and check score
linear.fit(x_train, y_train)
linear.score(x_train, y_train)
#Equation coefficient and Intercept
print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)
#Predict Output
predicted= linear.predict(x_test)
R Code
2. Regressão Logística
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 5/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Digamos que um amigo lhe dê um enigma para ser resolvido. Existem somente dois
senários possíveis: – ou você o resolve ou não. Agora, imagine que você tenha um
amplo grupo de enigmas para resolver para entender em quais assuntos você é bom. O
resultado deste estudo seria algo como – Se é dado a você um problema de
trigonometria de grau dez, você tem 70% de probabilidade de resolvê-lo. Por outro
lado, se é questão de história de grau cinco, a probabilidade de obter uma resposta é de
apenas 30%. Isto é o que Regressão Logística fornece.
Agora, você pode perguntar, por ter um log? Por uma questão de simplicidade, vamos
apenas dizer que este é uma das melhores formas matemáticas para replicar uma
função de etapas. Eu poderia ir em mais detalhes, mas isso não está no propósito deste
artigo.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 6/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Python Code
#Import Library
from sklearn.linear_model import LogisticRegression
#Assumed you have, X (predictor) and Y (target) for training
# Create logistic regression object
model = LogisticRegression()
# Train the model using the training sets and check score
model.fit(X, y)
model.score(X, y)
#Equation coefficient and Intercept
print('Coefficient: \n', model.coef_)
print('Intercept: \n', model.intercept_)
#Predict Output
predicted= model.predict(x_test)
R Code
x <- cbind(x_train,y_train)
# Train the model using the training sets and check score
logistic <- glm(y_train ~ ., data = x,family='binomial')
summary(logistic)
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 7/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
summary(logistic)
#Predict Output
predicted= predict(logi
Além disso..
Há muitos passos diferentes que poderiam ser tentados a fim de melhorar o modelo:
os termos de interação
remoção de recursos
técnicas de regularização
usando um modelo não-linear
3. Árvore de Decisão
Este é um de meus algoritmos favoritos e eu o uso frequentemente. É um tipo de
algoritmo de aprendizado supervisionado mais usado para problemas de classificação.
Surpreendentemente, ele funciona tanto para variáveis dependentes categóricas quanto
contínuas. Nestes algoritmos nos dividimos a população em dois ou mais grupos
homogêneos. Isso é feito baseado nos atributos ou variáveis independentes mais
significantes para tornar os grupos os mais distintos possível. Para mais detalhe você
pode ler: Decision Tree Simplified.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 8/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Então, toda a vez que se divide a sala com a parede, tenta-se criar duas populações
diferentes dentro de um mesmo quarto. Árvore de decisão trabalha de maneira muito
semelhante, dividindo a população na maior quantidade de grupos diferentes possível.
Python Code
#Import Library
#Import other necessary libraries like pandas, numpy...
from sklearn import tree
#Assumed you have, X (predictor) and Y (target) for training
# Create tree object
model = tree.DecisionTreeClassifier(criterion='gini') # for c
# model = tree.DecisionTreeRegressor() for regression
# Train the model using the training sets and check score
model.fit(X, y)
model.score(X, y)
#Predict Output
predicted= model.predict(x_test)
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 9/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
R CODE
library(rpart)
x <- cbind(x_train,y_train)
# grow tree
fit <- rpart(y_train ~ ., data = x,method="class")
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
4. VMS (Máquina de Vetor de
Suporte)
É um método de classificação. Neste algoritmo, cada dado é plotado como um ponto
em um espaço n-dimensional (onde n é o número de características que se tem) com o
valor de cada característica sendo o valor de uma coordenada particular.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 10/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Agora, vamos encontrar uma linha que divida os dados em dois grupos diferentes de
dados classificados. A linha ficará no ponto mais próximo em que as distâncias de cada
ponto nos dois grupos ficará a maior possível.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 11/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
No exemplo acima, a linha que divide os dados em dois grupos classificados é a linha
preta, pois os dois pontos mais próximos dela são os mais distantes, fora da linha. Este
é nosso classificador. Então, dependendo de que lado da linha os dados de testes são
colocados, esta será a classe em que poderão ser classificados os novos dados.
Você pode desenhar linhas / planos em qualquer ângulo (em vez de apenas
horizontal ou vertical como no jogo clássico)
O objetivo do jogo é segregar bolas de cores diferentes em diferentes salas.
E as bolas não estão se movendo.
Python Code
#Import Library
from sklearn import svm
#Assumed you have, X (predictor) and Y (target) for training
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 12/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
R CODE
library(e1071)
x <- cbind(x_train,y_train)
# Fitting model
fit <-svm(y_train ~ ., data = x)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
5. Naive Bayes
É uma técnica de classificação baseada no teorema de Bayes que assume a
independência entre preditores. Em termos simples, um classificador em Naive Bayes
assume que a presença de uma característica particular em uma classe não é
relacionada com a presença de nenhuma outra característica. Por exemplo, uma fruta
pode ser considerada uma maça se ela for vermelha, redonda e tenha 3 polegadas de
diâmetro. Mesmo que essas características dependam umas das outras ou da existência
de outras características, um classificador Naive Bayes iria considerar que todas essas
características contribuem de forma independente para a probabilidade de que esta
fruta seja uma maçã.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 13/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Aqui,
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 14/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Passo 3: Agora, use a equação Bayesiana Naive para calcular a probabilidade posterior
para cada classe. A classe com maior probabilidade posterior é o resultado de previsão.
Problema: Os jogadores irão pagar se o tempo está ensolarado, é esta afirmação está
correta?
Podemos resolver isso usando o método acima discutido, então P (Sim | ensolarado) =
P (Sunny | Sim) * P (Sim) / P (ensolarado)
Aqui temos P (Sunny | Sim) = 3/9 = 0,33, P (ensolarado) = 5/14 = 0,36, P (Sim) = 9/14
= 0,64
Agora, P (Sim | ensolarado) = 0,33 * 0,64 / 0,36 = 0,60, que tem maior probabilidade.
Naive Bayes usa um método similar para prever a probabilidade de classe diferente
com base em vários atributos. Este algoritmo é usado principalmente em classificação
de texto e com os problemas que têm múltiplas classes.
Python Code
#Import Library
from sklearn.naive_bayes import GaussianNB
#Assumed you have, X (predictor) and Y (target) for training
# Create SVM classification object model = GaussianNB() # the
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R CODE
library(e1071)
x <- cbind(x_train,y_train)
# Fitting model
fit <-naiveBayes(y_train ~ ., data = x)
summary(fit)
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 15/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
#Predict Output
predicted= predict(fit,x_test)
KNN pode ser facilmente mapeada para nossas vidas reais. Se você quiser saber mais
sobre uma pessoa de quem você não tem nenhuma informação, você pôde saber mais
sobre seus amigos próximos e os círculos que ela se move e ganhar acesso a suas
informações!
Python Code
#Import Library
from sklearn.neighbors import KNeighborsClassifier
#Assumed you have, X (predictor) and Y (target) for training
# Create KNeighbors classifier object model
KNeighborsClassifier(n_neighbors=6) # default value for n_nei
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R CODE
library(knn)
x <- cbind(x_train,y_train)
# Fitting model
fit <-knn(y_train ~ ., data = x,k=5)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
7. K-Means
É um tipo de algoritmo sem supervisão que resolve problemas de agrupamento. O seu
procedimento segue uma maneira simples e fácil para classificar um dado conjunto
através de um certo número de grupos de dados (assumir k clusters). Os pontos de
dados dentro de um cluster são homogêneas e heterogêneas para grupos de pares.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 17/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
1. K-meios pega número k de pontos para cada grupo conhecido como centroide.
2. Cada ponto de dados forma um cluster com o centróide i.n. mais próximo k
aglomerados.
3. Encontra-se o centróide de cada cluster com base em membros do cluster existentes.
Aqui temos novos centróides.
4. Como temos novas centróide, repita o passo 2 e 3. Encontre a distância mais
próxima para cada ponto de dados a partir de novas centróide e se relacionam com as
novas-k clusters. Repita este processo até que a convergência ocorra, isto é, os
centróide não mudem.
Em K-means, temos grupos e cada grupo tem seu próprio baricentro. A soma dos
quadrados da diferença entre centróide e os pontos de dados dentro de um cluster
constitui dentro a soma do valor quadrado para esse cluster. Além disso, quando a
soma dos valores quadrados para todos os clusters são adicionados, ela se torna o total
dentro soma do valor quadrado para a solução de cluster.
Sabemos que, com o aumento no número de cluster, este valor continua diminuindo,
mas se você traçar o resultado você pode ver que a soma das distâncias ao quadrado
diminui acentuadamente até algum valor de k, e, em seguida, muito mais lentamente
depois disso. Aqui, podemos encontrar o número ideal de clusters.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 18/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Python Code
#Import Library
from sklearn.cluster import KMeans
#Assumed you have, X (attributes) for training data set and x
# Create KNeighbors classifier object model
k_means = KMeans(n_clusters=3, random_state=0)
# Train the model using the training sets and check score
model.fit(X)
#Predict Output
predicted= model.predict(x_test)
R Code
library(cluster)
fit <- kmeans(X, 3) # 5 cluster solution
8. Floresta Aleatória
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 19/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
Para mais detalhes sobre esse algoritmo, comparando com os parâmetros da árvore de
decisão e modelo tuning, eu sugiro que você leia estes artigos:
Python
#Import Library
from sklearn.ensemble import RandomForestClassifier
#Assumed you have, X (predictor) and Y (target) for training
# Create Random Forest object
model= RandomForestClassifier()
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R Code
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 20/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
library(randomForest)
x <- cbind(x_train,y_train)
# Fitting model
fit <- randomForest(Species ~ ., x,ntree=500)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
9. Algoritmo de Redução de
Dimensionalidade
Nos últimos 4-5 anos, tem havido um aumento exponencial na captura de dados.
Corporações / Agências Governamentais / Organizações de pesquisa não apenas têm
novas fontes de dados, mas também estão capturando dados em grandes detalhes.
Por exemplo: empresas de comércio eletrônico estão capturando mais detalhes sobre o
cliente como sua demografia, rastreando sua história na web, o que eles gostam ou não
gostam, histórico de compras, feedback e muitos outras informações para dar-lhes
atenção personalizada mais do que seu lojista de supermercado mais próximo.
Como um data scientist, os dados que são oferecidos também consistem em muitas
características, isso soa bem para a construção de modelos robustos, mas existe um
desafio. Como identificar variável altamente significativa (s) entre 1000 ou 2000 delas?
Em tais casos, o algoritmo de redução de dimensionalidade nos ajuda, juntamente com
vários outros algoritmos como árvore de decisão, Floresta Aleatória, PCA, análise
fatorial, Identificação baseada em matriz de correlação, relação de valor e outros.
Para saber mais sobre este algoritmos, você pode ler “Beginners Guide To Learn
Dimension Reduction Techniques“.
Python Code
#Import Library
from sklearn import decomposition
#Assumed you have training and test data set as train and tes
# Create PCA obeject pca= decomposition.PCA(n_components=k) #
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 21/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
R Code
library(stats)
pca <- princomp(train, cor = TRUE)
train_reduced <- predict(pca,train)
test_reduced <- predict(pca,test)
Python Code
#Import Library
from sklearn.ensemble import GradientBoostingClassifier
#Assumed you have, X (predictor) and Y (target) for training
# Create Gradient Boosting Classifier object
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 22/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights
R Code
library(caret)
x <- cbind(x_train,y_train)
# Fitting model
fitControl <- trainControl( method = "repeatedcv", number = 4
fit <- train(y ~ ., data = x, method = "gbm", trControl = fit
predicted= predict(fit,x_test,type= "prob")[,2]
Notas Finais
Tenho a certeza que agora você tem uma ideia de algoritmos de aprendizado de
máquina comumente utilizados. Minha única intenção por trás deste artigo, e em
fornecer os códigos em R e Python, é para você começar imediatamente. Se você
estiver interessado em dominar a aprendizagem de máquina, comece imediatamente.
Tome problemas, desenvolva uma compreensão física do processo, aplique esses
códigos e divirta-se!
Você achou este artigo útil? Compartilhar seus pontos de vista e opiniões na seção de
comentários.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 23/23