-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrequisitos.tex
72 lines (47 loc) · 7.69 KB
/
requisitos.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
%!TEX root = index.tex
\chapter[Requisitos]{Requisitos}
\label{chap:requisitos}
A partir dos objetivos deste Trabalho de Conclusão de Curso, é possível extrair os requisitos funcionais da biblioteca de sistemas de recomendação. Esses requisitos ditam principalmente sobre a escalabilidade e o desempenho das recomendações do sistema.
A fim de poder estabelecer uma base comparativa entre o sistema proposto UI e os sistemas de referência FW e UP, serão utilizados os mesmos indicadores de desempenho dos artigos-base: precisão, abrangência e medida $F_1$ \cite{symeonidis2007feature,debnath2008feature}. Precisão é a porcentagem de casos corretamente preditos em relação ao tamanho da lista de recomendações. Abrangência é a razão entre o número de itens corretamente preditos e daqueles que foram efetivamente avaliados pelo usuário. A medida $F_1$, por sua vez, é a média harmônica entre precisão e
abrangência.
Todas essas métricas são dependentes dos diversos parâmetros do problema, como do tamanho da lista de recomendações $N$, da quantidade de vizinhos mais próximos $k$, e principalmente do banco de dados de teste. Como os artigos de referência não os disponibilizaram integralmente, serão estimados os valores de precisão, abrangência e medida $F_1$ para o banco de dados da dupla.
Espera-se que a precisão, abrangência e consequentemente a medida $F_1$ sejam maiores que 20\%. Esses valores foram escolhidos por serem superiores aos de algoritmos puramente baseados em conteúdo ou em filtragem colaborativa \cite{symeonidis2007feature,debnath2008feature}. Na prática, o resultado mais importante é a comparação entre os três métodos para um banco de dados de referência.
Os requisitos funcionais são suportados por requisitos não-funcionais, e estes são determinados pelas restrições sobre o projeto ou execução, tais como desenvolvimento e confiabilidade.
A biblioteca de sistemas de recomendação deverá poder ser utilizada por qualquer e-commerce que disponha de um banco de dados de clientes, produtos e histórico de compras, desde que o formato de entrada seja seguido.
Além disso um requisito não funcional é o desenvolvimento da biblioteca em tecnologias abertas (\textit{open source}) que tenham um alto número de colaboradores, como a linguagem de programação estatística R, a fim de torná-la reutilizável por alunos ou e-commerces interessados.
Por fim, o sistema de recomendação deverá ser escalável e flexível no sentido de poder operar igualmente bem tanto em pequenas quanto em grandes bases de dados.
Apesar serem importantes parâmetros de um sistema de recomendação, a taxa de recomendações por período de tempo e a escalabilidade estão intimamente relacionados ao orçamento do projeto \cite{sarwar2001item}. Pode-se obter virtualmente qualquer \textit{throughput} desejado, contanto que haja investimento equivalente em infra-estrutura computacional. O mesmo não é válido para os parâmetros de qualidade da recomendação, que dependem tão somente dos algoritmos de sugestão. Por esse motivo, os requisitos de projeto não são pautados em taxa de recomendações por tempo.
Com os requisitos do sistema de recomendação definidos, devemos estruturar o seu relacionamento com o administrador do sistema. Para isto determinamos seus casos de uso, classes e atividades.
\section{Diagrama de Casos de Uso} % (fold)
\label{sec:Diagrama de Casos de Uso}
Os casos de uso se dividem em \textit{Avaliar Performance}, \textit{Configurar Banco de Dados}, \textit{Recomendar UI}, \textit{Recomendar UP}, \textit{Recomendar FW}.
O caso de uso \textit{Avaliar Performance} visa avaliar a performance do sistema de recomendação. Esse caso se relaciona com outros três casos de uso. O primeiro deles, \textit{Mascarar Dados}, serve para esconder dados de alguns usuários-teste na matriz de avaliações, para, posteriormente, compará-los às recomendações calculadas pelo sistema. O segundo caso, \textit{Dividir Banco de Treino}, tem o objetivo de dividir o banco de dados em dois, um para o aprendizado do sistema e o segundo para testes. O terceiro caso, \textit{Devolver Indicadores}, torna os indicadores de performance acessíveis ao administrador do sistema.
O caso de uso \textit{Configurar Banco de Dados} tem a utilidade de converter o banco de dados de entrada em matrizes. O caso \textit{Ler Itens}, é o encarregado de ler o arquivo de itens fornecido pelo banco de dados, assim como \textit{Ler Usuários} e \textit{Ler Histórico} são para usuários e histórico de compras. Os casos de uso \textit{Gerar Matriz de Atributos} e \textit{Gerar Matriz de Avaliação} constroem as matrizes de acordo com dados lidos pelos casos de uso de leitura.
Já os casos de uso \textit{Recomendar UI}, \textit{Recomendar UP} e \textit{Recomendar FW}, são os casos de uso em que se geram as recomendações pelos métodos baseados na correlação usuário-item, no perfil de usuários e na ponderação de atributos respectivamente. O método de recomendação baseado na ponderação de atributos necessita de outros três casos de uso, o \textit{Normalizar Matriz}, onde se normaliza as colunas da matriz de distância entre atributos. Esta distância entre atributos é calculada pelos dois outros casos de uso, \textit{Fazer Delta de Kronecker} e \textit{Fazer Indice Jaccard}.
Estes casos de uso foram representados no diagrama de casos de uso (Figura \ref{fig:Diagrama de Casos de Uso}).
\begin{figure}[htp]
\begin{center}
\includegraphics[width=1\textwidth]{img/CasosDeUso}
\end{center}
\caption{Diagrama de casos de uso representando os relacionamentos entre o administrador e o sistema de recomendações.}
\label{fig:Diagrama de Casos de Uso}
\end{figure}
\section{Diagrama de Atividades} % (fold)
\label{sec:Diagrama de Atividades}
Para representar o fluxo de informação foi considerado o diagrama de atividades. Assim é possível visualizar os processos que vão desde a informação fornecida pelo usuário até a geração de recomendações.
O primeiro diagrama de atividade (Figura \ref{fig:Diagrama de Atividades - Registro de Avaliacao}) representa o registro de uma avaliação por parte do cliente, onde o cliente solicita o item para visualizá-lo e a plataforma web faz o pedido de informações ao banco de dados. O banco de dados devolve as informações pedidas e a plataforma o exibe no dispositivo do cliente. Após a visualização, o cliente avalia o item, a plataforma web informa o banco de dados sobre a avaliação. Este registra a avaliação e a plataforma web confirma a avaliação finalizando o processo.
\begin{figure}[htp]
\begin{center}
\includegraphics[width=1\textwidth]{img/Atividade_Usuario}
\end{center}
\caption{Diagrama Atividades - Registro de Avaliação}
\label{fig:Diagrama de Atividades - Registro de Avaliacao}
\end{figure}
O segundo diagrama (Figura \ref{fig:Diagrama de Atividades - Recomendacao}), representa o fluxo de informação desde o pedido de uma recomendação pela plataforma web até a finalização da atividade pelo cliente. O primeiro passo é o pedido de uma recomendação, ao banco de dados, pela plataforma web. O banco de dados envia as informações necessárias para o sistema de recomendação que, de acordo com as regras pré-estabelecidas, as calcula e retorna para o banco de dados. O banco de dados registra estas recomendações e informa a plataforma web, que envia a recomendação ao usuário. O usuário avalia o item recomendado e finaliza o processo.
\begin{figure}[htp]
\begin{center}
\includegraphics[width=1\textwidth]{img/Atividade_Recomendacao}
\end{center}
\caption{Diagrama Atividades - Gerar Recomendação}
\label{fig:Diagrama de Atividades - Recomendacao}
\end{figure}