Ferramentas de Python para Aprendizado de Máquina – parte 1

Objetivo é apresentar conceitos fundamentais de aprendizado de máquina e as ferramentas de Python que facilitam aplicar esses conceitos em problemas de Big Data.

“Arthur Samuel (1959) definiu que: ”Aprendizado de Máquina: Campo de estudo que permite que computadores tenham a habilidade de aprender sem que sejam explicitamente programados”

O que podemos entender por Inteligência Artificial?

Sabe-se, de forma genérica, que um sistema inteligente é aquele que apresenta capacidade mental para:

#  raciocinar;
#  planejar;
#  resolver problemas;
#  abstrair ideias;
#  armazenar conhecimento;
#  comunicar-se através de uma linguagem;
#  aprender.

Mas o que é aprender?

Do ponto de vista das máquinas aprender através dos dados, afinal é o que temos.  Se colocarmos do ponto de vista humano, podemos dizer que aprendemos através das experiências.
Demonstramos comportamentos que podemos classificar como inteligente quando aprendemos através das experiências. Isso nos dá flexibilidade em nossas vidas.
Podemos nos adaptar a certas circunstâncias e aprender sobre essas
situações, não importando o quão velhos somos.

Dado um conjunto de objetos, colocar os objetos em grupos baseados na similaridade entre eles.

E quais são as partes importantes do aprendizado?

Lembrar e adaptar

#  Temos uma determina situação para resolver.

#  Tentamos lembrar (reconhecer) a última vez que estivemos nessa situação (já visualizei esses dados) e qual foi a ação realizada (já imprimir essa saída) que funcionou (estava certo) para resolver essa situação.

#  Se a ação realizada deu certo, tentamos realiza-la novamente.
#  Caso não tenha funcionado, tentamos algo diferente.

Generalizar

#  Reconhecer similaridades possibilita aplicar as mesmas ações para diferentes situações. Isso permite que o aprendizado seja útil, pois podemos utilizar nosso conhecimento em diferentes situações.

Existem outras partes, como raciocínio e  a dedução, porém estamos interessados nas partes fundamentais do aprendizado (aprender e adaptar) e como podemos criar modelos computacionais.

Aprendizado de Máquina (Machine Learning)

É fazer os computadores modificarem ou adaptarem suas ações para que essas ações sejam cada vez mais precisas. A precisão é medida pelo quão bem as ações escolhidas refletem as corretas.

Por exemplo, se você jogar um jogo contra o computador, você irá derrotá-lo todas as vezes no inicio, até que em algum momento ele começa a te vencer, até que você nunca mais consiga vencê-lo.

Nesse cenário, ou você está ficando ruim, ou o computador esta aprendendo a vencer. A ideia de fazer o computador aprender surgiu de diversas áreas, como
neurociência, biologia, estatística, matemática e física.

Mais qual é a relação entre IA, Data Science e Big Data?

Inteligência artificial (IA) – é a inteligência empregada pelas máquinas ou software para ajudar a tecnologia realizar decisões através de aprendizado próprio.

Data Science – Obter conhecimento dos dados e criar produtos para ajudar pessoas e empresas a tomarem melhores decisões.

Big Data – “If data had mass, the earth would be a black hole” – Stephen Marsland.
Fluxo simples de um projeto de Data Science

DinoMaquina1

#  Definir objetivos e métricas
#  Coletar e limpar os dados
#  Explorar e analisar
#  Definir algorítimo ou método
#  Construir modelo / Aplicar o método
#  Avaliar os resultados
#  Produto dos dados
#  Tomar decisões


Fluxo Aprendizado de Máquina

dinoMaquina2

“Tom Mitchell (1998) definiu que: “Um programa de computador “aprende” a partir de experiências E com respeito a alguma classe de tarefas T e com medida de desempenho P, se o desempenho de tarefas em T, medido por P, melhora com experiências E.”

Exemplo:

Jogo de Computador

Tarefa T: Jogar Xadrez
Medida de desempenho P: Partidas ganhas contra oponentes X perdidas
Experiência de Treinamento E: Prática de jogo contra ele mesmo


Exemplo II

Suponha que seu programa esteja analisando quais e-mails você marca ou não como SPAM, e baseado nisso, aprende como melhorar a filtragem de SPAM. Qual é a
tarefa T nesse cenário?

1. Classificar emails como spam e não spam
2. Analisar a classificação de emails como spam ou não spam
3. O número (ou fração) de emails corretamente classificados como spam/não spam.
4. Nenhuma das anteriores – Não é um problema de aprendizado de máquina.

O problema de aprendizado geralmente considera um conjunto de n amostras e tenta prever dados de uma amostra desconhecida. As características de uma amostra são geralmente chamada de features. São categorizados em:


Aprendizado Supervisionada
(Supervised Learning)

Um conjunto de treinamento de exemplos fornecidos e, baseado no conjunto de treinamento, o algoritmo irá generalizar para responder corretamente para todas as entradas possíveis. Exemplo: Reconhecimento de Caracteres.

Classificação

As amostras pertencem a duas ou mais classes e o objetivo é aprender através de dados já rotulados qual a classe de um dado novo não rotulado.  Para determinar se uma pessoa tem câncer benigno ou maligno, podemos utilizar:

#  Atributos: tamanho do tumor, formato do tumor, idade do paciente
#  Classe: tumor benigno ou tumor maligno

Outro exemplo é verificar se um texto publicado em uma rede social é inadequado ou não, os atributos tais como : quantidade de palavras encontradas no texto, quantidade
de palavras proibidas encontradas no texto, quantidade de texto já
criados pelo usuário, idade do usuário no sistema, …

#  Classe: texto adequado ou não
#  Classes: texto adequado, texto inadequado, texto com propaganda
(classificação com múltiplas classes)

Regressão

Se a saída esperada do algoritmo é uma ou mais variáveis contínuas, o problema é chamado de regressão. Um exemplo de regressão é prever o preço de um imóvel levando em consideração suas características (features) como o tamanho, número de
quartos, número de garagens, etc.

#  Atributos: tamanho, posição geográfica, número de quartos, garagem
#   Classe: preço


Conjuntos de Exemplos (Dataset)

dinoMaquina3
Conjuntos de Exemplos para Classificação

#  Dez exemplos (n=10)
#  Duas classes (k=2): Sim ou Não
#  Dois atributos (m=2)
>> Idade
>> Tipo do Veículo é categórico (E –Esporte, V – Van, C – Caminhão)
#  Rótulo da classe indica se a pessoa comprou o produto
#  Atributo dependente (classe) é categórico.

dinoMaquina5

Conjuntos de Exemplos para Regressão

#  Dez exemplos (n=10)
#  Duas classes (k=2): Sim ou Não
#  Dois atributos (m=2)
>> Idade
>> Tipo do Veículo é categórico (E –Esporte, V – Van, C – Caminhão)
#  Despesa indica quanto a pessoa gastou durante visita recente à concessionária.
#  Atributo dependente (classe) é numérico.

dinoMaquina6

Hierarquia de Aprendizado de Máquina

dinoMl1

dinoML2

Aprendizado Não Supervisionada (Unsupervised Learning)

Respostas corretas não são fornecidas, ao invés o algoritmo tenta identificar similaridades entre as entradas para que elas tenham algo em comum e assim serem categorizadas juntas.  Exemplo: Agrupamento de imagens semelhantes.

dinoMaquina7

#  Agrupar notícias semelhantes publicadas por várias fontes de informação.
#  Numa rede social, identificar subgrupo de pessoas
#  Identificar padrões de navegação em sites.
#  Dado conjuntos de itens adquiridos na mesma compra, identificar padrões de         compra.

dinoMaquina8


Conjuntos de Exemplos

#  Dez exemplos (n=10)
#  Três atributos (m=3)
>> Idade
>> Tipo de veículo (E – Esporte, V – Van, C – Caminhão)
>> Cor do veículo

Neste caso, não há associação explícita de algum atributo com uma determinada classe.

dinoMaquina9


Fluxo simples do modelo não supervisionado

dinoMaquina10

Termologia

#  Modelo (model) – coleção de parâmetros que você está tentando encaixar.
#  Dados (data) – o que você está utilizando para encaixa no modelo.
#  Alvo (target) – o valor que você está tentando prever com o seu modelo
#  Características (features) – atributos do seus dados que serão utilizados na predição
#  Métodos (methods) – algoritmos que usuram seus dados para encaixar em um modelo

BibliotecaPython scikit-learn  para aprendizado de máquina

scikit-learn-logo

#  Extensões da biblioteca SciPy (Scientific Python) são chamadas de scikits.
#  Scikit-learn fornece algoritmos de aprendizado de máquina supervisionado e não supervisionado
#  Construída sobre as bibliotecas SciPy e Numpy
#  Ótima documentação
#  OpenSource: BSD License

http://scikit-learn.org/

História do Scikit-learn

#  David Cournapeau inicio como um projeto do Google Summer of code em 2007.
#  Matthieu Brucher utilizou para sua tese de doutorado
#  Em 2010, INRIA patrocinou e publicou a primeira versão, assim como Google, Tinyclues, PSF (Python Software Foundation)

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s