Commit e075a6d6 authored by Bruno López Trigo's avatar Bruno López Trigo

Engadida máis información na documentación

parent d4f09651
......@@ -102,37 +102,38 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Caso sencillo}{23}{subsection.10.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.2}Caso medio}{23}{subsection.10.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Caso complejo}{23}{subsection.10.3}}
\@writefile{toc}{\contentsline {section}{\numberline {11}\IeC {\textquestiondown }C\IeC {\'o}mo integrar Google Analytics?}{23}{section.11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Algoritmos no incluidos en WEKA por defecto}{23}{subsection.10.4}}
\@writefile{toc}{\contentsline {section}{\numberline {11}\IeC {\textquestiondown }C\IeC {\'o}mo integrar Google Analytics?}{24}{section.11}}
\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Panel de administraci\IeC {\'o}n Google Analytics\relax }}{24}{figure.caption.19}}
\newlabel{fig:administrar}{{18}{24}{Panel de administración Google Analytics\relax }{figure.caption.19}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Creaci\IeC {\'o}n de una propiedad en Google Analytics\relax }}{24}{figure.caption.20}}
\newlabel{fig:formulario}{{19}{24}{Creación de una propiedad en Google Analytics\relax }{figure.caption.20}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Creaci\IeC {\'o}n de una propiedad en Google Analytics\relax }}{25}{figure.caption.20}}
\newlabel{fig:formulario}{{19}{25}{Creación de una propiedad en Google Analytics\relax }{figure.caption.20}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {20}{\ignorespaces ID de seguimiento Google Analytics\relax }}{25}{figure.caption.21}}
\newlabel{fig:id}{{20}{25}{ID de seguimiento Google Analytics\relax }{figure.caption.21}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces Integraci\IeC {\'o}n con react-router-ga\relax }}{25}{figure.caption.22}}
\newlabel{fig:reactrouterga}{{21}{25}{Integración con react-router-ga\relax }{figure.caption.22}{}}
\@writefile{toc}{\contentsline {section}{\numberline {12}Requisitos del lenguaje}{25}{section.12}}
\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces Integraci\IeC {\'o}n con react-router-ga\relax }}{26}{figure.caption.22}}
\newlabel{fig:reactrouterga}{{21}{26}{Integración con react-router-ga\relax }{figure.caption.22}{}}
\@writefile{toc}{\contentsline {section}{\numberline {12}Requisitos del lenguaje}{26}{section.12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {12.1}Explicaci\IeC {\'o}n global}{26}{subsection.12.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.1.1}Enumerando los consecuentes}{26}{subsubsection.12.1.1}}
\newlabel{sec:enumeration}{{12.1.1}{26}{Enumerando los consecuentes}{subsubsection.12.1.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.1.2}Determinando la confusi\IeC {\'o}n global del clasificador}{26}{subsubsection.12.1.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.1.2}Determinando la confusi\IeC {\'o}n global del clasificador}{27}{subsubsection.12.1.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.1.3}Determinando la confusi\IeC {\'o}n entre consecuentes de forma gen\IeC {\'e}rica}{27}{subsubsection.12.1.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {12.2}Explicaci\IeC {\'o}n local}{29}{subsection.12.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.1}Explicando el camino}{29}{subsubsection.12.2.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.2}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la precisi\IeC {\'o}n de las ramas}{29}{subsubsection.12.2.2}}
\newlabel{sec:branchprob}{{12.2.2}{29}{Explicando la probabilidad de las alternativas según la precisión de las ramas}{subsubsection.12.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.2}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la precisi\IeC {\'o}n de las ramas}{30}{subsubsection.12.2.2}}
\newlabel{sec:branchprob}{{12.2.2}{30}{Explicando la probabilidad de las alternativas según la precisión de las ramas}{subsubsection.12.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.3}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la confusi\IeC {\'o}n global}{30}{subsubsection.12.2.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.4}Explicando por qu\IeC {\'e} aparecen las alternativas}{31}{subsubsection.12.2.4}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {12.2.4}Explicando por qu\IeC {\'e} aparecen las alternativas}{32}{subsubsection.12.2.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {12.3}Explicaci\IeC {\'o}n de las matrices de confusi\IeC {\'o}n}{32}{subsection.12.3}}
\citation{gitlab}
\@writefile{toc}{\contentsline {section}{\numberline {13}Trabajo futuro}{33}{section.13}}
\@writefile{toc}{\contentsline {subsection}{\numberline {13.1}Tareas inmediatas}{33}{subsection.13.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {13.2}Tareas a largo plazo}{33}{subsection.13.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {13.3}Tareas deseables}{33}{subsection.13.3}}
\@writefile{toc}{\contentsline {section}{\numberline {14}Bugs detectados}{33}{section.14}}
\citation{gitlab}
\@writefile{toc}{\contentsline {subsection}{\numberline {13.2}Tareas a largo plazo}{34}{subsection.13.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {13.3}Tareas deseables}{34}{subsection.13.3}}
\@writefile{toc}{\contentsline {section}{\numberline {14}Bugs detectados}{34}{section.14}}
\@writefile{toc}{\contentsline {section}{\numberline {15}Otros aspectos importantes}{34}{section.15}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Despliegue del servicio}{34}{subsection.15.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Otras fuentes de documentaci\IeC {\'o}n}{34}{subsection.15.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Otras fuentes de documentaci\IeC {\'o}n}{35}{subsection.15.2}}
\bibdata{sample}
\bibcite{weka}{1}
\bibcite{simplenlg}{2}
......@@ -144,8 +145,8 @@
\bibcite{reactjs}{8}
\bibcite{d3}{9}
\bibcite{pixabay}{10}
\@writefile{toc}{\contentsline {section}{\hspace *{-\tocsep }References}{35}{subsection.15.2}}
\newlabel{LastPage}{{}{35}{}{page.35}{}}
\xdef\lastpage@lastpage{35}
\xdef\lastpage@lastpageHy{35}
\@writefile{toc}{\contentsline {section}{\hspace *{-\tocsep }References}{36}{subsection.15.2}}
\newlabel{LastPage}{{}{36}{}{page.36}{}}
\xdef\lastpage@lastpage{36}
\xdef\lastpage@lastpageHy{36}
\ttl@finishall
This diff is collapsed.
......@@ -20,17 +20,18 @@
\BOOKMARK [2][-]{subsection.10.1}{Caso sencillo}{section.10}% 20
\BOOKMARK [2][-]{subsection.10.2}{Caso medio}{section.10}% 21
\BOOKMARK [2][-]{subsection.10.3}{Caso complejo}{section.10}% 22
\BOOKMARK [1][-]{section.11}{\277C\363mo integrar Google Analytics?}{}% 23
\BOOKMARK [1][-]{section.12}{Requisitos del lenguaje}{}% 24
\BOOKMARK [2][-]{subsection.12.1}{Explicaci\363n global}{section.12}% 25
\BOOKMARK [2][-]{subsection.12.2}{Explicaci\363n local}{section.12}% 26
\BOOKMARK [2][-]{subsection.12.3}{Explicaci\363n de las matrices de confusi\363n}{section.12}% 27
\BOOKMARK [1][-]{section.13}{Trabajo futuro}{}% 28
\BOOKMARK [2][-]{subsection.13.1}{Tareas inmediatas}{section.13}% 29
\BOOKMARK [2][-]{subsection.13.2}{Tareas a largo plazo}{section.13}% 30
\BOOKMARK [2][-]{subsection.13.3}{Tareas deseables}{section.13}% 31
\BOOKMARK [1][-]{section.14}{Bugs detectados}{}% 32
\BOOKMARK [1][-]{section.15}{Otros aspectos importantes}{}% 33
\BOOKMARK [2][-]{subsection.15.1}{Despliegue del servicio}{section.15}% 34
\BOOKMARK [2][-]{subsection.15.2}{Otras fuentes de documentaci\363n}{section.15}% 35
\BOOKMARK [1][-]{subsection.15.2}{References}{}% 36
\BOOKMARK [2][-]{subsection.10.4}{Algoritmos no incluidos en WEKA por defecto}{section.10}% 23
\BOOKMARK [1][-]{section.11}{\277C\363mo integrar Google Analytics?}{}% 24
\BOOKMARK [1][-]{section.12}{Requisitos del lenguaje}{}% 25
\BOOKMARK [2][-]{subsection.12.1}{Explicaci\363n global}{section.12}% 26
\BOOKMARK [2][-]{subsection.12.2}{Explicaci\363n local}{section.12}% 27
\BOOKMARK [2][-]{subsection.12.3}{Explicaci\363n de las matrices de confusi\363n}{section.12}% 28
\BOOKMARK [1][-]{section.13}{Trabajo futuro}{}% 29
\BOOKMARK [2][-]{subsection.13.1}{Tareas inmediatas}{section.13}% 30
\BOOKMARK [2][-]{subsection.13.2}{Tareas a largo plazo}{section.13}% 31
\BOOKMARK [2][-]{subsection.13.3}{Tareas deseables}{section.13}% 32
\BOOKMARK [1][-]{section.14}{Bugs detectados}{}% 33
\BOOKMARK [1][-]{section.15}{Otros aspectos importantes}{}% 34
\BOOKMARK [2][-]{subsection.15.1}{Despliegue del servicio}{section.15}% 35
\BOOKMARK [2][-]{subsection.15.2}{Otras fuentes de documentaci\363n}{section.15}% 36
\BOOKMARK [1][-]{subsection.15.2}{References}{}% 37
......@@ -98,7 +98,7 @@ ExpliClas es un servicio web capaz de generar explicaciones en lenguaje natural
\section{Introducción}
ExpliClas es un servicio de código abierto cuyo código puede ser localizado en el GitLab del CiTIUS \cite{gitlab}. Existen dos versiones de ExpliClas: la versión actualmente desplegada como demostrador del CiTIUS \cite{demostrador}, que se corresponde con la rama \textit{master}; la versión en desarrollo, que es la que realmente nos interesa y se corresponde con la rama \textit{ExpliClas-v2}. La nueva versión del proyecto muestra el siguiente esquema de directorios:
ExpliClas es un servicio de código abierto que puede ser localizado en el GitLab del CiTIUS \cite{gitlab}. Existen dos versiones de ExpliClas: la versión actualmente desplegada como demostrador del CiTIUS \cite{demostrador}, que se corresponde con la rama \textit{master}; la versión en desarrollo, que es la que realmente nos interesa y se corresponde con la rama \textit{ExpliClas-v2}. La nueva versión del proyecto muestra el siguiente esquema de directorios:
\begin{itemize}
\item \textbf{codigo}: Es el directorio donde se incluye el código fuente de la API REST y el demostrador web.
......@@ -251,7 +251,7 @@ Los modelos incluidos directamente en este paquete se usan de forma global y son
\item \textbf{Line}: Clase que representa una línea de un \textit{dataset}, con sus correspondientes datos.
\item \textbf{ModifiedDataset}: Clase que representa un \textit{dataset} donde los nombres de los atributos originales han sido modificados (por motivos de formato).
\item \textbf{DatasetConfig}: Clase que representa la configuración de experto asociada a un \textit{dataset}. Es decir, es la clase que engloba la serie de etiquetas lingüísticas asociadas a los atributos y consecuentes.
\item \textbf{GlobalConfig}: Clase que representa la configuración global del sistema. Esta configuración engloba parámetros utilizados de forma genérica para las explicaciones, por ejemplo: el valor límite de una enumeración, por defecto 9, o etiquetas lingüísticas asignadas a sus intervalos de aplicación. Por ahora esta clase está bastante orientada a la explicación de árboles de decisión, en un futuro habrá que crear un mecanismo más genérico mediante mecanismos de herencia.
\item \textbf{GlobalConfig}: Clase que representa la configuración global del sistema. Esta configuración engloba parámetros utilizados de forma genérica para las explicaciones, por ejemplo: el valor límite de una enumeración, por defecto 9, o etiquetas lingüísticas asignadas a sus intervalos de aplicación. Por ahora esta clase está bastante orientada a la explicación de árboles de decisión, en un futuro habrá que crear un método más genérico mediante mecanismos de herencia.
\item \textbf{Explanation}: Clase que representa una explicación.
\item \textbf{Instance}: Clase que representa una instancia concreta.
\item \textbf{Matrix}: Clase que representa una matriz de confusión. Teniendo en cuenta que el boolean \texttt{abstain} solo se utiliza para el algoritmo FURIA, indicando así que la matriz tiene una columna extra para abstenciones.
......@@ -869,9 +869,9 @@ La construcción del modelo basado en reglas borrosas es análoga al procedimien
\begin{itemize}
\item $x <= A$ entonces $x = 0$
\item $x \in (A,B)$ entonces $x$ tiene un cierto grado de activación entre $[0,1]$
\item $x \in (A,B)$ entonces $x$ tiene un cierto grado de activación entre $(0,1)$
\item $x \in [B,C]$ entonces $x = 1$
\item $x \in (C,D)$ entonces $x$ tiene un cierto grado de activación entre $[0,1]$
\item $x \in (C,D)$ entonces $x$ tiene un cierto grado de activación entre $(0,1)$
\item $x >= D$ entonces $x = 0$
\end{itemize}
......@@ -879,7 +879,7 @@ Existen casos especiales donde $A=B$, cuya interpretación sería:
\begin{itemize}
\item $x \in (-\infty,C]$ entonces $x = 1$
\item $x \in (C,D)$ entonces $x$ tiene un cierto grado de activación entre $[0,1]$
\item $x \in (C,D)$ entonces $x$ tiene un cierto grado de activación entre $(0,1)$
\item $x => D$ entonces $x = 0$
\end{itemize}
......@@ -887,7 +887,7 @@ O bien el caso donde $C=D$:
\begin{itemize}
\item $x <= A$ entonces $x = 0$
\item $x \in (A,B)$ entonces $x$ tiene un cierto grado de activación entre $[0,1]$
\item $x \in (A,B)$ entonces $x$ tiene un cierto grado de activación entre $(0,1)$
\item $x \in [B,+\infty)$ entonces $x = 1$
\end{itemize}
......@@ -1001,6 +1001,33 @@ El algoritmo no es de alguno de los tipos ya existentes o el formato es totalmen
\item Como el modelo se ha modificado, para generar correctamente las explicaciones debemos añadir una nueva clase de tipo \texttt{InfoExtractor.java} y adaptar las clases \texttt{ExplainerManager.java} y \texttt{ExplainerManagerImpl.java} para incluir un nuevo método que genere la explicación necesaria.
\end{itemize}
\subsection{Algoritmos no incluidos en WEKA por defecto}
Es probable que se deseen añadir al servicio algoritmos que no están presentes por defecto en la librería de WEKA, como el caso de FURIA. En estos casos es necesario seguir los siguientes pasos:
\begin{enumerate}
\item Instalar la aplicación de WEKA para escritorio, al menos la versión 3.8 que incluye un \textit{package manager} para instalar plugins.
\item Abrimos WEKA y en el menú seleccionamos \textit{Tools} > \textit{Package manager}.
\item Cuando cargue el \textit{package manager} buscamos el algoritmo deseado, lo seleccionamos y pulsamos en \textit{Install}.
\item El nuevo algoritmo estará instalado y podemos obtener el \texttt{.jar} dentro del directorio \texttt{wekafiles/packages/}, que contendrá todos los algoritmos que hayamos instalado en WEKA. Este directorio suele crearse en la carpeta \textit{HOME} del usuario.
\item Añadimos el \texttt{.jar} al directorio \texttt{/src/main/webapp/WEB-INF/lib} del proyecto.
\item Configuramos el archivo \texttt{pom.xml} del proyecto Maven para que cargue la dependencia tal y como se muestra en el ejemplo de la dependencia de FURIA.
\begin{lstlisting}[language=xml]
<!-- Dependencia local FURIA -->
<dependency>
<groupId>expliclas</groupId>
<artifactId>furia</artifactId>
<version>1.0.2</version>
<scope>system</scope>
<systemPath>
${project.basedir}/src/main/webapp/WEB-INF/lib/fuzzyUnorderedRuleInduction.jar
</systemPath>
</dependency>
\end{lstlisting}
\end{enumerate}
\section{¿Cómo integrar Google Analytics?}
La herramienta Google Analytics permite recopilar datos de acceso a nuestro servicio. Con estos datos Google Analytics nos genera diferentes métricas que son de gran utilidad para, entre otras cosas, contabilizar los accesos al servicio en un período de tiempo o determinar desde que lugares es accedido. La integración de Google Analytics es muy sencilla en nuestro proyecto ya que utilizaremos la librería \texttt{react-router-ga} que acopla la herramienta al gestor de rutas de React \texttt{react-router}.
......@@ -1397,6 +1424,7 @@ En esta sección identificamos el trabajo futuro del proyecto, donde haremos dis
\item \textbf{Generar la explicación local para el algoritmo FURIA}: Las clasificaciones realizadas con FURIA carecen de explicación asociada, sería interesante añadir una explicación análoga a la generada para los árboles de decisión.
\item \textbf{Revisar las explicaciones generadas hasta el momento}: Las explicaciones son un aspecto muy mejorable del sistema. Existen frases que es posible que puedan expresarse de una manera más clara y fallos de realización que puedan solventarse.
\item \textbf{Validar las explicaciones con usuarios externos}: La realización de algún tipo de cuestionario a los usuarios permitiría determinar si las explicaciones van por el camino correcto o deben mejorar en algún aspecto.
\item \textbf{Crear un plan de pruebas y ejecutarlo}: Hasta el momento el servicio se ha desarrollado sin realizar una batería de pruebas que comprueben el correcto funcionamiento del mismo. Es necesario realizar un plan de pruebas lo suficientemente exhaustivo para cubrir los métodos principales del servicio.
\end{itemize}
\subsection{Tareas a largo plazo}
......
......@@ -37,25 +37,26 @@
\contentsline {subsection}{\numberline {10.1}Caso sencillo}{23}{subsection.10.1}
\contentsline {subsection}{\numberline {10.2}Caso medio}{23}{subsection.10.2}
\contentsline {subsection}{\numberline {10.3}Caso complejo}{23}{subsection.10.3}
\contentsline {section}{\numberline {11}\IeC {\textquestiondown }C\IeC {\'o}mo integrar Google Analytics?}{23}{section.11}
\contentsline {section}{\numberline {12}Requisitos del lenguaje}{25}{section.12}
\contentsline {subsection}{\numberline {10.4}Algoritmos no incluidos en WEKA por defecto}{23}{subsection.10.4}
\contentsline {section}{\numberline {11}\IeC {\textquestiondown }C\IeC {\'o}mo integrar Google Analytics?}{24}{section.11}
\contentsline {section}{\numberline {12}Requisitos del lenguaje}{26}{section.12}
\contentsline {subsection}{\numberline {12.1}Explicaci\IeC {\'o}n global}{26}{subsection.12.1}
\contentsline {subsubsection}{\numberline {12.1.1}Enumerando los consecuentes}{26}{subsubsection.12.1.1}
\contentsline {subsubsection}{\numberline {12.1.2}Determinando la confusi\IeC {\'o}n global del clasificador}{26}{subsubsection.12.1.2}
\contentsline {subsubsection}{\numberline {12.1.2}Determinando la confusi\IeC {\'o}n global del clasificador}{27}{subsubsection.12.1.2}
\contentsline {subsubsection}{\numberline {12.1.3}Determinando la confusi\IeC {\'o}n entre consecuentes de forma gen\IeC {\'e}rica}{27}{subsubsection.12.1.3}
\contentsline {subsection}{\numberline {12.2}Explicaci\IeC {\'o}n local}{29}{subsection.12.2}
\contentsline {subsubsection}{\numberline {12.2.1}Explicando el camino}{29}{subsubsection.12.2.1}
\contentsline {subsubsection}{\numberline {12.2.2}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la precisi\IeC {\'o}n de las ramas}{29}{subsubsection.12.2.2}
\contentsline {subsubsection}{\numberline {12.2.2}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la precisi\IeC {\'o}n de las ramas}{30}{subsubsection.12.2.2}
\contentsline {subsubsection}{\numberline {12.2.3}Explicando la probabilidad de las alternativas seg\IeC {\'u}n la confusi\IeC {\'o}n global}{30}{subsubsection.12.2.3}
\contentsline {subsubsection}{\numberline {12.2.4}Explicando por qu\IeC {\'e} aparecen las alternativas}{31}{subsubsection.12.2.4}
\contentsline {subsubsection}{\numberline {12.2.4}Explicando por qu\IeC {\'e} aparecen las alternativas}{32}{subsubsection.12.2.4}
\contentsline {subsection}{\numberline {12.3}Explicaci\IeC {\'o}n de las matrices de confusi\IeC {\'o}n}{32}{subsection.12.3}
\contentsline {section}{\numberline {13}Trabajo futuro}{33}{section.13}
\contentsline {subsection}{\numberline {13.1}Tareas inmediatas}{33}{subsection.13.1}
\contentsline {subsection}{\numberline {13.2}Tareas a largo plazo}{33}{subsection.13.2}
\contentsline {subsection}{\numberline {13.3}Tareas deseables}{33}{subsection.13.3}
\contentsline {section}{\numberline {14}Bugs detectados}{33}{section.14}
\contentsline {subsection}{\numberline {13.2}Tareas a largo plazo}{34}{subsection.13.2}
\contentsline {subsection}{\numberline {13.3}Tareas deseables}{34}{subsection.13.3}
\contentsline {section}{\numberline {14}Bugs detectados}{34}{section.14}
\contentsline {section}{\numberline {15}Otros aspectos importantes}{34}{section.15}
\contentsline {subsection}{\numberline {15.1}Despliegue del servicio}{34}{subsection.15.1}
\contentsline {subsection}{\numberline {15.2}Otras fuentes de documentaci\IeC {\'o}n}{34}{subsection.15.2}
\contentsline {section}{\hspace *{-\tocsep }References}{35}{subsection.15.2}
\contentsline {subsection}{\numberline {15.2}Otras fuentes de documentaci\IeC {\'o}n}{35}{subsection.15.2}
\contentsline {section}{\hspace *{-\tocsep }References}{36}{subsection.15.2}
\contentsfinish
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment