• Nenhum resultado encontrado

Algoritmo 5 – Modelo da Entidade ‘media’

1.4 Metodologia

3.2.3 Carregamento dos Dados

A camada de persistˆencia utilizada ´e o MongoDB, um projeto open source e gratuito. ´

E um banco de dados de alta performance, sem esquemas e orientado a documentos. Lan¸cado em 2009, ´e escrito em C++ e utilizado por empresas dos mais diferentes portes e segmentos para a cria¸c˜ao de aplica¸c˜oes que demandam baixa latˆencia (latency), alta vaz˜ao (throughput) e alta disponibilidade. No MongoDB, as informa¸c˜oes s˜ao armazenadas em documentos BSON (Binary JSON) ao inv´es de tabelas e colunas como num banco de dados relacional.

Armazenar dados em documentos ´e uma forma de persistˆencia relativamente comum entre os banco n˜ao relacionais, sendo o MongoDB um dos mais utilizados entre todos eles. Embora existam diversas e robustas alternativas, como por exemplo o Couchbase, o Redis ou o Amazon DynamoDB, este projeto adota o MongoDB em fun¸c˜ao de sua alta popularidade, como mostra o gr´afico da Figura 5, retirado do Developer Survey Results 2018 do Stack Overflow, uma comunidade de desenvolvedores na internet mundialmente reconhecida pelo seu formato de perguntas e respostas.

Figura 5 – Bancos de Dados mais Utilizados no Stack Overflow em 2018

Prezando pela performance, robustez e escalabilidade, este projeto implementa um cluster no MongoDB Atlas, um servi¸co em nuvem que disponibiliza o banco num formato SaaS (Software as a Service) pr´atico e descomplicado. Isso significa que n˜ao existe preocupa¸c˜ao com hardware nem com a parametriza¸c˜ao da aplica¸c˜ao do banco: uma vez que o cluster est´a instanciado, basta estabelecer uma conex˜ao e come¸car a utiliz´a-lo. Assim como os demais recursos em nuvem consumidos at´e aqui, este tamb´em oferece um n´ıvel de utiliza¸c˜ao gratuito que, ainda com especifica¸c˜oes modestas, atende perfeitamente `as necessidades do projeto.

A aplica¸c˜ao, logo ao iniciar, estabelece a conex˜ao com o banco de dados num processo muito simples, utilizando a biblioteca ‘mongoose.js’, para garantir o correto funcionamento do ETL. S˜ao necess´arios apenas quatro parˆametros para completar esta etapa: o usu´ario, a senha, o cluster e a cole¸c˜ao de documentos, respectivamente representados no c´odigo por ‘user’, ‘password’, ‘cluster’ e ‘collection’. Amplamente utilizada em projetos que envolvem Node.js e MongoDB, a biblioteca Mongoose ´e baseada em schemas que modelam os dados das aplica¸c˜oes, oferecendo nativamente um sistema de convers˜ao de tipos, valida¸c˜ao, cria¸c˜ao de consultas e hooks para l´ogica de neg´ocios.

Quando a cria¸c˜ao de um dataset ´e solicitada, o registro da entidade homˆonima ´e armazenado imediatamente, contendo detalhes como qual o perfil objeto da an´alise e data e hora da cria¸c˜ao da entrada. Ao passo em que os perfis dos usu´arios que interagiram tamb´em s˜ao rastreados, extra´ıdos e transformados, s˜ao armazenados de forma s´ıncrona os registros da entidade ‘profile’ e da entidade ‘media’, como pode ser observado na Figura 4. Os modelos utilizados para a valida¸c˜ao e inser¸c˜ao dos registros no banco de dados est˜ao detalhados nos algoritmos 3, 4 e 5.

Algoritmo 3 Modelo da Entidade ‘dataset’

Algoritmo 4 Modelo da Entidade ‘profile’

Algoritmo 5 Modelo da Entidade ‘media’

4 An´alise Neural

Uma rede neural artificial (RNA) ´e um modelo computacional capaz de realizar aprendizado de m´aquina e reconhecimento de padr˜oes. Independentemente do seu tipo, ´e basicamente representada por um sistema de unidades de processamento interconectadas, que podem a partir de um determinado conjunto de valores de entrada, computar valores de sa´ıda, simulando o comportamento de redes neurais biol´ogicas. Em outras palavras, as RNAs implementam modelos matem´aticos inspirados na estrutura neural de organismos inteligentes e que adquirem conhecimento por meio da experiˆencia. Ao passo em que ela pode ter centenas ou milhares de unidades de processamento, o c´erebro de um mam´ıfero, por exemplo, pode ter bilh˜oes de neurˆonios.

Uma RNA ´e formada por v´arias unidades de processamento, denominadas simples- mente de neurˆonios, assim como na natureza. Esses neurˆonios s˜ao geralmente conectados por canais de comunica¸c˜ao que est˜ao associados `a um determinado peso. Os neurˆonios operam apenas no contexto dos seus dados, que s˜ao entradas recebidas pelas suas conex˜oes, essas respons´aveis pelo comportamento inteligente da rede. O psiquiatra e neuroanatomista Warren McCulloch e o matem´atico Walter Pitts, em 1943, foram os primeiros pesquisadores a descreverem um modelo artificial para um neurˆonio biol´ogico no artigo A Logical Calculus of the Ideas Immanent in Nervous Activity, que pode ser sintetizado da seguinte forma:

• Sinais s˜ao apresentados `a entrada;

• Cada sinal ´e multiplicado por um n´umero (ou peso) que indica a sua influˆencia na sa´ıda do neurˆonio.

• ´E feita a soma ponderada dos sinais que produz um n´ıvel de atividade;

• Se este n´ıvel de atividade exceder um certo limite o neurˆonio produz uma determinada resposta de sa´ıda.

O modelo descrito em McCulloch e Pitts (1943) ´e formado por um vetor de entradas e as sinapses s˜ao representadas por pesos num´ericos. A soma ponderada das entradas ´e submetida `a uma fun¸c˜ao de transferˆencia (tamb´em conhecida como fun¸c˜ao de ativa¸c˜ao), que determina se essa ´e maior que um determinado valor (o limiar do neurˆonio). Caso positivo, o neurˆonio ´e ativado, caso contr´ario, ´e desativado. A tarefa do neurˆonio ´e responder se a soma recebida ´e maior que o limiar, obedecendo `a lei do ‘tudo ou nada’ e garantindo que sempre estar´a em um de dois poss´ıveis estados: ativado ou desativado.

Figura 6 – Modelo Artificial para um Neurˆonio Biol´ogico de McCulloch e Pitts

Fonte: (MCCULLOCH; PITTS, 1943)

Redes neurais artificiais contam com regras de treinamento, onde os pesos de suas conex˜oes s˜ao ajustados de acordo com os padr˜oes de referˆencia apresentados, o quˆe em outras palavras significa que elas aprendem por interm´edio de exemplos. As arquiteturas das RNAs s˜ao tipicamente organizadas em camadas, que s˜ao classificadas em camadas de entrada, intermedi´arias (hidden layers) e de sa´ıda. Na primeira delas, os padr˜oes s˜ao apresentados `a rede, j´a na por¸c˜ao intermedi´aria ´e realizada a maior parte do processamento e, finalmente, na camada de sa´ıda, o resultado ´e apresentado.

A caracter´ıstica de maior destaque de uma RNA ´e sua habilidade de aprendizado em um determinado ambiente e sua consequente melhora de desempenho. Isso acontece em fun¸c˜ao do treinamento, um longo processo iterativo de ajustes aplicado aos seus pesos. Constata-se que uma rede est´a treinada quando esta atinge uma solu¸c˜ao generalizada para uma por¸c˜ao de problemas.

Existem diferentes tipos de algoritmos de treinamento, inclusive espec´ıficos para determinados modelos de redes neurais. Estes algoritmos diferem entre si principalmente pelo modo como os pesos s˜ao modificados, levando sempre em considera¸c˜ao a maneira pela qual uma rede neural se relaciona com o contexto em que est´a inserida. Laconicamente, existem trˆes diferentes paradigmas de treinamento, que est˜ao devidamente detalhados na lista a seguir:

• Supervisionado, quando ´e utilizado um agente externo que indica `a rede a resposta desejada para o padr˜ao de entrada;

• N˜ao supervisionado (auto-organiza¸c˜ao), quando n˜ao existe uma agente externo indicando a resposta desejada para os padr˜oes de entrada;

• Por refor¸co, quando um cr´ıtico externo avalia a resposta fornecida pela rede. Em geral ´e poss´ıvel distinguir trˆes classes fundamentais de arquiteturas: redes feed- forward de uma ´unica camada, redes feedforward de m´ultiplas camadas e redes recorrentes. Este projeto implementa um perceptron de m´ultiplas camadas, cujo entendimento passa pela rede perceptron, que ´e a forma mais simples de configura¸c˜ao de uma rede neural artificial, constitu´ıda de apenas uma camada, que nela cont´em um ´unico neurˆonio. Nela, o ajuste dos pesos e limiar do neurˆonio ´e feito por interm´edio do treinamento supervisionado, e como o perceptron ´e tipicamente utilizado em problemas de reconhecimento de padr˜oes, cada uma das suas poss´ıveis duas sa´ıdas ´e associada a uma das classes que s˜ao objeto da identifica¸c˜ao. ´E importante destacar que o perceptron se comporta como um t´ıpico discriminador linear, t˜ao logo, conclui-se que a rede se comporta como um classificador de padr˜oes cuja fun¸c˜ao ´e dividir classes que sejam linearmente separ´aveis.

Figura 7 – Separa¸c˜ao de Problemas Lineares e N˜ao-lineares

Documentos relacionados