Document
Document
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
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?
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.
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.
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
>>>
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
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
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
Figura 3: A linhagem do aprendizado de máquina representada por uma fileira de bonecas matrioska russas
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
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
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).
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.
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
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
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
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
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.
Por fim, o Octave é essencialmente uma versão gratuita do MATLAB desenvolvida em resposta ao
MATLAB pela comunidade de código aberto.
Visualização
Não importa o quão impactantes e perspicazes sejam suas descobertas de dados, você precisa de um
Machine Translated by Google
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 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
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
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.
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
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.
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.
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
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.
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
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).
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.
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
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.
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
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
Um
1.029
B=
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 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
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
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.
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.
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.
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.
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.
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 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.
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
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!
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
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.
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
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
10
Machine Translated by Google
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
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
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.
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.
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
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.
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.
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.
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
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
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.
Á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.
Á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.
Esta variável produz dois grupos homogêneos na próxima camada da árvore de decisão.
Machine Translated by Google
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:
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.
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”.
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.
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
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.
13
Machine Translated by Google
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
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']
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:
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:
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
taxa_de_aprendizagem=0,1,
profundidade_máx.=30,
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.
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.
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
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:
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.
# Remover preço
del features_df['Preço']
# Configurar modelo
de algoritmo =
# Salvar modelo no
arquivo [Link](model, 'trained_model.pkl')
# Remover preço
del features_df['Preço']
# Modelo de
algoritmo de entrada = [Link]()
| 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.
| Algoritmos Básicos |
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.
| 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.
| Programação |
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 |
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
.
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.
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 |
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.
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.
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]