You are on page 1of 23

23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights

Traduzido de: Essentials of Machine Learning Algorithms (with Python and R Codes)

Autor: Sunil Ray

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.

– Eric Schmidt (Google Chairman)

Provavelmente estejamos vivendo o período mais marcante da história humana. O


período em que a computação mudou dos grandes mainframes para a computação de
PCs em nuvem. No entanto, o que definirá a mudança não é o que aconteceu, mas o
que ainda está por vir.

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.

Quem pode se beneficiar mais deste


guia?

Talvez este seja o Guia mais valioso que eu já


criei.
A ideia por trás deste guia é simplificar a jornada dos aspirantes a Data Scientists e
entusiastas de machine learning pelo mundo. Por meio dele, irei habilitá-lo a trabalhar
com problemas de machine learning e proporcionar ganhos de experiência. Irei
proporcionar um alto nível de entendimento sobre vários algoritmos de machine
learning com códigos R e Python para rodá-los. E isso pode ser o suficiente para
sujar suas mãos.

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.

Em termos gerais, existem 3


tipos de algoritmos de  Machine
Learning..
1. Aprendizagem Supervisionada

Como funciona: Estes algoritmos consistem em variáveis target / variáveis de saída


(ou variáveis dependentes) que são previstas por um grupo de variáveis predecessoras
(variáveis independentes). Usando este grupo de variáveis, nós geramos uma função
que mapeia entradas para saídas desejáveis. O processo de treinamento continua até o
modelo atingir um determinado nível de precisão desejável nos dados de teste.
Exemplos de aprendizagem supervisionada são: Regressão, Árvore de Decisão,
Floresta Aleatória, KNN, Regressão Logística, etc.

2. Aprendizagem Não Supervisionada

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

grupos, amplamente utilizados para segmentar os clientes para intervenções


específicas. Exemplos de Aprendizagem Não Supervisionadas são: Algoritmos Apriori
e aproximação de médias.

3. Aprendizagem por Reforço

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.

Lista de Algorítmos de Machine


Learning Comuns
Esta é uma lista dos algoritmos mais comumente utilizados. Eles podem ser utilizados
para quase todos os problemas com dados:

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.

Aqui, estabelecemos uma relação entre variáveis dependentes e independentes


ajustando a melhor linha. Esta linha de melhor ajustamento é conhecida como linha de
regressão e representado por uma equação linear Y = a * x + b.
https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 3/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights

A melhor maneira de compreender regressão linear é reviver uma experiência de


infância. Digamos que você peça a uma criança do quinto ano para ela organizar as
pessoas de sua classe por ordem de peso crescente, sem perguntar a elas seu peso. O
que ela iria fazer? Ela iria olhar (análise visual) a altura e largura das pessoas e ordená-
las combinando estes parâmetros visuais. Isto é uma regressão visual na vida real! A
criança realmente estima que a altura e a largura seriam correlacionadas ao peso por
relação, o que se parece com a equação abaixo.

Nesta equação:

Y – Variável Dependente
a – Declive
X – Variável independente
b – Intercepção

Os coeficientes a e b são derivados baseados na minimização da soma dos quadrados


da diferença da distância entre os pontos da regressão linar.

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.

Regressões lineares são fundamentalmente de dois tipos: Regressão Linear Simples e


Regressão Linear Múltipla. Regressão Linear Simples é caracterizada por uma variável
independente e regressão linear múltipla (como o nome sugere) é caracterizada por
múltiplas variáveis independentes e procurando a melhor linha de ajuste, você pode
também encontrar uma regressão polinomial ou curvilínea e estes são conhecidos como
regressão polinomial ou curvilínea.

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

#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
x <- cbind(x_train,y_train)
# Train the model using the training sets and check score
linear <- lm(y_train ~ ., data = x)
summary(linear)
#Predict Output
predicted= predict(linear,x_test)

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

Não se confunda com o nome! Trata-se de uma classificação não de um algoritmo de


regressão. Ela é usada pra estimar valores discretos (valores binários como 0/1,
sim/não, verdadeiro/falso) baseado em um grupo de variáveis independentes. Em
palavras simples, ela prevê a probabilidade da ocorrência de um evento, ajustando os
dados a uma função logística. Por isso, também é conhecida como regressão
logística.Como prevê a probabilidade, seus valores de saída são algo esperado entre 0 e
1.

Vamos novamente tentar entender a partir de um exemplo simples.

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.

Vindo para a matemática, as chances do resultado são modeladas como uma


combinação linear das variáveis de previsão.

odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence


ln(odds) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3….+bkXk

Acima, p é a probabilidade de presença de a característica de interesse. Ela escolhe os


parâmetros que maximizam a probabilidade de observar os valores das amostras em
vez de minimizar a soma dos quadrados dos erros (como em regressão simples).

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

Na imagem acima, pode-se ver que a população é classificada em dois grupos


diferentes baseado em múltiplos atributos, para identificar se eles irão JOGAR ou não.
Para dividir a população em grupos diferentes e heterogêneos, são usadas várias
técnicas como Gini, Ganho de informação, Qui-Quadrado e entropia.

A melhor maneira de entender como funciona a árvore de decisão é jogar Jezzball –


um jogo clássico da Microsoft (imagens abaixo). Essencialmente temos um quarto com
paredes móveis e temos que criar paredes de maneira a maximizar a área sem a
presença das bolas.

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.

Mais: Simplified Version of Decision Tree Algorithms

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.

Por exemplo, se existem somente duas características como peso e comprimento do


cabelo de um indivíduo, nós primeiro plotamos estas duas características no espaço
onde cada ponto tem duas coordenadas (estas coordenadas são chamadas Vetores de
Suporte)

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.

More: Simplified Version of Support Vector Machine

Pense neste algoritmo como se estivesse jogando JezzBall em um espaço n-


dimensional. Os ajustes no jogo são:

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

# Create SVM classification object


model = svm.svc() # there is various option associated with i
# 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)

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çã.

Modelo Naive Bayesiano é fácil de construir e particularmente útil para grandes


conjuntos de dados. Além da simplicidade, Naive Bayes é conhecido por superar
métodos de classificação mesmo altamente sofisticados.

Teorema de Bayes fornece uma forma de calcular a probabilidade posterior P (C | X) a


partir de P (C), P (x) e P (X | c). Veja a equação abaixo:

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,

P (c | x) é a probabilidade posterior da classe (target) dada preditor (atributo).


P (c) é a probabilidade a priori de classe.
P (x | c) é a probabilidade que representa a probabilidade de preditor dada classe.
P (x) é a probabilidade a priori de preditor.

Exemplo: Vamos usar um exemplo. Abaixo eu tenho um conjunto de dados de


treinamento de tempo e a variável target correspondente ‘Play’. Agora, precisamos
classificar se os jogadores vão jogar ou não com base na condição meteorológica.
Vamos seguir os passos abaixo para realizar a operação.

Passo 1: Converter o conjunto de dados para a tabela de frequência.

Passo 2: Criar tabela de Probabilidade de encontrar as probabilidades como


probabilidade Nublado = 0,29 e probabilidade de jogar é 0,64.

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)

6. KNN (K- Nearest Neighbors)


Pode ser usado para ambos os problemas de classificação e regressão. No entanto, é
mais amplamente utilizado em problemas de classificação na indústria. K nearest
neighbors é um algoritmo simples que armazena todos os casos disponíveis e classifica
novos casos por maioria de votos de seus vizinhos k. O caso que está sendo atribuído à
classe é mais comum entre os seus K vizinhos mais próximos medidos por uma função
de distância.

Estas funções de distância podem ser Euclidiana, Manhattan, Minkowski e distância de


Hamming. As primeiras três funções são usadas para a função contínua e a quarta
(Hamming) para variáveis categóricas. Se K = 1, então o caso é simplesmente atribuído
à classe de seu vizinho mais próximo. Às vezes, escolher o K acaba por se tornar um
desafio durante a execução de modelagem KNN.

Mais: Introduction to k-nearest neighbors : Simplified.

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!

Coisas a considerar antes de selecionar KNN:


https://www.vooo.pro/insights/fundamentos-dos-algoritmos-de-machine-learning-com-codigo-python-e-r/ 16/23
23/04/2018 Fundamentos dos Algoritmos de Machine Learning (com código Python e R) – Vooo – Insights

KNN é computacionalmente caro


As variáveis devem ser normalizadas se não, as variáveis mais elevadas podem
enviesa-lo
Funciona mais em fase de pré-processamento antes de ir para KNN, como outlier e
remoção de ruído

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

Lembra de como descobrir formas de borrões de tinta? k é um pouco semelhante esta


atividade. Você olha para a forma que se espalhou para decifrar quantos diferentes
clusters / população estão presentes!

Como K-means faz os clusters:

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.

Como determinar o valor de K:

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

Floresta aleatória é um termo de marca registrada para um conjunto de árvores de


decisão. Em Floresta Aleatória, temos uma coleção de árvores de decisão (assim
conhecido como “Floresta”). Para classificar um novo objeto com base em atributos,
cada árvore dá uma classificação e dizemos a árvore “vote” para essa classe. A floresta
escolhe a classificação que tenha a maioria dos votos (mais de todas as árvores da
floresta).

Cada árvore é plantada e cultivada como se segue:

1. Se o número de casos no conjunto de treinamento é N, então amostra de casos de n é


tomado ao acaso, mas com a substituição. Esta amostra será o conjunto de treinamento
para o cultivo da árvore.
2. Se existem M variáveis de entrada, um número m << M é especificado de modo a
que em cada nó, as variáveis m sejam selecionadas aleatoriamente para fora do M e a
melhor divisão sobre estes m é usado para dividir o nó. O valor de m seja mantida
constante durante o crescimento florestal.
3. Cada árvore é cultivada na maior extensão possível. Não há poda.

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:

1. Introdução à floresta Aleatório – Simplificado


2. Comparando um modelo de carrinho para a Random Floresta (Parte 1)
3. Comparando a Floresta Aleatória a um modelo CART (Parte 2)
4. Ajustando os parâmetros do seu modelo Floresta Aleatória

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

# For Factor analysis


#fa= decomposition.FactorAnalysis()
# Reduced the dimension of training dataset using PCA
train_reduced = pca.fit_transform(train)
#Reduced the dimension of test dataset
test_reduced = pca.transform(test)
#For more detail on this, please refer this link.

R Code

library(stats)
pca <- princomp(train, cor = TRUE)
train_reduced <- predict(pca,train)
test_reduced <- predict(pca,test)

10. Gradient Boosting &


AdaBoost
GBM & AdaBoost estão impulsionando algoritmos usados quando lidamos com uma
grande quantidade de dados para fazer uma previsão com alto poder. O reforço é um
algoritmo de aprendizagem conjunto que combina a previsão de vários estimadores de
base para melhorar a robustez em relação a um único estimador. Ele combina vários
preditores fracos ou médios a um preditor forte de construção. Esses algoritmos sempre
funcionam bem em competições de ciência de dados, como Kaggle, AV Hackathon,
CrowdAnalytix.

Mais: Know about Gradient and AdaBoost in detail

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

model= GradientBoostingClassifier(n_estimators=100, learning_


# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)

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]

GradientBoostingClassifier e aleatória Floresta Aleatória são dois classificadores de


árvore impulsionadores diferentes e muitas vezes as pessoas perguntam sobre a
diferença entre estes dois algoritmos difference between these two algorithms.

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

You might also like