scieee AI-readable full text Open interactive document viewer

Plataforma para Data Mining Colaborativo

Hugo Filipe da Silva Matos

Abstract

Investigadores de Data Mining utilizam, em geral, um conjunto de algoritmos para analisar os diversos conjuntos de dados com que trabalham. Acresce ainda que estes investigadores, obtêm resultados das análises que fazem, produzem artigos científicos e muitas vezes estão envolvidos em equipas de projectos de investigação. Em todos estes aspectos da investigação em Data Mining se produz uma grande quantidade de informação que pode ser relevante para outros investigadores. Será pois extremamente vantajoso para a comunidade se cada investigador permitir o acesso (controlado) aos seus dados, resultados de experiências, algoritmos, artigos e mesmo recursos computacionais. Este trabalho de mestrado pretende desenvolver uma plataforma que permita tanto a partilha de informação valiosa para a comunidade de Data Mining como a facilitação de trabalho colaborativo em grandes projectos.

Full text

FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Plataforma para Data Mining Colaborativo Hugo Filipe da Silva Matos Mestrado Integrado em Engenharia Informática e Computação Orientador: Rui Camacho (FEUP) 25 de Julho de 2016 Plataforma para Data Mining Colaborativo Hugo Filipe da Silva Matos Mestrado Integrado em Engenharia Informática e Computação Aprovado em provas públicas pelo Júri: Presidente: Cristina Ribeiro (FEUP) Arguente: Benedita Malheiro (ISEP) Vogal: Rui Camacho (FEUP) 25 de Julho de 2016 Abstract Data Mining practioners use, in general, a set of algorithms to analyze the various datasets they work with. It is also frequent that Data Mining practioners, in a simple study, try out several algorithms and run them with different parameter combinations. In short, Data Mining practioners generates a lot of data that may be useful to share with others. They are also, sometimes, involved in research teams. In all these Data Mining investigation aspects, a large quantity of information is produced and can be relevant to other researchers. It is then extremely advantageous to the community if each investigator allows the access(controlled by himself) to his data, experience results, algorithms, papers and even computational resources. This thesis proposes a platform which allows sharing valuable information to the Data Mining community as it facilitates collaborative work in big projects. i ii Resumo Praticantes de Data Mining utilizam, em geral, um conjunto de algoritmos para analisar os diversos conjuntos de dados com que trabalham. Acresce ainda que praticantes de Data Mining, num estudo simples, experimentam vários algoritmos e executam estes com várias combinações diferentes de parâmetros. Em suma, praticantes de Data Mining geram enormes quantidades de dados que podem ser úteis ao serem partilhados com outros. Estes, por vezes, estão envolvidos em equipas de investigação. Em todos estes aspectos da investigação em Data Mining se produz uma grande quantidade de informação que pode ser relevante para outros investigadores. Será pois extremamente vantajoso para a comunidade se cada investigador permitir o acesso (controlado) aos seus dados, resultados de experiências, algoritmos, artigos e mesmo recursos computacionais. Este trabalho de mestrado pretende desenvolver uma plataforma que permita tanto a partilha de informação valiosa para a comunidade de Data Mining como a facilitação de trabalho colaborativo em grandes projectos. iii iv Agradecimentos Os meus agradecimentos vão, em primeiro lugar, para o meu orientador, o professor Rui Camacho, pela sua disponibilidade e ajuda ao longo de todo o desenvolvimento. Em segundo lugar, agradeço aos meus amigos que sempre estiveram presentes, e ao meu lado, ao longo de toda esta caminhada que culminou nesta dissertação. Por fim, agradeço à minha família por ter providenciado com tudo o que eu precisei para atingir este objetivo. Hugo Matos v LISTA DE FIGURAS xii Lista de Tabelas 2.1 pyftpdlib vs proftpd comparação de benchmarks . . . . . . . . . . . . . . . . . . 17 xiii LISTA DE TABELAS xiv Abreviaturas e Símbolos ANN Artificial Neural Network API Application Programming Interface CPU Central Processing Unit CRISP-DM Cross Industry Standard Process for Data Mining DCMES Dublin Core Metadata Element Set DM Data Mining DT Decision Trees FTP File Transfer Protocol GUI Graphical User Interface HTML HyperText Markup Language HTTP Hypertext Transfer Protocol ILP Inductive Logic Programming IP Internet Protocol JSON JavaScript Object Notation KDD Knowledge Discovery Database k-NN k-Nearest Neighbors ML Machine Learning MVC Model View Controller P2P Peer to Peer RAM Random Access Memory REST Representational State Transfer RF Random Forest SVM Support Vector Machine URL Uniform Resource Locator URN Uniform Resource Name XML eXtensible Markup Language WS Web Service xv Capítulo 1 Introdução Esta dissertação insere-se na área de Data Mining(DM)1colaborativo, focando-se na criação duma plataforma inovadora que permita a partilha de recursos, entre investigadores relacionados com esta área de estudo, procurando tornar o trabalho do utilizador de DM mais eficiente. 1.1 Contexto/Enquadramento O trabalho colaborativo é, atualmente, uma metodologia extremamente relevante para o desenvolvimento científico e empresarial. A colaboração permite a rentabilização de recursos, partilha de experiências que, por fim, levam à abreviação da produção de resultados. Embora haja hoje em dia tecnologias de vídeo conferência que permitem evitar as reuniões presenciais e assim reduzir custos do trabalho colaborativo estas têm limitações, sobretudo para colaborações envolvendo elevado número de participantes. Algumas desvantagens incluem: obrigação de definir uma data/horário comum a indivíduos que muitas vezes têm horário já preenchidos; disponibilizar instalações (como salas de reunião) para um grande número de indivíduos, etc. Projetos de DM requerem, geralmente, grandes quantidades de dados de vários tipos e envolvem uma série de operações para os analisar. Por vezes, é necessária a partilha dos mesmos entre um grupo de trabalho ou participantes no projeto. No entanto, existe a dificuldade de manter um registo atualizado sobre quais dados que estão a ser trabalhados, e por quem os está a trabalhar. O trabalho proposto consiste em desenvolver uma plataforma computacional que permita a realização de trabalho colaborativo em projetos de DM. 1Data Mining é uma das fases do processo completo da análise de dados conhecido por Knowlegde Discovery in Databases(KDD). É vulgar, na literatura, KDD e DM serem usados de modo equivalente. Nesta dissertação, sempre que não for necessário distinguir os dois termos, usaremos o termo DM para definir, tanto o processo completo de análise de dados, como a parte onde são construídos os modelos para dados 1 Introdução 1.2 Motivação e Objetivos O principal objetivo deste trabalho é o desenho e a implementação de uma plataforma computacional para trabalho colaborativo em DM. A plataforma será baseada em Web services, permitirá troca segura de informações e dados usando pedidos credenciados, definição de uma área de dados privada e outra pública, motores de busca de informação e partilha de recursos computacionais entre os colaboradores. Sendo que, atualmente, não existe nenhuma outra plataforma orientada para este tipo de trabalho. A metodologia para a prossecução dos objetivos consiste em primeiro lugar, numa análise do estado da arte relativo ao desenvolvimento da plataforma colaborativa no âmbito do DM. De seguida, a especificação das funcionalidades da plataforma a desenvolver, complementando com uma proposta duma arquitetura para a plataforma. Por fim, a implementação do protótipo e o teste da plataforma usando um caso de estudo. 1.3 Estrutura da Dissertação Para além da introdução, esta dissertação contém mais 4 capítulos. No Capítulo 2são apresentados os conceitos, terminologias, ferramentas e trabalhos relacionados com o tema da tese. No Capítulo 3é apresentada a descrição da solução do problema. No Capítulo 4são apresentados casos de estudo. No Capítulo 5conclui-se a dissertação, sumarizando os resultados obtidos e propondo trabalho futuro 2 Capítulo 2 Conceitos e tecnologia em Data Mining Os Projetos de Data Mining (DM) requerem normalmente um estudo prévio do problema a resolver e a recolha, tratamento e análise dos dados. O objetivo é identificar ou construir, a partir dos dados, conhecimento que seja útil para o utilizador final. Com o crescimento e aperfeiçoamento da tecnologia de recolha de dados, diversificando os dispositivos, sensores, formatos diferentes, maior número de aplicações, a quantidade de dados recolhida e armazenada é hoje imensa e requer técnicas sofisticadas de recolha e processamento desses dados[FB13]. O DM não seria possível sem grandes conjuntos de dados e Big Data está diretamente relacionada com as aplicações de DM. 2.1 Data Mining O DM é um processo que se refere à extração, de conhecimento através de grandes conjuntos de dados [HK06]. O DM também representa uma forma de resolver problemas usando dados, sendo considerado normalmente uma atividade criativa. Sendo parecida com práticas de descoberta científica e usando técnicas como indução, com o objetivo de propor hipóteses, que ajudem à perceção do problema e finalmente, à chegada a uma solução [Moy05]. O processo de DM é por vezes designado Knowledge Discovery in Databases (KDD), e é constituído por várias fases: seleção, pré-processamento, transformação, construção de modelos, interpretação [FU96]. Um exemplo pode ser visto na figura 2.1. Existem inúmeros sistemas de DM e estes podem ser classificados de acordo com os tipos de dados analisados, tipos de conhecimento a ser adquirido ou pelas técnicas utilizadas [HK06]. Cross Industry Standard Process for Data Mining OCross Industry Standard Process for Data Mining, CRISP-DM, é uma metodologia de DM que descreve abordagens geralmente usadas por especialistas em DM. Um diagrama do processo CRISP-DM pode ser visto na figura 2.2. 3 Conceitos e tecnologia em Data Mining Figura 2.1: Data Mining como um processo de descoberta de conhecimento [HK06] Este processo tem as seguintes fases [Wik16a]: •Entender o Negócio: foca no entendimento e especificação dos objetivos do projeto a partir de uma perspetiva de negócios, definindo um plano preliminar para atingir os objetivos. •Entender os Dados: recolhimento de dados e início de atividades para familiarização com os dados, identificando problemas ou conjuntos interessantes. •Preparar dos Dados: construção do conjunto de dados final a partir dos dados iniciais. Normalmente ocorre várias vezes no processo. •Modelar: várias técnicas de construção de modelos são aplicadas, e os seus parâmetros calibrados para otimização. Assim, é comum retornar à Preparação dos Dados durante esta fase. •Avaliação: no passo anterior é construído um modelo com grande qualidade de uma perspetiva de análise de dados. No entanto, é necessário verificar se o modelo atinge os objetivos do negócio. •Desenvolvimento: o conhecimento adquirido pelo modelo é organizado e apresentado de uma maneira que o cliente possa utilizar. Tipos de tarefas de DM As tarefas mais importantes em DM são[MR11]: •Aprendizagem supervisionada, quando são conhecidas as variáveis de output(classes) do dataset, incluindo: 4 Conceitos e tecnologia em Data Mining Figura 2.2: Diagrama do processo CRISP-DM [Wik16a] –Classificação: previsão das classes, tipicamente as variáveis de output são programadas de forma a gerarem um número inteiro. –Classificação fuzzy: associações graduais de valores entre 0 e 1, aplicados a diferentes classes. –Regressão: predição das classes na forma dum valor real, incluindo casos especiais de previsão de valores numa sério temporal através de valores recentes ou do passado. •Aprendizagem não supervisionada, quando não são conhecidas as variáveis de output do dataset, incluindo: –Clustering: encontra e descreve grupos de exemplos semelhantes em dados usando algoritmos de clustering. –Associação: encontra grupos de items que ocorrem frequentemente juntos em exemplos. •Aprendizagem semi-supervisionada, onde as variáveis de output são conhecidas apenas em alguns exemplos. Cada uma destas tarefas consiste numa cadeia de tarefas de baixo nível. Além disso, algumas destas tarefas atuam stand-alone, por exemplo, identificando, num dataset extenso, elementos que possuem um nível de semelhança alto. Exemplos destas tarefas de baixo nível: •Limpeza de dados(e.g., deteção de ruído); •Filtração de dados; 5 Conceitos e tecnologia em Data Mining •Data –A data associada com a criação ou disponibilidade do recurso, no formato AAAAMM-DD. •Tipo de recurso –A categoria do recurso por exemplo, homepage, romance, poema, working paper, relatório técnico, redação, dicionário. •Formato –O formato dos dados e, opcionalmente, dimensões(ex., tamanho, duração) do recurso. O formato é usado para identificar o software e possivelmente o hardware que poderá ser necessário para apresentar ou operar o recurso. •Identificador –Uma string ou número usado para identificar unicamente o recurso. Exemplos para recursos incluem URLs e URNs. Outros globalmente-únicos identificadores, como o International Standard Book Numbers (ISBN) ou outros nomes formais são também candidatos para este elemento. •Idioma –O idioma do conteúdo intelectual do recurso. •Cobertura –As características temporais ou espaciais do conteúdo intelectual do recurso. Cobertura espacial refere-se a uma região física, usando o nome desse lugar ou as respetivas coordenadas. Cobertura temporal refere-se aos aspetos que definem o recurso e não à data de criação(sendo que esta informação pertence ao elemento Data). A cobertura temporal é tipicamente especificada usando períodos de tempo(ex., neolítico) ou o mesmo formato de data/hora recomendado pelo elemento Data. •Direitos –Uma declaração de direitos, um identificador que liga a uma declaração de direitos, ou um identificador que liga a um serviço que fornece informação sobre os direitos do recurso. Exemplo: Title=”Metadata example” Creator=”Matos, Hugo” Creator=”Silva, Filipe” Subject=”metadata” 12 Conceitos e tecnologia em Data Mining Description=”Presents an example of a metadata schema.” Publisher=”FEUP Press” Date=”2016-06" Type=”Text” Format=”application/pdf” Identifier=”http://www.web.org/ standards/resources/metadata.pdf” Language=”en” Os objetivos que motivaram a criação deste vocabulário foram[WKLW98]: •Simplicidade de criação e manutenção •Semântica de entendimento geral •Conformidade com os standards existentes e que ainda estão a emergir •Aplicabilidade e âmbito internacionais •Extensibilidade •Interoperabilidade entre sistemas de coleções e de indexação 2.3 Web services Um Web service (WS) é um serviço oferecido por um dispositivo, para outro dispositivo, comunicando entre si pela World wide web. Num WS, tecnologias Web como HTTP, normalmente usadas para comunicação humano-máquina, são então usadas para comunicações máquinamáquina, mais especificamente para transferir ficheiros em formatos como XML ou JSON. Na prática, o WS fornece uma interface Web-based orientada a objetos para uma base de dados, utilizada por exemplo, por outro WS ou uma aplicação mobile, fornecendo uma interface ao utilizador final24. 2.3.1 Web API Uma Web API é um conjunto de protocolos, rotinas e ferramentas para construir software e aplicações. Um exemplo seria uma RESTful Web API, esta é acessível via HTTP, incluindo clientes HTTP como browsers e dispositivos móveis. Como estes não executam tantas conversões de dados como um WS normal, tendem a ser mais rápido e fáceis de implementar. 2.4 Web Framework Uma framework para aplicações Web é uma framework de software designado para suportar o desenvolvimento de sites Web dinâmicos, aplicações Web e serviços Web. A framework destinase a aliviar a sobrecarga associada a atividades comuns realizadas em desenvolvimento Web. Por 24https://en.wikipedia.org/wiki/Web-service 13 Conceitos e tecnologia em Data Mining Figura 2.3: Diagrama duma API disponível tanto no lado do cliente e do servidor [Wik16b] exemplo, muitas frameworks fornecem bibliotecas para acesso à banco de dados, frameworks de modelaçã e gestão de sessão, e geralmente promovem a reutilização de código25. Uma aplicação Web usa uma combinação de, uma aplicação de servidor HTTP, um mecanismo de armazenamento como uma base de dados, um motor de templates, um dispatcher de pedidos e módulos de autenticação. Estes componentes podem ser criados individualmente ou compiladas numa framework de alto-nível. As frameworks Python de alto-nível mais populares são: Django Web Framework e web2py26. Django Web Framework Django[Dja13] é uma full-stack Web Framework em Python, open source, de alto nível que incentiva um desenvolvimento rápido e limpo, aliado a um design pragmático. Esta foi criada por developers experientes, de forma a reduzir as complicações do desenvolvimento Web, e.g., não repetir o mesmo código várias vezes. As características principais desta framework são: •Rapidez de desenvolvimento •Extras para o desenvolvimento •Segurança •Escalabilidade •Versatilidade Esta framework assenta sobre o padrão de arquitetura Model view controller (MVC) mas, tendo em conta o formato da framework Django, é muitas vezes explicado pela forma "model/view/template"27. Django REST framework Este módulo permite criar uma Web API navegável que possibilita ver e testar respostas JSON e os endpoints da aplicação. Outra das características é a facilidade de serialiazação, ou seja, os 25https://pt.wikipedia.org/wiki/Framework-para-aplicacoes-Web 26https://wiki.python.org/moin/WebFrameworks 27http://reinout.vanrees.org/weblog/2011/12/13/django-mvc-explanation.html 14 Conceitos e tecnologia em Data Mining serializers permitem que dados complexos, como queries ou modelos Django, sejam convertidos para estruturas nativas de Python que depois são facilmente tornados em JSON[Chr14]. web2py Web2py28 é uma full-stack framework criada para o desenvolvimento, em Python, de aplicações web-based e database-driven portáteis. 2.5 Padrão de arquitetura MVC O padrão MVC foi introduzido com o ambiente de programação Smalltalk, de forma a estruturar aplicações interativas duma forma modular. Como o nome indica, o padrão MVC é decomposto em 3 componentes principais[GO11]. Figura 2.4: Este diagrama exemplifica uma relação típica da arquitetura MVC29. Model A componente model integra essencialmente o estado da aplicação e as operações que podem mudar esse estado. A componente model mantém também dependências das componentes view e controller, notificando-as quando há mudanças de estado. 28http://www.web2py.com/ 29Desenhado com a ferramenta http://www.creately.com 15 Conceitos e tecnologia em Data Mining View A componente view apresenta a informação utilizador numa interface GUI. Existem múltiplas views de diferentes tipos, que são integradas na aplicação de forma a apresentar views diferentes aos utilizadores. Quando uma view é atualizada, essa é notificada pela componente model e posteriormente pode pedir a essa componente a informação que necessita nesse momento. Controller A componente controller responde às ações do utilizador através da interface GUI. Esta é responsável por passar as transações ao model para serem executadas. Os controladores devem existir numa relação de 1-para-1 em correspondência com as views. Quando um controlador recebe um input, este é reproduzido aos sub-controladores primeiro, de forma a que esse input seja processado pelos níveis mais baixos da hierarquia primeiro. 2.6 Protocolo FTP FTP ou File Transfer Protocol30 é uma forma bastante rápida e versátil de transferir ficheiros, sendo uma das mais usadas na Internet. Pode referir-se tanto ao protocolo quanto ao programa que implementa este protocolo (Servidor FTP, neste caso, tradicionalmente aparece em letras minúsculas, por influência do programa de transferência de arquivos do Unix). Os dados são transferidos num fluxo contínuo de bytes. O protocolo de transporte TCP fornece a fiabilidade do processo, certificando-se que todos os bytes que não chegam ao destino são reenviados e posteriormente verifica se chegaram corretamente[Mos06]. pyftpdlib Pyftpdlib31 é uma biblioteca Python para a criação de servidores FTP duma forma eficiente, escalável e assíncrona, sendo a mais completa disponível em Python. Possui, naturalmente, as chamadas standard dum servidor FTP normais. Permite também a criação de vários tipo de autenticações para o controlo de utilizadores em Unix eWindows. Na tabela 2.1 representada a comparação de benchmarks entre pyftpdlib e a ferramenta proftpd32. 30https://pt.wikipedia.org/wiki/File-Transfer-Protocol 31https://github.com/giampaolo/pyftpdlib 32http://www.proftpd.org/ 16 Conceitos e tecnologia em Data Mining Tabela 2.1: pyftpdlib vs proftpd comparação de benchmarks Benchmark Type pyftpdlib proftpd Speedup STOR (client ->server) 585.90 MB/s 600.49 MB/s -0.02x RETR (server ->client) 1652.72 MB/s 1524.05 MB/s +0.08 300 concurrent clients (connect, login) 0.19 s 9.98 s +51x STOR (1 file with 300 idle clients) 585.59 MB/s 518.55 MB/s +0.1x RETR (1 file with 300 idle clients) 1497.58 MB/s 1478.19 MB/s 0x 300 concurrent clients (RETR 10MB file) 3.41 s 3.60 s +0.05x 300 concurrent clients (STOR 10MB file) 8.60 s 11.56 s +0.3x 300 concurrent clients (QUIT) 0.03 s 0.39 s +12x 17 Conceitos e tecnologia em Data Mining 2.7 Peer-to-Peer Peer-to-Peer (P2P) é uma arquitetura de redes de computadores onde cada um dos pontos ou nós da rede funciona tanto como cliente quanto como servidor, permitindo a partilha de serviços e dados sem a necessidade de um servidor central33. "A computação peer-to-peer (P2P) tem promovido uma grande modificação nos padrões de uso da Internet nos últimos anos. Sua grande vantagem, em relação à computação cliente/servidor, é possibilitar a colaboração direta entre os usuários, sem depender de servidores administrados por terceiros"[RDC+04]. Na Figuras 2.5 e Figura 2.6, podemos ver as diferenças entre uma rede baseada em P2P e uma rede baseada num servidor central. Figura 2.5: Diagrama duma rede baseada em P2P 34 Figura 2.6: Diagrama duma rede baseada num servidor central 35 33https://pt.wikipedia.org/wiki/Peer-to-peer 34Desenhado com a ferramenta http://www.creately.com 35Desenhado com a ferramenta http://www.creately.com 18 Conceitos e tecnologia em Data Mining 2.8 Sumário Pode-se concluir que o problema essencial é a falta duma plataforma para DM colaborativo, como tal, e após o estudo das principais tecnologias a ser usadas, verifica-se que existe uma oportunidade nesta área, aliando as tecnologias de WS e P2P, para a formulação duma plataforma descentralizada. Outro aspeto fundamental seria a implementação de metadados na solução, de modo a obter todas as vantagens que estes fornecem quando usados numa plataforma deste género. 19 Conceitos e tecnologia em Data Mining 20 Capítulo 3 Plataforma para Data Mining Colaborativo 3.1 Problema Existe uma necessidade de criação duma ferramenta que permita a partilha de recursos eficiente em projetos de DM. Essa plataforma deve permitir a existência de um ambiente de colaboração em que os seus utilizadores possam, não só guardar informação sobre o trabalho de investigação que realizam, mas também partilhá-la e poder pesquisar e aceder a conteúdos que estejam públicos na plataforma. Este ambiente é caracterizado por ser descentralizado, removendo assim a necessidade dum servidor central e da existência dum administrador da rede. 3.2 Âmbito da solução O desenvolvimento desta plataforma visa principalmente que os seus utilizadores sejam um grupo de investigadores. Estes, encontrando-se na necessidade de partilhar recursos num (ou vários)projetos na área de DM e estando geograficamente separados, seriam o segmento de utilizadores que mais beneficiaria duma plataforma deste género. Deste modo, cada utilizador iria ter o seu próprio site, beneficiando da opção de poder pesquisar na rede de utilizadores, por recursos úteis para o seu trabalho atual. Foi então desenvolvido um protótipo para simular um uso real da plataforma. 3.3 Arquitetura da solução A arquitetura assenta sobre os seguintes conceitos: •Servidor Web — Representa a área de trabalho do utilizador e contém o Web Service que estabelece comunicação entre os vários sites •Base de dados — Representa a base de dados do utilizador; 21 Plataforma para Data Mining Colaborativo Figura 3.5: Algoritmos Figura 3.6: Datasets Figura 3.7: Recursos computacionais 28 Plataforma para Data Mining Colaborativo Figura 3.8: Resultados de experiências 29 Plataforma para Data Mining Colaborativo Descrição dos atributos: •title –Nome do recurso (tem de ser igual ao nome do ficheiro) •file –Foreign key correspondente ao ficheiro carregado na plataforma •owner –Pessoa que fez o upload •pub_date –Data do carregamento do recurso •public –Privacidade do ficheiro (0 representa público, 1 representa privado) Finalmente existe o modelo File(figura 3.7): Figura 3.9: Ficheiros Descrição dos atributos: •name –Nome do ficheiro •format –Formato do ficheiro •size –Tamanho do ficheiro 30 Plataforma para Data Mining Colaborativo •path –Origem do ficheiro no filesystem Não existe o modelo "Utilizador"pois os utilizadores são diferenciados pelo IP das suas máquinas, que são configurados na montagem da plataforma. Existe, contudo, um administrador do site -superuser. 3.4.3.1 Estrutura Redis A estrutura Redis foi criada com o objetivo de alojar os metadados. Isto pois esta estrutura, além de ser caracterizada por uma estrutura key -> value, que é ideal para a representação dos metadados, permite guardar grandes quantidades de dados mantendo sempre tempos rápidos de escrita e leitura sem ocupar quantidades de memória significativa. Como tal, foi necessário criar uma integração da estrutura Redis com a framework Python - Django. Isto foi conseguido através de dois módulos: •Redis-py •Django-metadata O módulo Redis-py serve de back-end, ou seja, permite a comunicação entre as chamadas Python e o servidor Redis. O módulo Django-metadata permite então anexar metadata aos modelos Django. Exemplo de anexação de metadados a um modelo no Listing 3.1: 1>>> from app.models import Article 2>>> article = Article.objects.get(title=’thesis’) 3>>> article.metadata[’author’] = ’Hugo Matos’ Listing 3.1: Anexação de metadados a um modelo Exemplo de acesso aos metadados dum modelo no Listing 3.2: 1>>> article.metadata[’author’] 2Hugo Matos Listing 3.2: Acesso aos metadados dum modelo 31 Plataforma para Data Mining Colaborativo Exemplo de remoção de metadados dum modelo no Listing 3.3: 1>>> del article.metadata[’author’] 2>>> article.metadata[’author’] 3Traceback (most recent call last): 4... 5KeyError: ’author’ Listing 3.3: Remoção de metadados dum modelo 3.4.4 Servidor Web O servidor Web foi criado usando a linguagem de programação Python. Este está assente numa framework Web, Django. 3.4.4.1 Framework Web O Django fornece vários ficheiros base, de forma a permitir a configuração da framework. Settings No ficheiro settings, é feita a configuração principal da plataforma: •São definidos todos os módulos usados pela plataforma, sendo que é permitida a adição de módulos externos, por exemplo o Django REST Framework. •É configurada a base de dados a ser usada, sendo que é permitido uso de várias bases de dados em simultâneo. •É feita a declaração do sistema de rotas da plataforma. •É configurada o caminho root para ficheiros estáticos e também o local onde é guardada toda a media da plataforma. Models No ficheiro models são declarados os modelos de classes usados na plataforma. Estes modelos estão explicados na Secção 3.4.1. Url No ficheiro urls estão definidas as todas as rotas da plataforma para a apresentação de páginas Web. O conteúdo apresentado na página web, direcionado pelas rotas, é processado pelas views. 32 Plataforma para Data Mining Colaborativo Views No ficheiro views é processada a informação que vai ser apresentada na página Web, ou seja, são executadas queries à base de dados, a informação proveniente é então processada, se necessário e, por fim, é retornado um request com a template (HTML) e as variáveis que são compiladas nessa template. Neste ficheiro são processados os formulários existentes na plataforma, tal como as transferências de ficheiros(download/upload). Por fim, o módulo de pesquisa está também definido neste ficheiro. Templates HTML Nas templates HTML são processadas as variáveis provenientes das views, de modo a serem apresentadas no formato desejado. Nas templates foi usada a framework Bootstrap 31. A razão desta escolha deve-se principalmente à sua eficiência na construção de templates, já testada em trabalhos anteriores, mas também à sua popularidade, o que resulta numa grande quantidade de informação. 3.4.4.2 RESTful API A RESTful API, foi concebida através da framework Django REST Framework. Isto pois era necessária uma forma de comunicar, entre os vários nós, o conteúdo existente em cada plataforma instalada. Esta framework trata de serializar os modelos Django existentes na plataforma, convertendoos em estruturas Python que são posteriormente convertidas no formato JSON. Torna-se então possível aceder ao conteúdo existente nos outros nós, através dum pedido HTTP credenciado, que retorna conteúdo JSON que é então guardado e apresentado pelo nó que efetuou o pedido. O Listing 3.4 mostra conteúdo JSON gerado pela API, neste caso o pedido efetuado foi a lista de artigos(neste exemplo havia apenas um artigo na base de dados). 1https://github.com/twbs/bootstrap 33 Plataforma para Data Mining Colaborativo 1{ 2"count": 1, 3"next": null, 4"previous": null, 5"results": [ 6{ 7"title": "Peer-to-peer_colab.pdf", 8"owner": "fran", 9"pub_date": "2016-06-23T01:39:47Z", 10 "public": 0, 11 "keys": "[\"publisher\", \"description\", \"language\", \"creator\", \" coverage\", \"date\", \"identifier\", \"type\", \"subject\"]", 12 "values": "[\"Minicurso, Simp\\u00f3sio Brasileiro de Redes de Computa \", \"Peer-to-peer (P2P) computing has been promoting a substantial change in the usage patterns of the Internet in the last years. Its most important advantage, compared to client/server computing, is maki\", \"pt\", \"Rocha, Jo\\u00e3o Domingues, Marco Callado, Arthur Souto\", \"-\", \"2014-06-23\", \"-\", \"Article\", \"Peerto-peer: Computa\\u00e7\\u00e3o colaborativa na internet\"]" 13 } 14 ] 15 } Listing 3.4: Resposta JSON gerada por um pedido de artigos Para adicionar este conteúdo JSON à plataforma, e recorrendo à biblioteca url2lib2é feito um request credenciado ao URL que contém o conteúdo. No código seguinte está representado o código que efetua essa mesma ação, sendo que a variável result contém o conteudo representado no Listing 3.5. 1_request = urllib2.Request("http://46.101.97.251:8000/app/api/articles.json") 2base64string = base64.encodestring(’%s:%s’ % ("admin","admin")).replace(’\n’, ’’) 3_request.add_header("Authorization", "Basic %s" % base64string) 4result = urllib2.urlopen(_request) Listing 3.5: Exemplo de request à API de outra plataforma 3.4.5 Servidor FTP O servidor FTP foi criado para lidar com as transferências de ficheiros entre nós. Este foi criado com a utilização do módulo pyftpdlib. Este servidor corre em background, com a ajuda da lib python-daemon3, juntamente com o servidor Web. 2https://docs.python.org/2/library/urllib2.html 3http://pypi.python.org/pypi/python-daemon 34 Plataforma para Data Mining Colaborativo Como tal, quando é feito pelo utilizador, um pedido de transferência dum ficheiro que está num nó externo ao atual, é feito um pedido de transferência ao servidor FTP desse nó externo. De seguida, quando a transferência termina, o ficheiro é então servido ao utilizador que efetuou o pedido inicial. 3.5 Resumo e Conclusões Neste capítulo, é identificada a descrição da plataforma, identificando assim todos os componentes que representam a solução. Além disto, foi efetuada uma descrição técnica pormenorizada destas componentes de forma a explicar o funcionamento do protótipo desenvolvido. 35 Plataforma para Data Mining Colaborativo 36 Capítulo 4 Caso de estudo 4.1 Objetivo O objetivo do caso de estudo é testar a plataforma duma forma efetiva criando um ambiente relativamente realista. No final, é suposto retirar conclusões, ou seja, sobre a viabilidade da plataforma para DM colaborativo usada por um grupo de investigadores. 4.2 Descrição do caso O caso é testado por dois investigadores que estão geograficamente separados. Um investigador london encontra-se em Londres (Reino Unido) e o investigador fran encontra-se em Frankfurt (Alemanha). Como não houve a possibilidade de testar com dois investigadores, este caso foi testado por mim, usando em simultâneo dois servidores geograficamente separados (Londres e Frankfurt). Para o caso foram fornecidos vários documentos que os investigadores vão colocar na plataforma. Este documentos podem ser conjuntos de artigos, implementações de algoritmos, datasets, recursos computacionais e resultados de experiências. O próximo passo é verificar se a plataforma funciona de acordo com o especificado na implementação. Para tal, é necessário executar uma série de ações que cobrem os objetivos principais de uso da plataforma. 37 Caso de estudo 44 Capítulo 5 Conclusões e Trabalho Futuro 5.1 Conclusão Sendo que a área de estudo e investigação em DM, uma área já bastante desenvolvida, principalmente na parte da descoberta de conhecimento, a plataforma descrita nesta dissertação tem o objetivo de propor uma solução inovadora focando principalmente o aspeto colaborativo desta área. Esta solução permite aos utilizadores a criação dum ambiente homogéneo, propício para a partilha de recursos e experiências, fomentando assim a entreajuda num grupo de investigadores. A solução apresenta uma interface simples e intuitiva, de forma a permitir aos seus utilizadores executarem as suas ações na plataforma duma forma breve e eficiente, permitindo uma alocação maior de tempo a tarefas mais importantes, como a produção de resultados nos trabalhos em que estão envolvidos. Considerando o desenvolvimento do Web service concebido para a disponibilização de informações provenientes de várias fontes, e sendo que este permite o uso desses mesmo recursos aos diferentes utilizadores na rede, conclui-se que o objetivo principal desta dissertação foi atingido. Contudo, existem alguns aspetos que poderiam permitir um uso mais interativo da plataforma, aos utilizadores, que não foram concretizados. Além disto, teria sido útil para averiguar a utilidade da plataforma num ambiente constituído por sujeitos com uma experiência vasta em projetos de DM. A motivação principal deste projeto esteve relacionada com a criação duma solução inovadora, constituída por tecnologias atuais que incentivaram a investigação. 45 Conclusões e Trabalho Futuro 5.2 Trabalho Futuro Ao longo do desenvolvimento desta solução foram surgindo oportunidades de melhoramento da plataforma que, com o objetivo de não perder o foco no objetivo principal e também devido ao facto de não serem funcionalidades críticas para o perfeito funcionamento, foram deixadas para segundo plano. Embora não essenciais ao uso da plataforma, estas funcionalidades iriam providenciar um uso mais satisfatório ao utilizador. Durante o uso da plataforma, verifica-se que o processo de upload de recursos pode ser demorado devido à necessidade do preenchimento dos metadados dos mesmos. Um melhoramento possível seria o preenchimento automático de alguns destes campos de metadados. Esse preenchimento seria atingido, por exemplo, nos artigos, recorrendo à API da ferramenta Mendeley1. Desta forma, no momento do upload do artigo, iria ser feita uma pesquisa na base de dados do Mendeley nesse mesmo artigo, acedendo a informações como o abstract, editor, data de publicação. Outro aspeto, que seria útil na utilização contínua da plataforma por um grupo vasto de utilizadores, seria o armazenamento do histórico de ações executadas. Ou seja, permitir a visualização duma lista que contém a ação que foi executada, quem executou e a data em que foi executada. O objetivo desta funcionalidade seria manter o resto dos utilizadores a par dos documentos novos que estão a ser adicionados a plataforma. Caso fosse o objetivo da aplicação permitir executar algum do trabalho de DM diretamente na plataforma, seria possível a integração dum sistema que permitisse a execução de algoritmos sobre datasets existentes na mesma. Isto poderia ser conseguido, por exemplo, integrando a API do sistema de Machine Learning - WEKA, na plataforma. A procura de informação poderia ser melhorada usando ontologias. Por exemplo, se estabelecermos uma ontologia sobre algoritmos de DM poderiamos especificar algoritmos de classificação e obter, por exemplo, Decision Trees, k-NN, C4.5, ID3, em vez de listar todas as possibilidades. A ontologia permitiria expandir a query inicial para termos mais específicos. 1www.mendeley.com 46 Referências [Bea09] Alan Beaulieu. Learning SQL. Database, page 312, 2009. URL: http://books. google.com/books?id=1PgCCVryjOQC, arXiv:arXiv:1011.1669v3. [Chr14] Tom Christie. Django REST framework. Citirano 14.9.2014: http://www.djangorest-framework.org/#django-rest-framework, 2014. URL: http://www. django-rest-framework.org/{#}django-rest-framework. [Dja13] Django Software Foundation. Django: The Web framework for perfectionists with deadlines, 2013. URL: https://www.djangoproject.com/. [FB13] W. Fan e A. Bifet. Mining big data. SIGKDD Explor. Newsl., 14(2):1, 2013. [FU96] U. Fayyad e R. Uthurusamy. Data mining and knowledge discovery in databases. Communications of the ACM, 39(11):24–26, 1996. [GO11] Ralph F. Grove e Eray Ozkan. The MVC-web design pattern. WEBIST 2011 - Proceedings of the 7th International Conference on Web Information Systems and Technologies, pages 127–130, 2011. URL: http://www.scopus.com/inward/ record.url?eid=2-s2.0-80052569275{&}partnerID=tZOtx3y1. [HK06] J. Han e M. Kamber. Data mining. 2006. [Lin05] Greg Lindstrom. Programming with Python, 2005. arXiv:arXiv:1011.1669v3, doi:10.1109/MITP.2005.120. [Mos06] Julian Moss. Understanding TCP / IP. Computer, 93(87):478, 2006. URL: http: //www.techsupportalert.com/pdf/c04100.pdf. [Moy05] Steve Moyle. Collaborative data mining. In Oded Maimon e Lior Rokach, editors, Data Mining and Knowledge Discovery Handbook, page 1043–1056. 2005. [MR11] Ralf Mikut e Markus Reischl. Data mining tools. Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery, 1(5):431–443, 2011. doi:10.1002/widm.24. [Nat04] National Information Standards Organization. Understanding Metadata. National Information Standards, (MD:NISO Press):20, 2004. URL: http: //www.mendeley.com/catalog/understanding-metadata-3/$\ delimiter"026E30F$nhttp://www.niso.org/publications/press/ UnderstandingMetadata.pdf, arXiv:4, doi:10.1017/S0003055403000534. [RDC+04] João Rocha, Marco Domingues, Arthur Callado, Eduardo Souto, Guthemberg Silvestre, Carlos Kamienski e Djamel Sadok. Peer-to-peer: Computação colaborativa na internet. Minicurso, Simpósio Brasileiro de Redes de Computadores, (September 2015), 2004. 47 REFERÊNCIAS [WF05] Ian H. Witten e Eibe Frank. Data Mining: Practical machine learning tools and techniques. Morgan Kaufmann, 2nd edition edition, 2005. [Wik16a] Wikipedia. Cross Industry Standard Process for Data Mining. [online] Available at: https://en.wikipedia.org/wiki/Cross_Industry_Standard_Process_for_Data_Mining Accessed 15, February 2016. [Wik16b] Wikipedia. Web API. [online] Available at: https://en.wikipedia.org/wiki/WebAPI Accessed 15, February 2016. [WKLW98] S. Weibel, J. Kunze, C. Lagoze e M. Wolf. Dublin Core Metadata for Resource Discovery. RFC 2413, 1998. 48