Você está na página 1de 25

Entenda o que é o conceito de “Aprendizado de

Máquina”
Aprendizagem de máquina relaciona-se ao ato de dar aos
computadores a habilidade de aprender sem precisar ser
explicitamente programado para tal. Isso é feito fornecendo dados aos
computadores e fazendo com que eles os transformem em modelos
de decisão que são, então, utilizados para como ferramenta de
predição.

Nesse tutorial, nós vamos falar a respeito de aprendizagem de


máquina e alguns dos seus principais conceitos que são de
necessários para que você consiga começar a trabalhar com esse tipo
de abordagem. Nós vamos também apresentar alguns exemplo em
Python que são capazes de prever certos elementos ou eventos.

Introdução a Aprendizagem de Máquina

Aprendizagem de máquina é um tipo de tecnologia que tem como


objetivo aprender a partir da experiência. Por exemplo, como humano,
você é capaz de aprender a como jogar xadrez simplesmente
observando outras pessoas jogarem. Da mesma forma, computadores
são programados, abastecendo-os com dados a partir dos quais ele
podem aprender, e, então, essas máquinas tornam-se capazes de
prever elementos ou condições futuras.

Digamos, por exemplo, que você quer escrever um programa que


pode dizer se um determinado tipo de fruto é uma laranja ou um limão.
Você pode achar fácil escrever um programa que vai dar os resultados
pretendidos, mas você também pode achar que o programa não
funciona de forma eficaz para grandes conjuntos de dados. Isto é
onde a aprendizagem de máquina entra em jogo.

Existem várias etapas envolvidas na aprendizagem de máquina:

1. coleta de dados
2. filtragem de dados
3. análise de dados
4. treinamento do algoritmo
5. testes do algoritmo
6. uso do algoritmo para previsões futuras

Aprendizado de máquina usa diferentes tipos de algoritmos para


encontrar padrões, e estes algoritmos são classificados em dois
grupos:

 aprendizado supervisionado
 aprendizado não supervisionado

Aprendizado Supervisionado
Aprendizado supervisionado é a ciência de treinar um computador
para reconhecer elementos, dando-lhe dados amostrais. O
computador, então, aprende a partir dessas resultados e torna-se
capaz de prever futuros conjuntos de dados com base na informação
aprendida.

Por exemplo, você pode treinar um computador para filtrar mensagens


de spam com base nas informações passadas.

Aprendizado supervisionado tem sido usado em muitas aplicações;


como por exemplo no Facebook - para pesquisar imagens com base
em uma descrição. Você agora pode pesquisar imagens no Facebook
com palavras que descrevem o conteúdo da foto. A partir do momento
que o site já tem um banco de dados de imagens legendadas, o
algoritmo torna-se, também, capaz de pesquisar e relacionar as fotos
com sua descrição - com algum grau de precisão.

Existem apenas duas etapas envolvidas no aprendizado


supervisionado:

 treinamento
 teste

Alguns dos algoritmos de aprendizado supervisionado incluem:

 árvores de decisão
 máquina de vetores de suporte
 algoritmo de classificação Naive Bayes
 k-vizinhos mais próximos (k-nearest neighbor)
 regressão linear
Aprendizado Não Supervisionado

Aprendizado não supervisionado acontece quando você treina sua


máquina com apenas um conjunto de entradas. A máquina será capaz
de encontrar uma relação entre os dados de entrada e quaisquer
outros que você quiser prever. Ao contrário do que acontece no
aprendizado supervisionado, onde você pode apresentar à máquina
alguns dados rotulados para treiná-la, o aprendizado não
supervisionado destina-se a fazer com que o computador encontre
padrões ou relações entre diferentes conjuntos de dados.

Aprendizado não supervisionado pode ser subdividido em:

 agrupamento
 associação

Agrupamento: significa agrupar dados inerentemente. Por exemplo,


você pode classificar os hábitos de compra dos consumidores e usá-
los para publicidade, segmentando os consumidores com base em
suas compras e hábitos de compra.

Associação: é onde você identifica as regras que descrevem grandes


conjuntos de dados. Esse tipo de aprendizagem pode ser aplicável,
por exemplo, na tarefa de associar livros com base no autor ou
categoria - se motivacional, de ficção, ou livros didáticos.

Alguns dos algoritmos de aprendizado não supervisionado populares


incluem:

 agrupamento k-means
 agrupamento hierárquico

Aprendizado não supervisionado será uma tecnologia importante em


um futuro próximo. Isto deve-se ao fato de que há uma grande
quantidade de dados não filtrados (ou rotulados) que ainda não foram
digitalizados.

Conclusão

Espero que este tutorial tenha lhe ajudado a começar com o


aprendizado de máquina. Esta é apenas uma introdução —
aprendizagem de máquina engloba, ainda, muito outros assuntos, e
isso é apenas uma fração do seu potencial.

Além disso, não hesite em ver o que temos disponível para venda e
para estudo no . Não deixe, também, de fazer perguntas e fornecer
seu feedback usando a seção abaixo.

Sua decisão de usar um algoritmo de aprendizado de máquina


supervisionado ou não supervisionado dependerá de vários fatores,
tais como a estrutura e o tamanho dos dados.

Aprendizado de máquina pode ser aplicado em quase todas as áreas


de nossas vidas, por exemplo: na luta contra a fraude, personalizando
os tipos de notícias exibidas em sites de mídia social para que elas se
adaptem às preferências dos usuários, filtragem de spam, previsão do
tempo e até mesmo no setor de comércio eletrônico para prever
padrões de consumo e hábitos de compras.

O que é Machine Learning?

Controle de spam feito pelo seu email: machine learning te ajuda a ficar livre
de lixo

Machine Learning da maneira mais básica é a prática de usar algoritmos para


coletar dados, aprender com eles, e então fazer uma determinação ou predição
sobre alguma coisa no mundo. Então ao invés de implementar as rotinas de
software na mão, com um set específico de instruções para completar uma
tarefa em particular, a máquina é “treinada” usando uma quantidade grande de
dados e algoritmos que dão e ela a habilidade de aprender como executar a
tarefa.

Machine learning veio direto das mentes do pessoal do início da IA, e a


abordagem com algoritmos através dos anos incluiu árvore de aprendizado,
programação lógica indutiva, agrupamento, aprendizado reforçado, redes
Bayesianas, entre outros. Como sabemos, nenhuma dessas soluções chegou
ao objetivo final de uma IA genérica, e mesmo uma IA limitada estava fora do
nosso alcance com as abordagens iniciais de machine learning.

Da maneira que as coisas evoluíram, uma das melhores áreas de aplicação


para machine learning por muitos anos foi a de visão computacional, apesar de
ainda requerer muito trabalho manual para completar uma tarefa. Pessoas
escreveram na mão classificadores como filtros detectores de beiradas em
imagens para que os programas conseguissem identificar onde um objeto
começou e terminou; detectores de formato para determinar se algo na imagem
tem oito lados; um classificador para reconhecer as letras “P-A-R-E”. De todos
esses classificadores criados manualmente, eles construíram algoritmos que
entendem uma imagem e “aprendem” a determinar se é uma placa de pare.

Legal, mas ainda nada que seja surpreendente. Especialmente em um dia com
neblina quando a placa não é perfeitamente visível, ou se uma árvore tapa
metade dela. Há uma razão pela qual visão computacional e detecção de
imagens não chegava nem perto de rivalizar com humanos até muito
recentemente, ela era muito rasa e propensa a erros.

Tempo e o algoritmo de aprendizado certo fizeram toda a diferença.


Deep Learning — Uma Técnica para Implementar
Machine Learning

Reconhecer imagens de gatos automaticamente do YouTube foi um dos


primeiros avanços na demonstração do poder de deep learning

Outra abordagem em forma de algoritmo do início do movimento de machine


learning, Redes Neurais Artificias, surgiram e desapareceram através das
décadas. Rede neurais são inspiradas pelo nosso entendimento da biologia do
nosso cérebro — todas as interconexões entre neurônios. Mas, diferente de um
cérebro biológico onde qualquer neurônio pode se conectar com qualquer outro
neurônio dentro de uma certa distância física, essas redes neurais artificiais tem
camadas discretas, conexões e direções de propagação de dados.

Você pode, por exemplo, pegar uma imagem, cortar ela em uma pilha de
pequenos pedaços que são recebidos pela primeira camada da rede neural. Na
primeira camada neurônios individuais, então passam os dados para uma
segunda camada. A segunda camada faz o seu trabalho, e assim por diante, até
que a camada final produza a saída.
Cada neurônio atribui um peso para os dados que entram — o quão correto ou
incorreto ele é relativo a tarefa que está sendo executada. A saída final é então
determinada pelo total desses pesos. Tome como exemplo a nossa placa de
pare. Atributos de uma foto de uma placa de pare são cortados e examinados
pelos neurônios — o seu formato octogonal, a sua cor vermelha, as suas letras
distintas, o tamanho comum para placas de trânsito e o seu movimento (ou falta
dele). O trabalho da rede neural é concluir se a imagem é de uma placa de pare
ou não. Ela traz um “vetor de probabilidade”, que é um valor calculado a partir
dos pesos atribuídos a imagem. Em nosso exemplo o sistema pode estar 87%
confiante que a imagem é de uma placa de pare, 7% confiante que é uma placa
de limite de velocidade e 5% que é um gato preso em uma árvore, e assim por
diante — a arquitetura da rede então diz para a rede neural se está certo ou não.

Mesmo esse exemplo está indo a frente, porque até recentemente redes
neurais eram evitadas pela comunidade pesquisadora de IA. Elas estavam
presentes desde o início de IA, e haviam produzido muito pouco no sentido de
“inteligência”. O problema era que mesmo a rede neural mais básica exigia
muito computacionalmente, então era uma abordagem nem um pouco prática.
Ainda assim, um grupo de pesquisa pequeno liderado por Geoffrey Hinton na
Universidade de Toronto se manteve firme, finalmente conseguindo paralelizar
os algoritmos para supercomputadores executa-los e provar o conceito, mas só
quando GPUs foram incumbidos da tarefa que a promessa foi cumprida.

Se voltarmos para nosso exemplo da placa de pare, as chances são de que


enquanto a rede está sendo ajustada ou “treinada”, está produzindo respostas
erradas — recorrentemente. Ela precisa de treino. A rede precisa ver centenas
de milhares, até milhões de imagens, até os pesos de cada informação recebida
pelos neurônios estarem tão precisamente calibrados que conseguem
responder de forma correta praticamente toda vez — com neblina ou sem
neblina, com sol ou chuva. É nesse ponto que a rede neural aprendeu como
que uma placa de pare se parece; ou a rosto de sua mãe no caso do Facebook;
ou um gato, que é o que Andrew Ng fez na Google em 2012.

O grande avanço de Ng foi de pegar essas redes neurais, e essencialmente


faze-las grandes, aumentar as camadas e os neurônios, e então alimentá-las
com um nível massivo de dados para que fossem treinadas. No caso de Ng,
eram imagens de 10 milhões de vídeos do YouTube. Ng colocou a palavra
“deep” no deep learning, que descreve todas as camadas nessas redes neurais.

Hoje, reconhecimento de imagens por máquinas treinadas através de deep


learning em alguns cenários possuem uma taxa de acerto maior que a de
humanos, e isso varia de gatos até identificar indicadores de câncer no sangue
e tumores em exames de ressonância magnética. O AlphaGo da Google
também aprendeu as regras do jogo e treinou para sua partida — calibrou sua
rede neural — jogando contra si mesmo repetidamente.

Graças ao Deep Learning, IA tem um Futuro Brilhante


Deep Learning permitiu muitas aplicação práticas de machine learning e por
extensão o campo todo de IA. Deep learning se quebra em diversas tarefas de
maneira que todo tipo de ajuda de uma máquina é possível, mesmo as mais
remotas. Carros que dirigem sozinhos, melhor saúde preventiva, mesmo
recomendações melhores de filmes, todos já estão aqui ou no horizonte. IA é o
presente e o futuro. Com a ajuda de Deep Learning, IA pode até chegar no
estado de ficção científica que imaginamos por tanto tempo. Se tivermos um
C3PO, vou querer. Agora, pode ficar com seu Exterminador.

Introdução ao aprendizado de máquinas


A Ciência de Dados está se tornando uma habilidade fundamental para os desenvolvedores e
gerentes de todos os setores e parece ser divertido de explorar, mas bastante complicado.
Existem muitas opções de engenharias e análises para aprender, e é difícil saber se está
fazendo a coisa certa ou se está entrando em uma armadilha e comprometendo o resultado.
Nessa série, serão exploradas várias formas de entender Ciência de Dados, entender se é ou
não necessária e como pode ser útil.

Muitos projetos de Aprendizagem de Máquinas ajustam uma função


matemática para um conjunto de dados com o objetivo de calcular: um número
como 1 ou 0 (isso é um spam ou não?) para problemas de classificação, ou um
conjunto de números (por exemplo, a venda semanal de um produto) para
regressão.

Um exemplo é problema de reconhecimento de gênero (masculino ou feminino)


de acordo com a voz, mais informações sobre este exemplo podem ser
encontrados na página Kaggle. O objetivo com esse conjunto de dados é
quando dado um sinal de fala, identificar se é do sexo masculino ou feminino.
Esse problema enquadra-se na categoria de um problema de classificação. O
objetivo é atribuir a classe masculina ou feminina dado um sinal de fala, mas o
problema de classificação não necessariamente tem de estar limitado a essas
duas classes. Alguns outros exemplos de problemas de classificação são: a
análise de sentimento do texto (positivo, neutro ou negativo), identificação de
imagem (que tipo de flor é apresentado em uma imagem), entre outros.
Como poderia o computador aprender a identificar se uma voz gravada é de
um homem ou de uma mulher? Bem, se utilizaremos um computador para
ajudar com isso, então nesse caso é preciso falar seu idioma: números. No
mundo do aprendizado de máquinas, isso significa extrair características dos
dados. No projeto disponível no Kaggle, há diversas características extraídas
do sinal de fala: frequência média, frequência mediana, desvio padrão de
frequência, média de frequência fundamental, entre outros. Em outras palavras,
em vez de ter uma série de temporal mostrando o sinal de pressão da voz, são
extraídas características desses sinais que podem ajudar a identificar se a voz
pertence a um homem ou uma mulher. Esse recurso é chamado de extração de
características, que é uma parte crítica da maioria dos processos de
aprendizagem de máquinas.
Foram escolhidos duas características desse conjunto de dados: a média da
frequência fundamental e o intervalo interquartil, o gráfico a seguir apresenta
estas duas características:
Dois grupos distintos de pontos aparecem nesta figura. Sabendo que esse
conjunto de dados é composto por sinais de fala masculinos e femininos, é
possível que o grupo ou conjunto de pontos com maior média de frequência
fundamental (maior inclinação) pertencem ao sexo feminino, então o outro
grupo pertence ao sexo masculino. Portanto, uma possível maneira de
identificar qual o gênero é agrupando esses dados em dois clusters e atribuir a
etiqueta do sexo feminino ao conjunto com a maior média de frequência
fundamental e a etiqueta do sexo masculino para o outro cluster. Acontece que
alguns algoritmos de Aprendizado de Máquinas fazem exatamente isso. O K-
means é um dos algoritmos mais utilizados para executar essa operação, em
que "K" no nome do algoritmo é o número de clusters que se deseja identificar
(dois no caso atual). Pode-se notar que todos esses algoritmos levam um
número inicial de clusters e os dados brutos que se pretende identificar,
retornando um rótulo genérico (0 ou 1, por exemplo), anexado a cada ponto
(amostra de dados), indicando a qual grupo cada instância pertence. Nesse
caso, foi o domínio de conhecimento que atribui significado a esses rótulos.
O K-means pertence a uma classe de algoritmos de Aprendizado de Máquinas
chamado Aprendizado Não Supervisionado, em que não se sabe os rótulos de
dados previamente. Isso funciona bem nesse caso, pois existem dois clusters
claramente diferenciáveis, porém quando há muita sobreposição pode não ser
a melhor solução para problemas de classificação. Outra classe de algoritmos
de Aprendizado de Máquinas é chamada de Aprendizado Supervisionado, no
qual os dados já estão rotulados. Como exemplo, são retirados os dados dos
rótulos de reconhecimento de voz e traçada novamente o mesmo gráfico.
A intuição de que o cluster com a maior frequência fundamental pertence às
fêmeas estava correto. Para apresentar a abordagem supervisionada, foram
separadas as duas classes com uma linha para que visualmente possa fazer
sentido para o leitor. Essa linha é chamada de limite de decisão e ao lado está
sua equação. Os valores dos "Thetas" são os parâmetros de linha, enquanto
que os valores dos "x" correspondem às variáveis plotadas no gráfico: intervalo
interquartil e média de frequência fundamental, nesse caso. Assim, é possível
aplicar essa linha porque já se sabe o rótulo de dados. Assim, se utilizado o
lado esquerdo da equação no dataset de voz e se o número recebido é maior
que zero, pode-se prever que a voz é do sexo feminino e se esse número for
menor que zero considera-se do sexo masculino.

Foram plotados apenas 100 pontos para cada classe, porém todo o dataset é
composto de 3.164 pontos de amostras divididos entre masculino e feminino. O
que acontece se forem plotados 200 pontos de amostras para cada classe?
Bem, a linha tracejada em preto parece não separar corretamente os dois
conjuntos de dados. O processo é então repetido e aplicada uma linha
pontilhada vermelha que visualmente pode ser uma maneira melhor de separar
as classes. A diferença matemática entre ambas linhas no gráfico está
relacionada aos valores dos "Thetas" da equação. Foi "aprendido" uma melhor
maneira de separar ambas as classes, tendo em conta os dados que foram
apresentados. O resultado, em essência, se resume em encontrar novos
coeficientes para o limite de decisão.

Agora, podemos entender que o "Aprendizado" está relacionado a encontrar os


melhores parâmetros para atingir o objetivo, que nesse caso é predizer se o
sinal de voz é masculino e feminino. Na realidade, a maioria dos algoritmos de
aprendizado de máquinas consistem de encontrar os "Thetas" / coeficientes /
parâmetros para seus modelos, de uma forma que melhor se adapte aos dados
(como Regressão Logística e Redes Neurais Artificiais). Logicamente esses
algoritmos são muitos melhores que o métodos de atribuição visual de uma
linha. Eles normalmente são baseados em funções otimizadas que se
encaixam em linhas que minimizam o erro entre os valores reais e previstos
pelo modelo. Esse erro também é chamado de perda ou função de perda no
mundo do Aprendizado de Máquinas.
Existem também alguns algoritmos amplamente utilizados, baseados em
coleções de árvores de decisões como Random Forest ou Gradient Tree
Boosting que não encontram explicitamente os coeficientes para uma linha,
entretanto, encontram outros parâmetros para dividir os dados resultando em
um limite de decisão mais complexo. Logo, com a quantidade de amostras
utilizadas no exemplo anterior, não há razões para que uma linha seja
escolhida como o melhor limite de decisão. Pode-se em teoria, ajustar uma
curva para melhor separar os dados.

A linha preta sólida poderia ser escolhida como um limite de decisão, porém é
um problema que assombra praticamente todos os Cientistas de Dados, que é
o sobreajuste (overfitting). O que a curva faz é criar um limite de decisão que é
muito específico para o dataset atual e provavelmente não generalizará bem se
mais amostras forem adicionadas, como mostrado no gráfico a seguir:
Todo o conjunto de dados foi plotado e agora o método de separação utilizando
linhas torna-se muito questionável. É preciso ajuda de um algoritmo de
Aprendizado de Máquinas para escolher uma curva que minimize o erro ou a
perda que se está cometendo. Além disso, é preciso ajuda dos algoritmos,
porque até o momento foi demonstrada a dependência do dataset de voz com
base em apenas duas características, mas cada amostra de voz é composta de
21 características.

Imagine que em vez do gráfico bidimensional mostrado até agora, tivéssemos


três dimensões em que a terceira dimensão é outra característica como a
frequência fundamental máxima em todo o sinal (vamos chamá-lo de maxfun).
Considere o seguinte: vozes femininas tem o maxfun em torno de zero e
enquanto que a voz masculina tem o maxfun por volta de um (isso não
acontece neste dataset). Se isso fosse representado em um gráfico 3D,
facilmente poderia ser visualizado um plano que pode dividir os dados
masculinos e femininos de maneira perfeita. Seria ótimo. Quando são
adicionados mais recursos para o dataset, pode-se imaginar essa situação
acontecendo com planos dimensionais maiores (hiperplanos) que dividirão os
dados de forma mais precisa. Esta é a boa notícia.
A má notícia é que não existe uma maneira de verificar visualmente após a
terceira dimensão, a menos que se utilize um algoritmo de redução de
dimensionalidade, como a Análise de Componentes Principais que transforma
esses dados altamente dimensionais em duas ou três dimensões. Mas a
desvantagem é que deixará de manter as características físicas nos eixos do
gráfico (como a frequência fundamental média ou a frequência fundamental
máxima), mas possuem variáveis que são projeções das características mais
importantes do seu dataset. Ilustrando esse ponto, foi traçado um exemplo
simples com a frequência média e a frequência mediana de fala a partir do
dataset de reconhecimento de voz.
O gráfico mostra duas variáveis correlacionadas que fazem sentido, tendo em
vista que são exemplos da mesma distribuição de probabilidade de frequência
de vozes. Há informações redundantes utilizando essas duas variáveis. Isso
deveria ser bom para encontrar uma maneira de simplificar a visualização.
E se em vez de visualizar as duas variáveis, visualizassemos a projeção
desses dados em uma direção que minimiza a perda das informações dessas
duas variáveis? Isso é feito no eixo "z1", mas ainda há perda de alguma
informação. Para este caso em particular, esta direção pode ser vista como
uma frequência, mas não é a mediana ou a média. Entretanto, pode-se
imaginar aplicando a projeção em um dataset de 21 dimensões em 2. Não se
pode realmente saber qual é o significado dessas duas dimensões. Além disso,
nesse simples exemplo não foram perdidas muitas informações, mas projetar
as 21 características em 2 resultará em uma perda substancial. Isso poderia
ser interessante em termos de visualização de dados, mas não deve ser
utilizado para executar algoritmos de aprendizado de máquinas.

Foi observado que alguns recursos neste dataset estão correlacionados.


Deveriam ser incluídos no projeto de aprendizado de máquinas? De fato,
quantos recursos deveriam ser utilizados? Utilizando somente dois recursos e
todos os pontos, o limite de decisão não separa claramente as duas classes
neste problema. Isso é confirmado quando é calculado o erro ou a perda
incorre utilizando a linha como um limite de decisão. Adicionando um terceiro
recurso, se o mesmo for adequado a perda tende a ser menor. Se não for, é
uma indicação de que este recurso adicional não é adequado ou não é
importante para o problema em questão.

Aprendizado de Máquina: conceitos e práticas da área que


está movendo o mundo
O termo Inteligência Artificial (IA) não é novo, a primeira abordagem foi feita por
pesquisadores em uma conferência de Dartmouth, no ano de 1956. Desde
então, muitas expectativas envolveram o assunto, abordada como a tecnologia
do futuro, ficção científica ou realidade atual. Depende do ponto de vista, pois
atualmente a Inteligência Artificial tem se tornando realidade, apesar de que
ainda é um campo de estudo a ser muito explorado.
Porém, quando falamos de IA, o termo mais conhecido e abordado na
atualidade é o de Aprendizado de Máquina, ou Machine Learning no inglês. A
área de Aprendizado de Máquina também não é nova, e já vem sendo
praticada há um bom tempo.

Porém, quando falamos de IA, o termo mais conhecido e abordado na


atualidade é o de Aprendizado de Máquina, ou Machine Learning no inglês. A
área de Aprendizado de Máquina também não é nova, e já vem sendo
praticada há um bom tempo.

Então o que faz o assunto ganhar tanto destaque na atualidade? A


quantidade de dados disponíveis!
Tudo bem que o aumento da velocidade do processamento dos computadores,
o barateamento das tecnologias e a evolução das GPUs influenciam. Mas
nunca na história da humanidade se produziu tantos dados como atualmente.
Um artigo da Scientific American revela que em 2016 a humanidade produziu
mais dados do que em toda a sua história, são cerca de 2,5 Exabytes de dados
produzidos por dia. E é essa quantidade de dados disponíveis é que alimenta e
fortifica o Aprendizado de Máquina.

Mas a máquina consegue aprender?


Aprendizado de Máquina é um método de análise de dados que automatiza o
desenvolvimento de modelos analíticos. É possível utilizar algoritmos para
coletar dados e aprender com os dados, levando em consideração todo o
histórico para então fazer uma determinação ou predição sobre alguma coisa
ou situação do mundo real. O que acontece é que o computador aprende
através de técnicas que utilizam algoritmos computacionais. Os algoritmos
trabalham com certa base de dados, então conseguem aprender através de
treinamento e prever situações com a experiência adquirida com aqueles
dados. O mais interessante é que os algoritmos começam a trabalhar de certa
forma autônoma, retornando resultados para que nem foram programados, ou
seja, começam a ter insights sobre algo específico.

Atualmente não é difícil encontrar históricos da utilização do Aprendizado de


Máquina na vida real. Exemplos de que realmente a máquina aprende com
dados e treinamento. Posso citar os carros autônomos do Google, que dirigem
sozinhos (não começaram a dirigir do nada, eles aprenderam a dirigir sem a
intervenção humana), as ofertas e recomendações online da Netflix, Facebook,
Amazon e outras redes sociais e lojas virtuais, detecção de fraudes
automáticas em cartões de créditos e contas bancárias, e até uma rede neural
que é capaz de sonhar. Sim, esse último exemplo é uma rede neural do
Google, que foi ensinada a reconhecer imagens e, enquanto aprende, os
responsáveis do projeto dizem que a IA consegue produzir novas imagens.

Métodos para o Aprendizado de Máquina


A pergunta que pode ter ficado no ar é, como fazer a máquina aprender?
Anteriormente foi mencionado que o combustível para a máquina aprender são
os dados, porém, existem métodos de aprendizagens que são utilizados para
realizar o Aprendizado de Máquina. Basicamente, existem quatro métodos:
aprendizado supervisionado, aprendizado não supervisionado, aprendizado
semi supervisionado e aprendizado por reforço. Porém, dois são os mais
utilizados, o aprendizado supervisionado e o aprendizado não supervisionado,
que são descritos logo abaixo:

 Aprendizado supervisionado: neste método de aprendizado, a máquina


é treinada através de um conjunto de dados onde para cada entrada a
saída é conhecida. Os dados para este tipo de método devem possuir
rótulos. Podemos comparar a um aprendizado acompanhado, onde o
professor supervisiona todo o processo de aprendizado, dizendo o que é
certo, o que é errado e aonde se quer chegar. O desafio fica para quando
se quer prever futuras situações. Com uma entrada de dados, quais
serão os resultados previstos para aquela situação. Neste caso o
algoritmo deve se ajustar para chegar aos resultados corretos e com o
máximo de acerto. Para isso o aprendizado pode ser constante,
aumentando assim a experiência com aquele problema. Um bom
exemplo para esse caso é conseguir prever se uma transação do cartão
de crédito de certa pessoa é falsa ou não.
 Aprendizado não supervisionado: neste método de aprendizagem, ao
contrário do anterior, os dados não possuem rótulo, ou seja, a saída
correta não é informada. Podemos comparar a um aprendizado
autodidata, onde o aluno tem que descobrir o caminho e alcançar os
resultados. Neste caso, o algoritmo deve descobrir a base de dados e o
que está sendo mostrado, explorando os dados e buscando encontrar
alguma estrutura neles. Dependendo da técnica utilizada, o algoritmo vai
encontrar agrupamentos entre esses dados, aproximando os dados que
tem alguma semelhança entre si. Um exemplo pode ser a classificação
de pessoas que tenham a tendência de adquirir diabetes, analisando a
sua alimentação e rotina, porém não é informado quais pessoas
realmente tem ou não diabetes. Neste caso o algoritmo tem que agrupar
e contextualizar esses dados para chegar a predição correta dos casos.

Processo de aprendizado
Como o ser humano, a máquina precisa passar por alguns processos para que
ela possa aprender. Como discutido anteriormente, os dados são essenciais,
então o primeiro passo é escolher quais dados serão trabalhados e
disponibilizados para o processo do Aprendizado de Máquina.

Porém, nem todo conjunto de dados, seja ele adquirido em bases de dados
abertas, coletados em tempo real ou de um banco de dados, estará de forma
estruturada e pronta para ser passados para a máquina aprender. Como nós,
que precisamos de um material para estudo de qualidade para podermos
aprender, a máquina precisa de um conjunto de dados razoável para também
poder aprender. Como citado, muitas das vezes os dados estão completamente
desestruturados e fora de um padrão e para isso é necessário a realização da
técnica de Data Cleaning.

Data Cleaning, ou Limpeza de Dados, é uma técnica utilizada para trabalhar


com os dados. Nesse processo é realizada a normalização, a estruturação,
padronização e contextualização dos dados. Pode ser que nem todas as bases
de dados precisem passar por esse processo, porém, é bom validar
dependendo do problema e qual o resultado desejado.

Após ter um conjunto de dados estruturados, o próximo passo neste processo


de aprendizado é a aplicação de um método de aprendizagem juntamente com
uma técnica de Aprendizado de Máquina. As técnicas de Aprendizado de
Máquina utilizam algoritmos, que por sua vez faz o trabalho computacional e
todo o processamento dos dados.

Logo abaixo serão descritos algumas técnicas de Aprendizado de Máquina.

 Redes Neurais: são baseadas em como o cérebro humano funciona.


Existem diferentes tipos de Redes Neurais, mas basicamente elas
consistem em um conjunto de nós (ou neurônios) dispostos em várias
camadas com interconexões ponderadas entre eles. Cada neurônio
combina um conjunto de valores de entrada para produzir um valor de
saída, que por sua vez é passado para outros neurônios nas camadas
seguintes.
 Árvore de Decisão: essa técnica utiliza algoritmos do formato de árvore.
Cada árvore possui nó, ramos, folhas e ligações entre eles. Um ramo é
um conjunto de nó que testa cada atributo da classificação e cada ramo
corresponde ao valor do atributo. E as folhas atribui uma classificação
para os ramos. A classificação é o resultado final que se quer chegar ou
prever com o algoritmo.
 Regressão: é a técnica utilizada quando se quer prever valores de algo
futuro, baseado em comportamento de variáveis passadas. Um exemplo
seria prever o valor de mercado de um imóvel utilizando um algoritmo de
regressão linear.
Depois da aplicação da técnica de aprendizado e do treinamento do algoritmo,
devemos confirmar o seu desempenho para prever os casos. Nesse momento
é a hora da aplicação da prova. Existe algumas métricas que podem ser
utilizadas para assim ter uma medida que fale a quantidade de acertos, erros
ou o desempenho da técnica utilizada. Algumas métricas interessantes serão
descritas logo abaixo:

 Acurácia: essa métrica é a mais básica para medir o aprendizado, leva


em consideração a proporção de predições corretas, sem levar em
consideração a quantidade de erros.
 Sensibilidade: é a proporção de verdadeiros positivos, ou seja, a
capacidade do algoritmo em prever casos corretamente para os casos
que são realmente verdadeiros.
 Especificidade: A proporção de verdadeiros negativos: a capacidade do
algoritmo em predizer situações erradas que realmente são falsas.
 Eficiência: é a média aritmética da sensibilidade e especificidade. Indica
se o algoritmo está mais suscetível a ter verdadeiros positivos ou
verdadeiros negativos.

O que podemos concluir


Durante este artigo foram apresentados alguns conceitos introdutórios ao
mundo do Aprendizado de Máquina. É um começo para se aprender sobre
essa área que está movendo o mundo e influenciado no nosso dia a dia. A área
de IA já é uma realidade e está presente nas nossas atividades, seja no
trabalho, estudo ou no lazer.

Introdução ao Machine Learning


Machine Learning (ML) é uma área da inteligência artificial onde criamos
algoritmos para ensinar a máquina a desempenhar determinadas tarefas.
Nesse artigo iremos tratar alguns conceitos básicos dessa área a fim de
preparar terreno para nossa primeira implementação prática.
Um algoritmo de ML basicamente pega um conjunto de dados de entrada e
baseado nos padrões encontrados gera as saídas. Cada entrada desse
conjunto de dados possuem suas features, ter um conjunto delas é o ponto
inicial para qualquer algoritmo de ML.

Feature
Feature é uma característica que descreve um objeto. Qualquer atributo de um
objeto pode ser tratado como feature, seja um número, um texto, uma data, um
booleano etc. Como no objeto pessoa, vemos vários atributos que o descreve,
esses atributos são suas features.
Na tabela abaixo, temos um conjunto maior de dados, onde:

 Cada coluna é uma feature que descreve a linha;


 Cada linha é uma entrada e tem seu conjunto de features. image

As features são as entradas dos algoritmos de ML, quanto mais detalhes o


algoritmo tiver sobre uma entrada, mais facilmente achará padrões nos dados.
Features ruins podem prejudicar o desempenho do algoritmo. Features boas
são a chave para o sucesso de um algoritmo.
Boa parte do trabalho em ML é conseguir trabalhar os dados e gerar boas
features em cima deles, o que é conhecido como engenharia de features ou
feature engineering.
Existem diversas técnicas para gerar features, seja através do conhecimento da
natureza dos dados ou da aplicação de matemática e estatística para criá-las
em cima dos dados.
Tendo nossas features em mãos podemos aplicar diversos algoritmos de
aprendizado nelas. Existem dois grandes grupos de algoritmos em ML, os de
aprendizagem supervisionada e os de aprendizagem não supervisionada.
Aprendizagem supervisionada
Quando você tem um conjunto de entradas que possuem as saídas que deseja
prever em outros dados. Com conhecimento das entradas e saídas de um
número suficiente de dados, os algoritmos desse grupo podem achar os
padrões que relacionam as entradas com as saídas. Dessa forma, se tivermos
novos dados apenas com as entradas, podemos prever as saídas com base
nesses padrões previamente encontrados.
São divididos em dois grupos: classificação e regressão.
Classificação
Como o próprio nome já diz, é quando queremos prever uma classificação.
Os dados usados no aprendizado possuem essas classificações.

Como vemos na imagem temos dados do tipo bolinha azul e do tipo + lilás, e
queremos saber de qual tipo seriam os novos dados (bolinha amarela).
Exemplo: Classificar um e-mail como spam ou não spam.

 Pegaríamos vários e-mails já classificados como spam ou não spam;


 Treinaríamos um algoritmo que seria capaz de encontrar os padrões
determinantes para cada uma das classes;

 Teríamos um algoritmo capaz de ler um novo e-mail e classificar como


spam ou não baseado em suas características.
Regressão
Quando queremos prever um valor. Os dados usados no aprendizado possuem
esse valor.

Como vemos na imagem temos dados distribuídos ao redor da linha vermelha, que é
valor que desejamos encontrar. Um novo dado poderia ser colocado ali conforme suas
características e dependendo de onde ficaria na linha, encontraríamos o valor
desejado.

Exemplo: Determinar o preço de uma casa.

 Pegaríamos as características de várias casas (bolinhas azuis) e os seus


preços (linha vermelha);
 Treinaríamos um algoritmo capaz de criar uma relação entre as características
da casa e o seu preço;
 Teríamos um algoritmo capaz de determinar o preço de uma nova casa
(bolinhas amarelas) baseado em suas características.

No treinamento de algoritmos de aprendizado supervisionado sempre usamos dados


com os valores que desejamos encontrar.

No primeiro exemplo tínhamos vários e-mails rotulados como spam e não spam que
foram usados no treinamento.
No segundo exemplo tínhamos várias casas com seus preços que foram usadas nos
treinamento.

Aprendizagem não supervisionada


Quando você tem um conjunto de entradas sem as saídas que você deseja. Com base
nas características desses dados podemos gerar um agrupamento ou processá-los a
fim de gerar novas formas de expressar essas características.

São divididos em dois grupos: redução de dimensionalidade e clusterização.

Redução de dimensionalidade

Consiste em pegar um conjunto de dados de alta dimensão e reduzir para um número


menor de dimensões de forma que represente o máximo possível os dados originais.
Consideramos a quantidade de features como as dimensões.

No exemplo abaixo temos o objeto pessoa com 65 features, ou seja, 65 dimensões.


Passamos isso pelo algoritmo e reduzimos para 2 dimensões. Os complementos 1 e 2
gerados representam o máximo possível as 65 features originais. Como são duas
dimensões é possível plotar no plano.

Podemos fazer a mesma redução para várias pessoas diferentes e colocar no mesmo
plano, dessa forma conseguimos enxergar melhor a distribuição dos dados. Caso os
dados tenham uma boa representatividade em 2 dimensões, pessoas com mesmas
características podem ficar mais próximas nesse tipo de representação, enquanto
pessoas muito diferentes ficam mais distantes.
Reduzimos para 2 dimensões para melhor visualização, pois só somos capazes de ver
em no máximo 3 dimensões, porém os algoritmos são capazes de lidar com quantas
dimensões forem necessárias.

Esse tipo de técnica pode ser usada para facilitar a análise dos dados, como fizemos
no exemplo acima.

Também é usado no caso de dados com uma quantidade muito grandes de features,
em números muitos elevados podem impedir de alguns tipos de algoritmos
funcionarem corretamente, principalmente se o número de features for próximo ou
maior do que o número de entradas. Nesse caso, reduzimos as features para um
número mais aceitável e então fazemos nosso treinamento normalmente com essas
novas features.

Clusterização
Consiste no agrupamento dos dados baseado em suas características, esses grupos
são chamados de clusters.

Tomando como partida o exemplo anterior, podemos querer agrupar os dados em 3


grupos, um algoritmo de clusterização seria capaz de analisar os dados e identificar
esses grupos baseado nas características desses dados.
É uma técnica muito poderosa e tem uma aplicabilidade muito alta.

Exemplos:

 Para identificar clientes similares e com isso ser mais assertivo ao oferecer um
novo produto;
 Na área médica para agrupar pacientes com os mesmos sintomas;
 Em marketing para segmentação de mercado;
 Para classificação de documentos;
 Para qualquer agrupamento de uma grande de quantidade de dados baseado
em suas características.

Aplicação

Existem diversas formas de se aplicar Machine Learning hoje em dia, diferentes


linguagens e bibliotecas. Iremos trabalhar com a linguagem Python e com a biblioteca
SciKit Learn ou SkLearn, que é uma poderosa biblioteca focada em Machine Learning
para Python. Atualmente o SkLearn já engloba todos esses grupos de algoritmos que
citei.