sábado, 21 de agosto de 2010

Softwares de Data Mining e Inteligência Computacional

Existe um grande número de softwares na área de mineração de dados e afins. Em julho/2010 o site KDnuggets.com apresenta uma lista[1] de 70 softwares comerciais e mais 17 softwares open-source, apenas na categoria “data mining suítes”. No site “The Data Mine” há uma lista[2] com 211 softwares relacionados a área. Na Wikipédia, um artigo[3] apresenta uma comparação de softwares de estatística. Nesta seção, apenas os softwares mais importantes ou mais conhecidos são apresentados.

As plataformas comerciais de mineração de dados para o ambiente corporativo são o SAS[4], a Oracle[5], o SPSS[6], que foi adquirida pela IBM em 2009, passando a se chamar IBM SPSS, o Microsoft SQL Server[7] e o Statistica[8]. Estas plataformas são muito mais que apenas softwares de mineração de dados, são chamados de soluções verticais, pois fornecem componentes para todas as etapas do processo, desde a integração de dados até a tomada de decisões. O potencial deste mercado é tão grande quanto o tamanho dos concorrentes. Em 2007 a gigante SAP[9] adquiriu a Business Objects, passando a atuar também no segmento de inteligência de negócios e inteligência analítica. Um relatório do IDC[10] de 2009 aponta a SAP como líder no mercado de inteligência de negócios (Business Intelligence) em 2008. Entretanto, o SAP é essencialmente uma plataforma gestão que oferece recursos de integração de dados e processos, as funcionalidades de mineração de dados são apenas um item a mais na sua vasta lista de serviços.

Estas plataformas comerciais podem ser divididas em dois grupos segundo sua origem: pacotes de estatística e banco de dados. O SAS (Statistical Analysis Software), o SPSS (Statistical Package for the Social Sciences) e o Statistica são softwares desenvolvidos inicialmente com pacotes estatísticos e que depois incorporaram outros módulos. O SAS é o líder nesse segmento, presente em 92 das 100 maiores empresas na lista Fortune Global 500 de 2009[11]. O pacote de mineração de dados do SAS chama-se SAS Enterprise Miner[12] e fornece suporte para todo o processo de mineração de dados, incluindo limpeza de dados, transformações e modelos. O SAS permite exportar os modelos gerados em C, Java ou PMML[13], que é um formato baseado no XML para descrever modelos de mineração de dados. O SAS ainda tem uma customização de seus módulos para diversos setores de negócios. No SPSS, o componente de mineração de dados chama-se IBM SPSS Modeler[14] (ex-PASW, ex-Clementine) e tem características similares ao concorrente SAS. O SAS e o IBM SPSS não oferecem uma variedade muito grande de algoritmos, a estratégia é oferecer uma solução integrada, verticalizada. A aquisição da SPSS pela IBM mostra claramente essa tendência. O Statistica Data Miner[15], também é integrado com os módulos de estatística e tem uma variedade maior de algoritmos, permitindo realizar a otimização de modelos para um problema específico. Os resultados dos modelos do Statistica também podem ser exportados em C, Java, Visual Basic e PMML. Os três pacotes oferecem, como módulos adicionais, funcionalidades de mineração de textos.

O Oracle Data Mining e o Microsoft SQL Server Data Mining são aplicativos de mineração de dados que rodam dentro dos respectivos bancos de dados. A vantagem deste tipo de solução é que os modelos são desenvolvidos diretamente no banco de dados, podendo ser integrados à plataforma operacional. Entretanto, os produtos da Oracle e da Microsoft oferecem uma variedade limitada de algoritmos, alguns até proprietários que não são completamente explicados na documentação. Além disso, estes softwares têm poucos recursos nativos para visualização e caracterização estatística dos dados. A vantagem do Oracle Data Mining é sua presença no mercado e a integração com os outros produtos Oracle. O Microsoft SQL Server Data Mining também tem a vantagem de ser totalmente integrado com a plataforma .NET da Microsoft e o seu custo que é bem inferior ao do rival. Nas versões mais recentes, os dois aplicativos têm recursos para o tratamento de informações textuais.

A grande desvantagem dos pacotes comerciais é, obviamente, o custo. Para grandes corporações que atuam em mercados altamente competitivos e lidam com grandes massas de dados, o ganho potencial dos resultados obtidos com modelos de mineração de dados superarem em muito o custo de aquisição e manutenção de uma estrutura de inteligência analítica [39]. Para pequenas e médias empresas e, principalmente, no mundo acadêmico, o custo de uma licença de um pacote comercial como os mencionados acima pode ser proibitivo. Uma exceção a essa regra é o Microsoft SQL Server Data Mining que tem um custo abordável. Existe no mercado outros softwares comerciais com custos mais acessíveis; o PolyAnalyst[16], por exemplo, é um software de fácil de utilização, com boa oferta de algoritmos numa interface gráfica bastante intuitiva. Além disso, é possível realizar análises com textos através do TextAnalyst[17] (que requer o PolyAnalyst para funcionar). Os dois softwares são comercializados pela Megaputer, que tem um programa educacional bastante ativo, o que faz que estes softwares sejam utilizados em cerca de 200 universidades, incluindo a COPPE/UFRJ.

Existe também um grande número softwares de código aberto que podem ser utilizados para o aprendizado dos algoritmos bem com para o desenvolvimento de soluções de pequeno porte. O primeiro software livre de mineração de dados, desenvolvido em 1997 na Universidade de Waikato, foi o Weka[18]. Codificado em Java, o Weka permite o acesso ao código fonte de todos os seus algoritmos, embora a documentação não seja das mais claras. O Weka contém uma variedade enorme de algoritmos, com um viés muito forte para os algoritmos de aprendizado de máquina. Além disso, o Weka tem uma interface gráfica intuitiva de fácil utilização. O Weka, entretanto, não tem muitos recursos para visualização e caracterização estatística dos dados. A parte de avaliação de algoritmos é bem simples, principalmente para os padrões atuais da comunidade de aprendizado de máquina. Em 2006 o Projeto Weka foi adquirido pela Pentaho[19] para ser integrado ao pacote de inteligência de negócios da empresa. No seu modelo de negócios, a Pentaho fornece softwares livres para vender serviços de consultoria e treinamento. O Weka continua sendo desenvolvido como projeto de software livre.

A Rapid-i[20] utiliza o mesmo modelo de negócios da Pentaho, fornecendo software livre, o RapidMiner (ex Yale), para oferecer serviços de consultoria e treinamento. O RapidMiner também é desenvolvido em Java e incorpora algoritmos de outros softwares livres como o Weka e o LibSVM. O RapidMiner possui recursos elaborados de visualização de dados e de resultados de modelos além de permitir o desenvolvimento de workflows de modelagem complexos, incluindo a otimização de modelos por algoritmos genéticos. Um exemplo deste modelo de negócios é o KNIME[21]. O KNIME também é desenvolvido em Java e também incorpora algoritmos de outros softwares livres como o Weka e o LibSVM numa interface gráfica de fácil utilização. O KNIME tem recursos de visualização um pouco melhores que o Weka, mas é equivalente em termos de avaliação de algoritmos.

Em maio/2010 o KDnuggets realizou uma enquete[22] com o objetivo de determinar os softwares mais utilizados pelos usuários do portal. A enquete que teve 912 votantes, mas cada votante podia indicar mais que um software. O resultado é apresentado na Tabela 1 e mostra o RapidMiner em primeiro lugar com 37,8% dos votos. Este resultado não reflete o mercado, apenas as preferências dos usuários do portal KDnuggets. Entretanto, o resultado é importante ao ponto de alguns fornecedores de softwares comerciais pedirem a seus usuários que votassem na enquete.

Tabela 1: Resultados da enquete realizada pelo KDnuggets

RapidMiner (345)

http://www.kdnuggets.com/polls/graph/g4.gif 37.8%

R (272)

http://www.kdnuggets.com/polls/graph/g4.gif 29.8%

Excel (222)

http://www.kdnuggets.com/polls/graph/g4.gif 24.3%

KNIME (175)

http://www.kdnuggets.com/polls/graph/g4.gif 19.2%

Your own code (168)

http://www.kdnuggets.com/polls/graph/g4.gif 18.4%

Pentaho/Weka (131)

http://www.kdnuggets.com/polls/graph/g4.gif 14.3%

SAS (110)

http://www.kdnuggets.com/polls/graph/g4.gif 12.0%

MATLAB (84)

http://www.kdnuggets.com/polls/graph/g4.gif 9.2%

IBM SPSS Statistics (72)

http://www.kdnuggets.com/polls/graph/g4.gif 7.9%

Other free tools (67)

http://www.kdnuggets.com/polls/graph/g4.gif 7.3%

IBM SPSS Modeler (67)

http://www.kdnuggets.com/polls/graph/g4.gif 7.3%

Microsoft SQL Server (63)

http://www.kdnuggets.com/polls/graph/g4.gif 6.9%

Statsoft Statistica (57)

http://www.kdnuggets.com/polls/graph/g4.gif 6.2%

Other commercial tools (56)

http://www.kdnuggets.com/polls/graph/g4.gif 6.1%

Fonte: KDnuggets.com

Na área de inteligência computacional, o software que tem se tornado referência é o KEEL[23], desenvolvido por um consorcio de laboratórios de pesquisa espanhóis liderados pelo SCI2S[24]. O KEEL oferece uma grande variedade de algoritmos (391 ao total em julho/2010), todos com a respectiva referência bibliográfica e a maioria com acesso ao documento eletrônico. Diferentemente de softwares como o Weka e o KNIME, o KEEL contém algoritmos de aprendizado de regras fuzzy e algoritmos evolutivos para classificação e regressão. Além disso, oferece diversos testes estatísticos de avaliação e comparação de algoritmos. No site do software, é possível encontrar os dados de benchmark mais utilizados em partições pré-definidas para a validação cruzada, o que permite a comparação direta de algoritmos do KEEL com outros algoritmos. A interface gráfica do KEEL não é tão intuitiva quanto o Weka e o KNIME, o que dificulta um pouco a sua utilização.

Uma alternativa ao padrão Java, utilizado por todos os softwares livres citados acima é o Orange[25] que é desenvolvido em C++ e Phyton. Assim como o KEEL o Orange (ainda) é um projeto acadêmico e apresenta uma boa variedade de algoritmos numa interface gráfica bastante agradável com bons recursos de visualização. O Orange é desenvolvido a partir de uma biblioteca, que é fornecida junto com o software permitindo o desenvolvimento de aplicações pelo usuário.

Programadores interessados no desenvolvimento de novas aplicações ou integração de algoritmos de mineração de dados em aplicações existentes podem utilizar as bibliotecas que são distribuídas com os softwares livres mencionados acima. Existem bibliotecas que são distribuídas sem uma interface gráfica (GUI) associada, como o “Java Machine Learning Library”[26] (Java-ML) e o “Java Data Mining Package”[27] (JDMP). A utilização destes pacotes requer do usuário conhecimentos avançados de programação em Java.

Uma plataforma para o desenvolvimento de protótipos de novos algoritmos é o Projeto R,[28], um projeto de software livre bastante difundido na comunidade de estatística. O R é um ambiente computacional que contém uma biblioteca com uma enorme variedade de rotinas para tratamento, processamento e visualização de dados. A biblioteca é organizada em pacotes (packages) e as rotinas podem ser acessadas por uma linguagem de programação simples, que também pode ser utilizada para o desenvolvimento de novos algoritmos baseados nas rotinas existentes. Apesar de ser um projeto de software livre mantido pela Fundação R[29], existem diversas extensões e interfaces gráficas para a linguagem R e também empresas[30] que fornecem extensões e consultoria no R. Estima-se em 2 milhões o número de usuários do ambiente R, que tem se tornado um padrão de linguagem de programação em estatística.

Outro ambiente computacional muito difundido principalmente entre universidades e empresas de engenharia é o Matlab[31]. Ao contrário do R, o Matlab é um software comercial que possui um núcleo central, basicamente a janela de comando e bibliotecas numéricas básicas. Os recursos avançados do Matlab são comercializados como pacotes, chamados “Toolbox”, que contém rotinas para as mais diversas áreas como biologia, finanças, sistemas de controle, etc. Uma configuração adequada para a área de inteligência computacional e mineração de dados deve conter essencialmente os pacotes de estatística, redes neurais e algoritmos genéticos. Pacotes adicionais como o pacote de otimização, de programação paralela e de identificação de sistemas também são importantes. O Matlab oferece também um pacote de lógica fuzzy, mas que processa apenas sistemas fuzzy simples e não tem um módulo de aprendizagem, não sendo de grande utilizada para o desenvolvimento de modelos de dados. Além dos pacotes mantidos e desenvolvidos pela Mathworks, existe uma comunidade de usuários bastante ativa que desenvolve rotinas e pacotes para o Matlab, organizados no repositório Matlab Central[32]. Além disso, existe mais de 1200 livros escritos sobre o Matlab ou sobre aplicações utilizando o Matlab[33].



[1] http://www.kdnuggets.com/software/suites.html#O

[2] http://www.the-data-mine.com/bin/view/Software/WebIndex

[3] http://en.wikipedia.org/wiki/Comparison_of_statistical_packages

[4] http://www.sas.com/

[5] http://www.oracle.com/us/solutions/ent-performance-bi/index.html

[6] http://www.spss.com/

[7] http://www.sqlserverdatamining.com/ssdm/

[8] http://www.statsoft.com/

[9] http://www.sap.com

[10] http://www.idc.com/research/viewtoc.jsp?containerId=218598

[11] http://money.cnn.com/magazines/fortune/global500/2009/index.html

[12] http://www.sas.com/technologies/analytics/datamining/miner/index.html#section=1

[13] http://en.wikipedia.org/wiki/PMML

[14] http://www.spss.com/software/modeling/

[15] http://www.statsoft.com/products/statistica-data-miner/

[16] http://www.megaputer.com/polyanalyst.php

[17] http://www.megaputer.com/textanalyst.php

[18] http://www.cs.waikato.ac.nz/ml/weka/index.html

[19] http://www.pentaho.com/

[20] http://rapid-i.com/

[21] http://www.knime.org/

[22] http://www.kdnuggets.com/polls/2010/data-mining-analytics-tools.html

[23] http://sci2s.ugr.es/keel/

[24] http://sci2s.ugr.es/

[25] http://www.ailab.si/orange/

[26] http://java-ml.sourceforge.net/

[27] http://www.jdmp.org/

[28] http://en.wikipedia.org/wiki/R_(programming_language)

[29] http://www.r-project.org/

[30] http://www.revolutionanalytics.com/products/

[31] http://www.mathworks.com/products/

[32] http://www.mathworks.com/matlabcentral/

[33] http://www.mathworks.com/support/books/