Introdução a Aprendizagem de Máquina em Python
() translation by (you can also view the original English article)
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:
- coleta de dados
- filtragem de dados
- análise de dados
- treinamento do algoritmo
- testes do algoritmo
- 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
Exemplo
Nós vamos escrever um programa simples para demonstrar como o aprendizado supervisionado funciona usando a biblioteca Sklearn e a linguagem Python. Sklearn é uma biblioteca para a linguagem de programação Python com uma gama de funcionalidades, tais como: análise múltipla, regressão, algoritmos de agrupamento, etc.
Sklearn também interopera com as bibliotecas NumPy e SciPy.
Instalando o Sklearn
O guia de instalação do Sklearn mostra uma maneira muito simples de instalá-lo em múltiplas plataformas. Ele requer várias dependências:
- Python (>= 2.7 ou >= 3.3)
- NumPy (>=1.82)
- SciPy (>=0.13.3)
Se você já tem essas dependências, você pode instalar o Sklearn da seguinte maneira:
1 |
pip install -U scikit-learn |
Uma maneira mais fácil e simples é instalar o Anaconda. Ele cuida de todas as dependências para que você não precise se preocupar sobre como instalá-las uma por uma.
Para testar se o Sklearn está funcionando corretamente, basta importá-lo em um interpretador Python - da seguinte maneira:
1 |
import sklearn |
Se nenhum erro ocorrer, então você está pronto para continuar.
Agora que terminamos com a instalação, vamos voltar ao nosso problema. Nós queremos ser capazes de diferenciar entre diferentes animais. Para isso, nós projetaremos um algoritmo que pode dizer especificamente se um determinado animal é um cavalo ou uma galinha.
Primeiro precisamos coletar alguns dados de amostra de cada tipo de animal. Alguns dados de exemplo são mostrados na tabela abaixo.
Altura (polegadas) | Peso (kg) | Temperatura (ºC) | Animal |
---|---|---|---|
7 | 0.6 | 40 | Galinha (0) |
7 | 0.6 | 41 | Galinha (0) |
37 | 600 | 37 | Cavalo (1) |
37 | 600 | 38 | Cavalo (1) |
Os dados de exemplo que nós obtivemos dá algumas das características específicas de cada um dos dois animais. Quanto maior os dados de exemplo, mais acurado e menos enviesados os resultados serão.
Com este tipo de dado, podemos um escrever algoritmo e treiná-lo para reconhecer um animal com base nos valores treinados e classificá-lo como um cavalo ou uma galinha. Agora nós vamos começar, então, a codificar o algoritmo que fará esse trabalho.
Primeiro, importe o módulo "tree" do Sklearn.
1 |
from sklearn import tree |
Defina os atributos que você deseja usar para classificar os animais.
1 |
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]] |
Defina a saída que cada classificador terá. Uma galinha será representada por 0, enquanto um cavalo será representado por 1.
1 |
#labels = [chicken, chicken, horse, horse]
|
2 |
# we use 0 to represent a chicken and 1 to represent a horse
|
3 |
labels = [0, 0, 1, 1] |
Então definimos o classificador, que será baseado em uma árvore de decisão.
1 |
classifier = tree.DecisionTreeClassifier() |
Alimente ou ajuste seus dados para o classificador.
1 |
classifier.fit(features, labels) |
O código completo para o algoritmo é mostrado abaixo.
1 |
from sklearn import tree |
2 |
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]] |
3 |
#labels = [chicken, chicken, horse, horse]
|
4 |
labels = [0, 0, 1, 1] |
5 |
classif = tree.DecisionTreeClassifier() |
6 |
classif.fit(features, labels) |
Podemos agora prever resultados a partir de um determinado conjunto de dados. A seguir é mostrado como prever qual animal tem uma altura de 7 polegadas, 0,6 kg de peso e uma temperatura de 41 ºC:
1 |
from sklearn import tree |
2 |
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]] |
3 |
#labels = [chicken, chicken, horse, horse]
|
4 |
labels = [0, 0, 1, 1] |
5 |
classif = tree.DecisionTreeClassifier() |
6 |
classif.fit(features, labels) |
7 |
|
8 |
print classif.predict([[7, 0.6, 41]]) |
9 |
|
10 |
#output
|
11 |
# [0] or a Chicken
|
Agora, é mostrado como prever qual animal tem uma altura de 38 polegadas, 600 kg de peso e uma temperatura de 37.5 ºC:
1 |
from sklearn import tree |
2 |
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]] |
3 |
#labels = [chicken, chicken, horse, horse]
|
4 |
labels = [0, 0, 1, 1] |
5 |
classif = tree.DecisionTreeClassifier() |
6 |
classif.fit(features, labels) |
7 |
|
8 |
print classif.predict([[38, 600, 37.5]]) |
9 |
|
10 |
# output
|
11 |
# [1] or a Horse
|
Como você pode ver acima, você treinou o algoritmo para aprender todos os atributos e os nomes dos animais, e o conhecimento obtido com esses dados é usado para testar novos animais.
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 Envato Market. 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.