Classificação Automática dos Usuários da Rede Social Acadêmica Scientia.Net Vinícius Ponte Machado1, Bruno Vicente Alves de Lima2, Heloína Alves Arnaldo3, Sanches Wendyl Ibiapina Araújo4 Departamento de Informática e Estatística, Universidade Federal do Piauí Campus Universitário Ministro Petrônio Portella - Bairro Ininga - Teresina - PI 1 [email protected] 2 [email protected] 3 [email protected] 4 [email protected] Resumo – Redes sociais tornaram-se especialmente relevantes na internet devido a grande adesão de usuários aos vários de sites Web que utilizam o conceito, como Orkut, MySpace, Facebook e Flickr. Seus usuários formam bases de dados que proveem um importante meio de compartilhar, organizar e encontrar conteúdo, além de estabelecer contatos através de interesses comuns. Neste contexto foi criado o Scientia.Net – site de rede social que integra informações contidas em diversos serviços da Internet (fóruns, repositórios de artigos, sites, blogs e demais redes sociais). Além disso, esta ferramenta promove a interação de seus usuários (estudantes, professores e pesquisadores) para fins acadêmicos, com base nos seus interesses em comum. Este artigo apresenta uma aplicação Web, desenvolvida para agrupar de forma automática os usuários do Scientia.Net, utilizando Redes Neurais Artificiais. A aplicação foi criada a partir de pesquisas sobre algoritmos de aprendizagem de máquina e visa oferecer ao Scientia.Net um mecanismo de classificação que apresente a cada usuário do site, uma relação de outros pesquisadores com base nas suas pesquisas em comum. Com isso pretende-se contribuir para a interação entre usuários de perfis semelhantes e assim melhorar na produtividade de suas pesquisas permitindo assim a troca de conhecimento. Palavras-Chave: Redes Sociais, Aprendizagem de Máquina, Redes Neurais Artificiais, WEKA I. INTRODUÇÃO Na área científica, a interação das pessoas é um fator importante para o avanço das pesquisas. É crescente o número de pesquisadores de diferentes instituições, muitas vezes distantes geograficamente que têm colaborado entre si em diversos projetos. Neste cenário acadêmico os sistemas de redes sociais se destacam como uma ferramenta para reunir e facilitar contato com pessoas que detêm o conhecimento. Esses sistemas funcionam com o princípio da interação social, ou seja, buscando conectar pessoas e proporcionar sua comunicação forjando laços sociais. Uma rede social é definida como um conjunto de dois elementos: atores (pessoas, instituições ou grupos; os nós da rede) e suas conexões (interações ou laços sociais) [7]. A rede social, derivando deste conceito, passa a representar um conjunto de participantes autônomos, unindo ideias e recursos em torno de interesses compartilhados a partir das interações estabelecidas entre eles. O Scientia.Net é um site de rede social voltado ao ambiente acadêmico que visa agregar aos seus usuários itens de relevância acadêmica relacionados ao seu perfil. Dessa forma, o Scientia.Net é uma agregador de informações contidas em diversos serviços da Internet (fóruns, repositórios de artigos, sites, blogs e demais redes sociais). Além disso, a ferramenta provê a interação de seus usuários (estudantes, professores e pesquisadores) com base nos seus interesses em comum. Este artigo apresenta um mecanismo de classificação automático dos usuários da rede social Scientia.Net através do algoritmo de aprendizagem de máquina (Redes Neurais Artificiais - RNA). O objetivo é oferecer a cada usuário do Scientia.Net uma relação de outros usuários com perfis e interesses comuns a estes. Algoritmos que utilizam técnicas de Aprendizagem de Máquina melhoram automaticamente à medida que aprendem com experiências passadas [5]. Estes algoritmos têm como objetivo encontrar e descrever padrões a partir dos dados obtidos do ambiente. A tarefa principal é aprender um modelo a partir do ambiente e manter esse modelo consistente de modo a atingir as finalidades de sua aplicação. A tarefa de aprender consiste em escolher ou adaptar os parâmetros de representação do modelo. Tal mecanismo de classificação automático de usuários contribui para que o usuário da rede social não desperdice tempo buscando os perfis dos pesquisadores com os quais deseja obter ou compartilhar informações, pois o algoritmo de RNA se encarrega de identificar grupos de usuários por meio da classificação de padrões na base de dados do Scientia.Net. O algoritmo de Aprendizagem de Máquina RNA, utilizado na implementação deste trabalho, foi adaptado do pacote Waikato Environment for Knowledge Analysis – WEKA [9], que consiste num conjunto de implementações de algoritmos de Aprendizagem de Máquina, desenvolvido na Universidade de Waikato na Nova Zelândia. II. FUNDAMENTAÇÃO TEÓRICA A. Aprendizagem de Máquina A utilização de Algoritmos de Aprendizagem de máquina tem como objetivo o desenvolvimento de técnicas computacionais sobre o aprendizado bem como a construção de sistemas capazes de adquirir conhecimento de forma automática. A intuição humana não pode ser inteiramente eliminada nesse caso, desde que o desenvolvedor do sistema especifique como os dados devem ser representados e que mecanismos serão usados por uma caracterização dos dados. Existem três principais tipos de técnicas de aprendizagem de máquina: O Aprendizado Supervisionado – implica necessariamente a existência de dados de entradas e a indicação de uma saída a ser apendida para ocorrer o processo de aprendizagem [1]. Aprendizado Não-Supervisionado – envolve a aprendizagem de padrões na entrada, quando não são fornecidos valores de saídas específicos [8]. Aprendizado por Reforço – consiste em mapear situações (estados do ambiente) para ações (o que fazer) de modo a maximizar um sinal de recompensa numérico. A ideia básica é simplesmente captar os aspectos mais importantes do problema real posto diante de um agente aprendiz interagindo com o ambiente para alcançar uma meta. B. Redes Neurais Artificiais As Redes Neurais foram criadas na década de 40 por Walter Pitts e McCulloch, o primeiro matemático e o segundo neurofisiologista [4]. Redes Neurais Artificiais são sistemas que tentam simular o funcionamento do cérebro humano. São compostas por unidades de processamento simples chamados de Neurônios Artificiais [1]. C. Neurônio Artificial (Perceptron) O modelo de neurônio artificial proposto por McCulloch e Pitts é uma simplificação do neurônio biológico. O modelo propõe que o neurônio artificial possui n entradas (x1,x2,x3, ...,xn) e apenas um terminal de saída y, sendo que cada entrada possui um peso correspondente (w1,w2,w3,...,wn),visualizados na Fig. 1. Para gerar a saída o neurônio faz o somatório da multiplicação de cada entrada com seu respectivo peso. Após isso é levado à Função de Transferência e depois enviado para a saída do neurônio. A saída geralmente é comparada com a saída indicada e se houver erro, que é a diferença entre a saída obtida e a saída desejada, será corrigido utilizando a regra delta [5]. A Regra Delta ajusta os pesos do neurônio de tal forma que este multiplicado pela entrada possa representar uma saída correta. Para cada entrada do Perceptron soma-se o peso atual com a multiplicação da entrada com a taxa de aprendizagem e o erro. Esse processo é realizado com todos os pares de entradas com seus respectivos pesos. A Regra do Delta é utilizada para o treinamento do Perceptron,(neurônio), também dito como o mais simples tipo de rede neural. O Perceptron apresenta apenas um conjunto de de entradas e uma saída, sem haver nenhuma camada de neurônios intermediária. Os neurônios são constituídos por uma função de ativação e uma função de transferência. A função de ativação faz a soma ponderada dos sinais de entrada e a função de transferência determina a saída do neurônio, em função da soma ponderada. Quando ocorre erro em alguma das entradas, é utilizada a regra do delta para a correção dos erros, ou seja, o treinamento do Perceptron. Portanto os algoritmos de aprendizado das Redes Neurais visam o desenvolvimento de técnicas para a obtenção de um valor mais apropriado de pesos para a obtenção da solução do problema depois que todos os pesos estiverem ajustados, e não existir mais erro, ou o menor erro possível[1]. D. Redes Neurais de Múltipla Camadas As redes Neurais de Múltiplas Camadas é uma rede com uma camada de entrada, contendo as entradas da rede, com uma ou mais camadas ocultas, que possui neurônios artificiais e uma camada de saída, que tem como objetivo resolver problemas não lineares. Um exemplo de rede neural é mostrado na Fig. 2. Fig.2. Exemplo de Rede Neural com Múltiplas Camadas (Adaptado de Ludwing e Eduard, 2007). Fig.1Modelo de Neurônio Artifical de McCulloch e Pitts. (Adaptado de Ludwing e Eduard, 2007). E. Algoritmo Back-Propagation Algoritmo Back-Propagation é utilizado no treinamento das Redes Perceptrons de Múltiplas Camadas. É dividido em duas fases. A primeira é a forward que é onde é determinada a saída da rede neural. A segunda é a fase backward, onde é comparada a saída obtida com a saída desejada e assim calculado o erro. Na fase forward é apresentado às entradas da rede, e as saídas dos neurônios da primeira camada oculta são calculadas. As saídas da primeira camada oculta serão as entradas utilizadas nos cálculos da saída da próxima camada. Esse processo se repete até chegar a camada de saída, onde são produzidas as saídas da rede. Por fim, a saída obtida é comparada com a saída desejada, caso haja erro o algoritmo passa para a fase backward. Na fase backward o erro da camada de saída é utilizado para ajustar diretamente os seus pesos. Posteriormente, esse erro é propagado para a camada anterior, utilizando-se para isso os pesos das conexões entre as camadas, que serão multiplicadas com os erros correspondentes. Esse processo é executado até a primeira camada oculta da rede neural, chegando a camada de entrada, onde serão ajustados os pesos das entradas finalizando o processo. [2] F. Ferramenta Weka Waikato Environment for Knowledge Analysis – WEKA [8] é um conjunto de bibliotecas Java de KDD 1 que contempla uma série de algoritmos de preparação de dados, de aprendizagem de máquina, mineração de dados e de validação de resultados (Fig. 3). WEKA foi desenvolvido na Universidade de Waikato na Nova Zelândia, sendo escrito em Java e possuindo código aberto disponível na Web (a atual versão - 3.4.3 - demanda Java 1.4). O WEKA possui interface gráfica e seus algoritmos fornecem relatórios com dados analíticos e estatísticos do domínio minerado. Grande parte de seus recursos é acessível via sua interface, sendo que os demais podem ser utilizados através de API´s2 em códigos criados por terceiros. Para a utilização dos algoritmos implementados utilizandose a ferramenta WEKA no Scientia.Net, deve-se fornecer dados para o treinamento. Esses dados são fornecidos através de um arquivo com extensão .arff. Esse arquivo possui um formado especial como mostra na Fig. 4. O Arquivo ARFF, é dividido em 3 partes: Relação – primeira linha do arquivo que deve conter a identificação da relação ou tarefa que esta sendo estudada, sendo, antecedida da expressão @relation; Atributos – lista de atributos, onde cada linha inicia com @attribute acompanhada do nome do atributo e seguida do seu tipo, que pode ser nominal (as alternativas devem ser relacionadas como uma lista separada por vírgulas e cercadas por chaves) ou numérico (neste caso o nome deve ser seguido do tipo de dado); Dados – relação de dados correspondentes aos atributos que é iniciada com uma linha simples contendo a expressão @data. Cada linha representa uma instância e deve ter valores separados por vírgula correspondentes (e na mesma ordem) dos atributos da seção Atributos. Fig.4. Exemplo de Arquivo ARFF. O Fato de o WEKA ser escrito em Java e ter suas bibliotecas disponíveis, teve um peso relevante na decisão de utilizá-lo no Scientia.Net. Com isso os algoritmos podem ser utilizados em várias plataformas, deixando assim, o trabalho com uma boa portabilidade e melhor utilização no Joomla. A criação do site Scientia.Net foi feita utilizando o componente de redes sociais do CMS (Content Management System) Joomla, o JomSocial. Este CMS é escrito em linguagem PHP e roda no servidor Web Apache ou IIS3 (Internet Information Services) e banco de dados MySQL. Fig.3.Janela do WEKA rodando algoritmo de Aprendizagem de Máquina. 1 Knowledge-discovery in databases (Extração do Conhecimento) é um processo de extração de informações de base de dados, que cria relações de interesse que não são observadas pelo especialista no assunto, bem como auxilia a validação de conhecimento extraído. 2 API – Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. G. Scientia.Net O Scientia.Net é uma rede social voltada para o ambiente acadêmico com conteúdos específicos para cientistas que desejam compartilhar suas pesquisas ou avançar em seus trabalhos por meio da interação com outros pesquisadores. É baseada na Internet e foi criada implementando ferramentas que permitem a interação de seus usuários (estudantes, professores e pesquisadores) com base nos seus interesses em comum por meio de algoritmos de aprendizagem de máquina. 3 Internet Information Services ou IIS é um servidor Web criado pela Microsoft para seus sistemas operacionais para servidores. Além disso, visa agregar aos seus usuários itens de relevância relacionados ao seu perfil de forma automática. Ou seja, de acordo com o perfil do pesquisador, são sugeridos artigos, eventos e contatos de outros pesquisadores. Dessa forma o Scientia.Net cria um grande agregador de informações acadêmicas contidas em diversos serviços da Internet (fóruns, repositórios de artigos, sites, blogs e demais redes sociais) [Fig. 5], permitindo aos seus usuários uma melhoria na produtividade de suas pesquisas, além de fornecer mecanismos para interatividade e troca de conhecimento entre pesquisadores. Esta aplicação foi desenvolvida em java e posteriormente integrada à uma aplicação Web com o framework JSF 1.2, que foi escolhido visando facilitar a integração da aplicação ao Scientia.Net. Uma vez incorporada ao Scientia.Net a aplicação irá de forma automática, através de uma conexão JDBC 4, se conectar ao banco de dados MySql, selecionar a tabela de usuários, e converter esta tabela para um arquivo ARFF. Após a implementação do conversor ARFF, os algoritmos de RNA do WEKA foram integrados à aplicação, e iniciaramse os testes com as RNAs. O primeiro passo para início dos testes consistiu em conectar o conversor ARFF ao banco de dados MySql do Scientia.Net, selecionar a tabela de usuários e então gerar o arquivo ARFF correspondente . A Fig. 7 mostra um exemplo da aplicação treinando uma RNA. Fig.5. Serviços e Informações agregadas ao Scientia.Net O Scientia.Net diferente de outras redes sociais oferece um mecanismo de classificação automático de seus usuários e de conteúdo. Esse diferencial tem como objetivo oferecer a cada usuário do Scientia.Net uma relação de outros usuários cujos perfis e interesses são semelhantes. Esta classificação é feita de forma automática com base nos padrões descobertos pelos algoritmos de Redes Neurais Artificiais. III. CLASSIFICAÇÃO AUTOMÁTICA DOS USUÁRIOS O WEKA utiliza uma base de dados chamada ARFF e o Scientia.Net utiliza banco de dados MySql para armazenar dados dos usuários (Fig. 6). Dessa forma, surgiu a necessidade de desenvolver uma aplicação para converter a base de dados do MySql para ARFF. Fig. 7. Aplicação treinando uma rede neural com os dados do MySql convertidos em ARFF. O próximo passo foi escolher os atributos que os usuários do Scientia.Net precisam ter para que a RNA os classifique corretamente. Os seguintes atributos são levados em consideração na hora da classificação do usuário: Graduação, Mestrado, Doutorado, Pós-Doutorado e suas respectivas subáreas. O atributo classe escolhido para que a RNA classifique os usuários foi a Área de Interesse. Concluída essa etapa criou-se uma base de dados fictícia para o Scientia.Net, dado que este projeto ainda está em fase de desenvolvimento. Esta base de dados possui 60 usuários cadastrados, dos quais foram escolhidos 40 para treinamento da RNA e 20 para testes. Em seguida uma RNA com 5 camadas ocultas e 1 de saída, com taxa de aprendizagem e erro médio de 0.1, foi submetida a um treinamento com os dados de 40 usuários. Com a Rede Neural treinada foram submetidos a ela, os outros 20 usuários para classificação. Foram obtidos 100% de acerto da Rede Neural, ou seja, todos os 20 usuários foram classificados corretamente. 4 Fig 6. Comparação de um arquivo SQL com um arquivo ARFF Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. Após escolher os atributos, criar o banco de dados, e testar a Rede Neural, foi desenvolvido o site do Scientia.Net Joomla utilizando o componente JomSocial, como mostra na Fig 8, e na sua base de dados padrão foram adicionados os campos escolhidos como atributos para os usuários. Fig. 9. Scientia.Net apresentando de forma automática usuários em comum ao perfil de outro usuário. Fig. 8. Exemplo de tela do Scienta.Net. Com a parte de desenvolvimento Web pronta, as RNAs foram incorporadas ao site do Scientia.Net. Ainda utilizando a base de dados criada, foi treinada novamente a Rede Neural, e cadastrados novos usuários e submetidos à Rede Neural para classificação. Como anteriormente, a Rede Neural classificou os novos usuários com 100% de acertos. Alguns desses usuários foram por exemplo: Aurileide Frazão com graduação em Química, com a sub-área de mestrado em Síntese Orgânica; Lilian Rosalina com formação em Química, com a sub-área em Fotoquímica Orgânica; Ana Carolina graduada em Química, sub-área Físico-Química Orgânica; Amanda Lorena também graduada em Química, com sub-área Polímeros e Coloides, todas classificadas pela Rede Neural como Área de Interesse em Química Orgânica. Assim o Scientia.Net apresenta, por exemplo, Lilian Rosalina, Lorena Amanda e Ana Carolina como sendo de interesse a Aurileide Frazão (Fig. 9). IV. CONSIDERAÇÕES FINAIS O Scientia.Net, rede social acadêmica, tem como objetivo reunir pesquisadores nas mais diversas áreas do conhecimento afim de possibilitar a troca de informações entre eles, e isto feito de forma automática através de algoritmos de Aprendizagem de Máquina. Neste trabalho estão sendo utilizadas as Redes Neurais Artificiais. As Redes Neurais Artificiais apresentaram um bom desempenho na classificação dos usuários. Além disso, as RNAs são métodos seguros quando implementados corretamente, pois já existem e são estudados ha muito tempo. Para um desempenho eficiente, as Redes Neurais necessitam de treinamentos com uma enorme quantidade de dados, para que não haja problemas nesse trabalho em relação a isso, serão feitos treinamentos regularmente utilizando a base de dados do Scientia.Net. De forma a ampliar os estudos sobre o trabalho apresentado pretende-se ainda desenvolver os seguintes tópicos: implementação do mecanismo de classificação dos usuários do Scientia.Net com dados reais; utilização de outras fontes de usuários: Facebook, Orkut; classificação de artigos e eventos científicos automaticamente a partir do perfil dos cientistas cadastrados no Scientia.Net. REFERÊNCIAS [1] [2] [3] [4] [5] [6] [7] [8] [9] BRAGA, A. P.; CARVALHO, A. P. L. F.; LUDERMIR T. B. Redes Neurais Artificiais: Teoria e Aplicações. 2ed, Rio de Janeiro, Brasil, 2007. HAYKIN, S. Redes neurais: princípios e prática. 2ed. Porto Alegre: Bookman, 2001. 900p SCHWALBERT, M. A. Metodologias de aprendizagem de máquina utilizando Redes Neurais Artificiais. Monografia (Bacharel em Ciência da Computação) – Universidade de Passo Fundo, Passo Fundo, 2007. MCCULLOCH, W.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, v. 7, p. 115 – 133, 1943 MITCHELL, T. Machine Learning. McGraw Hill, New York, 1997. JÚNIOR, O. L.; MONTGOMERY, E. Redes Neurais: Fundamentos e Aplicações com Programas em C. Rio de Janeiro, Brasil, 2007. RECUERO, R. C. Teoria das Redes e Redes Sociais na Internet: Considerações sobre o Orkut, os Weblogs e os Fotologs. In: XXVII Congresso Brasileiro de Ciências da Comunicação. XXVII INTERCOM, Rio Grande do Sul, 2004. Disponível em: http://reposcom.portcom.intercom.org.br/bitstream/1904/17792/1/R062 5-1.pdf. Acesso:jan. 2011. RUSSEL, S.; NORVING, P. Inteligência Artificial. Rio de Janeiro:Elsevier, 2004. UNIVERSITY OF WAIKATO.Weka 3 Machine Learning Software in Java. Disponível em: http://www.cs.waikato.ac.nz/ml/weka Acesso: jan.2011.