0% acharam este documento útil (0 voto)
7 visualizações128 páginas

Document

O documento é uma introdução ao aprendizado de máquina, abordando suas definições, categorias e a importância da programação e estatística clássica. Discute também o crescimento da demanda por profissionais qualificados na área e os desafios enfrentados na adoção de tecnologias de inteligência artificial. Além disso, apresenta conceitos fundamentais como a autoaprendizagem e a diferença entre aprendizado de máquina e programação tradicional.

Enviado por

LOL VÍDEOS
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações128 páginas

Document

O documento é uma introdução ao aprendizado de máquina, abordando suas definições, categorias e a importância da programação e estatística clássica. Discute também o crescimento da demanda por profissionais qualificados na área e os desafios enfrentados na adoção de tecnologias de inteligência artificial. Além disso, apresenta conceitos fundamentais como a autoaprendizagem e a diferença entre aprendizado de máquina e programação tradicional.

Enviado por

LOL VÍDEOS
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Machine Translated by Google

Machine Translated by Google

Aprendizado de máquina para absoluto


Iniciantes

Oliver Teobaldo
Machine Translated by Google

Segunda Edição
Copyright © 2017 por Oliver Theobald Todos
os direitos reservados. Nenhuma parte desta publicação pode ser reproduzida,
distribuída ou transmitida de nenhuma forma ou por nenhum meio, incluindo
fotocópia, gravação ou outros métodos eletrônicos ou mecânicos, sem a permissão
prévia por escrito do editor, exceto no caso de breves citações incorporadas em
resenhas críticas e certos outros usos não comerciais permitidos pela lei de direitos
autorais.
Machine Translated by Google

Conteúdo

INTRODUÇÃO O QUE É
APRENDIZAGEM DE MÁQUINA?
CATEGORIAS DE ML A
CAIXA DE FERRAMENTAS DE
ML LIMPEZA DE DADOS
CONFIGURANDO SEUS DADOS ANÁLISE
DE REGRESSÃO CLUSTERING VIÉS E
VARIÂNCIA REDES
NEURAIS ARTIFICIAIS
ÁRVORES DE DECISÃO MODELAGEM DE CONJUNTO
CONSTRUINDO UM
MODELO EM PYTHON OTIMIZAÇÃO
DE MODELOS RECURSOS ADICIONAIS BAIXANDO
CONJUNTOS DE DADOS PALAVRA
FINAL
Machine Translated by Google

INTRODUÇÃO As máquinas percorreram

um longo caminho desde a Revolução Industrial. Elas continuam a preencher os chãos


de fábrica e as plantas de manufatura, mas agora suas capacidades se estendem além
das atividades manuais para tarefas cognitivas que, até recentemente, apenas humanos
eram capazes de executar. Julgar competições de música, dirigir automóveis e esfregar
o chão com jogadores de xadrez profissionais são três exemplos de tarefas complexas
específicas que as máquinas agora são capazes de simular.

Mas seus feitos notáveis despertam medo entre alguns observadores. Parte desse medo se
aninha no pescoço das inseguranças de sobrevivência, onde provoca a questão profunda de e
se? E se máquinas inteligentes se voltarem contra nós em uma luta dos mais aptos? E se
máquinas inteligentes produzirem descendentes com capacidades que os humanos nunca
pretenderam transmitir às máquinas? E se a lenda da singularidade for verdadeira?

O outro medo notável é a ameaça à segurança do emprego, e se você é um motorista de


caminhão ou um contador, há um motivo válido para se preocupar. De acordo com o recurso
interativo online da British Broadcasting Company (BBC), Will a robot take my job?, profissões
como barman (77%), garçom (90%), contador credenciado (95%), recepcionista (96%) e taxista
(57%) têm uma grande chance de se tornarem automatizadas até o ano de 2035. [1]

Mas pesquisas sobre automação planejada de empregos e previsão de bola de cristal com
relação à evolução futura de máquinas e inteligência artificial (IA) devem ser lidas com uma
pitada de ceticismo. A tecnologia de IA está se movendo rapidamente, mas a ampla adoção
ainda é um caminho desconhecido, repleto de desafios conhecidos e imprevistos. Atrasos e
outros obstáculos são inevitáveis.
O aprendizado de máquina também não é um caso simples de apertar um botão e pedir para a
máquina prever o resultado do Super Bowl e servir um delicioso martini. O aprendizado de
máquina está longe do que você chamaria de uma solução pronta para uso.

As máquinas operam com base em algoritmos estatísticos gerenciados e supervisionados por


indivíduos qualificados — conhecidos como cientistas de dados e engenheiros de aprendizado
de máquina. Este é um mercado de trabalho onde as oportunidades de emprego são destinadas a
Machine Translated by Google

crescimento, mas onde, atualmente, a oferta está lutando para atender à demanda.
Especialistas da indústria lamentam que um dos maiores obstáculos que atrasam o progresso
da IA é a oferta inadequada de profissionais com a expertise e o treinamento necessários.

De acordo com Charles Green, Diretor de Liderança de Pensamento da Belatrix Software:

“É um enorme desafio encontrar cientistas de dados, pessoas com experiência em


aprendizado de máquina ou pessoas com as habilidades para analisar e usar os dados,
bem como aqueles que podem criar os algoritmos necessários para o aprendizado de
máquina. Em segundo lugar, embora a tecnologia ainda esteja surgindo, há muitos
desenvolvimentos em andamento. Está claro que a IA está muito longe de como
podemos imaginá-la.” [2]
Talvez seu próprio caminho para se tornar um especialista na área de machine learning
comece aqui, ou talvez um entendimento básico seja suficiente para satisfazer sua curiosidade
por enquanto. Em todo caso, vamos prosseguir com a suposição de que você é receptivo à
ideia de treinamento para se tornar um cientista de dados ou engenheiro de machine learning
bem-sucedido.
Para construir e programar máquinas inteligentes, você deve primeiro entender estatística
clássica. Algoritmos derivados de estatística clássica contribuem com as células sanguíneas
metafóricas e oxigênio que alimentam o aprendizado de máquina. Camada após camada de
regressão linear, k-vizinhos mais próximos e florestas aleatórias surgem na máquina e
impulsionam suas habilidades cognitivas. Estatística clássica está no cerne do aprendizado
de máquina e muitos desses algoritmos são baseados nas mesmas equações estatísticas
que você estudou no ensino médio. De fato, algoritmos estatísticos foram conduzidos no papel
bem antes de as máquinas assumirem o título de inteligência artificial.

A programação de computadores é outra parte indispensável do aprendizado de máquina.


Não há uma solução de clicar e arrastar ou Web 2.0 para executar aprendizado de máquina
avançado da maneira que se pode construir convenientemente um site hoje em dia com
WordPress ou Strikingly. Habilidades de programação são, portanto, vitais para gerenciar
dados e projetar modelos estatísticos que rodam em máquinas.
Alguns estudantes de aprendizado de máquina terão anos de experiência em programação,
mas não tocaram em estatística clássica desde o ensino médio. Outros, talvez, nunca tenham
tentado estatística em seus anos de ensino médio. Mas não se preocupe, muitos dos
algoritmos de aprendizado de máquina que discutimos neste livro têm implementações
funcionais na linguagem de programação de sua escolha; não é necessário escrever
equações. Você pode usar código para executar o número real
Machine Translated by Google

triturando para você.


Se você não aprendeu a programar antes, precisará fazê-lo se quiser progredir mais
neste campo. Mas para o propósito deste curso compacto para iniciantes, o currículo
pode ser concluído sem qualquer experiência em programação de computadores. Este
livro foca nos fundamentos de alto nível do aprendizado de máquina, bem como nos
fundamentos matemáticos e estatísticos do design de modelos de aprendizado de
máquina.
Para aqueles que desejam analisar o aspecto de programação do aprendizado de
máquina, o Capítulo 13 explica todo o processo de configuração de um modelo de
aprendizado supervisionado usando a popular linguagem de programação Python.
Machine Translated by Google

O QUE É APRENDIZAGEM DE MÁQUINA?


Em 1959, a IBM publicou um artigo no IBM Journal of Research and Development com
um título, na época, obscuro e curioso. De autoria de Arthur Samuel, da IBM, o artigo
investiu no uso do aprendizado de máquina no jogo de damas “para verificar o fato de
que um computador pode ser programado para que aprenda a jogar uma partida de
damas melhor do que a que pode ser jogada pela pessoa que escreveu o programa.” [3]

Embora não tenha sido a primeira publicação a usar o termo “machine learning” per se,
Arthur Samuel é amplamente considerado como a primeira pessoa a cunhar e definir
machine learning na forma que conhecemos hoje. A submissão histórica de Samuel ao
periódico, Some Studies in Machine Learning Using the Game of Checkers, também é
uma indicação inicial da determinação do homo sapiens em transmitir nosso próprio
sistema de aprendizado para máquinas feitas pelo homem.

Figura 1: Menções históricas de “machine learning” em livros publicados. Fonte: Google Ngram Viewer, 2017

Arthur Samuel apresenta o aprendizado de máquina em seu artigo como um subcampo


da ciência da computação que dá aos computadores a capacidade de aprender sem
serem explicitamente programados. [4] Quase seis décadas depois, essa definição
continua amplamente aceita.
Embora não seja mencionado diretamente na definição de Arthur Samuel, uma
característica fundamental do aprendizado de máquina é o conceito de autoaprendizagem.
Isso se refere à aplicação de modelagem estatística para detectar padrões e melhorar
Machine Translated by Google

desempenho baseado em dados e informações empíricas; tudo sem comandos de


programação direta. Isso é o que Arthur Samuel descreveu como a capacidade de
aprender sem ser explicitamente programado. Mas ele não infere que as máquinas
formulam decisões sem programação antecipada. Pelo contrário, o aprendizado de
máquina é fortemente dependente da programação de computadores. Em vez disso,
Samuel observou que as máquinas não exigem um comando de entrada direta para
executar uma tarefa definida, mas sim dados de entrada.

Figura 2: Comparação de comando de entrada vs dados de entrada

Um exemplo de um comando de entrada é digitar “2+2” em uma linguagem de programação como


Python e pressionar “Enter”. >>> 2+2 4

>>>
Isso representa um comando direto com uma resposta direta.
Os dados de entrada, no entanto, são diferentes. Os dados são alimentados para a
máquina, um algoritmo é selecionado, hiperparâmetros (configurações) são configurados
e ajustados, e a máquina é instruída a conduzir sua análise. A máquina prossegue para
decifrar padrões encontrados nos dados através do processo de tentativa e erro. O
modelo de dados da máquina, formado a partir da análise de padrões de dados, pode
então ser usado para prever valores futuros.
Embora haja uma relação entre o programador e a máquina, eles operam em uma
camada à parte em comparação à programação de computador tradicional. Isso ocorre
porque a máquina está formulando decisões com base na experiência e imitando o
processo de tomada de decisão com base em humanos.
Por exemplo, digamos que, após examinar os hábitos de visualização do YouTube dos
cientistas de dados, sua máquina identifica uma forte relação entre os dados
Machine Translated by Google

cientistas e vídeos de gatos. Mais tarde, sua máquina identifica padrões entre as características físicas de
jogadores de beisebol e sua probabilidade de ganhar o prêmio de Jogador Mais Valioso (MVP) da temporada.
No primeiro cenário, a máquina analisou quais vídeos os cientistas de dados gostam de assistir no YouTube
com base no engajamento do usuário; medido em curtidas, inscrições e visualizações repetidas. No segundo
cenário, a máquina avaliou as características físicas de MVPs anteriores do beisebol entre várias outras
características, como idade e educação.

Entretanto, em nenhum desses dois cenários sua máquina foi explicitamente programada para produzir um
resultado direto. Você alimentou os dados de entrada e configurou os algoritmos nomeados, mas a previsão
final foi determinada pela máquina por meio de autoaprendizagem e modelagem de dados.

Você pode pensar em construir um modelo de dados como algo semelhante ao treinamento de um cão-guia.
Por meio de treinamento especializado, os cães-guia aprendem como responder em várias situações. Por
exemplo, o cão aprenderá a andar ao lado em um sinal vermelho ou a guiar seu dono com segurança em
torno de obstáculos. Se o cão tiver sido treinado adequadamente, então, eventualmente, o treinador não
será mais necessário; o cão-guia será capaz de aplicar seu treinamento em várias situações não
supervisionadas. Da mesma forma, modelos de aprendizado de máquina podem ser treinados para formar
decisões com base em experiências passadas.
Um exemplo simples é criar um modelo que detecta mensagens de e-mail de spam. O modelo é treinado
para bloquear e-mails com linhas de assunto suspeitas e texto do corpo contendo três ou mais palavras-
chave sinalizadas: caro amigo, grátis, fatura, PayPal, Viagra, cassino, pagamento, falência e vencedor.
Nesta fase, no entanto, ainda não estamos realizando aprendizado de máquina. Se lembrarmos da
representação visual do comando de entrada vs dados de entrada, podemos ver que esse processo consiste
em apenas duas etapas: Comando > Ação.

O aprendizado de máquina envolve um processo de três etapas: Dados > Modelo > Ação.
Assim, para incorporar o aprendizado de máquina em nosso sistema de detecção de spam, precisamos
trocar “comando” por “dados” e adicionar “modelo” para produzir uma ação (saída). Neste exemplo, os dados

compreendem e-mails de amostra e o modelo consiste em regras baseadas em estatísticas. Os parâmetros


do modelo incluem as mesmas palavras-chave de nossa lista negativa original. O modelo é então treinado e
testado em relação aos dados.

Uma vez que os dados são inseridos no modelo, há uma grande chance de que as suposições contidas no
modelo levem a algumas previsões imprecisas. Por exemplo, sob as regras deste modelo, a seguinte linha
de assunto de e-mail seria automaticamente classificada como spam: “O PayPal recebeu seu pagamento
pelo Casino Royale comprado no eBay.”
Machine Translated by Google

Como este é um e-mail genuíno enviado de um auto-respondedor do PayPal, o sistema de


detecção de spam é atraído para produzir um falso positivo com base na lista negativa de
palavras-chave contidas no modelo. A programação tradicional é altamente suscetível a tais
casos porque não há um mecanismo integrado para testar suposições e modificar as regras
do modelo. O aprendizado de máquina, por outro lado, pode adaptar e modificar suposições
por meio de seu processo de três etapas e reagindo a erros.

Dados de treinamento e teste


No aprendizado de máquina, os dados são divididos em dados de treinamento e dados de
teste. A primeira divisão de dados, ou seja, a reserva inicial de dados que você usa para
desenvolver seu modelo, fornece os dados de treinamento. No exemplo de detecção de e-
mail de spam, falsos positivos semelhantes à resposta automática do PayPal podem ser
detectados a partir dos dados de treinamento. Novas regras ou modificações devem ser
adicionadas, por exemplo, notificações por e-mail emitidas do endereço de envio
“payments@[Link]” devem ser excluídas da filtragem de spam.
Depois de desenvolver com sucesso um modelo com base nos dados de treinamento e ficar
satisfeito com sua precisão, você pode testar o modelo nos dados restantes, conhecidos como
dados de teste. Quando estiver satisfeito com os resultados dos dados de treinamento e de teste,
o modelo de machine learning estará pronto para filtrar e-mails recebidos e gerar decisões sobre
como categorizar essas mensagens recebidas.

A diferença entre aprendizado de máquina e programação tradicional pode parecer trivial no


início, mas ficará clara à medida que você analisar mais exemplos e testemunhar o poder
especial da autoaprendizagem em situações mais sutis.

O segundo ponto importante a ser retirado deste capítulo é como o aprendizado de máquina
se encaixa no cenário mais amplo da ciência de dados e da ciência da computação.
Isso significa entender como o aprendizado de máquina se inter-relaciona com campos pais
e disciplinas irmãs. Isso é importante, pois você encontrará esses termos relacionados ao
pesquisar materiais de estudo relevantes — e você os ouvirá mencionados ad nauseam em
cursos introdutórios de aprendizado de máquina.
Disciplinas relevantes também podem ser difíceis de distinguir à primeira vista, como
“aprendizado de máquina” e “mineração de dados”.
Vamos começar com uma introdução de alto nível. Aprendizado de máquina, mineração de
dados, programação de computadores e os campos mais relevantes (excluindo clássicos
Machine Translated by Google

estatísticas) derivam primeiro da ciência da computação, que abrange tudo relacionado


ao design e uso de computadores. Dentro do espaço abrangente da ciência da
computação está o próximo campo amplo: ciência de dados. Mais restrita que a ciência
da computação, a ciência de dados compreende métodos e sistemas para extrair
conhecimento e insights de dados por meio do uso de computadores.

Figura 3: A linhagem do aprendizado de máquina representada por uma fileira de bonecas matrioska russas

Saindo da ciência da computação e da ciência de dados como a terceira boneca


matryoshka está a inteligência artificial. A inteligência artificial, ou IA, abrange a
capacidade das máquinas de executar tarefas inteligentes e cognitivas. Comparável à
maneira como a Revolução Industrial deu origem a uma era de máquinas que podiam
simular tarefas físicas, a IA está impulsionando o desenvolvimento de máquinas
capazes de simular habilidades cognitivas.
Embora ainda ampla, mas dramaticamente mais aprimorada do que a ciência da
computação e a ciência de dados, a IA contém vários subcampos que são populares
hoje. Esses subcampos incluem busca e planejamento, raciocínio e representação de
conhecimento, percepção, processamento de linguagem natural (PNL) e, claro,
aprendizado de máquina. O aprendizado de máquina sangra para outros campos da
IA, incluindo PNL e percepção por meio do uso compartilhado de algoritmos de autoaprendizagem.
Machine Translated by Google

Figura 4: Representação visual da relação entre campos relacionados a dados

Para estudantes com interesse em IA, o aprendizado de máquina fornece um excelente ponto
de partida, pois oferece uma lente de estudo mais estreita e prática em comparação à
ambiguidade conceitual da IA. Algoritmos encontrados no aprendizado de máquina também
podem ser aplicados em outras disciplinas, incluindo percepção e processamento de linguagem
natural. Além disso, um mestrado é adequado para desenvolver um certo nível de
especialização em aprendizado de máquina, mas você pode precisar de um doutorado para
fazer algum progresso real em IA.
Conforme mencionado, o aprendizado de máquina também se sobrepõe à mineração de
dados — uma disciplina irmã que se concentra em descobrir e desenterrar padrões em
grandes conjuntos de dados. Algoritmos populares, como clustering k-means, análise de
associação e análise de regressão, são aplicados tanto na mineração de dados quanto no
aprendizado de máquina para analisar dados. Mas onde o aprendizado de máquina se
concentra no processo incremental de autoaprendizagem e modelagem de dados para formar
previsões sobre o futuro, a mineração de dados se concentra na limpeza de grandes conjuntos
de dados para obter insights valiosos do passado.
A diferença entre mineração de dados e aprendizado de máquina pode ser explicada por meio
de uma analogia de duas equipes de arqueólogos. A primeira equipe é composta por
arqueólogos que concentram seus esforços na remoção de detritos que ficam no caminho de
itens valiosos, escondendo-os da visão direta. Seus objetivos principais são escavar a área,
encontrar novas descobertas valiosas e, então, empacotar seus equipamentos e seguir em
frente. Um dia depois, eles voarão para outro destino exótico para iniciar um novo projeto sem
nenhuma relação com o local que
Machine Translated by Google

escavado no dia anterior.


A segunda equipe também está no negócio de escavar sítios históricos, mas esses
arqueólogos usam uma metodologia diferente. Eles deliberadamente reformulam a escavação
do poço principal por várias semanas. Nesse tempo, eles visitam outros sítios arqueológicos
relevantes na área e examinam como cada sítio foi escavado. Após retornar ao local de seu
próprio projeto, eles aplicam esse conhecimento para escavar poços menores ao redor do
poço principal.
Os arqueólogos então analisam os resultados. Após refletir sobre sua experiência escavando
uma fossa, eles otimizam seus esforços para escavar a próxima. Isso inclui prever a
quantidade de tempo que leva para escavar uma fossa, entender a variação e os padrões
encontrados no terreno local e desenvolver novas estratégias para reduzir erros e melhorar
a precisão de seu trabalho. A partir dessa experiência, eles são capazes de otimizar sua
abordagem para formar um modelo estratégico para escavar a fossa principal.

Se ainda não estiver claro, a primeira equipe adere à mineração de dados e a segunda
equipe à aprendizagem de máquina. Em um nível micro, tanto a mineração de dados quanto
a aprendizagem de máquina parecem semelhantes, e elas usam muitas das mesmas ferramentas.
Ambas as equipes ganham a vida escavando sítios históricos para descobrir itens valiosos.
Mas, na prática, sua metodologia é diferente. A equipe de machine learning se concentra em
dividir seu conjunto de dados em dados de treinamento e dados de teste para criar um
modelo e melhorar previsões futuras com base na experiência anterior.
Enquanto isso, a equipe de mineração de dados se concentra em escavar a área-alvo da
forma mais eficaz possível — sem o uso de um modelo de autoaprendizagem — antes de
passar para o próximo trabalho de limpeza.
Machine Translated by Google

CATEGORIAS ML
O aprendizado de máquina incorpora centenas de algoritmos baseados em estatística e
escolher o algoritmo certo ou a combinação de algoritmos para o trabalho é um desafio
constante para qualquer um que trabalhe neste campo. Mas antes de examinarmos algoritmos
específicos, é importante entender as três categorias abrangentes do aprendizado de
máquina. Essas três categorias são supervisionado, não supervisionado e reforço.

Aprendizado supervisionado
Como o primeiro ramo do aprendizado de máquina, o aprendizado supervisionado concentra-
se em padrões de aprendizado por meio da conexão da relação entre variáveis e resultados
conhecidos e do trabalho com conjuntos de dados rotulados.
O aprendizado supervisionado funciona alimentando os dados de amostra da máquina com
vários recursos (representados como “X”) e o valor correto de saída dos dados (representado
como “y”). O fato de que os valores de saída e de recurso são conhecidos qualifica o conjunto
de dados como “rotulado”. O algoritmo então decifra padrões que existem nos dados e cria
um modelo que pode reproduzir as mesmas regras subjacentes com novos dados.

Por exemplo, para prever a taxa de mercado para a compra de um carro usado, um algoritmo
supervisionado pode formular previsões analisando a relação entre atributos do carro
(incluindo o ano de fabricação, marca do carro, quilometragem, etc.) e o preço de venda de
outros carros vendidos com base em dados históricos. Dado que o algoritmo supervisionado
sabe o preço final de outros cartões vendidos, ele pode então trabalhar de trás para frente
para determinar a relação entre as características do carro e seu valor.
Machine Translated by Google

Figura 1: Modelo de previsão do valor do carro

Após a máquina decifrar as regras e padrões dos dados, ela cria o que é conhecido
como um modelo: uma equação algorítmica para produzir um resultado com novos
dados com base nas regras derivadas dos dados de treinamento. Uma vez que o
modelo é preparado, ele pode ser aplicado a novos dados e testado quanto à precisão.
Após o modelo ter passado pelos estágios de dados de treinamento e teste, ele está
pronto para ser aplicado e usado no mundo real.
No Capítulo 13, criaremos um modelo para prever valores de casas onde y é o preço
real da casa e X são as variáveis que impactam y, como tamanho do terreno, localização
e número de cômodos. Por meio do aprendizado supervisionado, criaremos uma regra
para prever y (valor da casa) com base nos valores fornecidos de várias variáveis (X).

Exemplos de algoritmos de aprendizado supervisionado incluem análise de regressão,


árvores de decisão, k-vizinhos mais próximos, redes neurais e máquinas de vetores de
suporte. Cada uma dessas técnicas será introduzida mais adiante no livro.

Aprendizado não
supervisionado No caso do aprendizado não supervisionado, nem todas as variáveis
e padrões de dados são classificados. Em vez disso, a máquina deve descobrir padrões
ocultos e criar rótulos por meio do uso de algoritmos de aprendizado não supervisionado.
O algoritmo de agrupamento k-means é um exemplo popular de aprendizado não
supervisionado. Este algoritmo simples agrupa pontos de dados que possuem
características semelhantes às mostradas na Figura 1.
Machine Translated by Google

Figura 1: Exemplo de agrupamento k-means, uma técnica popular de aprendizagem não supervisionada

Se você agrupar pontos de dados com base no comportamento de compra de PMEs (Pequenas e
Médias Empresas) e grandes clientes corporativos, por exemplo, é provável que você veja dois
clusters emergirem. Isso ocorre porque PMEs e grandes empresas tendem a ter hábitos de compra
diferentes. Quando se trata de comprar infraestrutura de nuvem, por exemplo, recursos básicos de
hospedagem em nuvem e uma Rede de Distribuição de Conteúdo (CDN) podem ser suficientes para
a maioria dos clientes de PMEs.
Grandes clientes corporativos, no entanto, são mais propensos a comprar uma gama mais ampla de
produtos de nuvem e soluções inteiras que incluem produtos avançados de segurança e rede como
WAF (Web Application Firewall), uma conexão privada dedicada e VPC (Virtual Private Cloud). Ao
analisar os hábitos de compra do cliente, o aprendizado não supervisionado é capaz de identificar
esses dois grupos de clientes sem rótulos específicos que classifiquem a empresa como pequena,
média ou grande.

A vantagem do aprendizado não supervisionado é que ele permite que você descubra padrões nos
dados que você não sabia que existiam — como a presença de dois tipos principais de clientes.
Técnicas de clusterização, como clusterização k-means, também podem fornecer o trampolim para
conduzir análises posteriores após grupos discretos terem sido descobertos.

Na indústria, o aprendizado não supervisionado é particularmente poderoso na detecção de fraudes


— onde os ataques mais perigosos são frequentemente aqueles que ainda não foram classificados.
Um exemplo do mundo real é a DataVisor, que essencialmente construiu seu modelo de negócios
com base no aprendizado não supervisionado.
Fundada em 2013 na Califórnia, a DataVisor protege os clientes contra fraudes
Machine Translated by Google

atividades online, incluindo spam, avaliações falsas, instalações falsas de aplicativos e


transações fraudulentas. Enquanto os serviços tradicionais de proteção contra fraudes se
baseiam em modelos de aprendizado supervisionado e mecanismos de regras, o DataVisor usa
aprendizado não supervisionado, o que permite que eles detectem categorias não classificadas
de ataques em seus estágios iniciais.
Em seu site, a DataVisor explica que "para detectar ataques, as soluções existentes dependem
da experiência humana para criar regras ou dados de treinamento rotulados para ajustar
modelos. Isso significa que elas são incapazes de detectar novos ataques que ainda não foram
identificados por humanos ou rotulados em dados de treinamento."[5]
Isso significa que as soluções tradicionais analisam a cadeia de atividade para um ataque
específico e então criam regras para prever um ataque repetido. Sob esse cenário, a variável
dependente (y) é o evento de um ataque e as variáveis independentes (X) são as variáveis
preditoras comuns de um ataque.
Exemplos de variáveis independentes podem ser: a)
Um pedido grande repentino de um usuário desconhecido. IE clientes estabelecidos
geralmente gastam menos de US$ 100 por pedido, mas um novo usuário gasta US$ 8.000 em
um pedido imediatamente após registrar sua conta. b) Um
aumento repentino de avaliações de usuários. IE Como um autor e livreiro típico na
[Link], é incomum que meu primeiro trabalho publicado receba mais de uma resenha de
livro no espaço de um a dois dias. Em geral, aproximadamente 1 em cada 200 leitores da
Amazon deixa uma resenha de livro e a maioria dos livros passa semanas ou meses sem uma
resenha. No entanto, geralmente vejo concorrentes nesta categoria (ciência de dados) atraindo
de 20 a 50 resenhas em um dia!
(Sem surpresa, também vejo a Amazon removendo essas avaliações suspeitas semanas ou
meses depois.) c)
Avaliações de usuários idênticas ou semelhantes de usuários diferentes. Seguindo a
mesma analogia da Amazon, frequentemente vejo avaliações de usuários do meu livro
aparecerem em outros livros vários meses depois (às vezes com uma referência ao meu nome
como autor ainda incluído na avaliação!). Novamente, a Amazon eventualmente remove essas
avaliações falsas e suspende essas contas por violar seus termos de serviço. d) Endereço de
entrega
suspeito. IE Para pequenas empresas que rotineiramente enviam produtos para clientes locais,
um pedido de um local distante (onde eles não anunciam seus produtos) pode, em casos raros,
ser um indicador de atividade fraudulenta ou maliciosa.

Atividades autônomas, como um pedido grande repentino ou um endereço de entrega distante,


podem revelar-se com pouca informação para prever operações sofisticadas.
Machine Translated by Google

atividade cibercriminosa e mais propensa a levar a muitos falsos positivos. Mas um


modelo que monitora combinações de variáveis independentes, como um grande pedido
de compra repentino do outro lado do globo ou uma avalanche de resenhas de livros
que reutilizam conteúdo existente geralmente levará a previsões mais precisas. Um
modelo baseado em aprendizado supervisionado poderia desconstruir e classificar o que
essas variáveis independentes comuns são e projetar um sistema de detecção para
identificar e prevenir reincidências.
No entanto, cibercriminosos sofisticados aprendem a escapar de mecanismos de regras
baseados em classificação modificando suas táticas. Além disso, antes de um ataque,
os invasores geralmente registram e operam contas únicas ou múltiplas e incubam essas
contas com atividades que imitam usuários legítimos. Eles então utilizam seu histórico
de contas estabelecido para escapar de sistemas de detecção, que são pesados em
gatilhos contra contas registradas recentemente. Soluções baseadas em aprendizado
supervisionado lutam para detectar células adormecidas até que o dano real tenha sido
feito e especialmente com relação a novas categorias de ataques.
O DataVisor e outros provedores de soluções antifraude, portanto, aproveitam o
aprendizado não supervisionado para lidar com as limitações do aprendizado
supervisionado, analisando padrões em centenas de milhões de contas e identificando
conexões suspeitas entre usuários — sem saber a categoria real de ataques futuros. Ao
agrupar atores maliciosos e analisar suas conexões com outras contas, eles conseguem
evitar novos tipos de ataques cujas variáveis independentes ainda não estão rotuladas
e não classificadas. Células adormecidas em seu estágio de incubação (imitando
usuários legítimos) também são identificadas por meio de sua associação a contas
maliciosas. Algoritmos de agrupamento, como o agrupamento k-means, podem gerar
esses agrupamentos sem um conjunto de dados de treinamento completo na forma de
variáveis independentes que rotulam claramente as indicações de um ataque, como os
quatro exemplos listados anteriormente. O conhecimento da variável dependente
(atacantes conhecidos) é geralmente a chave para identificar outros invasores antes que
o próximo ataque ocorra. O outro lado positivo do aprendizado não supervisionado é que
empresas como o DataVisor podem descobrir redes criminosas inteiras identificando
correlações sutis entre usuários.
Abordaremos o aprendizado não supervisionado mais adiante neste livro, específico
para análise de clustering. Outros exemplos de aprendizado não supervisionado incluem
análise de associação, análise de rede social e algoritmos de dimensão descendente.

Aprendizagem por reforço


O aprendizado por reforço é a terceira e mais avançada categoria de algoritmos em
Machine Translated by Google

aprendizado de máquina. Diferentemente do aprendizado supervisionado e não


supervisionado, o aprendizado por reforço melhora continuamente seu modelo ao alavancar
o feedback de iterações anteriores. Isso é diferente do aprendizado supervisionado e não
supervisionado, que ambos alcançam um ponto final indefinido após um modelo ser
formulado a partir dos segmentos de dados de treinamento e teste.
O aprendizado por reforço pode ser complicado e provavelmente é melhor explicado por
meio de uma analogia com um videogame. Conforme um jogador progride pelo espaço
virtual de um jogo, ele aprende o valor de várias ações sob diferentes condições e se torna
mais familiarizado com o campo de jogo. Esses valores aprendidos então informam e
influenciam o comportamento subsequente de um jogador e seu desempenho melhora
imediatamente com base em seu aprendizado e experiência passada.

O aprendizado por reforço é muito semelhante, onde algoritmos são definidos para treinar o
modelo por meio de aprendizado contínuo. Um modelo padrão de aprendizado por reforço
tem critérios de desempenho mensuráveis onde as saídas não são marcadas — em vez
disso, elas são classificadas. No caso de veículos autônomos, evitar um acidente alocará
uma pontuação positiva e, no caso do xadrez, evitar a derrota também receberá uma
pontuação positiva.
Um exemplo algorítmico específico de aprendizado por reforço é o Q-learning. No Q-
learning, você começa com um ambiente definido de estados, representado pelo símbolo
'S'. No jogo Pac-Man, os estados podem ser os desafios, obstáculos ou caminhos que
existem no jogo. Pode haver uma parede à esquerda, um fantasma à direita e uma pílula de
poder acima — cada um representando estados diferentes.
O conjunto de ações possíveis para responder a esses estados é chamado de “A”. No caso
do Pac-Man, as ações são limitadas a movimentos para a esquerda, direita, para cima e
para baixo, bem como múltiplas combinações destes.
O terceiro símbolo importante é “Q”. Q é o valor inicial e tem um valor inicial de “0”.

À medida que o Pac-Man explora o espaço dentro do jogo, duas coisas principais

acontecerão: 1) Q cai à medida que coisas negativas ocorrem após um


determinado estado/ação; 2) Q aumenta à medida que coisas positivas
ocorrem após um determinado estado/ação. No Q-learning, a máquina aprenderá a combinar
a ação para um determinado estado que gera ou mantém o nível mais alto de Q. Ela
aprenderá inicialmente por meio do processo de movimentos aleatórios (ações) sob diferentes condições (e
A máquina registrará seus resultados (recompensas e penalidades) e como eles impactam
seu nível Q e armazenará esses valores para informar e otimizar seu futuro
Machine Translated by Google

ações.
Embora isso pareça simples o suficiente, a implementação é uma tarefa muito mais difícil e
está além do escopo de uma introdução absoluta ao aprendizado de máquina para iniciantes.
Algoritmos de aprendizado por reforço não são abordados neste livro, no entanto, deixarei
um link para uma explicação mais abrangente do aprendizado por reforço e Q-learning
seguindo o cenário do Pac-Man.
[Link]
Machine Translated by Google

A CAIXA DE FERRAMENTAS DE ML Uma maneira

prática de aprender uma nova área de estudo é mapear e visualizar os materiais e ferramentas
essenciais dentro de uma caixa de ferramentas.
Se você estivesse empacotando uma caixa de ferramentas para construir sites, por
exemplo, você primeiro empacotaria uma seleção de linguagens de programação. Isso
incluiria linguagens frontend como HTML, CSS e JavaScript, uma ou duas linguagens de
programação backend com base em preferências pessoais e, claro, um editor de texto.
Você pode jogar um construtor de sites como o WordPress e então ter outro compartimento
preenchido com hospedagem web, DNS e talvez alguns nomes de domínio que você
comprou recentemente.
Este não é um inventário extenso, mas a partir desta lista geral, você pode começar a ter
uma melhor noção de quais ferramentas precisa dominar para se tornar um desenvolvedor
de sites de sucesso.
Vamos agora desempacotar a caixa de ferramentas do aprendizado de máquina.

Compartimento 1: Dados
No primeiro compartimento estão seus dados. Os dados constituem as variáveis de entrada
necessárias para formar uma previsão. Os dados vêm em muitas formas, incluindo dados
estruturados e não estruturados. Como iniciante, é recomendado que você comece com
dados estruturados. Isso significa que os dados são definidos e rotulados (com esquema)
em uma tabela, conforme mostrado aqui:
Machine Translated by Google

Antes de prosseguirmos, quero primeiro explicar a anatomia de um conjunto de dados tabular. Um


conjunto de dados tabular (baseado em tabela) contém dados organizados em linhas e colunas.
Em cada coluna há um recurso. Um recurso também é conhecido como uma variável, uma
dimensão ou um atributo — mas todos eles significam a mesma coisa.
Cada linha individual representa uma única observação de uma dada característica/variável. As
linhas são algumas vezes referidas como um caso ou valor, mas neste livro, usaremos o termo
“linha”.

Figura 1: Exemplo de um conjunto de dados tabular

Cada coluna é conhecida como um vetor. Os vetores armazenam seus valores X e y e múltiplos
vetores (colunas) são comumente chamados de matrizes. No caso de aprendizado supervisionado,
y já existirá em seu conjunto de dados e será usado para identificar padrões em relação a variáveis
independentes (X). Os valores y são comumente expressos na coluna final, conforme mostrado
na Figura 2.
Machine Translated by Google

Figura 2: O valor y é frequentemente, mas nem sempre, expresso na coluna da extrema direita

Em seguida, dentro do primeiro compartimento da caixa de ferramentas, há uma variedade


de gráficos de dispersão, incluindo gráficos 2-D, 3-D e 4-D. Um gráfico de dispersão 2-D
consiste em um eixo vertical (conhecido como eixo y) e um eixo horizontal (conhecido como
eixo x) e fornece a tela gráfica para plotar uma série de pontos, conhecidos como pontos de dados.
Cada ponto de dados no gráfico de dispersão representa uma observação do conjunto de
dados, com valores X plotados no eixo x e valores y plotados no eixo y.
Machine Translated by Google

Figura 3: Exemplo de um gráfico de dispersão 2-D. X representa os dias passados desde o registro dos preços do Bitcoin e y representa o preço registrado do Bitcoin.

Compartimento 2: Infraestrutura O
segundo compartimento da caixa de ferramentas contém sua infraestrutura, que consiste em
plataformas e ferramentas para processar dados. Como iniciante em aprendizado de máquina,
você provavelmente estará usando um aplicativo da web (como o Jupyter Notebook) e uma
linguagem de programação como Python. Há então uma série de bibliotecas de aprendizado
de máquina, incluindo NumPy, Pandas e Scikit-learn que são compatíveis com Python.
Bibliotecas de aprendizado de máquina são uma coleção de rotinas de programação pré-
compiladas frequentemente usadas em aprendizado de máquina.
Você também precisará de uma máquina para trabalhar, na forma de um computador ou um
servidor virtual. Além disso, você pode precisar de bibliotecas especializadas para visualização
de dados, como Seaborn e Matplotlib, ou um programa de software autônomo como Tableau,
que suporta uma variedade de técnicas de visualização, incluindo gráficos, tabelas, mapas e
outras opções visuais.
Com sua infraestrutura espalhada pela mesa (hipoteticamente, é claro), você agora está
pronto para começar a trabalhar na construção do seu primeiro modelo de machine learning.
O primeiro passo é ligar seu computador. Laptops e computadores de mesa são adequados
para trabalhar com conjuntos de dados menores. Você precisará instalar um ambiente de
programação, como o Jupyter Notebook, e uma linguagem de programação, que para a
maioria dos iniciantes é o Python.
Python é a linguagem de programação mais amplamente usada para aprendizado de máquina
porque:
a) É fácil de aprender e operar, b) É
compatível com uma variedade de bibliotecas de aprendizado de máquina e c)
Ele pode ser usado para tarefas relacionadas, incluindo coleta de dados (web
scraping) e pipeline de dados (Hadoop e Spark).
Outras linguagens de referência para aprendizado de máquina incluem C e C++. Se você é
proficiente em C e C++, então faz sentido continuar com o que você já
Machine Translated by Google

sabe. C e C++ são as linguagens de programação padrão para aprendizado de máquina avançado
porque podem ser executadas diretamente em uma GPU (Unidade de Processamento Gráfico). Python
precisa ser convertido primeiro antes de poder ser executado em uma GPU, mas chegaremos a isso
e ao que é uma GPU mais adiante no capítulo.
Em seguida, os usuários do Python normalmente instalarão as seguintes bibliotecas: NumPy, Pandas
e Scikit-learn. NumPy é uma biblioteca gratuita e de código aberto que permite que você carregue e
trabalhe eficientemente com grandes conjuntos de dados, incluindo o gerenciamento de matrizes.

O Scikit-learn fornece acesso a uma variedade de algoritmos populares, incluindo regressão linear,
classificador de Bayes e máquinas de vetores de suporte.
Por fim, o Pandas permite que seus dados sejam representados em uma planilha virtual que você
pode controlar por meio de código. Ele compartilha muitos dos mesmos recursos do Microsoft Excel,
pois permite que você edite dados e execute cálculos. Na verdade, o nome Pandas deriva do termo
“dados do painel”, que se refere à sua capacidade de criar uma série de painéis, semelhantes a
“planilhas” no Excel. O Pandas também é ideal para importar e extrair dados de arquivos CSV.

Figura 4: Visualizando uma tabela no Jupyter Notebook usando Pandas

Em resumo, os usuários podem utilizar essas três bibliotecas para: 1)


Carregar e trabalhar com um conjunto de dados via NumPy.
2) Limpe e execute cálculos em dados e extraia dados de arquivos CSV com o Pandas.

3) Implementar algoritmos com Scikit-learn.


Para estudantes que buscam opções de programação alternativas (além de Python, C e C++), outras
linguagens de programação relevantes para aprendizado de máquina incluem R, MATLAB e Octave.

R é uma linguagem de programação livre e de código aberto otimizada para


Machine Translated by Google

operações matemáticas e propícias à construção de matrizes e funções estatísticas, que são


incorporadas diretamente nas bibliotecas de linguagem do R. Embora o R seja comumente usado
para análise e mineração de dados, o R também oferece suporte a operações de aprendizado de
máquina.
MATLAB e Octave são concorrentes diretos de R. MATLAB é uma linguagem de programação
comercial e proprietária. É forte em relação à resolução de equações algébricas e também é uma
linguagem de programação rápida de aprender.
O MATLAB é amplamente usado em engenharia elétrica, engenharia química, engenharia civil e
engenharia aeronáutica. No entanto, cientistas da computação e engenheiros da computação tendem
a não confiar tanto no MATLAB, especialmente nos últimos tempos. Em aprendizado de máquina, o
MATLAB é mais frequentemente usado na academia do que na indústria. Portanto, embora você
possa ver o MATLAB em destaque em cursos on-line, e especialmente no Coursera, isso não quer
dizer que ele seja comumente usado na natureza. Se, no entanto, você vem de uma formação em
engenharia, o MATLAB é certamente uma escolha lógica.

Por fim, o Octave é essencialmente uma versão gratuita do MATLAB desenvolvida em resposta ao
MATLAB pela comunidade de código aberto.

Compartimento 3: Algoritmos Agora


que o ambiente de aprendizado de máquina está configurado e você escolheu sua linguagem de
programação e bibliotecas, você pode importar seus dados diretamente de um arquivo CSV. Você
pode encontrar centenas de conjuntos de dados interessantes no formato CSV em [Link]. Depois
de se registrar como membro da plataforma, você pode baixar um conjunto de dados de sua escolha.
O melhor de tudo é que os conjuntos de dados do Kaggle são gratuitos e não há custo para se
registrar como usuário.
O conjunto de dados será baixado diretamente para seu computador como um arquivo CSV, o que
significa que você pode usar o Microsoft Excel para abrir e até mesmo executar algoritmos básicos,
como regressão linear, em seu conjunto de dados.
O próximo é o terceiro e último compartimento que armazena os algoritmos. Iniciantes normalmente
começarão usando algoritmos simples de aprendizado supervisionado, como regressão linear,
regressão logística, árvores de decisão e k-vizinhos mais próximos.
Iniciantes também tendem a aplicar aprendizado não supervisionado na forma de agrupamento de k-
meios e algoritmos de dimensão descendente.

Visualização

Não importa o quão impactantes e perspicazes sejam suas descobertas de dados, você precisa de um
Machine Translated by Google

maneira de comunicar efetivamente os resultados aos tomadores de decisão relevantes. É


aqui que a visualização de dados, um meio altamente eficaz para comunicar descobertas de
dados a um público geral, é útil. A mensagem visual transmitida por meio de gráficos,
diagramas de dispersão, diagramas de caixa e a representação de números em formas torna
a narrativa rápida e fácil.
Em geral, quanto menos informado seu público estiver, mais importante será visualizar suas
descobertas. Por outro lado, se seu público tiver conhecimento sobre o tópico, detalhes
adicionais e termos técnicos podem ser usados para suplementar elementos visuais.

Para visualizar seus resultados, você pode usar o Tableau ou uma biblioteca Python como o
Seaborn, que são armazenados no segundo compartimento da caixa de ferramentas.
Machine Translated by Google

Caixa de ferramentas
avançada Até agora examinamos a caixa de ferramentas para um iniciante típico, mas e
um usuário avançado? Como seria a caixa de ferramentas dele? Embora possa levar
algum tempo até que você comece a trabalhar com o kit de ferramentas avançado, não
custa nada dar uma espiadinha.
A caixa de ferramentas para um aprendiz avançado se assemelha à caixa de ferramentas do
iniciante, mas naturalmente vem com um espectro mais amplo de ferramentas e, claro, dados.
Uma das maiores diferenças entre um iniciante e um aprendiz avançado é o tamanho dos
dados que eles gerenciam e operam. Iniciantes naturalmente começam trabalhando com
pequenos conjuntos de dados que são fáceis de gerenciar e que podem ser baixados
diretamente para o desktop como um arquivo CSV simples. Aprendizes avançados, no
entanto, estarão ansiosos para lidar com conjuntos de dados massivos, bem na vizinhança de big data.

Compartimento 1: Big Data Big


data é usado para descrever um conjunto de dados que, devido ao seu valor, variedade,
volume e velocidade, desafia os métodos convencionais de processamento e seria impossível
para um humano processar sem a assistência de uma máquina avançada. Big data não tem
uma definição exata em termos de tamanho ou número total de linhas e colunas. No
momento, petabytes se qualificam como big data, mas os conjuntos de dados estão se
tornando cada vez maiores à medida que encontramos novas maneiras de coletar e
armazenar dados de forma eficiente e com baixo custo. E com big data também vem mais
ruído e estruturas de dados complicadas. Uma grande parte, portanto, do trabalho com big
data é scrubbing: o processo de refinar seu conjunto de dados antes de construir seu modelo,
que será abordado no próximo capítulo.

Compartimento 2: Infraestrutura
Depois de limpar o conjunto de dados, o próximo passo é retirar seu equipamento de
aprendizado de máquina. Em termos de ferramentas, não há surpresas reais. Alunos
avançados ainda estão usando as mesmas bibliotecas de aprendizado de máquina,
linguagens de programação e ambientes de programação que os iniciantes.
No entanto, dado que os alunos avançados agora estão lidando com até petabytes de dados,
uma infraestrutura robusta é necessária. Em vez de depender da CPU de um computador
pessoal, os alunos avançados normalmente recorrem à computação distribuída e a um
provedor de nuvem como a Amazon Web Services (AWS) para executar seu processamento
de dados no que é conhecido como uma instância de Unidade de Processamento Gráfico (GPU).
Machine Translated by Google

Os chips de GPU foram originalmente adicionados a placas-mãe de PC e consoles de vídeo


como o PlayStation 2 e o Xbox para fins de jogos. Eles foram desenvolvidos para acelerar a
criação de imagens com milhões de pixels cujos quadros precisavam ser constantemente
recalculados para exibir a saída em menos de um segundo. Em 2005, os chips de GPU foram
produzidos em quantidades tão grandes que seu preço caiu drasticamente e eles
essencialmente amadureceram em uma mercadoria. Embora altamente populares na indústria
de videogames, a aplicação desses chips de computador no espaço de aprendizado de
máquina não foi totalmente compreendida ou realizada até recentemente.

Em seu romance de 2016, The Inevitable: Understanding the 12 Technological Forces That
Will Shape Our Future, o editor executivo fundador da Wired Magazine, Kevin Kelly, explica
que em 2009, Andrew Ng e uma equipe da Universidade de Stanford descobriram como
conectar clusters de GPU baratos para executar redes neurais compostas por centenas de
milhões de conexões de nós.
“Os processadores tradicionais exigiam várias semanas para calcular todas as possibilidades
em cascata em uma rede neural com cem milhões de parâmetros. Ng descobriu que um
cluster de GPUs poderia realizar a mesma coisa em um dia.” [6]
Como um chip de computação paralela especializado, as instâncias de GPU são capazes de
executar muito mais operações de ponto flutuante por segundo do que uma CPU, permitindo
soluções muito mais rápidas com álgebra linear e estatística do que com uma CPU.
É importante notar que C e C++ são as linguagens preferidas para editar e executar operações matemáticas
diretamente na GPU. No entanto, Python também pode ser usado e convertido em C em combinação com
TensorFlow do Google.

Embora seja possível executar o TensorFlow na CPU, você pode ganhar até cerca de 1.000x
em desempenho usando a GPU. Infelizmente para usuários de Mac, o TensorFlow é
compatível apenas com a placa GPU Nvidia, que não está mais disponível com o Mac OS X.
Usuários de Mac ainda podem executar o TensorFlow em sua CPU, mas precisarão projetar
um patch/driver externo ou executar sua carga de trabalho na nuvem para acessar a GPU.
Amazon Web Services, Microsoft Azure, Alibaba Cloud, Google Cloud Platform e outros
provedores de nuvem oferecem recursos de GPU pagos conforme o uso, que podem
começar gratuitamente por meio de um programa de teste gratuito.
O Google Cloud Platform é atualmente considerado uma opção líder para recursos de GPU
com base em desempenho e preço. Em 2016, o Google também anunciou que lançaria
publicamente uma Tensor Processing Unit projetada especificamente para executar o
TensorFlow, que já é usado internamente no Google.
Machine Translated by Google

Compartimento 3: Algoritmos avançados Para


finalizar este capítulo, vamos dar uma olhada no terceiro compartimento da caixa de
ferramentas avançada que contém algoritmos de aprendizado de máquina.
Para analisar grandes conjuntos de dados, alunos avançados trabalham com uma infinidade
de algoritmos avançados, incluindo modelos de Markov, máquinas de vetores de suporte e
Q-learning, bem como uma série de algoritmos simples como aqueles encontrados na caixa
de ferramentas do iniciante. Mas a família de algoritmos que eles provavelmente usarão é a
de redes neurais (apresentada no Capítulo 10), que vem com sua própria seleção de
bibliotecas avançadas de aprendizado de máquina.
Enquanto o Scikit-learn oferece uma gama de algoritmos superficiais populares, o TensorFlow
é a biblioteca de aprendizado de máquina de escolha para redes neurais/aprendizado
profundo, pois suporta inúmeras técnicas avançadas, incluindo cálculo automático para
retropropagação/descida de gradiente. Devido à profundidade de recursos, documentação
e trabalhos disponíveis com o TensorFlow, é o framework óbvio para aprender hoje.

Bibliotecas populares de redes neurais alternativas incluem Torch, Caffe e a Keras, que está crescendo
rapidamente. Escrita em Python, Keras é uma biblioteca de aprendizado profundo de código aberto que roda em
cima do TensorFlow, Theano e outras estruturas, e permite que os usuários realizem experimentações rápidas
em menos linhas de código. Como um tema de site WordPress, Keras é mínimo, modular e rápido de instalar e
executar, mas é menos flexível em comparação com o TensorFlow e outras bibliotecas. Às vezes, os usuários
utilizam Keras para validar seu modelo antes de mudar para o TensorFlow para construir um modelo mais
personalizado.

O Caffe também é de código aberto e comumente usado para desenvolver arquiteturas de


aprendizado profundo para classificação e segmentação de imagens. O Caffe é escrito em
C++, mas tem uma interface Python que também suporta aceleração baseada em GPU
usando o Nvidia CuDNN.
Lançado em 2002, o Torch está bem estabelecido na comunidade de aprendizado profundo.
É de código aberto e baseado na linguagem de programação Lua. O Torch oferece uma
gama de algoritmos para aprendizado profundo e é usado no Facebook, Google, Twitter,
NYU, IDIAP, Purdue, bem como em outras empresas e laboratórios de pesquisa. [7]
Até recentemente, o Theano era outro concorrente do TensorFlow, mas no final de 2017, as
contribuições para o framework cessaram oficialmente.
Às vezes, usada junto com redes neurais, há outra abordagem avançada chamada
modelagem de conjunto. Essa técnica essencialmente combina algoritmos e técnicas
estatísticas para criar um modelo unificado, que exploraremos mais a fundo no Capítulo 12.
Machine Translated by Google

LIMPEZA DE DADOS Assim como muitas


categorias de frutas, os conjuntos de dados quase sempre exigem alguma forma de
limpeza inicial e manipulação humana antes de estarem prontos para serem digeridos.
Para aprendizado de máquina e ciência de dados de forma mais ampla, há um grande
número de técnicas para limpar dados.
Scrubbing é o processo técnico de refinar seu conjunto de dados para torná-lo mais funcional.
Isso pode envolver modificar e, às vezes, remover dados incompletos, formatados
incorretamente, irrelevantes ou duplicados. Também pode envolver a conversão de dados
baseados em texto em valores numéricos e o redesenho de recursos. Para profissionais de
dados, a depuração de dados geralmente exige a maior aplicação de tempo e esforço.

Seleção de Recursos
Para gerar os melhores resultados a partir dos seus dados, é importante primeiro identificar
as variáveis mais relevantes para sua hipótese. Na prática, isso significa ser seletivo sobre
as variáveis que você seleciona para projetar seu modelo.
Em vez de criar um gráfico de dispersão quadridimensional com quatro recursos no modelo,
pode surgir uma oportunidade de selecionar dois recursos altamente relevantes e construir
um gráfico bidimensional que seja mais fácil de interpretar. Além disso, preservar recursos
que não se correlacionam fortemente com o valor do resultado pode, de fato, manipular e
prejudicar a precisão do modelo. Considere o seguinte trecho da tabela baixado do
[Link] documentando línguas moribundas.
Machine Translated by Google

Banco de dados: [Link]

Digamos que nosso objetivo é identificar variáveis que levam a uma língua a se
tornar ameaçada. Com base nesse objetivo, é improvável que o “Nome em
Espanhol” de uma língua leve a qualquer insight relevante. Podemos, portanto,
prosseguir e excluir esse vetor (coluna) do conjunto de dados. Isso ajudará a
evitar complicações excessivas e imprecisões potenciais, e também melhorará a
velocidade geral de processamento do modelo.
Em segundo lugar, o conjunto de dados contém informações duplicadas na forma
de vetores separados para “Países” e “Código do país”. Incluir ambos os vetores
não fornece nenhuma visão adicional; portanto, podemos escolher excluir um
Machine Translated by Google

e reter o outro.
Outro método para reduzir o número de recursos é reunir vários recursos em um. Na
próxima tabela, temos uma lista de produtos vendidos em uma plataforma de e-
commerce. O conjunto de dados compreende quatro compradores e oito produtos.
Este não é um tamanho de amostra grande de compradores e produtos — devido em
parte às limitações espaciais do formato de livro. Uma plataforma de e-commerce da
vida real teria muito mais colunas para trabalhar, mas vamos prosseguir com este exemplo.

Para analisar os dados de forma mais eficiente, podemos reduzir o número de colunas
mesclando recursos semelhantes em menos colunas. Por exemplo, podemos remover
nomes de produtos individuais e substituir os oito itens de produtos por um número
menor de categorias ou subtipos. Como todos os itens de produtos se enquadram na
categoria única de "fitness", classificaremos por subtipo de produto e compactaremos
as colunas de oito para três. As três colunas de subtipo de produto recém-criadas são
"Health Food", "Apparel" e "Digital".

Isso nos permite transformar o conjunto de dados de uma forma que preserva e
captura informações usando menos variáveis. A desvantagem dessa transformação é
que temos menos informações sobre relacionamentos entre produtos específicos.
Machine Translated by Google

Em vez de recomendar produtos aos usuários de acordo com outros produtos individuais, as
recomendações serão baseadas em relacionamentos entre subtipos de produtos.

No entanto, essa abordagem mantém um alto nível de relevância dos dados.


Os compradores receberão recomendações de alimentos saudáveis quando comprarem outros
alimentos saudáveis ou quando comprarem vestuário (dependendo do nível de correlação), e
obviamente não livros didáticos de aprendizado de máquina — a menos que se descubra que há
uma forte correlação aí! Mas, infelizmente, tal variável está fora do quadro deste conjunto de dados.
Lembre-se de que a redução de dados também é uma decisão empresarial, e os empresários,
em conjunto com a equipe de ciência de dados, precisarão considerar a compensação entre a
conveniência e a precisão geral do modelo.

Compactação de linhas
Além da seleção de recursos, também pode haver uma oportunidade de reduzir o número de
linhas e, assim, compactar o número total de pontos de dados.
Isso pode envolver a fusão de duas ou mais linhas em uma. Por exemplo, no conjunto de dados
a seguir, “Tiger” e “Lion” podem ser fundidos e renomeados como “Carnivore”.

No entanto, ao mesclar essas duas linhas (Tigre e Leão), os valores dos recursos para
Machine Translated by Google

ambas as linhas também devem ser agregadas e registradas em uma única linha. Neste caso, é
viável mesclar as duas linhas porque ambas possuem os mesmos valores categóricos para todos
os recursos, exceto y (Tempo de Corrida) — que pode ser agregado. O tempo de corrida do
Tigre e do Leão pode ser adicionado e dividido por dois.

Valores numéricos, como tempo, são normalmente simples de agregar, a menos que sejam
categóricos. Por exemplo, seria impossível agregar um animal com quatro patas e um animal
com duas patas! Obviamente, não podemos mesclar esses dois animais e definir “três” como o
número agregado de patas.
A compactação de linha também pode ser difícil de implementar quando valores numéricos não
estão disponíveis. Por exemplo, os valores “Japão” e “Argentina” são muito difíceis de mesclar.
Os países “Japão” e “Coreia do Sul” podem ser mesclados, pois podem ser categorizados como
o mesmo continente, “Ásia” ou “Leste Asiático”.
No entanto, se adicionarmos “Paquistão” e “Indonésia” ao mesmo grupo, podemos começar a ver
resultados distorcidos, pois há diferenças culturais, religiosas, econômicas e de outro tipo
significativas entre esses quatro países.
Em resumo, valores de linha não numéricos e categóricos podem ser problemáticos para mesclar
enquanto preservam o valor verdadeiro dos dados originais. Além disso, a compactação de linha
é normalmente menos atingível do que a compactação de recursos para a maioria dos conjuntos
de dados.

Codificação One-hot
Depois de escolher variáveis e linhas, você deve procurar recursos baseados em texto que
podem ser convertidos em números. Além de valores baseados em texto definidos, como True/
False (que convertem automaticamente para "1" e "0" respectivamente), muitos algoritmos e
também gráficos de dispersão não são compatíveis com dados não numéricos.

Um meio de converter recursos baseados em texto em valores numéricos é por meio da


codificação one-hot, que transforma os recursos em formato binário, representado como “1” ou
“0” — “Verdadeiro” ou “Falso”. Um “0”, representando Falso, significa que o recurso não pertence
a uma categoria específica, enquanto um “1” — Verdadeiro ou “hot” — denota que o recurso
pertence a uma categoria definida.
Abaixo está outro trecho do conjunto de dados sobre línguas em extinção, que podemos usar
para praticar a codificação one-hot.
Machine Translated by Google

Primeiro, observe que os valores contidos na coluna “Nº de falantes” não contêm
vírgulas ou espaços, por exemplo, 7.500.000 e 7.500.000. Embora essa formatação
torne números grandes mais claros para nossos olhos, as linguagens de programação
não exigem essas sutilezas. Na verdade, a formatação de números pode levar a uma
sintaxe inválida ou disparar um resultado indesejado, dependendo da linguagem de
programação que você usa. Portanto, lembre-se de manter os números sem formatação
para fins de programação. Sinta-se à vontade, no entanto, para adicionar espaçamento
ou vírgulas no estágio de visualização de dados, pois isso tornará mais fácil para o seu
público interpretar!
No lado direito da tabela há um vetor categorizando o grau de perigo das nove línguas
diferentes. Podemos converter esta coluna para valores numéricos aplicando o método
de codificação one-hot, conforme demonstrado na tabela subsequente.
Machine Translated by Google

Usando codificação one-hot, o conjunto de dados foi expandido para cinco colunas e criamos
três novos recursos a partir do recurso original (Grau de Perigo). Também definimos cada
valor de coluna como “1” ou “0”, dependendo do valor da categoria original.

Isso agora nos permite inserir os dados em nosso modelo e escolher entre uma gama maior
de algoritmos de machine learning. A desvantagem é que temos mais recursos de conjunto
de dados, o que pode levar a um tempo de processamento um pouco maior. Isso ainda é
administrável, mas pode ser problemático para conjuntos de dados em que os recursos
originais são divididos em um número maior de novos recursos.
Um truque para minimizar o número de recursos é restringir casos binários a uma única
coluna. Como exemplo, há um conjunto de dados de speed dating no [Link] que lista
“Gênero” em uma única coluna usando codificação one-hot. Em vez de criar colunas discretas
para “Masculino” e “Feminino”, eles mesclaram esses dois recursos em um. De acordo com a
chave do conjunto de dados, as mulheres são denotadas como “0” e os homens são denotados
como “1”. O criador do conjunto de dados também usou essa técnica para “Mesma Raça” e
“Correspondência”.
Machine Translated by Google

Banco de dados: [Link]

Agrupamento Agrupamento é outro método de engenharia de recursos usado para


converter valores numéricos em uma categoria.
Uau, espere! Você não disse que valores numéricos eram uma coisa boa? Sim, valores
numéricos tendem a ser preferidos na maioria dos casos. Onde valores numéricos são menos
ideais, é em situações onde eles listam variações irrelevantes para os objetivos da sua
análise. Vamos pegar a avaliação do preço da casa como exemplo. As medidas exatas de
uma quadra de tênis podem não importar muito ao avaliar os preços da casa. A informação
relevante é se a casa tem uma quadra de tênis. A mesma lógica provavelmente também se
aplica à garagem e à piscina, onde a existência ou não da variável é mais influente do que
suas medidas específicas.

A solução aqui é substituir as medidas numéricas da quadra de tênis por um recurso


Verdadeiro/Falso ou um valor categórico como “pequeno”, “médio” e “grande”. Outra alternativa
seria aplicar a codificação one-hot com “0” para casas que não têm quadra de tênis e “1” para
casas que têm uma
Machine Translated by Google

quadra de tênis.

Dados Faltantes
Lidar com dados faltantes nunca é uma situação desejada. Imagine desempacotar um quebra-cabeça
que você descobre que tem cinco por cento de suas peças faltando.
Valores ausentes em um conjunto de dados podem ser igualmente frustrantes e, em última análise,
interferirão em sua análise e previsões finais. Existem, no entanto, estratégias para minimizar o
impacto negativo de dados ausentes.
Uma abordagem é aproximar valores ausentes usando o valor de modo . O modo representa o valor
de variável mais comum disponível no conjunto de dados. Isso funciona melhor com tipos de variáveis
categóricas e binárias.

Figura 1: Um exemplo visual do modo e da mediana, respectivamente

A segunda abordagem para gerenciar dados ausentes é aproximar valores ausentes usando o valor
mediano , que adota o(s) valor(es) localizado(s) no meio do conjunto de dados. Isso funciona melhor
com inteiros (números inteiros) e variáveis contínuas (números com decimais).

Como último recurso, linhas com valores ausentes podem ser removidas completamente. A
desvantagem óbvia dessa abordagem é ter menos dados para analisar e resultados potencialmente
menos abrangentes.
Machine Translated by Google

CONFIGURANDO SEUS DADOS Depois de limpar seu conjunto

de dados, a próxima tarefa é dividir os dados em dois segmentos para teste e


treinamento. É muito importante não testar seu modelo com os mesmos dados que
você usou para treinamento. A proporção das duas divisões deve ser aproximadamente
70/30 ou 80/20. Isso significa que seus dados de treinamento devem ser responsáveis
por 70% a 80% das linhas em seu conjunto de dados, e os outros 20% a 30% das linhas
são seus dados de teste. É vital dividir seus dados por linhas e não por colunas.

Figura 1: Treinamento e particionamento de teste do conjunto de dados 70/30

Antes de dividir seus dados, é importante que você randomize todas as linhas no conjunto
de dados. Isso ajuda a evitar viés em seu modelo, pois seu conjunto de dados original pode
ser organizado sequencialmente dependendo do momento em que foi coletado ou de algum
outro fator. A menos que você randomize seus dados, você pode acidentalmente omitir
variância importante dos dados de treinamento que causarão surpresas indesejadas quando você
Machine Translated by Google

aplique o modelo treinado aos seus dados de teste. Felizmente, o Scikit-learn fornece
uma função interna para embaralhar e randomizar seus dados com apenas uma linha de
código (demonstrado no Capítulo 13).
Após randomizar seus dados, você pode começar a projetar seu modelo e aplicá-lo aos
dados de treinamento. Os 30% restantes ou mais dos dados são colocados de lado e
reservados para testar a precisão do modelo.
No caso de aprendizado supervisionado, o modelo é desenvolvido alimentando a máquina
com os dados de treinamento e a saída esperada (y). A máquina é capaz de analisar e
discernir relacionamentos entre os recursos (X) encontrados nos dados de treinamento
para calcular a saída final (y).
O próximo passo é medir o quão bem o modelo realmente funciona. Uma abordagem
comum para analisar a precisão da previsão é uma medida chamada erro absoluto médio,
que examina cada previsão no modelo e fornece uma pontuação de erro média para cada
previsão.
No Scikit-learn, o erro absoluto médio é encontrado usando a função [Link] em X
(recursos). Isso funciona primeiro conectando os valores y do conjunto de dados de
treinamento e gerando uma previsão para cada linha no conjunto de dados. O Scikit-learn
comparará as previsões do modelo com o resultado correto e medirá sua precisão. Você
saberá se seu modelo é preciso quando a taxa de erro entre o conjunto de dados de
treinamento e teste for baixa. Isso significa que o modelo aprendeu os padrões e
tendências subjacentes do conjunto de dados.
Uma vez que o modelo pode prever adequadamente os valores dos dados de teste, ele
está pronto para uso na natureza. Se o modelo falhar em prever com precisão os valores
dos dados de teste, você precisará verificar se os dados de treinamento e teste foram
adequadamente randomizados. Como alternativa, você pode precisar alterar os
hiperparâmetros do modelo.
Cada algoritmo tem hiperparâmetros; essas são as configurações do seu algoritmo. Em
termos simples, essas configurações controlam e impactam a rapidez com que o modelo
aprende padrões e quais padrões identificar e analisar.

Validação Cruzada
Embora a divisão de dados de treinamento/teste possa ser eficaz no desenvolvimento de
modelos a partir de dados existentes, permanece uma dúvida sobre se o modelo
funcionará em novos dados. Se seu conjunto de dados existente for muito pequeno para
construir um modelo preciso, ou se a partição de dados de treinamento/teste não for
apropriada, isso pode levar a estimativas ruins de desempenho na prática.
Machine Translated by Google

Felizmente, há uma solução alternativa eficaz para esse problema. Em vez de dividir os dados
em dois segmentos (um para treinamento e um para teste), podemos implementar o que é
conhecido como validação cruzada. A validação cruzada maximiza a disponibilidade dos
dados de treinamento dividindo os dados em várias combinações e testando cada combinação
específica.
A validação cruzada pode ser realizada por meio de dois métodos principais. O primeiro
método é a validação cruzada exaustiva, que envolve encontrar e testar todas as combinações
possíveis para dividir a amostra original em um conjunto de treinamento e um conjunto de
teste. O método alternativo e mais comum é a validação cruzada não exaustiva, conhecida
como validação k-fold. A técnica de validação k-fold envolve dividir os dados em k buckets
atribuídos e reservar um desses buckets para testar o modelo de treinamento em cada rodada.

Para executar a validação k-fold, os dados são primeiro atribuídos aleatoriamente a um número
k de buckets de tamanhos iguais. Um bucket é então reservado como o bucket de teste e é
usado para medir e avaliar o desempenho dos buckets restantes (k-1).

Figura 2: validação k-fold

O processo de validação cruzada é repetido k número de vezes (“folds”). Em cada fold, um


bucket é reservado para testar o modelo de treinamento gerado pelos outros buckets. O
processo é repetido até que todos os buckets tenham sido utilizados como um
Machine Translated by Google

treinamento e teste bucket. Os resultados são então agregados e combinados para formular um
único modelo.
Ao usar todos os dados disponíveis para fins de treinamento e teste, a técnica de validação k-fold
minimiza drasticamente o erro potencial (como overfitting) encontrado ao confiar em uma divisão
fixa de dados de treinamento e teste.

De quantos dados preciso?


Uma pergunta comum para estudantes que estão começando em machine learning é quantos dados
eu preciso para treinar meu conjunto de dados? Em geral, o machine learning funciona melhor
quando seu conjunto de dados de treinamento inclui uma gama completa de combinações de recursos.
Como é uma gama completa de combinações de recursos? Imagine que você tem um conjunto de
dados sobre cientistas de dados categorizados pelos seguintes recursos: - Diploma
universitário (X) - Mais de 5
anos de experiência profissional (X)
- Crianças (X)
- Salário (y)
Para avaliar a relação que os três primeiros recursos (X) têm com o salário de um cientista de dados
(y), precisamos de um conjunto de dados que inclua o valor y para cada combinação de recursos.
Por exemplo, precisamos saber o salário de cientistas de dados com diploma universitário, mais de
5 anos de experiência profissional e que não têm filhos, bem como cientistas de dados com diploma
universitário, mais de 5 anos de experiência profissional e que têm filhos.

Quanto mais combinações disponíveis, mais eficaz o modelo será em capturar como cada
atributo afeta y (o salário do cientista de dados). Isso garantirá que, quando for colocar o
modelo em prática nos dados de teste ou dados da vida real, ele não se desfará imediatamente
ao ver combinações não vistas.

No mínimo, um modelo de machine learning deve ter tipicamente dez vezes mais pontos de dados
do que o número total de recursos. Então, para um pequeno conjunto de dados com três recursos,
os dados de treinamento devem ter, idealmente, pelo menos trinta linhas.
O outro ponto a lembrar é que dados mais relevantes geralmente são melhores do que menos. Ter
dados mais relevantes permite que você cubra mais combinações e geralmente ajuda a garantir
previsões mais precisas. Em alguns casos, pode não ser possível ou econômico obter dados para
todas as combinações possíveis. Nesses casos, você precisará se contentar com os dados que tem
à disposição.
Machine Translated by Google

Os capítulos seguintes examinarão algoritmos específicos comumente usados


em aprendizado de máquina. Observe que incluo algumas equações por
necessidade e tentei mantê-las o mais simples possível. Muitas das técnicas
de aprendizado de máquina que discutimos neste livro já têm implementações
funcionais na linguagem de programação de sua escolha — não é necessário
escrever equações.
Machine Translated by Google

ANÁLISE DE REGRESSÃO Como o “Olá Mundo” dos algoritmos de

aprendizado de máquina, a análise de regressão é uma técnica simples de aprendizado supervisionado usada
para encontrar a melhor linha de tendência para descrever um conjunto de dados.

A primeira técnica de análise de regressão que examinaremos é a regressão linear, que usa uma
linha reta para descrever um conjunto de dados. Para descompactar essa técnica simples, vamos
retornar ao conjunto de dados anterior que mapeia os valores do Bitcoin para o dólar americano.

Imagine que você está de volta ao ensino médio e é o ano de 2015 (que provavelmente é muito
mais recente do que seu ano real de formatura!). Durante seu último ano, uma manchete de jornal
desperta seu interesse em Bitcoin. Com sua tendência natural de perseguir o próximo objeto
brilhante, você conta à sua família sobre suas aspirações em criptomoedas. Mas antes que você
tenha a chance de dar um lance para seu primeiro Bitcoin na Coinbase, seu pai intervém e insiste
que você tente o paper trading antes de arriscar suas economias de vida. O "paper trading" é usar
meios simulados para comprar e vender um investimento sem envolver dinheiro real.

Então, nos próximos vinte e quatro meses, você rastreia o valor do Bitcoin e anota seu valor em
intervalos regulares. Você também mantém uma contagem de quantos dias se passaram desde
que você começou a negociar em papel. Você nunca imaginou que ainda estaria negociando em
papel depois de dois anos, mas infelizmente, você nunca teve uma
Machine Translated by Google

chance de entrar no mercado de criptomoedas. Como sugerido por seu pai, você esperou que
o valor do Bitcoin caísse para um nível que você pudesse pagar. Mas, em vez disso, o valor
do Bitcoin explodiu na direção oposta.
No entanto, você não perdeu a esperança de um dia possuir Bitcoin. Para ajudar na sua
decisão sobre se você continua esperando o valor cair ou encontra uma classe de investimento
alternativa, você volta sua atenção para a análise estatística.
Primeiro, você pega um gráfico de dispersão em sua caixa de ferramentas. Com o gráfico de
dispersão em branco em suas mãos, você prossegue para inserir suas coordenadas x e y do
seu conjunto de dados e plota os valores do Bitcoin de 2015 a 2017. No entanto, em vez de
usar todas as três colunas da tabela, você seleciona a segunda (preço do Bitcoin) e a terceira
(Nº de dias transcorridos) colunas para construir seu modelo e preencher o gráfico de
dispersão (mostrado na Figura 1). Como sabemos, valores numéricos (encontrados na
segunda e terceira colunas) são fáceis de inserir em um gráfico de dispersão e não exigem
nenhuma conversão especial ou codificação one-hot. Além disso, a primeira e a terceira
colunas contêm a mesma variável de "tempo" e a terceira coluna sozinha é suficiente.

Figura 1: Valores do Bitcoin de 2015-2017 plotados em um gráfico de dispersão

Como seu objetivo é estimar o valor que o Bitcoin terá no futuro, o eixo y plota a variável
dependente, que é “Preço do Bitcoin”. A variável independente (X), neste caso, é o tempo. O
“Número de Dias Transcorridos” é, portanto, plotado no eixo x.
Machine Translated by Google

Depois de plotar os valores x e y no gráfico de dispersão, você pode ver imediatamente


uma tendência na forma de uma curva ascendente da esquerda para a direita com um
aumento acentuado entre o dia 607 e o dia 736. Com base na trajetória ascendente da
curva, pode ser hora de parar de esperar por uma queda no valor.
No entanto, uma ideia de repente surge na sua cabeça. E se, em vez de esperar que o
valor do Bitcoin caia para um nível que você possa pagar, você pegasse emprestado de
um amigo e comprasse Bitcoin agora no dia 736? Então, quando o valor do Bitcoin subir
ainda mais, você pode pagar de volta ao seu amigo e continuar a ganhar valorização de
ativos no Bitcoin que você possui integralmente.
Para avaliar se vale a pena pedir emprestado ao seu amigo, você precisará primeiro
estimar quanto pode ganhar em lucro potencial. Então você precisa descobrir se o retorno
do investimento será adequado para pagar seu amigo no curto prazo.

Agora é hora de chegar ao terceiro compartimento da caixa de ferramentas para um


algoritmo. Um dos algoritmos mais simples em machine learning é a análise de regressão,
que é usada para determinar a força de uma relação entre variáveis. A análise de regressão
vem em muitas formas, incluindo linear, não linear, logística e multilinear, mas vamos dar
uma olhada primeiro na regressão linear.
A regressão linear compreende uma linha reta que divide seus pontos de dados em um
gráfico de dispersão. O objetivo da regressão linear é dividir seus dados de uma forma
que minimize a distância entre a linha de regressão e todos os pontos de dados no gráfico
de dispersão. Isso significa que se você desenhasse uma linha vertical da linha de
regressão para cada ponto de dados no gráfico, a distância agregada de cada ponto seria
igual à menor distância possível para a linha de regressão.
Machine Translated by Google

Figura 2: Linha de regressão linear

A linha de regressão é plotada no diagrama de dispersão na Figura 2. O termo técnico


para a linha de regressão é hiperplano, e você verá esse termo usado em todo o seu
estudo de aprendizado de máquina. Um hiperplano é praticamente uma linha de tendência
— e é precisamente assim que o Planilhas Google intitula regressão linear em seu menu
de personalização de diagrama de dispersão.
Outra característica importante da regressão é a inclinação, que pode ser convenientemente
calculada referenciando o hiperplano. À medida que uma variável aumenta, a outra
variável aumentará no valor médio denotado pelo hiperplano. A inclinação é, portanto,
muito útil na formulação de previsões. Por exemplo, se você deseja estimar o valor do
Bitcoin em 800 dias, pode inserir 800 como sua coordenada x e referenciar a inclinação
encontrando o valor y correspondente representado no hiperplano. Neste caso, o valor y
é USD $ 1.850.
Machine Translated by Google

Figura 3: O valor do Bitcoin no dia 800

Conforme mostrado na Figura 3, o hiperplano revela que você realmente pode


perder dinheiro com seu investimento no dia 800 (após comprar no dia 736)! Com
base na inclinação do hiperplano, espera-se que o Bitcoin se desvalorize entre o
dia 736 e o dia 800 — apesar de não haver precedentes em seu conjunto de
dados para o Bitcoin ter caído em valor.
Embora seja desnecessário dizer que a regressão linear não é um método infalível
para escolher tendências de investimento, a linha de tendência oferece um ponto
de referência básico para prever o futuro. Se usássemos a linha de tendência
como um ponto de referência mais cedo, digamos no dia 240, então a previsão
publicada teria sido mais precisa. No dia 240, há um baixo grau de desvio do
hiperplano, enquanto no dia 736 há um alto grau de desvio. Desvio se refere à
distância entre o hiperplano e o ponto de dados.
Machine Translated by Google

Figura 4: Distância dos pontos de dados ao hiperplano

Em geral, quanto mais próximos os pontos de dados estiverem da linha de


regressão, mais precisa será a previsão final. Se houver um alto grau de desvio
entre os pontos de dados e a linha de regressão, a inclinação fornecerá previsões
menos precisas. Basear suas previsões no ponto de dados no dia 736, onde há
alto desvio, resulta em baixa precisão. Na verdade, o ponto de dados no dia 736
constitui um outlier porque não segue a mesma tendência geral dos quatro pontos
de dados anteriores. Além disso, como um outlier, ele exagera a trajetória do
hiperplano com base em seu alto valor do eixo y. A menos que os pontos de
dados futuros sejam dimensionados em proporção aos valores do eixo y do ponto
de dados outlier, a precisão preditiva do modelo sofrerá.

Exemplo de Cálculo
Embora sua linguagem de programação cuide disso automaticamente, é útil
entender como a regressão linear é realmente calculada. Usaremos o seguinte
conjunto de dados e fórmula para executar a regressão linear.
Machine Translated by Google

# As duas colunas finais da tabela não fazem parte do conjunto de dados original e foram adicionadas por conveniência para completar a equação a seguir.

Onde: ÿ
= Soma total ÿx

= Soma total de todos os valores x (1 + 2 + 1 + 4 + 3 = 11) ÿy =


Soma total de todos os valores y (3 + 4 + 2 + 7 + 5 = 21) ÿxy =
Soma total de x*y para cada linha (3 + 8 + 2 + 28 + 15 = 56) ÿx 2= Soma total
de x*x para cada linha (1 + 4 + 1 + 16 + 9 = 31) n = Número total de linhas.
No caso deste exemplo, n = 5.
Machine Translated by Google

Um

= ((21 x 31) – (11 x 56)) / (5(31) – 11 2 ) (651 –


616) / (155 – 121) 35 / 34

1.029

B=

(5(56) – (11 x 21)) / (5(31) – 11 2 ) (280 –


231) / (155 – 121) 49 / 34 1,44
Insira os

valores “a” e “b” em uma equação linear. y = a + bx y = 1,029 +


1,441x A
equação linear y = 1,029
+ 1,441x determina como desenhar o hiperplano.
Machine Translated by Google

Figura 5: O hiperplano de regressão linear plotado no gráfico de dispersão

Vamos agora testar a linha de regressão procurando as coordenadas para x = 2.


y = 1,029 + 1,441(x) y
= 1,029 + 1,441(2) y =
3,911
Nesse caso, a previsão está muito próxima do resultado real de 4,0.

Regressão Logística
Uma grande parte da análise de dados se resume a uma pergunta simples: algo é "A"
ou "B?" É "positivo" ou "negativo?" Essa pessoa é um "cliente em potencial" ou "não é
um cliente em potencial?" O aprendizado de máquina acomoda essas perguntas por
meio de equações logísticas e, especificamente, por meio do que é conhecido como
função sigmoide. A função sigmoide produz uma curva em forma de S que pode
converter qualquer número e mapeá-lo em um valor numérico entre 0 e 1, mas faz isso
sem nunca atingir esses limites exatos.
Uma aplicação comum da função sigmoide é encontrada na regressão logística.
A regressão logística adota a função sigmoide para analisar dados e prever classes
discretas que existem em um conjunto de dados. Embora a regressão logística
compartilhe uma semelhança visual com a regressão linear, ela é tecnicamente uma
técnica de classificação. Enquanto a regressão linear aborda equações numéricas e
forma previsões numéricas para discernir relacionamentos entre variáveis,
Machine Translated by Google

A regressão logística prevê classes discretas.

Figura 6: Um exemplo de regressão logística

A regressão logística é normalmente usada para classificação binária para prever


duas classes discretas, por exemplo, grávida ou não grávida. Para fazer isso, a
função sigmoide (mostrada a seguir) é adicionada para calcular o resultado e
converter resultados numéricos em uma expressão de probabilidade entre 0 e 1.

A função sigmoide logística acima é calculada como “1” dividido por “1” mais “e”
elevado à potência de menos “x”, onde: x = o
valor numérico que você deseja transformar e =
constante de Euler, 2,718
Em um caso binário, um valor de 0 representa nenhuma chance de ocorrer, e 1
representa uma certa chance de ocorrer. O grau de probabilidade para valores
localizados entre 0 e 1 pode ser calculado de acordo com o quão perto eles estão
de 0 (impossível) ou 1 (certa possibilidade) no gráfico de dispersão.
Machine Translated by Google

Figura 7: Uma função sigmóide usada para classificar pontos de dados

Com base nas probabilidades encontradas, podemos atribuir cada ponto de dados a uma de
duas classes discretas. Como visto na Figura 7, podemos criar um ponto de corte em 0,5 para
classificar os pontos de dados em classes. Os pontos de dados que registram um valor acima
de 0,5 são classificados como Classe A, e quaisquer pontos de dados abaixo de 0,5 são
classificados como Classe B. Os pontos de dados que registram um resultado de exatamente
0,5 são inclassificáveis, mas tais instâncias são raras devido ao componente matemático da
função sigmoide.
Observe também que esta fórmula sozinha não produz o hiperplano que divide categorias
discretas, como visto anteriormente na Figura 6. A fórmula estatística para traçar o hiperplano
logístico é um pouco mais complicada e pode ser convenientemente traçada usando sua
linguagem de programação.
Dada sua força na classificação binária, a regressão logística é usada em muitos campos,
incluindo detecção de fraudes, diagnóstico de doenças, detecção de emergências, detecção
de inadimplência de empréstimos ou para identificar e-mails de spam por meio do processo
de identificação de classes específicas, por exemplo, não spam e spam. No entanto, a
regressão logística também pode ser aplicada a casos ordinais em que há um número definido
de valores discretos, por exemplo, solteiro, casado e divorciado.
A regressão logística com mais de dois valores de resultado é conhecida como
Machine Translated by Google

regressão logística multinomial, que pode ser vista na Figura 8.

Figura 8: Um exemplo de regressão logística multinomial

Duas dicas para lembrar ao executar regressão logística são que os dados devem estar livres
de valores ausentes e que todas as variáveis são independentes umas das outras. Também
deve haver dados suficientes para cada valor de resultado para garantir alta precisão. Um
bom ponto de partida seria aproximadamente 30-50 pontos de dados para cada resultado, ou
seja, 60-100 pontos de dados totais para regressão logística binária.

Support Vector Machine Como


uma categoria avançada de regressão, a support vector machine (SVM) se assemelha à
regressão logística, mas com condições mais rigorosas. Para esse fim, a SVM é superior em
desenhar linhas de limite de classificação. Vamos examinar como isso se parece na prática.
Machine Translated by Google

Figura 9: Regressão logística versus SVM

O diagrama de dispersão na Figura 9 consiste em pontos de dados que são


linearmente separáveis e o hiperplano logístico (A) divide os pontos de dados em
duas classes de uma forma que minimiza a distância entre todos os pontos de
dados e o hiperplano. A segunda linha, o hiperplano SVM (B), separa igualmente
os dois clusters, mas de uma posição de distância máxima entre ela e os dois clusters.
Você também notará uma área cinza que denota margem, que é a distância entre
o hiperplano e o ponto de dados mais próximo, multiplicada por dois. A margem é
um recurso-chave do SVM e é importante porque oferece suporte adicional para
lidar com novos pontos de dados que podem infringir um hiperplano de regressão
logística. Para ilustrar esse cenário, vamos considerar o mesmo gráfico de
dispersão com a inclusão de um novo ponto de dados.
Machine Translated by Google

Figura 10: Um novo ponto de dados é adicionado ao gráfico de dispersão

O novo ponto de dados é um círculo, mas está localizado incorretamente no lado


esquerdo do hiperplano de regressão logística (designado para estrelas). O novo
ponto de dados, no entanto, permanece corretamente localizado no lado direito do
hiperplano SVM (designado para círculos), cortesia do amplo “suporte” fornecido pela margem.
Machine Translated by Google

Figura 11: Atenuação de anomalias

Outro caso de aplicação útil do SVM é para mitigar anomalias. A


a limitação da regressão logística padrão é que ela se esforça para se ajustar
anomalias (como visto no gráfico de dispersão com a estrela no canto inferior direito em
Figura 11). O SVM, no entanto, é menos sensível a esses pontos de dados e, na verdade,
minimiza seu impacto na localização final da linha de limite. Na Figura
11, podemos ver que a Linha B (hiperplano SVM) é menos sensível à
estrela anômala no lado direito. SVM pode, portanto, ser usado como um método
para combater anomalias.
Os exemplos vistos até agora compreenderam dois recursos plotados em um gráfico de
dispersão bidimensional. No entanto, a força real do SVM é encontrada em dados de alta
dimensão e no manuseio de vários recursos. O SVM tem vários
variações disponíveis para classificar dados de alta dimensão, conhecidos como “kernels”,
incluindo SVC linear (visto na Figura 12), SVC polinomial e o Kernel
Truque. O Kernel Trick é uma solução avançada para mapear dados de um espaço de baixa
dimensão para um de alta dimensão. A transição de um espaço bidimensional para um
tridimensional permite que você use um plano linear para
dividir os dados dentro de um espaço 3-D, como visto na Figura 12.
Machine Translated by Google

Figura 12: Exemplo de SVC linear


Machine Translated by Google

CLUSTERING Uma
abordagem útil para analisar informações é identificar clusters de dados que
compartilham atributos semelhantes. Por exemplo, sua empresa pode
desejar examinar um segmento de clientes que compram na mesma época
do ano e discernir quais fatores influenciam seu comportamento de compra.
Ao entender um cluster específico de clientes, você pode tomar decisões sobre quais
produtos recomendar a grupos de clientes por meio de promoções e ofertas personalizadas.
Fora da pesquisa de mercado, o clustering pode ser aplicado a vários outros cenários,
incluindo reconhecimento de padrões, detecção de fraudes e processamento de imagens.

A análise de clustering se enquadra na bandeira de aprendizado supervisionado e


aprendizado não supervisionado. Como uma técnica de aprendizado supervisionado, o
clustering é usado para classificar novos pontos de dados em clusters existentes por meio
de k-vizinhos mais próximos (k-NN) e, como uma técnica de aprendizado não supervisionado,
o clustering é aplicado para identificar grupos discretos de pontos de dados por meio de
clustering k-means. Embora existam outras formas de técnicas de clustering, esses dois
algoritmos são geralmente os mais populares em aprendizado de máquina e mineração de dados.

k-vizinhos mais próximos


O algoritmo de agrupamento mais simples é o k-vizinhos mais próximos (k-NN); uma técnica
de aprendizado supervisionado usada para classificar novos pontos de dados com base no
relacionamento com
pontos de dados próximos. O k-NN é semelhante a um sistema de votação ou a um
concurso de popularidade. Pense nisso como ser o garoto novo na escola e escolher um
grupo de colegas para socializar com base nos cinco colegas que se sentam mais perto de
você. Entre os cinco colegas, três são geeks, um é skatista e um é atleta. De acordo com
o k-NN, você escolheria sair com os geeks com base na vantagem numérica deles. Vamos
dar uma olhada em outro exemplo.
Machine Translated by Google

Figura 1: Um exemplo de agrupamento k-NN usado para prever a classe de um novo ponto de dados

Como visto na Figura 1, o diagrama de dispersão nos permite calcular a distância entre
quaisquer dois pontos de dados. Os pontos de dados no diagrama de dispersão já foram
categorizados em dois clusters. Em seguida, um novo ponto de dados cuja classe é
desconhecida é adicionado ao gráfico. Podemos prever a categoria do novo ponto de
dados com base em seu relacionamento com os pontos de dados existentes.
Primeiro, porém, precisamos definir “k” para determinar quantos pontos de dados
desejamos nomear para classificar o novo ponto de dados. Se definirmos k como 3, o k-
NN analisará apenas o relacionamento do novo ponto de dados com os três pontos de
dados mais próximos (vizinhos). O resultado da seleção dos três vizinhos mais próximos
retorna dois pontos de dados de Classe B e um ponto de dados de Classe A. Definido por
k (3), a previsão do modelo para determinar a categoria do novo ponto de dados é Classe
B, pois retorna dois dos três vizinhos mais próximos.
O número escolhido de vizinhos identificados, definido por k, é crucial para determinar os
resultados. Na Figura 1, você pode ver que a classificação mudará dependendo se k
estiver definido como “3” ou “7”. Portanto, é recomendável que você teste várias
combinações de k para encontrar o melhor ajuste e evitar definir k muito baixo ou muito
alto. Definir k como um número ímpar também ajudará a eliminar a possibilidade de um
impasse estatístico e resultado inválido.
O número padrão de vizinhos é cinco ao usar o Scikit-learn.
Machine Translated by Google

Embora geralmente seja uma técnica altamente precisa e simples de aprender, armazenar
um conjunto de dados inteiro e calcular a distância entre cada novo ponto de dados e todos
os pontos de dados existentes coloca uma carga pesada nos recursos de computação.
Portanto, k-NN geralmente não é recomendado para uso com grandes conjuntos de dados.

Outra desvantagem potencial é que pode ser desafiador aplicar k-NN a dados de alta
dimensão (3-D e 4-D) com vários recursos. Medir várias distâncias entre pontos de dados em
um espaço tridimensional ou quadridimensional é desgastante para os recursos de
computação e também complicado para executar uma classificação precisa. Reduzir o número
total de dimensões, por meio de um algoritmo de dimensão descendente, como a Análise de
Componentes Princípios (PCA) ou mesclar variáveis, é uma estratégia comum para simplificar
e preparar um conjunto de dados para análise k-NN.

Agrupamento k-Means
Como um algoritmo popular de aprendizado não supervisionado, o agrupamento k-means
tenta dividir dados em k grupos discretos e é eficaz em descobrir padrões básicos de dados.
Exemplos de agrupamentos potenciais incluem espécies animais, clientes com características
semelhantes e segmentação do mercado imobiliário. O algoritmo de agrupamento k-means
funciona primeiro dividindo os dados em k números de clusters, com k representando o
número de clusters que você deseja criar. Se você escolher dividir seu conjunto de dados em
três clusters, então k, por exemplo, é definido como 3.

Figura 2: Comparação de dados originais e dados agrupados usando k-means


Machine Translated by Google

Na Figura 2, podemos ver que os dados originais (não agrupados) foram transformados em
três clusters (k é 3). Se definíssemos k como 4, um cluster adicional seria derivado do
conjunto de dados para produzir quatro clusters.
Como o agrupamento k-means separa os pontos de dados? O primeiro passo é examinar os
dados não agrupados no gráfico de dispersão e selecionar manualmente um centroide para
cada cluster k . Esse centroide então forma o epicentro de um cluster individual. Os centroides
podem ser escolhidos aleatoriamente, o que significa que você pode nomear qualquer ponto
de dados no gráfico de dispersão para atuar como um centroide. No entanto, você pode
economizar tempo escolhendo centroides dispersos pelo gráfico de dispersão e não
diretamente adjacentes uns aos outros. Em outras palavras, comece adivinhando onde você
acha que os centroides para cada cluster podem estar localizados. Os pontos de dados
restantes no gráfico de dispersão são então atribuídos ao centroide mais próximo medindo a
distância euclidiana.

Figura 3: Cálculo da distância euclidiana

Cada ponto de dados pode ser atribuído a apenas um cluster e cada cluster é discreto. Isso
significa que não há sobreposição entre clusters e nenhum caso de aninhamento de um
cluster dentro de outro cluster. Além disso, todos os pontos de dados, incluindo anomalias,
são atribuídos a um centroide, independentemente de como eles impactam a forma final do
cluster. No entanto, devido à força estatística que puxa todos os pontos de dados próximos
para um ponto central, seus clusters geralmente formarão uma forma elíptica ou esférica.

Figura 4: Exemplo de um aglomerado de elipses


Machine Translated by Google

Depois que todos os pontos de dados foram alocados a um centróide, a próxima etapa é
agregar o valor médio de todos os pontos de dados para cada cluster, que pode ser
encontrado calculando os valores médios de x e y de todos os pontos de dados naquele
cluster.
Em seguida, pegue o valor médio dos pontos de dados em cada cluster e insira esses valores
x e y para atualizar suas coordenadas de centroide. Isso provavelmente resultará em uma
mudança na localização de seus centroides. Seu número total de clusters, no entanto,
permanecerá o mesmo. Você não está criando novos clusters, mas atualizando suas posições
no gráfico de dispersão. Como cadeiras musicais, os pontos de dados restantes correrão
para o centroide mais próximo para formar k número de clusters.
Caso algum ponto de dados no gráfico de dispersão troque de cluster com a mudança de
centroides, a etapa anterior é repetida. Isso significa, novamente, calcular o valor médio
médio do cluster e atualizar os valores x e y de cada centroide para refletir as coordenadas
médias dos pontos de dados naquele cluster.
Quando você alcança um estágio em que os pontos de dados não trocam mais de clusters
após uma atualização nas coordenadas do centroide, o algoritmo está completo, e você tem
seu conjunto final de clusters. Os diagramas a seguir detalham o processo algorítmico
completo.

Figura 5: Os pontos de dados da amostra são plotados em um gráfico de dispersão


Machine Translated by Google

Figura 6: Dois pontos de dados são nomeados como centróides

Figura 7: Dois clusters são formados após o cálculo da distância euclidiana dos pontos de dados restantes aos centróides.
Machine Translated by Google

Figura 8: As coordenadas do centroide para cada cluster são atualizadas para refletir o valor médio do cluster. Como um ponto de dados mudou do cluster direito para o cluster esquerdo, os centroides de ambos os clusters
são recalculados.

Figura 9: Dois clusters finais são produzidos com base nos centróides atualizados para cada cluster

Definindo k
Na definição de k, é importante atingir o número certo de clusters. Em geral, conforme k
aumenta, os clusters se tornam menores e a variância cai. No entanto, a desvantagem é que
os clusters vizinhos se tornam menos distintos uns dos outros conforme k aumenta.
Machine Translated by Google

Se você definir k para o mesmo número de pontos de dados em seu conjunto de dados, cada
ponto de dados será automaticamente convertido em um cluster independente. Por outro lado,
se você definir k para 1, todos os pontos de dados serão considerados homogêneos e produzirão
apenas um cluster. Nem é preciso dizer que definir k para qualquer extremo não fornecerá
nenhum insight valioso para analisar.

Figura 10: Um gráfico de scree

Para otimizar k, você pode querer recorrer a um scree plot para orientação. Um scree plot
mapeia o grau de dispersão (variância) dentro de um cluster conforme o número total de clusters
aumenta. Os scree plots são famosos por seu icônico “cotovelo”, que reflete várias torções
pronunciadas na curva do gráfico.
Um gráfico de scree compara a Soma do Erro Quadrado (SSE) para cada variação de clusters
totais. O SSE é medido como a soma da distância quadrada entre o centroide e os outros
vizinhos dentro do cluster. Em poucas palavras, o SSE cai à medida que mais clusters são
formados.
Isso então levanta a questão de qual é o número ideal de clusters. Em geral, você deve optar
por uma solução de cluster onde o SSE diminui drasticamente para a esquerda no gráfico de
scree, mas antes de atingir um ponto de mudança insignificante com variações de cluster à sua
direita. Por exemplo, na Figura 10, há pouco impacto no SSE para seis ou mais clusters. Isso
resultaria em clusters que seriam pequenos e difíceis de distinguir.

Neste gráfico de scree, dois ou três clusters parecem ser uma solução ideal.
Machine Translated by Google

existe uma torção significativa à esquerda dessas duas variações de cluster devido a uma queda
pronunciada em SSE. Enquanto isso, ainda há alguma mudança em SSE com a solução à direita.
Isso garantirá que essas duas soluções de cluster sejam distintas e tenham impacto na classificação
de dados.
Uma abordagem mais simples e não matemática para definir k é aplicar conhecimento de domínio.
Por exemplo, se estou analisando dados sobre visitantes do site de um grande provedor de TI,
posso querer definir k como 2. Por que dois clusters? Porque já sei que provavelmente haverá uma
grande discrepância no comportamento de gastos entre visitantes recorrentes e novos visitantes.
Visitantes de primeira viagem raramente compram produtos e serviços de TI de nível empresarial,
pois esses clientes normalmente passam por um longo processo de pesquisa e verificação antes
que a aquisição possa ser aprovada.

Portanto, posso usar o clustering k-means para criar dois clusters e testar minha hipótese. Depois
de criar dois clusters, posso querer examinar um dos dois clusters mais detalhadamente, aplicando
outra técnica ou usando novamente o clustering k - means. Por exemplo, posso querer dividir
usuários recorrentes em dois clusters (usando o clustering k-means) para testar minha hipótese de
que usuários móveis e usuários de desktop produzem dois grupos distintos de pontos de dados.
Novamente, ao aplicar conhecimento de domínio, sei que é incomum que grandes empresas façam
compras de alto valor em um dispositivo móvel. Ainda assim, desejo criar um modelo de aprendizado
de máquina para testar essa suposição.

Se, no entanto, eu estiver analisando uma página de produto para um item de baixo custo, como
um nome de domínio de US$ 4,99, novos visitantes e visitantes recorrentes têm menos probabilidade
de produzir dois clusters claros. Como o item do produto é de baixo valor, novos usuários têm
menos probabilidade de deliberar antes de comprar.
Em vez disso, eu poderia escolher definir k como 3 com base nos meus três principais geradores
de leads: tráfego orgânico, tráfego pago e marketing por e-mail. Essas três fontes de leads
provavelmente produzirão três clusters discretos com base nos fatos que:
a) O tráfego orgânico geralmente consiste em clientes novos e recorrentes com uma forte
intenção de comprar no meu site (por meio de pré-seleção, por exemplo, boca a boca,
experiência anterior do cliente). b) O tráfego pago tem como alvo novos clientes
que normalmente chegam ao site com um nível de confiança menor do que o tráfego
orgânico, incluindo clientes em potencial que clicam no anúncio pago por engano. c) O
marketing por e-mail atinge clientes existentes que já têm experiência de compra no
site e estabeleceram uma conta de usuário.

contas.
Machine Translated by Google

Este é um exemplo de conhecimento de domínio baseado na minha própria


ocupação, mas entenda que a eficácia do “conhecimento de domínio” diminui
drasticamente após um número baixo de clusters k . Em outras palavras, o
conhecimento de domínio pode ser suficiente para determinar de dois a quatro
clusters, mas será menos valioso na escolha entre 20 ou 21 clusters.
Machine Translated by Google

VIÉS E VARIÂNCIA A seleção do algoritmo é uma etapa

importante na formação de um modelo de previsão preciso, mas implementar um algoritmo com uma alta taxa
de precisão pode ser um ato de equilíbrio difícil. O fato de que cada algoritmo pode produzir modelos muito
diferentes com base nos hiperparâmetros fornecidos pode levar a resultados dramaticamente diferentes. Como
mencionado anteriormente, os hiperparâmetros são as configurações do algoritmo, semelhantes aos controles
no painel de um avião ou aos botões usados para sintonizar a radiofrequência — exceto que os hiperparâmetros
são linhas de código!

Figura 1: Exemplo de hiperparâmetros em Python para o algoritmo gradient boosting

Um desafio constante no aprendizado de máquina é navegar por underfitting e overfitting,


que descrevem o quão próximo seu modelo segue os padrões reais do conjunto de dados.
Para entender underfitting e overfitting, você deve primeiro entender bias e variância.

Viés refere-se à lacuna entre seu valor previsto e o valor real. No caso de viés alto, suas
previsões provavelmente serão distorcidas em uma determinada direção, longe dos valores
reais. A variância descreve o quão dispersos seus valores previstos estão. Viés e variância
podem ser melhor compreendidos analisando a seguinte representação visual.
Machine Translated by Google

Figura 2: Alvos de tiro usados para representar viés e variância

Alvos de tiro, como visto na Figura 2, não são um gráfico visual usado em
aprendizado de máquina, mas ajudam a explicar o viés e a variância. Imagine que o
centro do alvo, ou o centro do alvo, preveja perfeitamente o valor correto do seu
modelo. Os pontos marcados no alvo representam então uma realização individual
do seu modelo com base nos seus dados de treinamento. Em certos casos, os
pontos serão densamente posicionados perto do centro do alvo, garantindo que as
previsões feitas pelo modelo estejam próximas dos dados reais. Em outros casos,
os dados de treinamento serão espalhados pelo alvo. Quanto mais os pontos se
desviarem do centro do alvo, maior será o viés e menos preciso será o modelo em
sua capacidade preditiva geral.
No primeiro alvo, podemos ver um exemplo de baixo viés e baixa variância. O viés
é baixo porque os hits estão alinhados de perto ao centro e há baixa variância
porque os hits estão densamente posicionados em um local.
O segundo alvo (localizado à direita da primeira linha) mostra um caso de baixa
polarização e alta variância. Embora os acertos não estejam tão próximos do alvo
quanto o exemplo anterior, eles ainda estão próximos do centro e a polarização é,
portanto, relativamente baixa. No entanto, há alta variância desta vez porque os acertos são
Machine Translated by Google

espalhados um do outro.
O terceiro alvo (localizado à esquerda da segunda linha) representa alto viés e baixa
variância, e o quarto alvo (localizado à direita da segunda linha) mostra alto viés e alta
variância.
Idealmente, você quer uma situação onde haja baixa variância e baixo viés. Na realidade,
porém, há mais frequentemente um trade-off entre viés e variância ideais. Viés e
variância contribuem para o erro, mas é o erro de previsão que você quer minimizar,
não viés ou variância especificamente.

Figura 3: Complexidade do modelo com base no erro de previsão

Na Figura 3, podemos ver duas linhas se movendo da esquerda para a direita. A linha
acima representa os dados de teste e a linha abaixo representa os dados de treinamento.
Da esquerda, ambas as linhas começam em um ponto de alto erro de predição devido
à baixa variância e alto viés. À medida que se movem da esquerda para a direita,
mudam para o oposto: alta variância e baixo viés. Isso leva a baixo erro de predição no
caso dos dados de treinamento e alto erro de predição para os dados de teste. No meio
do gráfico, há um equilíbrio ideal de erro de predição entre os dados de treinamento e
de teste. Este é um caso comum de trade-off de viés-variância.
Machine Translated by Google

Figura 4: Subajuste à esquerda e sobreajuste à direita

Gerenciar mal o trade-off de viés-variância pode levar a resultados ruins. Como visto na
Figura 4, isso pode fazer com que o modelo se torne excessivamente simples e inflexível
(underfitting) ou excessivamente complexo e flexível (overfitting).
Underfitting (baixa variância, alto viés) à esquerda e overfitting (alta variância, baixo viés)
à direita são mostrados nesses dois gráficos de dispersão. Uma tentação natural é
adicionar complexidade ao modelo (como mostrado à direita) para melhorar a precisão,
mas que pode, por sua vez, levar ao overfitting. Um modelo overfitted produzirá previsões
precisas dos dados de treinamento, mas se mostrará menos preciso na formulação de
previsões dos dados de teste. O overfitting também pode ocorrer se os dados de
treinamento e teste não forem randomizados antes de serem divididos e os padrões nos
dados não forem distribuídos entre os dois segmentos de dados.
Underfitting é quando seu modelo é excessivamente simples e, novamente, não arranhou
a superfície dos padrões subjacentes no conjunto de dados. Underfitting pode levar a
previsões imprecisas tanto para os dados de treinamento quanto para os dados de teste.
Causas comuns de subajuste incluem dados de treinamento insuficientes para cobrir
adequadamente todas as combinações possíveis e situações em que os dados de
treinamento e teste não foram adequadamente randomizados.
Para erradicar tanto o subajuste quanto o sobreajuste, você pode precisar modificar os
hiperparâmetros do modelo para garantir que eles se ajustem aos padrões nos dados de
treinamento e teste e não apenas à metade dos dados. Um ajuste adequado deve
reconhecer as principais tendências nos dados e minimizar ou até mesmo omitir pequenas
variações. Isso também pode significar re-randomizar os dados de treinamento e teste ou
adicionar novos pontos de dados para detectar melhor os padrões subjacentes. No
entanto, na maioria dos casos, você provavelmente precisará considerar alternar algoritmos
ou modificar seus hiperparâmetros com base em tentativa e erro para minimizar e
Machine Translated by Google

gerenciar a questão do trade-off de viés-variância.


Especificamente, isso pode implicar a mudança de regressão linear para regressão não
linear para reduzir o viés aumentando a variância. Ou pode significar aumentar “k” em k-
NN para reduzir a variância (por meio da média de mais vizinhos). Um terceiro exemplo
poderia ser a redução da variância mudando de uma única árvore de decisão (que é
propensa a overfitting) para uma floresta aleatória com muitas decisões
árvores.

Outra estratégia eficaz para combater overfitting e underfitting é introduzir regularização.


A regularização amplifica artificialmente o erro de viés ao penalizar um aumento na
complexidade de um modelo. Na verdade, esse parâmetro adicional fornece um alerta de
advertência para manter a alta variância sob controle enquanto os parâmetros originais
estão sendo otimizados.
Outra técnica eficaz para conter overfitting e underfitting no seu modelo é realizar validação
cruzada, conforme abordado anteriormente no Capítulo 6, para minimizar quaisquer
discrepâncias entre os dados de treinamento e os dados de teste.
Machine Translated by Google

10
Machine Translated by Google

REDES NEURAIS ARTIFICIAIS Este penúltimo capítulo sobre algoritmos


de aprendizado de máquina nos leva às redes neurais artificiais (RNA) e
à porta de entrada para o aprendizado por reforço.
Redes neurais artificiais, também conhecidas como redes neurais, são uma técnica popular de aprendizado
de máquina para processar dados por meio de camadas de análise. A nomenclatura de redes neurais
artificiais foi inspirada pela semelhança do algoritmo com o cérebro humano.

Figura 1: Anatomia de um neurônio humano

O cérebro humano contém neurônios interconectados com dendritos que recebem entradas. A partir dessas

entradas, o neurônio produz uma saída de sinal elétrico do axônio e então emite esses sinais através dos
terminais do axônio para outros
neurônios.

Similar aos neurônios no cérebro humano, redes neurais artificiais são formadas por neurônios
interconectados, também chamados de nós, que interagem entre si por meio de axônios, chamados de
bordas. Em uma rede neural, os nós são empilhados em camadas e geralmente começam com uma base
ampla. A primeira camada consiste em dados brutos, como valores numéricos, texto, imagens ou som, que
são divididos em nós. Cada nó então envia informações para a próxima camada de nós por meio das bordas
da rede.
Machine Translated by Google

Figura 2: Os nós, arestas/pesos e função de soma/ativação de uma rede neural básica

Cada aresta tem um peso numérico (algoritmo) que pode ser alterado e formulado com base
na experiência. Se a soma das arestas conectadas satisfizer um limite definido, conhecido
como função de ativação, ela ativará um neurônio na próxima camada. No entanto, se a
soma das arestas conectadas não atender ao limite definido, a ativação não será acionada.
Isso resulta em um arranjo de tudo ou nada .

Observe também que os pesos ao longo de cada aresta são exclusivos para garantir que os
nós disparem de forma diferente (como visto na Figura 3) e que nem todos retornem o mesmo
resultado.
Machine Translated by Google

Figura 3: Bordas exclusivas para produzir resultados diferentes

Para treinar a rede por meio de aprendizado supervisionado, a saída prevista do modelo é
comparada à saída real (que é sabidamente correta) e a diferença entre esses dois resultados
é medida e é conhecida como custo ou valor de custo. O propósito do treinamento é reduzir o
valor de custo até que a previsão do modelo corresponda de perto à saída correta. Isso é
obtido ajustando incrementalmente os pesos da rede até que o menor valor de custo possível
seja obtido. Esse processo de treinamento da rede neural é chamado de retropropagação.
Em vez de navegar da esquerda para a direita como os dados são alimentados em uma rede
neural, a retropropagação é feita ao contrário e vai da camada de saída da direita para a
camada de entrada à esquerda.

Uma das desvantagens das redes neurais é que elas operam como uma caixa-preta no
sentido de que, embora a rede possa aproximar resultados precisos, rastrear sua estrutura
revela insights limitados ou inexistentes sobre as variáveis que impactam o resultado. Por
exemplo, ao usar uma rede neural para prever o resultado provável de uma campanha do
Kickstarter (a maior plataforma de financiamento do mundo para projetos criativos), a rede
analisará uma série de variáveis, como categoria da campanha, moeda, prazo e valor mínimo
de contribuição, mas não será capaz de especificar suas relações com o resultado final.

Além disso, é possível que duas redes neurais com topologia diferente e pesos diferentes
produzam a mesma saída, o que torna ainda mais difícil rastrear relações de variáveis com a
saída. Exemplos de modelos não-caixa-preta são técnicas de regressão e árvores de decisão.
Machine Translated by Google

Então, quando você deve usar uma rede neural back-box? Em geral, as redes neurais são melhores
para resolver problemas com padrões altamente complexos e especialmente aqueles que são difíceis
para computadores resolverem, mas simples e quase triviais para humanos. Um exemplo óbvio é um
teste de desafio-resposta CAPTCHA (Completely Automated Public Turing test to tell Computers and
Humans Apart) que é usado em sites para determinar se um usuário online é um humano real. Existem
inúmeras postagens de blog online que demonstram como você pode quebrar um teste CAPTCHA
usando redes neurais.

Outro exemplo é identificar se um pedestre irá atrapalhar um veículo que se aproxima, como é feito em
veículos autônomos para evitar um acidente.

Figura 4: As três camadas gerais de uma rede neural

Uma rede neural típica pode ser dividida em camadas de entrada, ocultas e de saída.
Os dados são recebidos primeiramente pela camada de entrada, onde recursos gerais são detectados.
As camadas ocultas então analisam e processam os dados. Com base em cálculos anteriores, os
dados se tornam simplificados por meio da passagem de cada camada oculta. O resultado final é
mostrado como a camada de saída.
As camadas do meio são consideradas camadas ocultas porque, como a visão humana, elas
secretamente quebram objetos entre as camadas de entrada e saída. Por exemplo, quando os humanos
veem quatro linhas conectadas na forma de um quadrado, nós
Machine Translated by Google

reconhecem instantaneamente essas quatro linhas como um quadrado. Não notamos as linhas
como quatro linhas independentes sem relação entre si. Nosso cérebro está consciente apenas da
camada de saída. As redes neurais funcionam da mesma forma, pois dividem os dados em camadas
e examinam as camadas ocultas para produzir uma saída final.

Embora existam muitas técnicas para montar os nós de uma rede neural, o método mais simples é
a rede feed-forward. Em uma rede feed-forward, os sinais fluem apenas em uma direção e não há
loop na rede.
A forma mais básica de uma rede neural feed-forward é o perceptron.

Figura 5: Representação visual de uma rede neural perceptron

Um perceptron consiste em uma ou mais entradas, um processador e uma única saída.


Dentro de um modelo perceptron, as
entradas: 1) São alimentadas no processador (neurônio)
2) São processados
3) Geram saída
Por exemplo, digamos que temos um perceptron composto por duas entradas: Entrada 1:
3x = 24 Entrada 2:
2x = 16 Então
adicionamos um peso aleatório a essas duas entradas e elas são enviadas ao neurônio para serem
processadas.

Figura 6: Pesos são adicionados ao perceptron


Machine Translated by Google

Pesos
Entrada 1:
0,5 Entrada 2:
-1,0 Em seguida, multiplique cada peso pela
sua entrada: Entrada 1:
24 * 0,5 = 12 Entrada 2: 16
* -1,0 = -16 Passar a soma dos pesos das arestas pela função de ativação gera a saída
do perceptron.
Uma característica fundamental do perceptron é que ele registra apenas dois resultados
possíveis, “1” e “0”. O valor de “1” aciona a função de ativação e o valor de “0” não.
Embora o perceptron seja binário por natureza (1 ou 0), há várias maneiras pelas quais
podemos configurar a função de ativação.
Neste exemplo, fizemos a função de ativação ÿ0. Isso significa que se a soma for um
número positivo ou zero, a saída é 1. Se a soma for um número negativo, a saída é 0.

Figura 7: Função de ativação onde a saída (y) é 0 quando x é negativo e a saída (y) é 1 quando x é positivo

Assim:

Entrada 1: 24 * 0,5 = 12
Entrada 2: 16 * -1,0 = -16
Soma (ÿ): 12 + -16 = - 4
Como um valor numérico menor que zero, nosso resultado será registrado como “0” e, portanto,
não acionará a função de ativação do perceptron.
No entanto, também podemos modificar o limite de ativação para um valor completamente
Machine Translated by Google

regra diferente, como: x >


3, y = 1 x ÿ
3, y = 0

Figura 8: Função de ativação onde a saída (y) é 0 quando x é igual ou menor que 3, e a saída (y) é 1 quando x é maior que 3

Ao trabalhar com um modelo maior de camadas de rede neural, um valor de “1” será
configurado para passar a saída para a próxima camada. Por outro lado, um valor “0” é
configurado para ser ignorado e não será passado para a próxima camada para
processamento.
No aprendizado supervisionado, perceptrons podem ser usados para treinar dados e desenvolver
um modelo de predição. As etapas para treinar dados são as seguintes:
1) As entradas são alimentadas no processador (neurônios/nós).
2) O perceptron estima o valor dessas entradas.
3) O perceptron calcula o erro entre a estimativa e o valor real.

4) O perceptron ajusta seus pesos de acordo com o erro.


5) Repita os quatro passos anteriores até ficar satisfeito com a precisão do modelo. O
modelo de treinamento pode então ser aplicado aos dados de teste.

A fraqueza de um perceptron é que, como a saída é binária (1 ou 0), pequenas mudanças


nos pesos ou viés em qualquer perceptron único dentro de uma rede neural maior podem
induzir resultados polarizadores. Isso pode levar a mudanças drásticas dentro da rede e
uma reviravolta completa em relação à saída final.
Como resultado, fica muito difícil treinar um modelo preciso que possa ser aplicado com
sucesso para testar dados e futuras entradas de dados.
Uma alternativa ao perceptron é o neurônio sigmoide. Um neurônio sigmoide é
Machine Translated by Google

muito semelhante a um perceptron, mas a presença de uma função sigmoide em vez de um


modelo binário agora aceita qualquer valor entre 0 e 1. Isso permite mais flexibilidade para
absorver pequenas mudanças em pesos de aresta sem disparar resultados inversos — já que
a saída não é mais binária. Em outras palavras, o resultado de saída não mudará apenas por
causa de uma pequena mudança em um peso de aresta ou valor de entrada.

Figura 9: A equação sigmóide, conforme vista pela primeira vez na regressão logística

Embora mais flexível que um perceptron, um neurônio sigmoide não pode gerar valores
negativos. Portanto, uma terceira opção é a função tangente hiperbólica.

Figura 10: Um gráfico de função tangente hiperbólica

Até agora, discutimos redes neurais básicas; para criar uma rede neural mais avançada,
podemos conectar neurônios sigmoides e outros classificadores para criar uma rede com um
número maior de camadas ou combinar vários perceptrons para formar um perceptron
multicamadas.
Para analisar padrões simples, uma rede neural básica ou uma ferramenta de classificação
alternativa, como regressão logística e k-vizinhos mais próximos, é
Machine Translated by Google

geralmente suficiente para o propósito de análise. No entanto, à medida que os padrões nos
dados se tornam mais complicados — especialmente na forma de um alto número de entradas,
como o número total de pixels em uma imagem — um modelo básico ou superficial não é mais
confiável ou capaz de análise. Isso ocorre porque o modelo se torna exponencialmente complexo
à medida que o número de entradas aumenta e, no caso de redes neurais, isso significa mais
camadas para gerenciar mais nós de entrada. Uma rede neural, com um número profundo de
camadas, no entanto, é capaz de quebrar padrões complexos em padrões mais simples, conforme
demonstrado na Figura 11.

Figura 11: Reconhecimento facial usando deep learning. Fonte: [Link]

Essa rede profunda usa bordas para detectar diferentes características físicas para reconhecer
rostos, como uma linha diagonal. Como blocos de construção, a rede combina os resultados do
nó para classificar a entrada como, digamos, o rosto de um humano ou o rosto de um gato e então
processa isso ainda mais para reconhecer o rosto de um indivíduo específico.

Isso é conhecido como aprendizado profundo. O que torna o aprendizado profundo “profundo” é o
empilhamento de pelo menos 5-10 camadas de nós, com reconhecimento avançado de objetos
usando mais de 150 camadas.
O reconhecimento de objetos, como usado por veículos autônomos para reconhecer objetos como
pedestres e outros veículos, é uma aplicação popular de aprendizado profundo hoje. Outras
aplicações comuns de aprendizado profundo incluem séries temporais
Machine Translated by Google

análise para analisar tendências de dados medidas em períodos ou intervalos de tempo


específicos, reconhecimento de fala e tarefas de processamento de texto, incluindo análise de
sentimentos, segmentação de tópicos e reconhecimento de entidades nomeadas. Mais cenários
de uso e técnicas de deep learning comumente pareadas são listadas na Figura 12.

Figura 12: Cenários de uso comuns e técnicas de aprendizado profundo pareadas

Como pode ser visto na tabela, os perceptrons multicamadas foram amplamente substituídos
por novas técnicas de aprendizado profundo, como redes de convolução, redes recorrentes,
redes de crenças profundas e redes tensoras neurais recursivas (RNTN). Essas iterações mais
avançadas de uma rede neural podem ser usadas efetivamente em uma série de aplicações
práticas que estão atualmente em voga. Embora as redes de convolução sejam indiscutivelmente
as mais populares e poderosas técnicas de aprendizado profundo, novos métodos e variações
estão continuamente evoluindo.
Machine Translated by Google

11
Machine Translated by Google

ÁRVORES DE DECISÃO O fato de que as

redes neurais podem ser aplicadas a uma gama mais ampla de problemas de
aprendizado de máquina do que qualquer outra técnica levou alguns especialistas a
aclamar as redes neurais como o algoritmo de aprendizado de máquina definitivo. No
entanto, isso não quer dizer que as redes neurais se encaixam como uma bala de prata
estatística. Em vários casos, as redes neurais falham e as árvores de decisão são
apresentadas como um contra-argumento popular.
A reserva massiva de dados e recursos computacionais que as redes neurais demandam é uma
armadilha óbvia. Somente após o treinamento em milhões de exemplos marcados o mecanismo de
reconhecimento de imagem do Google pode reconhecer de forma confiável classes de objetos
simples (como cães). Mas quantas fotos de cães você precisa mostrar para uma criança média de
quatro anos antes que ela "entenda"?
Árvores de decisão, por outro lado, fornecem eficiência de alto nível e fácil interpretação. Esses dois
benefícios tornam esse algoritmo simples popular no espaço de machine learning.

Como uma técnica de aprendizado supervisionado, as árvores de decisão são usadas principalmente
para resolver problemas de classificação, mas também podem ser aplicadas para resolver problemas
de regressão.

Figura 1: Exemplo de uma árvore de regressão. Fonte: http:// [Link]/


Machine Translated by Google

Figura 2: Exemplo de uma árvore de classificação. Fonte: http:// [Link]

Árvores de classificação podem usar dados quantitativos e categóricos para modelar resultados categóricos.
Árvores de regressão também usam dados quantitativos e categóricos, mas modelam resultados quantitativos.

Árvores de decisão começam com um nó raiz, que atua como um ponto de partida (no topo), e é seguido por
divisões que produzem ramificações. O termo estatístico/matemático para essas ramificações é arestas. As
ramificações então se ligam a folhas, conhecidas também como nós, que formam pontos de decisão. Uma
categorização final é produzida quando uma folha não gera nenhuma nova ramificação e resulta no que é
conhecido como um nó terminal.

Árvores de decisão, portanto, não apenas quebram e explicam como a classificação ou regressão é formulada,
mas também produzem um fluxograma visual bacana que você pode mostrar a outros. A facilidade de
interpretação é uma forte vantagem do uso de árvores de decisão, e elas podem ser aplicadas a uma ampla
gama de casos de uso.
Exemplos da vida real incluem escolher um beneficiário de bolsa de estudos, avaliar um candidato a um
empréstimo imobiliário, prever vendas de e-commerce ou selecionar o candidato certo para o emprego. Quando
um cliente ou candidato questiona por que não foi selecionado para uma bolsa de estudos específica, empréstimo
imobiliário, emprego, etc., você pode passar a árvore de decisão e deixá-lo ver o processo de tomada de decisão
por si mesmo.

Construindo uma Árvore de Decisão


Machine Translated by Google

Árvores de decisão são construídas dividindo-se primeiro os dados em dois grupos. Esse
processo de divisão binária é então repetido em cada ramo (camada). O objetivo é selecionar
uma questão binária que melhor divida os dados em dois grupos homogêneos em cada ramo
da árvore, de modo que minimize o nível de entropia dos dados no próximo.
Entropia é um termo matemático que explica a medida de variância nos dados entre diferentes
classes. Em termos simples, queremos que os dados em cada camada sejam mais
homogêneos do que na última.
Queremos, portanto, escolher um algoritmo “ganancioso” que possa reduzir o nível de entropia
em cada camada da árvore. Um desses algoritmos gananciosos é o Iterative Dichotomizer
(ID3), inventado por JR Quinlan. Esta é uma das três implementações de árvore de decisão
desenvolvidas por Quinlan, daí o “3”.
O ID3 aplica entropia para determinar qual pergunta binária fazer em cada camada da árvore
de decisão. Em cada camada, o ID3 identifica uma variável (convertida em uma pergunta
binária) que produzirá a menor entropia na próxima camada. Vamos considerar o exemplo a
seguir para entender melhor como isso funciona.

A variável 1 (excedeu os indicadores-chave de desempenho) produz: -


Seis funcionários promovidos que excederam seus KPIs (Sim)
- Quatro funcionários que não ultrapassaram seus KPIs e que não foram promovidos (Não)

Esta variável produz dois grupos homogêneos na próxima camada da árvore de decisão.
Machine Translated by Google

Preto = Promovido, Branco = Não Promovido

A variável 2 (capacidade de liderança) produz:


- Dois funcionários promovidos com capacidade de liderança (Sim)
- Quatro funcionários promovidos sem capacidade de liderança (Não)
- Dois funcionários com capacidade de liderança que não foram promovidos
(Sim)
- Dois funcionários sem capacidade de liderança que não foram
promovidos (Não)
Esta variável produz dois grupos de pontos de dados mistos.

Preto = Promovido, Branco = Não Promovido


Machine Translated by Google

Variável 3 (com menos de trinta anos) produz: -


Três funcionários promovidos com menos de trinta anos (Sim)
- Três funcionários promovidos com mais de trinta anos (Não)
- Quatro funcionários com menos de trinta anos que não foram promovidos (Sim)
Esta variável produz um grupo homogêneo e um grupo misto de pontos de dados.

Preto = Promovido, Branco = Não Promovido

Dessas três variáveis, a variável 1 (KPIs excedidos) produz o melhor resultado com dois
grupos perfeitamente homogêneos. A variável 3 produz o segundo melhor resultado, pois uma
folha é homogênea. A variável 2 produz duas folhas que não são homogêneas. A variável 1
seria, portanto, selecionada como a primeira pergunta binária para dividir esse conjunto de
dados.
Seja ID3 ou outro algoritmo, esse processo de divisão de dados em partições binárias,
conhecido como particionamento recursivo, é repetido até que um critério de parada seja
atendido. Esse ponto de parada pode ser baseado em uma série de critérios, como:

- Quando todas as folhas contêm menos de 3-5 itens


- Quando um ramo produz um resultado que coloca todos os itens em uma folha binária
Machine Translated by Google

Figura 3: Exemplo de um critério de parada

Uma ressalva a ser lembrada ao usar árvores de decisão é sua suscetibilidade ao overfitting.
A causa do overfitting, neste caso, são os dados de treinamento. Levando em conta os
padrões que existem em seus dados de treinamento, uma árvore de decisão é precisa no
treinamento da primeira rodada de dados. No entanto, a mesma árvore de decisão pode
falhar em prever os dados de teste, pois pode haver regras que ela ainda não encontrou
ou porque os dados de treinamento ou teste não eram representativos de todo o conjunto
de dados. Além disso, como as árvores de decisão são formadas a partir da divisão repetida
de pontos de dados em duas partições, uma pequena mudança em como os dados são
divididos no topo ou no meio da árvore pode alterar drasticamente a previsão final.
Isso pode produzir uma árvore completamente diferente! O infrator, nesse caso, é nosso
algoritmo ganancioso.
Desde a primeira divisão dos dados, o algoritmo ganancioso fixa sua atenção na escolha
de uma pergunta binária que melhor particione os dados em dois grupos homogêneos.
Como um menino sentado em frente a uma caixa de cupcakes, o algoritmo ganancioso é
alheio às repercussões futuras de suas ações de curto prazo. A pergunta binária que ele
usa para dividir inicialmente os dados não garante a previsão final mais precisa. Em vez
disso, uma divisão inicial menos eficaz pode produzir uma
resultado preciso.

Em suma, as árvores de decisão são altamente visuais e eficazes na classificação de um


único conjunto de dados, mas podem ser inflexíveis e vulneráveis ao overfitting.

Florestas aleatórias
Em vez de se esforçar para obter a divisão mais eficiente em cada rodada de particionamento
recursivo, uma técnica alternativa é construir várias árvores e
Machine Translated by Google

combinam suas previsões para selecionar um caminho ótimo de classificação ou previsão. Isso
envolve uma seleção aleatória de perguntas binárias para desenvolver múltiplas árvores de decisão
diferentes, conhecidas como florestas aleatórias. Na indústria, você também ouvirá frequentemente
as pessoas se referirem a esse processo como “agregação bootstrap” ou “bagging”.

Figura 4: “Bagging” é uma abreviação criativa de “Bootstrap Aggregating”

A chave para entender florestas aleatórias é primeiro entender a amostragem bootstrap. Não há muita utilidade
em compilar cinco ou dez modelos idênticos — é preciso haver algum elemento de variação. É por isso que a
amostragem bootstrap se baseia no mesmo conjunto de dados, mas extrai uma variação diferente dos dados a
cada turno.

Portanto, em florestas aleatórias em crescimento, várias cópias variáveis dos dados de treinamento
são primeiro executadas em cada uma das árvores. Para problemas de classificação, o bagging
passa por um processo de votação para gerar a classe final. Os resultados de cada árvore são
comparados e votados para criar uma árvore ótima para produzir o modelo final, conhecido como
classe final. Para problemas de regressão, a média de valores é usada para gerar uma previsão
final.
O bootstrapping também é algumas vezes chamado de fracamente supervisionado (você deve se
lembrar que exploramos o aprendizado supervisionado e não supervisionado no Capítulo 3) porque
ele treina classificadores usando um subconjunto aleatório de recursos e menos variáveis do que
as realmente disponíveis.

Boosting
Outra variante de árvores de decisão múltiplas é a técnica popular de boosting, que é uma família
de algoritmos que convertem “aprendizes fracos” em “aprendizes fortes”. O princípio subjacente do
boosting é adicionar pesos a iterações que foram classificadas incorretamente em rodadas
anteriores. Isso pode ser interpretado como semelhante a um professor de línguas oferecendo
tutoria após a escola para os alunos mais fracos da classe, a fim de melhorar os resultados médios
dos testes de toda a classe.

Um algoritmo de boosting popular é o gradient boosting. Em vez de selecionar combinações de


perguntas binárias aleatoriamente (como florestas aleatórias), o gradient boosting seleciona
perguntas binárias que melhoram a precisão da previsão para cada nova árvore. Árvores de decisão
são, portanto, cultivadas sequencialmente, pois cada árvore é criada usando informações derivadas
da árvore de decisão anterior.
Machine Translated by Google

A maneira como isso funciona é que os erros incorridos com os dados de treinamento são
registrados e, em seguida, aplicados à próxima rodada de dados de treinamento. Em cada
iteração, pesos são adicionados aos dados de treinamento com base nos resultados da
iteração anterior. Uma ponderação maior é aplicada a instâncias que foram previstas
incorretamente a partir dos dados de treinamento, e instâncias que foram previstas
corretamente recebem menos ponderação. Os dados de treinamento e teste são então
comparados e os erros são novamente registrados para informar a ponderação em cada
rodada subsequente. Iterações anteriores que não têm um bom desempenho, e que talvez
dados classificados incorretamente, podem, portanto, ser melhoradas por meio de iterações
adicionais. Esse processo é repetido até que haja um baixo nível de erro. O resultado final é
então obtido a partir de uma média ponderada das previsões totais derivadas de cada modelo.

Embora essa abordagem mitigue o problema de overfitting, ela o faz com menos árvores do
que a abordagem de bagging. Em geral, quanto mais árvores você adiciona a uma floresta
aleatória, maior sua capacidade de impedir o overfitting. Por outro lado, com o aumento de
gradiente, muitas árvores podem causar overfitting e deve-se ter cuidado à medida que novas
árvores são adicionadas.
Uma desvantagem de usar florestas aleatórias e aumento de gradiente é que retornamos a
uma técnica de caixa preta e sacrificamos a simplicidade visual e a facilidade de interpretação
que vêm com uma única árvore de decisão.
Machine Translated by Google

12
Machine Translated by Google

MODELAGEM DE CONJUNTO Uma das metodologias de

aprendizado de máquina mais eficazes é a modelagem de conjunto, também conhecida como


ensembles. A modelagem de conjunto combina técnicas estatísticas para criar um modelo
que produz uma previsão unificada. É por meio da combinação de estimativas e seguindo a
sabedoria da multidão que a modelagem de conjunto realiza uma classificação final ou
resultado com melhor desempenho preditivo. Naturalmente, os modelos de conjunto são uma
escolha popular quando se trata de competições de aprendizado de máquina, como a Netflix
Competition e as competições Kaggle.

Os modelos de conjunto podem ser classificados em várias categorias, incluindo sequencial,


paralelo, homogêneo e heterogêneo. Vamos começar olhando primeiro para os modelos
sequenciais e paralelos. Para modelos de conjunto sequencial, o erro de previsão é reduzido
adicionando pesos aos classificadores que anteriormente classificaram incorretamente os
dados. Gradient boosting e AdaBoost são dois exemplos de modelos sequenciais. Por outro
lado, os modelos de conjunto paralelo funcionam simultaneamente e reduzem o erro por meio
da média. Árvores de decisão são um exemplo dessa técnica.

Modelos de ensemble também podem ser gerados usando uma única técnica com inúmeras
variações (conhecida como ensemble homogêneo) ou por meio de diferentes técnicas
(conhecidas como ensemble heterogêneo). Um exemplo de um modelo de ensemble
homogêneo seria várias árvores de decisão trabalhando juntas para formar uma única
predição (bagging). Enquanto isso, um exemplo de um ensemble heterogêneo seria o uso de
clustering k-means ou uma rede neural em colaboração com um modelo de árvore de decisão.

Naturalmente, é importante selecionar técnicas que se complementem.


Redes neurais, por exemplo, exigem dados completos para análise, enquanto árvores de
decisão podem efetivamente lidar com valores ausentes. Juntas, essas duas técnicas
fornecem valor agregado sobre um modelo homogêneo. A rede neural prevê com precisão a
maioria das instâncias que fornecem um valor e a árvore de decisão garante que não haja
resultados “nulos” que, de outra forma, seriam incorridos a partir de valores ausentes em uma
rede neural. A outra vantagem da modelagem de conjunto é que estimativas agregadas são
geralmente mais precisas
Machine Translated by Google

do que qualquer estimativa única.


Existem várias subcategorias de modelagem de conjunto; já abordamos duas delas no capítulo
anterior. Quatro subcategorias populares de modelagem de conjunto são bagging, boosting,
a bucket of models e stacking.

Bagging, como sabemos, é a abreviação de “boosted aggregating” e é um exemplo de


conjunto homogêneo. Este método se baseia em conjuntos de dados desenhados
aleatoriamente e combina previsões para projetar um modelo unificado com base em um
processo de votação entre os dados de treinamento. Expresso de outra forma, bagging é um
processo especial de média de modelo. Random forest, como sabemos, é um exemplo popular
de bagging.
Boosting é uma técnica alternativa popular que aborda erros e dados classificados
incorretamente pela iteração anterior para formar um modelo final. Gradient boosting e
AdaBoost são exemplos populares de boosting.
Um conjunto de modelos treina vários modelos algorítmicos diferentes usando os mesmos
dados de treinamento e, então, escolhe aquele que apresentou o desempenho mais preciso
nos dados de teste.
O empilhamento executa vários modelos simultaneamente nos dados e combina esses
resultados para produzir um modelo final. Essa técnica é atualmente muito popular em
competições de aprendizado de máquina, incluindo o Netflix Prize. (Realizado entre 2006 e
2009, a Netflix ofereceu um prêmio para um modelo de aprendizado de máquina que pudesse
melhorar seu sistema de recomendação para produzir recomendações de filmes mais eficazes.
Uma das técnicas vencedoras adotou uma forma de empilhamento linear que combinava
previsões de vários modelos preditivos.)

Embora os modelos de conjunto normalmente produzam previsões mais precisas, uma


desvantagem dessa metodologia é, de fato, o nível de sofisticação.
Os conjuntos enfrentam o mesmo trade-off entre precisão e simplicidade que uma única
árvore de decisão versus uma floresta aleatória. A transparência e a simplicidade de uma
técnica simples, como uma árvore de decisão ou k-vizinhos mais próximos, são perdidas e
instantaneamente transformadas em uma caixa-preta estatística. O desempenho do modelo
vencerá na maioria dos casos, mas a transparência do seu modelo é outro fator a ser
considerado ao determinar sua metodologia preferida.
Machine Translated by Google

13
Machine Translated by Google

CONSTRUINDO UM MODELO EM PYTHON Depois de examinar os


fundamentos estatísticos de vários algoritmos, é hora de voltar nossa
atenção para a construção de um modelo real de aprendizado de máquina.
Embora existam várias opções em relação às linguagens de programação (conforme descrito
no Capítulo 4), para este exercício usaremos Python porque é rápido de aprender e é uma
linguagem de programação eficaz para qualquer pessoa interessada em manipular e trabalhar
com grandes conjuntos de dados.
Se você não tem experiência em programação ou programação com Python, não precisa se
preocupar. O principal propósito deste capítulo é entender a metodologia e as etapas por trás
da construção de um modelo básico de machine learning.

Neste exercício, projetaremos um sistema de avaliação de preços de imóveis usando o aumento


de gradiente seguindo estas seis etapas:
1) Configure o ambiente de desenvolvimento
2) Importe o conjunto de dados
3) Esfregue o conjunto de dados

4) Divida os dados em dados de treinamento e teste


5) Selecione um algoritmo e configure seus hiperparâmetros
6) Avalie os resultados

1) Configure o ambiente de desenvolvimento O


primeiro passo é preparar nosso ambiente de desenvolvimento. Para este exercício,
trabalharemos no Jupyter Notebook, que é um aplicativo web de código aberto que permite
edição e compartilhamento de notebooks.
Você pode baixar o Jupyter Notebook em: [Link] O Jupyter Notebook
pode ser instalado usando a Distribuição Anaconda ou o gerenciador de pacotes do Python,
pip. Há instruções disponíveis no site do Jupyter Notebook que descrevem ambas as opções.
Como um usuário experiente do Python, você pode querer instalar o Jupyter Notebook via pip.
Para iniciantes, recomendo selecionar a opção Distribuição Anaconda, que oferece uma
configuração fácil de clicar e arrastar.
Machine Translated by Google

Esta opção de instalação específica direcionará você para o site do Anaconda.


A partir daí, você pode selecionar sua instalação preferida para Windows, macOS ou
Linux. Novamente, você pode encontrar instruções disponíveis no site da Anaconda
de acordo com sua escolha de sistema operacional.
Após instalar o Anaconda na sua máquina, você terá acesso a vários aplicativos de
ciência de dados, incluindo rstudio, Jupyter Notebook e graphviz para visualização de
dados. Para este exercício, você precisará selecionar Jupyter Notebook clicando em
“Launch” dentro da aba Jupyter Notebook.

Figura 1: O portal do Anaconda Navigator

Para iniciar o Jupyter Notebook, execute o seguinte comando no Terminal (para Mac/
Linux) ou no Prompt de Comando (para Windows):

caderno jupyter

O Terminal/Prompt de Comando gerará uma URL para você copiar e colar no seu
navegador da web. Exemplo: [Link] Copie e cole a
URL gerada no seu navegador da web para carregar o Jupyter Notebook. Depois que
o Jupyter Notebook estiver aberto no seu navegador, clique em
Machine Translated by Google

“Novo” no canto superior direito do aplicativo da web para criar um novo projeto “Notepad” e, em seguida,
selecione “Python 3”.
O passo final é instalar as bibliotecas necessárias para concluir este exercício. Você precisará instalar o
Pandas e uma série de bibliotecas do Scikit-learn no bloco de notas.

Em machine learning, cada projeto variará em relação às bibliotecas necessárias para importação. Para
este exercício em particular, estamos usando gradient boosting (modelagem de conjunto) e erro absoluto
médio para medir o desempenho.
Você precisará importar cada uma das seguintes bibliotecas e funções inserindo estes comandos exatos
no Jupyter Notebook:

importar pandas
como pd de sklearn.model_selection importar
train_test_split de sklearn
importar ensemble de [Link] importar
mean_absolute_error de [Link] importar joblib

Não se preocupe se você não reconhecer cada uma das bibliotecas importadas no trecho de código
acima. Essas bibliotecas serão referenciadas em etapas posteriores.

2) Importar o conjunto de
dados O próximo passo é importar o conjunto de dados. Para este exercício, selecionei um conjunto de
dados gratuito e disponível publicamente do [Link] que contém preços de casas, unidades e
sobrados em Melbourne, Austrália. Este conjunto de dados compreende dados extraídos de listagens
disponíveis publicamente publicadas semanalmente em [Link]. O conjunto de dados
contém 14.242 listagens de propriedades e 21 variáveis, incluindo endereço, subúrbio, tamanho do
terreno, número de cômodos, preço, longitude, latitude, código postal, etc.

Observe que os valores dos imóveis neste conjunto de dados são expressos em dólares australianos —
1 dólar australiano equivale a aproximadamente 0,77 dólar americano (em 2017).
Baixe o conjunto de dados do Melbourne Housing Market neste link: [Link]
anthonypino/melbourne-housing-market Após registrar uma
conta gratuita e fazer login em [Link], baixe o conjunto de dados como um arquivo zip. Em
seguida, descompacte o arquivo baixado e importe para o Jupyter Notebook. Para importar o
conjunto de dados, você pode utilizar a função read_csv para carregar os dados em um dataframe
Pandas.

df = pd.read_csv('~/Downloads/Melbourne_housing_FULL-[Link]')
Machine Translated by Google

Este comando importará diretamente o conjunto de dados. No entanto, observe que o caminho
exato do arquivo dependerá do local salvo do seu conjunto de dados. Por exemplo, se você
salvou o arquivo CSV na sua área de trabalho, precisará ler o arquivo .csv usando o seguinte
comando:

df = pd.read_csv('~/Desktop/Melbourne_housing_FULL-[Link]')

No meu caso, importei o conjunto de dados da minha pasta Downloads. Conforme você
avança no aprendizado de máquina e na ciência de dados, é importante salvar conjuntos de
dados e projetos em pastas autônomas e nomeadas para acesso organizado. Se você optar
por salvar o .csv na mesma pasta do seu Jupyter Notebook, não precisará anexar um nome
de diretório ou “~/.”
Em seguida, para visualizar o dataframe no Jupyter Notebook, insira o seguinte comando, com
“n” representando o número de linhas que você deseja visualizar em relação à linha principal.

[Link]ça(n=5)

Clique com o botão direito e selecione “Executar” ou navegue pelo menu do Jupyter Notebook:
Célula > Executar tudo

Figura 2: Visualizando um dataframe no Jupyter Notebook

Isso preencherá o conjunto de dados no Jupyter Notebook, conforme mostrado na Figura 2.


Esta etapa não é obrigatória, mas é uma técnica útil para revisar seu conjunto de dados dentro
do Jupyter Notebook.

3) Esfregue o conjunto de dados


Machine Translated by Google

O próximo estágio é limpar o conjunto de dados. Lembre-se, a limpeza é o processo de refinar


seu conjunto de dados. Isso envolve modificar ou remover dados incompletos, irrelevantes ou
duplicados. Também pode envolver a conversão de dados baseados em texto para valores
numéricos e o redesenho de recursos.
É importante observar que o processo de depuração pode ocorrer antes ou depois da importação do conjunto de
dados para o Jupyter Notebook. Por exemplo, o criador do conjunto de dados do Mercado Imobiliário de
Melbourne escreveu incorretamente “Longitude” e “Latitude” nas colunas principais. Como não examinaremos
essas duas variáveis em nosso exercício, não há necessidade de fazer nenhuma alteração. Se, no entanto,
quiséssemos incluir essas duas variáveis em nosso modelo, seria prudente primeiro corrigir esse erro.

De uma perspectiva de programação, erros de ortografia nos títulos das colunas não
representam problemas, desde que apliquemos a mesma ortografia de palavras-chave para
executar nossos comandos. No entanto, essa nomenclatura incorreta de colunas pode levar
a erros humanos, especialmente se você estiver compartilhando seu código com membros
da equipe. Para evitar qualquer confusão potencial, é melhor corrigir erros de ortografia e
outros erros simples no arquivo de origem antes de importar o conjunto de dados para o
Jupyter Notebook ou outro ambiente de desenvolvimento. Você pode fazer isso abrindo o
arquivo CSV no Microsoft Excel (ou programa equivalente), editando o conjunto de dados e
salvando-o novamente como um arquivo CSV.
Embora erros simples possam ser corrigidos dentro do arquivo de origem, grandes mudanças
estruturais no conjunto de dados, como engenharia de recursos, são melhor executadas no
ambiente de desenvolvimento para maior flexibilidade e para preservar o conjunto de dados
para uso posterior. Por exemplo, neste exercício, implementaremos engenharia de recursos
para remover várias colunas do conjunto de dados, mas podemos mudar de ideia mais tarde
sobre quais colunas desejamos incluir.
Manipular a composição do conjunto de dados no ambiente de desenvolvimento é menos
permanente e geralmente muito mais simples e rápido do que fazê-lo diretamente no arquivo
de origem.

Processo de limpeza
Vamos primeiro remover as colunas do conjunto de dados que não queremos incluir no
modelo usando a função del df[' '] e inserindo os títulos dos vetores (colunas) que queremos
remover.

# Os erros de grafia de “longitude” e “latitude” são usados, pois os dois erros de grafia não foram corrigidos no arquivo de
origem.
Machine Translated by Google

del df['Endereço']
del df['Método']
del df['VendedorG']
del df['Data']
del df['Código
Postal'] del
df['Latitude'] del
df['Longitude'] del
df['Nome da região'] del df['Contagem de propriedades']

As colunas Address, Regionname e Propertycount foram removidas, pois a localização da


propriedade é coberta em outras colunas (Suburb e CouncilArea) e porque queremos
minimizar informações não numéricas (por exemplo, Address e Regionname). Postcode,
Latitude e Longitude também foram removidos porque, novamente, a localização da
propriedade está contida nas colunas Suburb e CouncilArea.
Minha suposição é que Subúrbio e CouncilArea tendem a ter mais influência na mente dos
compradores do que Código Postal, Latitude e Longitude, embora Endereço mereça uma
menção honrosa.
Method, SellerG e Date também foram removidos porque foram considerados como tendo
menos relevância em comparação a outras variáveis. Isso não quer dizer que essas variáveis
não impactam os preços dos imóveis, mas sim que as outras onze variáveis independentes
são suficientes para construir um modelo básico. Podemos decidir adicionar qualquer uma
dessas variáveis ao modelo mais tarde, e você pode optar por incluí-las em seu próprio
modelo.
As onze variáveis independentes restantes (representadas como X) no conjunto de dados são
Subúrbio, Quartos, Tipo, Distância, Quarto2, Banheiro, Carro, Tamanho do terreno, Área da
construção, Ano da construção e Área do conselho. A décima segunda variável, localizada na
quinta coluna do conjunto de dados baixado, é a variável dependente, que é Preço
(representada como y). Conforme mencionado, árvores de decisão (incluindo aumento de
gradiente e florestas aleatórias) são adeptas ao gerenciamento de conjuntos de dados
grandes e de alta dimensão com um alto número de variáveis.
O próximo passo para limpar o conjunto de dados é remover quaisquer valores ausentes.
Embora existam vários métodos para gerenciar valores ausentes (por exemplo, calculando a
média, a mediana ou excluindo valores ausentes completamente), para este exercício,
queremos mantê-lo o mais simples possível e, portanto, não examinaremos linhas com valores
ausentes. A desvantagem óbvia é que temos menos dados para analisar. Como iniciante, faz
sentido dominar conjuntos de dados completos antes de adicionar uma dimensão extra de
dificuldade na tentativa de lidar com valores ausentes. Infelizmente, no caso do nosso conjunto
de dados de amostra, não
Machine Translated by Google

tem muitos valores faltantes! No entanto, ainda temos muitas linhas disponíveis para
prosseguir com a construção do nosso modelo.
A seguinte função Pandas pode ser usada para remover linhas com valores ausentes:

[Link](eixo=0, como='qualquer', thresh=Nenhum, subconjunto=Nenhum, inplace=True)

Tenha em mente que é importante descartar linhas com valores ausentes após aplicar a
função del df para remover colunas (como mostrado na etapa anterior). Dessa forma, há uma
chance maior de que mais linhas do conjunto de dados original sejam preservadas. Imagine
descartar uma linha inteira porque estava faltando o valor de uma variável que seria
posteriormente excluída, como o código postal em nosso modelo!

Em seguida, vamos converter colunas que contêm dados não numéricos para valores
numéricos usando codificação one-hot. Com o Pandas, a codificação one-hot pode ser
realizada usando a função get_dummies:

features_df = pd.get_dummies(df, colunas=['Subúrbio', 'Área do Conselho', 'Tipo'])

Este comando converte valores de coluna para Subúrbio, CouncilArea e Tipo em valores
numéricos por meio da aplicação de codificação one-hot.
Em seguida, precisamos remover a coluna “Preço” porque esta coluna atuará como nossa
variável dependente (y) e por enquanto estamos examinando apenas as onze variáveis
independentes (X).

del features_df['Preço']

Por fim, crie matrizes X e y a partir do conjunto de dados usando o tipo de dados matrix
(as_matrix). A matriz X contém as variáveis independentes e a matriz y contém a variável
dependente Price.

X = features_df.as_matrix() y =
df['Preço'].as_matrix()

4) Dividir o conjunto
de dados Estamos agora na fase de dividir os dados em segmentos de treinamento e teste.
Para este exercício, prosseguiremos com uma divisão padrão de 70/30, chamando o
Machine Translated by Google

Função Scikit-learn abaixo com um argumento de “0,3”. As linhas do conjunto de dados


também são embaralhadas aleatoriamente para evitar viés usando a função random_state.

X_trem, X_teste, y_trem, y_teste = divisão_teste_trem(X, y, tamanho_teste=0,3, estado_aleatório=0)


Machine Translated by Google

5) Selecione o algoritmo e configure seus hiperparâmetros Como


você deve se lembrar, estamos usando o algoritmo de aumento de gradiente para este
exercício, conforme mostrado.

modelo = [Link]( n_estimators=150,

taxa_de_aprendizagem=0,1,
profundidade_máx.=30,

divisão_de_amostras_mín.=4, folha_de_amostras_mín.=6, recursos_máx.=0,6, perda='huber'


)

A primeira linha é o algoritmo em si (gradient boosting) e compreende apenas uma linha


de código. As linhas abaixo ditam os hiperparâmetros para este algoritmo. n_estimators
representa
quantas árvores de decisão construir. Lembre-se de que um alto número de árvores
geralmente melhora a precisão (até certo ponto), mas também aumenta o tempo de
processamento do modelo. Acima, selecionei 150 árvores de decisão como ponto de
partida inicial. learning_rate controla a taxa na
qual árvores de decisão adicionais influenciam a previsão geral. Isso efetivamente reduz
a contribuição de cada árvore pelo learning_rate definido. Inserir uma taxa baixa aqui,
como 0,1, deve melhorar a precisão. max_depth define o número máximo de camadas
(profundidade) para
cada árvore de decisão. Se “Nenhum” for selecionado, os nós se expandem até que todas
as folhas sejam puras ou até que todas as folhas contenham menos que min_samples_leaf.
Aqui, selecionei um alto número máximo de camadas (30), o que terá um efeito dramático
no resultado final, como veremos mais tarde. min_samples_split define o número mínimo
de amostras necessárias para
executar uma nova divisão binária. Por exemplo, min_samples_split = 10 significa que
deve haver dez amostras disponíveis para criar uma nova ramificação. min_samples_leaf
representa o número mínimo de amostras que devem aparecer em
cada nó filho (folha) antes que uma nova ramificação possa ser implementada.

Isso ajuda a mitigar o impacto de outliers e anomalias na forma de um baixo número de


amostras encontradas em uma folha como resultado de uma divisão binária. Por exemplo,
min_samples_leaf = 4 requer que haja pelo menos quatro disponíveis
Machine Translated by Google

amostras dentro de cada folha para um novo ramo a ser criado.


max_features é o número total de recursos apresentados ao modelo ao determinar a melhor
divisão. Conforme mencionado no Capítulo 11, florestas aleatórias e aumento de gradiente
restringem o número total de recursos mostrados para cada árvore individual para criar vários
resultados que podem ser votados posteriormente.
Se o valor max_features for um inteiro (número inteiro), o modelo considerará max_features em
cada divisão (ramificação). Se o valor for um float (por exemplo, 0,6), então max_features é a
porcentagem do total de recursos selecionados aleatoriamente.
Embora max_features defina um número máximo de recursos a serem considerados na
identificação da melhor divisão, os recursos totais podem exceder o limite de max_features se
nenhuma divisão puder ser feita
inicialmente. loss calcula a taxa de erro do modelo. Para este exercício, estamos usando huber,
que protege contra outliers e anomalias. Opções alternativas de taxa de erro incluem ls (regressão
de mínimos quadrados), lad (desvios absolutos mínimos) e quantile (regressão de quantil). Huber
é, na verdade, uma combinação de ls e lad.
Para saber mais sobre hiperparâmetros de aumento de gradiente, você pode consultar o site
Scikit-learn:
[Link]

Após imputar os hiperparâmetros do modelo, implementaremos a função fit do Scikit-learn para


iniciar o processo de treinamento do modelo. [Link](X_train,
y_train)

Por fim, precisamos usar o Scikit-learn para salvar o modelo de treinamento como um arquivo
usando a função [Link], que foi importada para o Jupyter Notebook na Etapa 1. Isso nos
permitirá usar o modelo de treinamento novamente no futuro para prever novos valores de
propriedades imobiliárias, sem precisar reconstruir o modelo do zero.

[Link](modelo, 'modelo_treinado_em_casa.pkl')

6) Avalie os resultados
Como mencionado anteriormente, para este exercício usaremos o erro absoluto médio para
avaliar a precisão do modelo.

mse = mean_absolute_error(y_train, [Link](X_train)) print


("Erro absoluto médio do conjunto de treinamento: %.2f" % mse)

Aqui, inserimos nossos valores y, que representam os resultados corretos do


Machine Translated by Google

conjunto de dados de treinamento. A função [Link] é então chamada no conjunto de


treinamento X e gerará uma previsão com até duas casas decimais. A função de erro absoluto
médio comparará a diferença entre as previsões esperadas do modelo e os valores reais. O
mesmo processo é repetido com os dados de teste.

mse = mean_absolute_error(y_test, [Link](X_test)) print ("Erro


absoluto médio do conjunto de teste: %.2f" % mse)

Agora vamos executar o modelo inteiro clicando com o botão direito e selecionando “Executar”
ou navegando no menu do Jupyter Notebook: Célula > Executar tudo.
Aguarde alguns segundos para que o computador processe o modelo de treinamento. Os
resultados, como mostrado abaixo, aparecerão na parte inferior do bloco de notas.

Erro médio absoluto do conjunto de treinamento: 27157,02


Erro médio absoluto do conjunto de teste: 169962,99

Para este exercício, o erro absoluto médio do nosso conjunto de treinamento é $ 27.157,02 e o
erro absoluto médio do conjunto de teste é $ 169.962,99. Isso significa que, em média, o conjunto
de treinamento calculou mal o valor real da propriedade em meros $ 27.157,02.
No entanto, o conjunto de testes calculou mal em uma média de US$ 169.962,99.
Isso significa que nosso modelo de treinamento foi muito preciso na previsão do valor real das
propriedades contidas nos dados de treinamento. Embora US$ 27.157,02 possa parecer muito
dinheiro, esse valor de erro médio é baixo, dado que o intervalo máximo do nosso conjunto de
dados é de US$ 8 milhões. Como muitas das propriedades no conjunto de dados excedem sete
dígitos (US$ 1.000.000+), US$ 27.157,02 constitui uma taxa de erro razoavelmente baixa.

Mas como o modelo se saiu com os dados de teste? Esses resultados são menos precisos.
Os dados de teste forneceram previsões menos indicativas com uma taxa de erro média de $
169.962,99. Uma alta discrepância entre os dados de treinamento e teste geralmente é um
indicador-chave de overfitting. Como nosso modelo é adaptado aos dados de treinamento, ele
tropeçou ao prever os dados de teste, que provavelmente contêm novos padrões para os quais
o modelo não foi ajustado. Os dados de teste, é claro, provavelmente contêm padrões ligeiramente
diferentes e novos outliers e anomalias potenciais.
No entanto, neste caso, a diferença entre os dados de treinamento e teste é exacerbada pelo
fato de que configuramos o modelo para overfit dos dados de treinamento. Um exemplo desse
problema foi definir max_depth como “30”. Embora definir um max_depth alto melhore as chances
do modelo encontrar padrões
Machine Translated by Google

nos dados de treinamento, isso tende a levar ao overfitting. Outra causa possível é uma
divisão ruim dos dados de treinamento e teste, mas para este modelo os dados foram
randomizados usando Scikit-learn.
Por fim, leve em consideração que, como os dados de treinamento e teste são
embaralhados aleatoriamente, seus resultados serão ligeiramente diferentes ao replicar
este modelo em sua própria máquina.
Machine Translated by Google

14
Machine Translated by Google

OTIMIZAÇÃO DO MODELO No capítulo anterior,

construímos nosso primeiro modelo de aprendizado supervisionado. Agora, queremos


melhorar sua precisão e reduzir os efeitos do overfitting. Um bom lugar para começar
é modificar os hiperparâmetros do modelo.
Sem alterar nenhum outro hiperparâmetro, vamos começar modificando max_depth
de “30” para “5”. O modelo agora gera os seguintes resultados:

# Os resultados serão diferentes devido à divisão de dados aleatória Erro


absoluto médio do conjunto de treinamento: 129412,51

Embora o erro absoluto médio do conjunto de treinamento seja maior, isso ajuda a
reduzir o problema de overfitting e deve melhorar os resultados dos dados de teste.
Outra etapa para otimizar o modelo é adicionar mais árvores. Se definirmos
n_estimators como 250, veremos este resultado:

# Os resultados serão diferentes de acordo com a divisão de dados


randomizada Erro absoluto médio do conjunto de treinamento:
118130,46 Erro absoluto médio do conjunto de teste: 159886,32

Essa segunda otimização reduz a taxa de erro absoluto do conjunto de treinamento em


aproximadamente US$ 11.000 e agora temos uma lacuna menor entre nossos resultados de
treinamento e teste para erro absoluto médio.

Juntas, essas duas otimizações ressaltam a importância de maximizar e entender o


impacto de hiperparâmetros individuais. Se você decidir replicar esse modelo de
aprendizado de máquina supervisionado em casa, recomendo que você teste
modificando cada um dos hiperparâmetros individualmente e analise seu impacto no
erro absoluto médio. Além disso, você notará mudanças no tempo de processamento
da máquina com base nos hiperparâmetros selecionados. Por exemplo, definir
max_depth como “5” reduz o tempo total de processamento em comparação a quando
foi definido como “30” porque o número máximo de camadas de ramificação é
significativamente menor. A velocidade de processamento e os recursos se tornarão
uma consideração importante à medida que você passa a trabalhar com conjuntos de dados maiore
Outra técnica de otimização importante é a seleção de recursos. Como você verá
Machine Translated by Google

lembre-se, removemos nove recursos enquanto depurávamos nosso conjunto de dados. Agora pode
ser um bom momento para reconsiderar esses recursos e analisar se eles têm um efeito na precisão
geral do modelo. “SellerG” seria um recurso interessante para adicionar ao modelo porque a
imobiliária que vende a propriedade pode ter algum impacto no preço final de venda.

Alternativamente, remover recursos do modelo atual pode reduzir o tempo de processamento sem
ter um efeito significativo na precisão — ou pode até mesmo melhorar a precisão. Para selecionar
recursos de forma eficaz, é melhor isolar as modificações de recursos e analisar os resultados, em
vez de aplicar várias alterações de uma vez.

Embora a tentativa e erro manual possa ser uma técnica eficaz para entender o impacto da seleção
de variáveis e hiperparâmetros, também existem técnicas automatizadas para otimização de
modelos, como a busca em grade. A busca em grade permite que você liste uma gama de
configurações que deseja testar para cada hiperparâmetro e, em seguida, teste metodicamente
cada um desses possíveis hiperparâmetros. Um processo de votação automatizado ocorre para
determinar o modelo ideal. Como o modelo deve testar cada combinação possível de hiperparâmetros,
a busca em grade leva muito tempo para ser executada! O código de exemplo para busca em grade
é mostrado no final deste capítulo.

Finalmente, se você deseja usar um algoritmo de aprendizado de máquina supervisionado diferente


e não o gradient boosting, muito do código usado neste exercício pode ser replicado. Por exemplo,
o mesmo código pode ser usado para importar um novo conjunto de dados, visualizar o dataframe,
remover recursos (colunas), remover linhas, dividir e embaralhar o conjunto de dados e avaliar o
erro absoluto médio. [Link] é um ótimo recurso para
aprender mais sobre outros algoritmos, bem como o gradient boosting usado neste exercício.

Para uma cópia do código, entre em contato com o autor em [Link]@[Link]


ou veja o exemplo de código abaixo. Além disso, se você tiver problemas para implementar o modelo
usando o código encontrado neste livro, sinta-se à vontade para entrar em contato com o autor por
e-mail para obter assistência extra sem custo.

Código para o modelo otimizado #


Importar
bibliotecas import
pandas como pd de sklearn.model_selection import train_test_split
Machine Translated by Google

de sklearn importar conjunto de


[Link] importar mean_absolute_error de
[Link] importar joblib

# Ler dados de CSV


df = pd.read_csv('~/Downloads/Melbourne_housing_FULL-[Link]')

# Excluir colunas desnecessárias

del df['Endereço'] del


df['Método'] del
df['VendedorG'] del
df['Data'] del
df['Código Postal'] del
df['Latitude'] del
df['Longitude'] del
df['Nome da região'] del
df['Contagem de propriedades']

# Remover linhas com valores ausentes


[Link](axis=0, how='any', thresh=None, subset=None, inplace=True)

# Converta dados não numéricos usando codificação one-hot


features_df = pd.get_dummies(df, colunas=['Subúrbio', 'Área do Conselho', 'Tipo'])

# Remover preço
del features_df['Preço']

# Crie matrizes X e y a partir do conjunto de dados


X = features_df.as_matrix() y =
df['Price'].as_matrix()

# Dividir os dados em conjunto de teste/treinamento (divisão 70/30)


e embaralhar X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

# Configurar modelo
de algoritmo =

[Link]( n_estimators=250, learning_rate=0.1, max_depth=5, min_samples_split=4, min_samples_leaf=6, max


)

# Execute o modelo em dados de


treinamento [Link](X_train, y_train)
Machine Translated by Google

# Salvar modelo no
arquivo [Link](model, 'trained_model.pkl')

# Verifique a precisão do modelo (até duas casas decimais)


mse = mean_absolute_error(y_train, [Link](X_train)) print ("Erro
absoluto médio do conjunto de treinamento: %.2f" % mse)

mse = mean_absolute_error(y_test, [Link](X_test)) print ("Erro


absoluto médio do conjunto de teste: %.2f" % mse)

Código para o modelo de pesquisa de grade

# Importar bibliotecas, incluindo GridSearchCV


importar pandas como
pd de sklearn.model_selection importar train_test_split de
sklearn importar ensemble de
[Link] importar mean_absolute_error de
[Link] importar joblib de
sklearn.model_selection importar GridSearchCV

# Ler dados de CSV


df = pd.read_csv('~/Downloads/Melbourne_housing_FULL-[Link]')

# Excluir colunas desnecessárias


del df['Endereço']
del df['Método'] del
df['VendedorG']
del df['Data']
del df['Código Postal']
del df['Latitude'] del
df['Longitude'] del
df['Nome da região'] del
df['Contagem de propriedades']

# Remover linhas com valores ausentes


[Link](axis=0, how='any', thresh=None, subset=None, inplace=True)

# Converta dados não numéricos usando codificação one-hot


features_df = pd.get_dummies(df, colunas=['Subúrbio', 'Área do Conselho', 'Tipo'])

# Remover preço
del features_df['Preço']

# Crie matrizes X e y a partir do conjunto de


dados X = features_df.as_matrix()
y = df['Price'].as_matrix()

# Dividir os dados em conjunto de teste/treinamento (divisão 70/30) e embaralhar


Machine Translated by Google

X_trem, X_teste, y_trem, y_teste = divisão_teste_trem(X, y, tamanho_teste=0,3, estado_aleatório=0)

# Modelo de
algoritmo de entrada = [Link]()

# Defina as configurações que deseja testar


param_grid =
{ 'n_estimators': [300, 600, 1000],
'max_depth': [7, 9, 11],
'min_samples_split': [3, 4, 5],
'min_samples_leaf': [5, 6, 7],
'learning_rate': [0,01, 0,02, 0,6, 0,7],
'max_features': [0,8, 0,9],
'loss': ['ls', 'lad', 'huber']
}

# Defina a pesquisa de grade. Execute com quatro CPUs em paralelo, se


aplicável. gs_cv = GridSearchCV(model, param_grid, n_jobs=4)

# Executar pesquisa de grade em dados de


treinamento gs_cv.fit(X_train, y_train)

# Imprime hiperparâmetros ideais


print(gs_cv.best_params_)

# Verifique a precisão do modelo (até duas casas decimais)


mse = mean_absolute_error(y_train, gs_cv.predict(X_train)) print("Erro
absoluto médio do conjunto de treinamento: %.2f" % mse)

mse = mean_absolute_error(y_test, gs_cv.predict(X_test)) print("Erro


absoluto médio do conjunto de teste: %.2f" % mse)
Machine Translated by Google

BUG BOUNTY Obrigado por


ler esta introdução para iniciantes absolutos ao aprendizado de máquina.
Embora não seja uma prática habitual na indústria editorial, oferecemos uma
recompensa financeira aos leitores por localizar erros ou bugs encontrados neste livro.
Para este gênero de escrita — modelagem de dados baseada em estatística — não é incomum
que erros surjam aos olhos de quem vê. Em outras palavras, é natural que os leitores
ocasionalmente interpretem mal diagramas, copiem códigos incorretamente ou leiam mal
conceitos importantes. Esta é a natureza humana, mas para evitar que os leitores ataquem o
autor com uma avaliação negativa e afetem as vendas futuras deste título, convidamos você a
relatar quaisquer bugs enviando-nos primeiro um e-mail para [Link]@[Link].
Dessa forma, podemos fornecer mais
explicações e exemplos por e-mail para calibrar sua compreensão ou, nos casos em que você
estiver certo e nós errados, oferecemos uma recompensa monetária de US$ 20. Dessa forma,
você pode lucrar bastante com seu feedback e podemos atualizar o livro para melhorar o padrão
de conteúdo para outros leitores.
Machine Translated by Google

RECURSOS ADICIONAIS Esta seção lista


materiais de aprendizagem relevantes para leitores que desejam progredir
mais no campo de machine learning. Observe que certos detalhes listados
nesta seção, incluindo preços, podem estar sujeitos a alterações no futuro.

| Aprendizado de máquina |

Aprendizado de
máquina Formato: Curso
Coursera Apresentador:
Andrew Ng
Custo: Gratuito Público sugerido: Iniciantes (especialmente aqueles com preferência por
MATLAB)
Uma introdução gratuita e bem ensinada por Andrew Ng, uma das figuras mais
influentes neste campo. Este curso se tornou um rito de passagem virtual para
qualquer pessoa interessada em machine learning.

Projeto 3: Aprendizagem por Reforço


Formato: Tutorial de blog on-
line Autor: EECS Berkeley
Público sugerido: Intermediário superior a avançado
Uma demonstração prática de aprendizagem por reforço, e Q-learning
especificamente, explicada por meio do jogo Pac-Man.

| Algoritmos Básicos |

Aprendizado de máquina com florestas aleatórias e árvores de decisão: um visual


Guia para iniciantes
Formato: E-book
Autor: Scott Hartshorn
Público-alvo sugerido: Iniciantes experientes
Machine Translated by Google

Uma leitura curta, acessível (US$ 3,20) e envolvente sobre árvores de decisão e florestas
aleatórias, com exemplos visuais detalhados, dicas práticas úteis e instruções claras.

Regressão Linear e Correlação: Um Guia para Iniciantes Formato: E-


book Autor: Scott
Hartshorn Público sugerido:

todos Uma introdução bem


explicada e acessível (US$ 3,20) à regressão linear, bem como à correlação.

| O Futuro da IA |
O Inevitável: Compreendendo as 12 Forças Tecnológicas que Moldarão Nosso Futuro
Formato: E-book, livro,
audiolivro Autor: Kevin Kelly Público
Sugerido: Todos (com
interesse no futuro)
Um olhar bem pesquisado sobre o futuro com foco principal em IA e machine learning pelo best-
seller do The New York Times Kevin Kelly. Fornece um guia para doze imperativos tecnológicos
que moldarão os próximos trinta anos.

Homo Deus: Uma Breve História do Amanhã Formato:


E-book, livro, audiolivro Autor: Yuval Noah
Harari Público sugerido: todos
(com interesse no futuro)
Como título de acompanhamento ao sucesso de Sapiens: Uma Breve História da Humanidade,
Yuval Noah Harari examina as possibilidades do futuro com seções notáveis do livro examinando
a consciência das máquinas, aplicações em IA e o imenso poder dos dados e algoritmos.

| Programação |

Aprendendo Python, 5ª edição


Machine Translated by Google

Formato: E-book, livro Autor:


Mark Lutz Público

sugerido: todos (com interesse em aprender Python)


Uma introdução abrangente ao Python publicada pela O'Reilly Media.

Aprendizado de máquina prático com Scikit-Learn e TensorFlow: conceitos, ferramentas e


técnicas para construir sistemas inteligentes Formato: E-book, livro Autor:
Aurélien Géron Público
sugerido: todos (com interesse

em programação em Python, Scikit-Learn e TensorFlow)

Como um livro muito popular da O'Reilly Media escrito pelo consultor de aprendizado de máquina
Aurélien Géron, este é um excelente recurso avançado para qualquer pessoa com uma base sólida
de aprendizado de máquina e programação de computadores.

| Sistemas de Recomendação |

O prêmio Netflix e os sistemas de aprendizado de máquina de produção: uma visão privilegiada

Formato: Blog
Autor: Mathworks Público
sugerido: todos Um artigo de
blog muito interessante que demonstra como a Netflix aplica o aprendizado de máquina para formar
recomendações de filmes.

Sistemas de Recomendação
Formato: Curso Coursera

Apresentador: Universidade de Minnesota Custo:


Teste gratuito de 7 dias ou incluído na assinatura do Coursera de US$ 49 Público
sugerido: todos Ministrada pela
Universidade de Minnesota, esta especialização do Coursera abrange técnicas fundamentais de
sistemas de recomendação, incluindo filtragem colaborativa e baseada em conteúdo, bem como
sistemas de recomendação não personalizados e de associação a projetos.

.
Machine Translated by Google

| Aprendizado profundo |

Aprendizado profundo
simplificado
Formato: Blog Canal:
[Link] Público
sugerido: Todos Uma curta série de vídeos para você se atualizar com o aprendizado profundo.
Disponível gratuitamente no YouTube.

Especialização em Deep Learning: Domine o Deep Learning e entre na IA Formato: Curso


Coursera Apresentador:
[Link] e NVIDIA Custo: Teste gratuito de
7 dias ou incluído na assinatura do Coursera de US$ 49 Público sugerido: Intermediário
a avançado (com experiência em Python)
Um currículo robusto para aqueles que desejam aprender como construir redes neurais em Python
e TensorFlow, bem como conselhos de carreira e como a teoria do aprendizado profundo se aplica
à indústria.

Nanodegree de Aprendizagem
Profunda Formato: Curso
Udacity Apresentador:
Udacity Custo: US$
599 Público-alvo sugerido: Iniciante avançado a avançado, com experiência básica em Python
Introdução
abrangente e prática a redes neurais convolucionais, redes neurais recorrentes e aprendizado por
reforço profundo, ensinado on-line por um período de quatro meses. Os componentes práticos
incluem a construção de um classificador de raças de cães, geração de scripts de TV, geração de
rostos e ensino de um quadricóptero a voar.

| Carreiras futuras |

Um robô assumirá meu emprego?


Formato: Artigo online
Machine Translated by Google

Autor: The BBC


Público sugerido: todos
Verifique o quão seguro seu emprego está na era da IA que antecede o ano de 2035.

Então você quer ser um cientista de dados? Um guia para a profissão mais quente de
2015 Formato:
Blog Autor: Todd Wasserman
Público sugerido: Todos
Excelente insight sobre como se tornar um cientista de dados.

O Diagrama de Venn da Ciência de


Dados Formato:
Blog Autor: Drew Conway
Público sugerido: Todos O
popular diagrama de ciência de dados de 2010 projetado por Drew Conway.
Machine Translated by Google

BAIXANDO CONJUNTOS DE DADOS Antes de começar a praticar

algoritmos e construir modelos de aprendizado de máquina, você precisará primeiro de


dados. Para iniciantes que estão começando no aprendizado de máquina, há uma série
de opções. Uma é obter seu próprio conjunto de dados escrevendo um rastreador da
web em Python ou utilizando uma ferramenta de clicar e arrastar, como [Link], para
rastrear a Internet. No entanto, a opção mais fácil e melhor para começar é visitando
[Link].
Conforme mencionado ao longo deste livro, o Kaggle oferece conjuntos de dados gratuitos para
download. Isso economiza seu tempo e esforço de buscar e formatar seu próprio conjunto de
dados. Enquanto isso, você também tem a oportunidade de discutir e resolver problemas com
outros usuários no fórum, participar de competições e simplesmente sair e conversar sobre
dados.
Tenha em mente, no entanto, que os conjuntos de dados que você baixa do Kaggle precisarão
inerentemente de algum refinamento (por meio de scrubbing) para se adaptarem ao modelo de
machine learning que você decidir construir. Abaixo estão quatro conjuntos de dados de amostra
grátis do Kaggle que podem ser úteis para seu aprendizado posterior neste campo.

Relatório Mundial da
Felicidade Quais países têm a classificação mais alta em felicidade geral? Quais fatores
contribuem mais para a felicidade? Como as classificações dos países mudaram entre
os relatórios de 2015 e 2016? Algum país experimentou um aumento ou diminuição
significativa na felicidade? Estas são as perguntas que você pode fazer a este conjunto
de dados que registra pontuações e classificações de felicidade usando dados da Gallup
World Poll. As pontuações são baseadas em respostas às principais perguntas de
avaliação de vida feitas na pesquisa.

Comentários de
hotéis Ter uma reputação de cinco estrelas leva a mais hóspedes insatisfeitos e, inversamente,
hotéis de duas estrelas podem abalar as avaliações dos hóspedes ao estabelecer baixas
expectativas e entregar mais do que o esperado? Ou hotéis com uma e duas estrelas são
simplesmente classificados como baixos por um motivo? Descubra tudo isso neste conjunto de
dados de amostra de avaliações de hotéis. Este conjunto de dados em particular abrange 1.000
hotéis e inclui nome do hotel, localização, data da avaliação, texto, título, nome de usuário e
classificação. O conjunto de dados é originário do Datafiniti's Business Database, que inclui quase todos os hoté
Machine Translated by Google

o mundo.

Conjunto de dados de
cervejas artesanais Você gosta de cerveja artesanal? Este conjunto de dados contém uma lista de
2.410 cervejas artesanais americanas e 510 cervejarias coletadas em janeiro de 2017 do [Link].
Beber e analisar dados é perfeitamente legal.

Reembolsos da Câmara dos Deputados do Brasil Como


os políticos no Brasil têm direito a receber reembolsos de dinheiro gasto em atividades para "melhor
servir o povo", há descobertas interessantes e outliers suspeitos a serem encontrados neste
conjunto de dados. Dados sobre essas despesas estão disponíveis publicamente, mas há muito
pouco monitoramento de despesas no Brasil. Então não se surpreenda ao ver um servidor público
acumulando mais de 800 voos em doze meses, e outro que registrou R$ 140.000 (US$ 44.500) em
despesas de correio — sim, correio tradicional!
Machine Translated by Google

PALAVRA FINAL Obrigado


por comprar este livro. Agora você tem uma compreensão básica dos
principais conceitos em aprendizado de máquina e está pronto para encarar
esse assunto desafiador a sério. Isso inclui aprender o componente vital de
programação do aprendizado de máquina.
Para aprofundar seus estudos sobre aprendizado de máquina, recomendo fortemente que
você se inscreva no curso gratuito Andrew Ng Machine Learning oferecido no Coursera.
Se você tiver algum feedback direto, tanto positivo quanto negativo, ou sugestões para
melhorar este livro, sinta-se à vontade para me enviar um e-mail para
[Link]@[Link]. Este feedback é muito valorizado e estou ansioso
para ouvir de você.
Por fim, gostaria de expressar minha gratidão aos meus colegas Jeremy Pederson e Rui
Xiong por sua ajuda ao gentilmente compartilhar dicas práticas de aprendizado de máquina
e alguns códigos usados neste livro.

Obrigado,
Oliver Teobaldo
Machine Translated by Google

[1]
BBC, Um robô vai tirar meu emprego?, 2015, [Link] [2]

Nearshore Americas, adoção de aprendizado de máquina frustrada pela falta de habilidades e compreensão, 2017, [Link] [3]

Arthur Samuel, Alguns estudos em aprendizagem de máquina usando o jogo de damas, IBM Journal of Research and Development, Vol. 3, Edição 3, 1959. [4]

Arthur Samuel, Alguns estudos em aprendizagem de máquina usando o jogo de damas, IBM Journal of Research and Development, Vol. 3, Edição 3, 1959. [5]

DataVisor, mecanismo de aprendizado de máquina não supervisionado, 2017, [Link]


[6]
Kevin Kelly, O inevitável: compreender as 12 forças tecnológicas que moldarão o nosso futuro, Penguin Books, 2016. [7]

Torch, O que é Torch? [Link] 2017

Você também pode gostar