Se se quere pór algún agradecemento, este vai aquí.
\addcontentsline{toc}{chapter}{Agradecementos}
\begin{itemize}
\item Grazas a meus pais, por ser o meu soporte principal e por apoiarme sempre nas miñas decisións. Eternamente agradecido, porque sei o esforzo e sacrificios realizados para abrirme un camiño cheo de oportunidades.
\item Grazas a Iria, polo seu cariño e compañía, que fixo máis amena esta etapa da miña vida. E por comprender que, nin todas as páxinas deste documento serían suficientes para agradecerlle todo o que me demostrou neste último ano.
\item Grazas aos meus titores, Jose e Alberto, pola súa dedicación e pola oportunidade que me ofreceron de seguir aprendendo coa realización deste proxecto.
\item Grazas tamén ao soporte dos proxectos TIN2014-56633-C3-1-R e TIN2017-84796-C2-1-R (MINECO e Fondos FEDER).
Indícase a continuación o procedemento necesario para despregar o sistema ExpliClas nun entorno real.
Indícase a continuación o procedemento necesario para despregar o sistema ExpliClas nun entorno real. Hai que ter en conta que o despregue se fixo sobre unha máquina virtual co sistema operativo Ubuntu Server 16.04.3.
\subsection{Despregue da API REST}
...
...
@@ -21,7 +21,7 @@ Empezarase indicando a secuencia de pasos necesarios para despregar a API REST:
\begin{table}[H]
\centering
https://BASE/api/swagger.json
\texttt{https://BASE/api/swagger.json}
\end{table}
Tendo en conta que \textit{BASE} fai referencia á URL base do servidor no que se desprega o sistema.
...
...
@@ -72,12 +72,12 @@ Unha vez despregada a API poderá despregarse o demostrador web seguindo os segu
\item Finalmente, empregarase o propio servidor de node para poñer en produción o proxecto. Para realizar esta acción emprégase o comando: \texttt{serve -s /path/to/build}, sendo /path/to/build a ruta ata o directorio build creado durante a compilación.
\item Unha vez despregado o demostrador, deberíamos poder acceder ao servizo no porto 3000 e empregando a URL \textbf{HOME} indicada no arquivo de configuración, tal e como se aprecia na figura \ref{expliclas-home}.
\item Unha vez despregado o demostrador, deberíamos poder acceder ao servizo no porto 3000 e empregando a URL \textbf{HOME} indicada no arquivo de configuración, tal e como se aprecia na figura \ref{expliclas-inicio}.
A primeira pantalla coa que se atopa o usuario é a da figura \ref{expliclas-home}, onde este debe pulsar no botón \say{Start} para comezar a empregar o servizo e iniciar unha sesión anónima.
A primeira pantalla coa que se atopa o usuario é a da figura \ref{expliclas-home}, onde este debe pulsar no botón \textit{Start} para comezar a empregar o servizo e iniciar unha sesión anónima.
@@ -13,7 +13,7 @@ A primeira pantalla coa que se atopa o usuario é a da figura \ref{expliclas-hom
\section{Listado de datasets}
Diferencianse dous tipos de datasets, os datasets precargados no sistema (só admiten a súa selección pulsando en \say{Select}) e os datasets creados polo usuario, que admite tanto a selección como a eliminación (pulsando na cruz vermella da esquina superior dereita). Se seleccionamos un dataset, pasaremos á opción de seleccionado e visualización dos logs dos clasificadores. Existe tamén unha opción \say{add}, co mesmo formato que o resto dos datasets e se pulsamos no signo máis do centro pasaremos á opción de engadir un novo dataset para xerar un clasificador. Esta pantalla apréciase na figura \ref{expliclas-datasets}.
Diferéncianse dous tipos de datasets, os datasets precargados no sistema (só admiten a súa selección pulsando en \textit{Select}) e os datasets creados polo usuario, que admite tanto a selección como a eliminación (pulsando na cruz vermella da esquina superior dereita). Se seleccionamos un dataset, pasaremos á opción de seleccionado e visualización dos logs dos clasificadores. Existe tamén unha opción \textit{add}, co mesmo formato que o resto dos datasets e se pulsamos no signo máis do centro pasaremos á opción de engadir un novo dataset para xerar un clasificador. Esta pantalla apréciase na figura \ref{expliclas-datasets}.
@@ -24,7 +24,7 @@ Diferencianse dous tipos de datasets, os datasets precargados no sistema (só ad
\section{Engadir un novo dataset}
Seleccionando a opción \say{add} na pantalla dos datasets, pasaremos á seguinte pantalla para construír un clasificador. Onde debemos seleccionar o algoritmo de clasificación desexado no menú despregable, tal e como se ve na figura \ref{expliclas-algorithm}
Seleccionando a opción \textit{add} na pantalla dos datasets, pasaremos á seguinte pantalla para construír un clasificador. Onde debemos seleccionar o algoritmo de clasificación desexado no menú despregable, tal e como se ve na figura \ref{expliclas-algorithm}
@@ -32,7 +32,7 @@ Seleccionando a opción \say{add} na pantalla dos datasets, pasaremos á seguint
\label{expliclas-algorithm}
\end{figure}
Unha vez seleccionado o algoritmo teremos un formulario para xerar o clasificador. Son estrictamente necesarios o nome do novo dataset (non debe coincidir con ningún predeterminado ou creado previamente polo usuario) e subir o arquivo do dataset. O resto de valores son os valores por defecto para o algoritmo seleccionado e non é necesario modificalos. Ademais, para cada parámetro podemos consultar unha descrición do mesmo se pasamos o cursor sobre o icono \say{i} de información. Na figura \ref{expliclas-build1} temos os dous campos obligatorios do formulario.
Unha vez seleccionado o algoritmo teremos un formulario para xerar o clasificador. Son estritamente necesarios o nome do novo dataset (non debe coincidir con ningún predeterminado ou creado previamente polo usuario) e subir o arquivo do dataset. O resto de valores son os valores por defecto para o algoritmo seleccionado e non é necesario modificalos. Ademais, para cada parámetro podemos consultar unha descrición do mesmo se pasamos o cursor sobre a icona \say{i} de información. Na figura \ref{expliclas-build1} temos os dous campos obrigatorios do formulario.
@@ -40,7 +40,7 @@ Unha vez seleccionado o algoritmo teremos un formulario para xerar o clasificado
\label{expliclas-build1}
\end{figure}
Unha vez cumprimentado todo o formulario, poderase proceder á construción do clasificador se pulsamos no botón \say{build}, tal e como se amosa na figura \ref{expliclas-build2}.
Unha vez cumprimentado todo o formulario, poderase proceder á construción do clasificador se pulsamos no botón \textit{Build}, tal e como se amosa na figura \ref{expliclas-build2}.
@@ -58,7 +58,7 @@ Unha vez seleccionado un dataset desde a pantalla dos datasets, entrarase na pan
\label{expliclas-logs}
\end{figure}
Se seleccionamos un clasificador co log existente e pulsamos en \say{Next}, a pantalla seguinte será a da sección B.5. En cambio, se seleccionamos un clasificador co log sen xerar, pasaremos á pantalla da sección B.3, onde o algoritmo de clasificación non se poderá modificar porque será o seleccionado previamente, e empregarase o dataset existente no sistema, polo que o usuario non necesita subir de novo o dataset.
Se seleccionamos un clasificador co log existente e pulsamos en \textit{Next}, a pantalla seguinte será a da sección B.5. En cambio, se seleccionamos un clasificador co log sen xerar, pasaremos á pantalla da sección B.3, onde o algoritmo de clasificación non se poderá modificar porque será o seleccionado previamente, e empregarase o dataset existente no sistema, polo que o usuario non necesita subir de novo o dataset.
\section{Información do clasificador / Explicación global}
...
...
@@ -70,11 +70,11 @@ Esta pantalla correspóndese coa información do clasificador ou o que é equiva
\label{expliclas-clasificador}
\end{figure}
Ao premer no botón \say{Next} o usuario avanzaría ata a seguinte pantalla amosada na sección B.6.
Ao premer no botón \textit{Next} o usuario avanzaría ata a seguinte pantalla amosada na sección B.6.
\section{Clasificacións / Explicación local}
Nesta pantalla o usuario pode realizar clasificacións de instancias e obter a explicación asociada a dita clasificación, é dicir, a explicación local. Distínguese un formulario onde os valores poden mudarse manualmente por parte do usuario, así como unha lista de instancias do dataset que o usuario pode pregargar no formulario ao seleccionalas. Se o usuario pulsa na opción \say{Generate explanation} o sistema procederá coa clasificación e devolverá a explicación no recadro da dereita.
Nesta pantalla o usuario pode realizar clasificacións de instancias e obter a explicación asociada a dita clasificación, é dicir, a explicación local. Distínguese un formulario onde os valores poden mudarse manualmente por parte do usuario, así como unha lista de instancias do dataset que o usuario pode pregargar no formulario ao seleccionalas. Se o usuario pulsa na opción \textit{Generate explanation} o sistema procederá coa clasificación e devolverá a explicación no recadro da dereita.
\bibitem{xln} E. Reiter, R. Dale, ``Building natural language generation systems'', {\it Cambridge University Press}, 2000.
\bibitem{ExpliClas} ExpliClas. Web Service for the Automatic Explanation in Natural Language of classification models in Data Mining. {\it https://demos.citius.usc.es/ExpliClas}
\bibitem{weka} Machine Learning Group at University of Waikato. Weka 3: Data Mining Software in Java. Consultada en {\it https://www.cs.waikato.ac.nz/ml/weka/} o 20 de xuño de 2018.
\bibitem{netbeans} Netbeans. Consultada en {\it https://netbeans.org/} o 27 de xuño de 2018.
\bibitem{netbeans} NetBeans. Consultada en {\it https://netbeans.org/} o 27 de xuño de 2018.
\bibitem{jersey} Jersey. Jersey 2.27 User Guide. Consultada en {\it https://jersey.github.io/documentation/latest/index.html} o 22 de xuño de 2018.
...
...
@@ -22,8 +26,6 @@
\bibitem{react} React documentation. Consultada en {\it https://reactjs.org/docs/hello-world.html} o 22 de xuño de 2018.
\bibitem{ExpliClas} ExpliClas. Web Service for the Automatic Explanation in Natural Language of classification models in Data Mining. {\it https://demos.citius.usc.es/ExpliClas}
\bibitem{salariotic} Guia Salarial Sector TI Galicia 2015-2016. Consultada en {\it https://es.scribd.com/document/288511179/Guia-Salarial-Sector-TI-Galicia-2015-2016} o 22 de xuño de 2018.
\bibitem{calculadora} Oficina de Investigación e Tecnoloxía. Calculadora de Contratos. Consultada en {\it http://imaisd.usc.es/ferramentas/calculadora/calculadoracontratos.asp} o 22 de xuño de 2018.
...
...
@@ -32,9 +34,13 @@
\bibitem{jaxb} Oracle. Java Architecture for XML Binding (JAXB). Consultada en {\it http://www.oracle.com/technetwork/articles/javase/index-140168.html} o 22 de xuño de 2018.
\bibitem{UCI} The University of California at Irvine. UCI machine learning repository. Consultada en {\it https://archive.ics.uci.edu/ml} o 30 de xuño de 2018.
\bibitem{johnson} Donald B. Johnson. {\it Finding all the elementary circuits of a directed graph}. Siam J. Comput. Vol.4, No.1, 1975.
\bibitem{swagger} Swagger. API Documentation. Consultada en {\it https://swagger.io/solutions/api-documentation/} o 22 de xuño de 2018.
\bibitem{tomcat} Apache Tomcat 8. Apache Tomcat 8 Documentation. Consultada en {\it http://tomcat.apache.org/tomcat-8.0-doc/index.html} o 22 de xuño de 2018.
\bibitem{tomcat} Apache Tomcat 8. Documentation. Consultada en {\it http://tomcat.apache.org/tomcat-8.0-doc/index.html} o 22 de xuño de 2018.
\bibitem{nodejs} NodeJS. Consultada en {\it https://nodejs.org/es/docs/} o 22 de xuño de 2018.
...
...
@@ -50,5 +56,7 @@
\bibitem{gitlab} Gitlab. Consultada en {\it https://gitlab.citius.usc.es} o 22 de xuño de 2018.
\bibitem{ESTYLF} B. López-Trigo, J.M. Alonso, A. Bugarin, A. Actas del 19º Congreso Español sobre Lógicas y Tecnología Fuzzy (ESTYLF). {\it Generación Automática de Explicaciones en Lenguaje Natural para Clasificadores mediante Árboles de Decisión}, en revisión, 2018.
Neste proxecto acadouse o desenvolvemento dun servizo web, \textbf{ExpliClas}, que funciona sobre unha API REST, e é capaz de proporcionar explicacións (globais e locais) en linguaxe natural sobre clasificacións feitas con árbores de decisión.
Aínda que ExpliClas é un servizo web operativo e totalmente funcional, existen bastantes melloras que poden levarse a cabo. A mellora inmediata sobre o servizo está destinada ao refinamento das explicacións xeradas. Para este refinamento o ideal será crear un formulario onde os usuarios do sistema podan valorar as explicacións do sistema. A partir do \say{feedback} proporcionado polos usuarios, revisarase e mellorarase o modelo de explicacións actual.
ExpliClas é un servizo Web operativo e totalmente funcional, tal e como pode verse accedendo ás URL do propio servizo \cite{ExpliClas}
Ainda así, xa se detectaron algunhas melloras, que se levarán adiante nos próximos meses.
Por unha parte, están as posibles ampliacións relativas ás limitacións actuais do sistema. En primeiro lugar, o sistema consta de 3 algoritmos de clasificación (J48, REPTree e RandomTree) que poderían ser estendidos a un maior número de algoritmos que seguen un modelo similar. En segundo lugar, ExpliClas só admite datasets de datos numéricos quedando como unha ampliación interesante a compatibilidade con datasets de datos categóricos. Por último, o sistema está deseñado para algoritmos de clasificación que empregan árbores de decisión, que son algoritmos de caixa branca. Pero sería interesante que, nun futuro, ExpliClas se adaptase a outros algoritmos de clasificación considerados de caixa gris (por exemplo, árbores de decisión borrosos).
Un último aspecto que se vai ampliar, unha vez abordadas as melloras anteriores, é realizar unha validación exhaustiva da calidade lingüística das explicacións xeradas, con usuarios externos. A validación vai seguir un dos estándares neste ámbito, que consiste en elaborar un cuestionario no que os usuarios avaliarán, para un conxunto suficiente de casos (datasets e instancias) as dúas dimensións mais relevantes das explicacións: a pertinencia do contido das mesmas (dimensión de fondo) e a corrección das explicacións (dimensión de forma).
Moitas destas melloras van ser abordadas xa de xeito inmediato tras o remate do TFG, xa que ExpliClas nace cunha vocación de converterse nun servizo ofrecido á comunidade da aprendizaxe automática. Proba disto é que ExpliClas foi descrito nun traballo enviado recientemente ao \say{19º Congreso Español sobre Tecnologías y Lógica Fuzzy}\cite{ESTYLF}, estando o dito traballo actualmente en avaliación.
Por outra parte, están as posibles ampliacións relativas ás limitacións actuais do sistema. En primeiro lugar, o sistema está reducido a 3 algoritmos de clasificación (J48, REPTree e RandomTree) que poderían ser extendidos a un maior número de algoritmos que seguen un modelo similar. En segundo lugar, ExpliClas só admite datasets de datos numéricos quedando como unha ampliación interesante a compatibilidade con datasets de datos categóricos. Por último, o sistema está deseñado para algoritmos de clasificación que empregan árbores de decisión, que son algoritmos de caixa branca. Pero sería interesante que, nun futuro, ExpliClas se adaptase a outros algoritmos de clasificación considerados de caixa gris (por exemplo, árbores de decisión borrosos).