quarta-feira, 27 de outubro de 2010

O Algoritmo de Agrupamento k-means

O algoritmo k-means é um método não-supervisionado de classificação que tem como objetivo particionar n registros em k agrupamentos, onde k < n. Seu funcionamento é descrito a seguir:

Dado um valor inicial de k médias (k-means), os registros são separados em agrupamentos, onde esses pontos (k-means) representam o centro de cada agrupamento. Normalmente, as coordenadas iniciais desses centróides são determinadas de forma aleatória. Em seguida, cada registro é associado ao cluster cujo centro está mais próximo, seguindo uma métrica de distância. Existem diversas métricas de distância, como a Euclidiana [1] e a de Mahalanobis [2]. Quando todos os registros estiverem classificados, os k centros são recalculados como as médias aritméticas dos registros de cada cluster. Então, os registros são novamente associados a um agrupamento segundo sua distância à média do cluster e os centros são novamente calculados. Esse passo se repete até que as médias dos clusters não se desloquem consideravelmente.

Segue o link [3] de uma demonstração interativa do k-means.


[1] http://pt.wikipedia.org/wiki/Distância_euclidiana
[2] http://pt.wikipedia.org/wiki/Distância_de_Mahalanobis
[3] http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html

sábado, 16 de outubro de 2010

Aprendizado de máquina

Curso da Faculdade de Engenharia de Standford sobre Aprendizado de Máquina:

http://see.stanford.edu/see/lecturelist.aspx?coll=348ca38a-3a6d-4052-937d-cb017338d7b1

É possível aprender com os dados?

Tudo começou com a leitura de um post num blog, sobre Online Learning [1], sugestão de um amigo do estágio.
Nos comentários tinha um link para um site com vídeo aulas [2].
Chegando lá, já no primeiro link no topo da página [3] me interessei e comecei a assistir uma aula de uma hora sobre aprendizado semi-supervisionado.

Existem métodos de inferir/formular modelos a partir de um conjunto de dados no qual temos como entrada pares de entrada+saída. São os chamados métodos supervisionados.
Por exemplo, podemos ter como entrada 1000 emails e saber se cada um deles é um spam ou não.

Seria interessante agora inferir coisas a partir dos dados não classificados, classificação não-supervisionada.
Este é o caso quando queremos por exemplo encontrar grupos através de uma função de similaridade.

O aprendizado semi-supervisionado é quando temos alguns dados classificados, e outros não classificados. Ou seja, temos 1000 emails que sabemos distinguir entre spam e não-spam, mais digamos 9000 emails que não sabemos a classificação.

Esses 9000 emails podem ajudar substancialmente a desenvolver um modelo que dado um novo email ele seja classificado corretamente como spam ou não-spam.
Na aula são mostradas duas categorias de problemas, e que tipo de conjunto de dados funcionam bem usando as técnicas apresentadas.
  • Expectation Maximization (EM) [4]
  • Co-training [5]
Essas técnicas me deram uma idéia de como posso classificar tweets como positivos ou negativos a respeito de algum candidato nas eleições 2010 [6], bastando ter algumas amostras de mensagens classificadas positivamente e outras classificadas negativamente.

Fica a sugestão a todos para visitar o videolectures.net e passar algumas horas assistindo a aulas muito interessantes.


[1] http://mark.reid.name/sap/online-learning-in-clojure.html
[2] http://videolectures.net
[3] http://videolectures.net/mlas06_mitchell_sla/
[4] http://en.wikipedia.org/wiki/Expectation-maximization_algorithm
[5] http://en.wikipedia.org/wiki/Co-training
[6] http://www.eleitorando.com.br

Post original

quinta-feira, 7 de outubro de 2010

PMML

Introdução à PMML

Se alguém lhe perguntasse se você usou analítica preditiva hoje, provavelmente você responderia que não. Entretanto, a verdade é que talvez você a use diariamente sem saber. Sempre que você passa o seu cartão de crédito ou o usa on-line, um modelo de analítica preditiva verifica a probabilidade de que a transação seja fraudulenta. Se você aluga DVDs on-line, é bem possível que um modelo de analítica preditiva tenha recomendado um determinado filme para você. A verdade é que a analítica preditiva já faz parte da sua vida e a sua aplicação irá ajudá-lo ainda mais no futuro.

À medida que os sensores em pontes, prédios, processos industriais e maquinaria geram dados, as soluções preditivas geram dados para proporcionar um ambiente mais seguro onde as previsões o alertam sobre possíveis falhas e problemas antes que aconteçam de fato. Sensores também são usados para monitorar pessoas, como acontece com os pacientes em Unidades de Terapia Intensiva. A IBM® e o University of Ontario Institute of Technology estão trabalhando juntos atualmente para implementar uma solução preditiva e de análise de dados para monitorar bebês prematuros, na qual leituras biomédicas podem ser usadas para detectar infecções potencialmente fatais até 24 antes do tempo em que seriam observadas normalmente.

Porém, a analítica preditiva, isoladamente, pode processar tudo isso? Depende. Os padrões abertos devem necessariamente estar envolvidos nesse processo. Para que você aproveite totalmente as soluções preditivas e a análise de dados, os sistemas e aplicativos devem ser capazes de trocar informações facilmente, seguindo normas. A PMML permite que os modelos analíticos preditivos sejam compartilhados entre aplicativos e sistemas.

A adoção da PMML por meio dos principais fornecedores de analítica é um grande exemplo de empresas que estão adotando a interoperabilidade. A IBM, SAS, Microstrategy, Equifax, NASA, e Zementis fazem parte do Data Mining Group (DMG), o comitê que está elaborando a PMML. As empresas de padrões abertos, como a KNIME e a Rapid-I, também fazem parte do comitê. A PMML existe para "moldar" a área de analítica preditiva e, portanto, fazer com que o mundo preditivo seja um lugar melhor para você.

Fundamentos da PMML

A PMML é a linguagem padrão de fato usada para representar os modelos de mineração de dados. Modelos de analítica preditiva e modelos de mineração de dados são termos usados para designar os modelos matemáticos que usam técnicas estatísticas para aprender padrões ocultos em grandes volumes de dados históricos. Os modelos de análise preditiva usam o conhecimento adquirido durante o treinamento para prever a existência de padrões conhecidos em dados novos. A PMML permite compartilhar facilmente modelos de análise preditiva entre aplicativos diferentes. Portanto, você pode treinar um modelo em um sistema, expressá-lo em PMML e movê-lo a outro sistema, no qual você pode usá-lo para prever, por exemplo, a probabilidade de falha em uma máquina.

A PMML é uma criação do Data Mining Group, um comitê liderado por fornecedores e composto por empresas de análise comerciais e de software livre. Consequentemente, a maioria das ferramentas atuais de mineração de dados pode exportar ou importar a PMML. A PMML, um padrão maduro que vem evoluindo nos últimos 10 anos, pode representar não só as técnicas estatísticas usadas para aprender padrões a partir dos dados — como as redes neurais artificiais e árvores de decisão — mas também o pré-processamento de dados brutos de entrada e o pós-processamento da saída do modelo (veja a Figura 1).


PMML incorporates data pre-processing and data post-processing as well as the predictive model itself

A estrutura de um arquivo de PMML segue as etapas usadas normalmente para criar uma solução preditiva que inclui:

  1. Dicionário de dados é um produto da fase de análise de dados que identifica os campos de dados de entrada que são mais úteis para resolver o problema em questão. Podem ser campos numéricos, ordinais e de categoria.
  2. Esquema de mineração define as estratégias para manipular valores ausentes e periféricos. Isso é extremamente útil, já que, muito frequentemente, sempre que os modelos são utilizados, alguns campos de dados obrigatórios de entrada podem estar vazios ou preenchidos incorretamente.
  3. Transformações de dados definem os cálculos necessários para pré-processar os dados brutos de entrada nos campos derivados. Os campos derivados (também chamados de detectores de recursos) combinam ou modificam os campos de entrada para obter informações mais relevantes. Por exemplo: para prever a pressão de frenagem usada para parar um carro, um modelo preditivo pode usar como entrada bruta a temperatura externa e a presença de água (choveu?). Um campo derivado pode combinar esses dois campos para detectar a existência de gelo na estrada. Em seguida, o campo sobre o gelo é usado como entrada direta para o modelo que prevê a pressão de frenagem necessária para parar.
  4. Definição de modelo define a estrutura e os parâmetros usados para construir o modelo. A PMML abrange uma variedade de técnicas estatísticas. Por exemplo: para representar uma rede neural, define todas as camadas neurais e os pesos de conexão entre os neurônios. Em uma árvore de decisão, define todos os nós da árvore e os predicados simples e compostos.
  5. Saídas definem as saídas esperadas do modelo. Em uma tarefa de classificação, as saídas podem incluir a classe prevista e as probabilidades associadas a todas as classes possíveis.
  6. Destinos definem as etapas de pós-processamento a ser aplicadas à saída do modelo. Em uma tarefa de regressão, essa etapa permite que as saídas sejam transformadas em pontuações (os resultados de predição) que as pessoas podem interpretar facilmente.
  7. Explicação do modelo define as métricas de desempenho obtidas ao passar os dados de teste pelo modelo (e não os dados de treinamento). Incluem as relações entre os campos, a matriz de confusão, os gráficos de ganho e levantamento e os gráficos de receiver operating characteristics (ROC).
  8. Verificação do modelo define um conjunto de amostra de registros dos dados de entrada juntamente com as saídas esperadas do modelo. É uma etapa muito importante, pois sempre que se passa um modelo de um aplicativo a outro, o modelo deve passar no teste de correspondência. Isso garante que o novo sistema produza as mesmas saídas do antigo quando tiver as mesmas entradas. Sempre que isso acontece, considera-se o modelo como verificado e pronto para ser colocado em funcionamento.

Considerando que a PMML permite que as soluções preditivas sejam expressas na sua totalidade (incluindo o pré-processamento e o pós-processamento dos dados e a técnica de modelagem), não é de se admirar que a estrutura e os elementos principais sejam um reflexo das oito etapas descritas acima.

Conclusão

A PMML possibilita a implementação instantânea de soluções preditivas. É o padrão de fato para representar modelos de análise preditiva e atualmente conta com o suporte de todas as principais ferramentas estatísticas comerciais e de software livre. À medida que mais sensores são implementados e mais dados são gerados, a analítica preditiva e os padrões abertos como a PMML se tornam fundamentais para entender todo esse contexto. Detecção de fraudes, recomendações de filmes, soluções médicas que salvam vidas e manutenção preditiva são alguns exemplos do que é possível fazer.

* Texto retirado de http://www.ibm.com/developerworks/br/industry/energy-util/ind-PMML1/index.html

sábado, 2 de outubro de 2010

Ontologia

É complicado achar uma definição exata sobre o que seria ontologia. Em ciências da computação e informação, ontologia pode ser entendida como uma representação formal do conhecimento, sendo um conjunto de conceitos, propriedades e atributos dentro de um domínio e as relações entre estes. O paper [1] contém uma definição de ontologia interessante: "é uma especificação explícita da conceitualização". Enquanto a conceitualização é definida como "uma abstração simplificada de uma visão do mundo que gostaríamos de representar para algum propósito".


O objetivo da ontologia é facilitar a comunicação e o intercâmbio de informações entre diferentes sistemas e entidades e são usadas para realizar inferências sobre os objetos do domínio. Ontologias são usadas em vários campos da computação tais como Inteligência Artificial, Web Semântica, Engenharia de Software e de Sistemas, como uma representação do conhecimento sobre o mundo ou de parte deste. Programas de computadores podem usar a ontologia para resolução de problemas de raciocínio indutivo e classificação por exemplo.

De acordo com [2], ontologias geralmente descrevem:

  • Indivíduos: os objetos básicos;
  • Classes: conjuntos, coleções ou tipos de objetos;
  • Atributos: propriedades, características ou parâmetros que os objetos podem ter e compartilhar;
  • Relacionamentos: as formas como os objetos podem se relacionar com outros objetos.



Desde a metade da década de 1970, pesquisadores no campo da Inteligência Artificial tem reconhecido que a captura do conhecimento é a chave para a construção de grandes e poderosos sistemas de IA. Estes pesquisadores argumentavam que poderiam criar novas ontologias como modelos computacionais que permitiriam certos tipos de raciocínio automatizado. Já na década de 1980, a comunidade de IA começou a usar o termo ontologia para se referir tanto à teoria de um mundo modelado quanto a um componente de um sistema de conhecimento. Alguns pesquisadores, inspirados pela ontologia filosófica, enxergaram a ontologia computacional como um tipo de filosofia aplicada.[3]