You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/tex/5_Aspectos_relevantes_del_desarrollo_del_proyecto.tex
+174-9Lines changed: 174 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -3,12 +3,12 @@
3
3
En esta sección se van a detallar los aspectos más relevantes que han ido surgiendo a lo largo del desarrollo del proyecto. Este a sido un desarrollo \textit{software} y como tal ha estado lleno de retos y decisiones técnicas que han tenido que ir tomándose. La formación ha sido un punto de inflexión, sumado a la aplicación de buenas prácticas, ha resultado en un producto de calidad.
4
4
5
5
6
-
\subsection{Investigación}
6
+
\section{Investigación}
7
7
Uno de los componentes principales que posee el proyecto es el apartado de investigación en el campo del Aprendizaje Automático, concretando un poco más, el efecto de la aplicación de técnicas de selección de instancias en el aprendizaje semi-supervisado.
8
8
9
9
Uno de los principales retos a los que el autor se ha enfrentado en una primera instancia ha sido adquirir una rápida capacidad de lectura y asimilación de documentación científica, si bien el idioma (inglés) no ha supuesto una barrera, el no poseer experiencia en realizando estas tareas generó una necesidad que tuvo que ser solventada poco a poco. En los últimos meses del proyecto la agilidad ya estaba ahí, resultando en tareas más fluidas y veloces.
10
10
11
-
\subsection{Metodología SCRUM}
11
+
\section{Metodología SCRUM}
12
12
Como ya se mencionó en la Sección~\ref{SCRUM}, el proyecto se ha realizado siguiendo una metodología ágil, permitiendo trabajar en \textit{sprints} de manera que el trabajo de cada \textit{sprint} se encuentre correctamente fundamentado al inicio de cada uno, permitiendo trabajar con una mayor eficiencia, priorizar el trabajo en función las tareas existentes, y disponer de versiones funcionales a la vez que se sigue con el desarrollo del proyecto.
13
13
14
14
Si bien se conocía SCRUM de manera puramente teórica, el haber trabajado siguiendo esta metodología ha permitido ganar experiencia en modelos de desarrollo ágiles, diferente de los clásicos a los que se acostumbraba, y tal y como se define, el trabajo se ha visto afectado de forma positiva con esta aproximación.
Una de las principales dificultades encontradas en este campo es la asignación de puntos de historia, el definir en base a un nombre de tarea y una descripción el tiempo que va a ser necesario invertir para cumplir con ella no ha sido siempre muy preciso. El no poseer experiencia previa en proyectos de esta envergadura propició que se considerara la equivalencia de 1 punto de historia igual a 45 minutos o menos. Y si bien ha habido múltiples \textit{sprints} en los cuales se ha conseguido seguir esta relación, no ha sido algo lineal en el proyecto, debido a que se tuvo en cuenta la experiencia que se iba consiguiendo a la hora de asignar los siguientes puntos de historia, y ha habido múltiples \textit{sprints} desfasados por lo alto.
19
19
20
-
\subsection{Actualización y modificación de un \textit{software} pre-existente}
20
+
\section{Actualización y modificación de un \textit{software} pre-existente}
21
21
Posiblemente será el aspecto relevante más cercano a el futuro laboral de cualquier alumno. Supuso todo un reto el coger un proyecto que había sido desarrollado por 5 personas y <<hacerlo propio>>. Como es lógico cada persona programa de una forma diferente para alcanzar la misma funcionalidad, y ya no solo eso, sino la propia temática del proyecto era desconocida, por lo tanto supuso un esfuerzo doble.
22
22
23
23
La no existencia de una documentación, ni técnica ni formal, acerca del propio \textit{software} no ayudó a obtener una visión del proyecto más allá de la estructura de paquetes y nombres. Fue algo que se echó en falta, y que con la finalización de este proyecto, ya posee.
24
24
25
-
\subsection{Desarrollo Web}
25
+
\section{Desarrollo Web}
26
26
A lo largo del Grado no se ha impartido docencia en cuanto a desarrollo web se refiere, siendo toda una desventaja a la hora de actualizar y modificar \texttt{UBUMLaaS}. Trabajar con una REST API era algo hasta enero desconocido, y la curva de aprendizaje no ha sido especialmente sencilla. Han sido necesarias numerosas horas para familiarizarse tanto con el proyecto como con la forma de trabajo que poseen las aplicaciones que siguen esta arquitectura.
27
27
28
28
A la hora de integrar nuevas modificaciones sobre el \textit{backend} del proyecto no supuso grandes problemas, fue un trabajo laborioso como es de esperar, pero al ser Python ya se estaba acostumbrado al lenguaje de programación. La dificultad llegó con el \textit{frontend} lenguajes de marcas como HTML o CSS, y de programación como JavaScript, no eran desconocidos, pero no se habían utilizado nunca en grandes proyectos; es por ello que hubo tareas que se vieron retrasadas.
@@ -31,22 +31,22 @@ \subsection{Desarrollo Web}
31
31
32
32
La web ha sufrido una renovación completa, siendo necesario re-escribir todos los documentos HTML, si bien se tuvo desde un inicio en cuenta que ciertas páginas tuvieran un diseño similar al que ya poseían anteriormente para seguir con el diseño inicial. El nuevo diseño soporta múltiples resoluciones de pantalla, habiendo sido priorizadas aquellas soportadas en tabletas sobre las de dispositivos móviles.
33
33
34
-
\subsubsection{Funcionalidades <<sobre la marcha>>}
34
+
\subsection{Funcionalidades <<sobre la marcha>>}
35
35
En el momento de desarrollo de la parte de administración de \texttt{UBUMLaaS} surgían cada día nuevas funcionalidades que parecían correctas o adecuadas para implementar y añadir, permitiendo a los administradores tener más control del que iban a poseer una vez pase a producción la versión creada.
36
36
37
37
Muchas de estas nuevas funcionalidades se han llevado a cabo y se encuentran disponibles y completamente integradas con la plataforma, si bien muchas otras no, se han quedado como trabajos futuros. Aquellas que se han quedado sin implementar fueron clasificadas con una relevancia baja, siendo priorizadas aquellas que se consideraron más útiles o curiosas.
38
38
39
-
\subsection{PIP}
39
+
\section{PIP}
40
40
\texttt{IS-SSL} es una biblioteca desarrollada con la finalidad de que sea útil a la mayor cantidad de desarrolladores posible, siguiendo las directrices del \textit{Open Source}, es por ello que se encuentra disponible a través del gestor de paquetes de Python, PIP.
41
41
42
42
El proyecto también puede ser descargado directamente desde el repositorio de GitHub y realizar todas las instalaciones de dependencias necesarias a través del fichero de \textit{requeriments.txt} o creando un entorno de \texttt{Conda} (a través del fichero \textit{is-ssl.yml}).
43
43
44
-
\subsection{Docker}
44
+
\section{Docker}
45
45
\texttt{UBUMLaaS} se encuentra desplegado en la Universidad de Burgos sobre un servidor directamente, pero con el fin de permitir que se despliegue en cualquier equipo y que la configuración específica sea mínima, se ha creado un contenedor Docker en el cuál reside la última versión de la aplicación.
46
46
47
47
El futuro de la aplicación podría ser únicamente en Docker perfectamente, siendo mucho más sencillo desplegarla en diferentes servidores, pero en la actualidad ese no es el enfoque deseado, por lo que se dejó para hacer al final en caso de que sobrara tiempo, como ha sucedido.
48
48
49
-
\subsection{Validación de la integridad de los algoritmos implementados}
49
+
\section{Validación de la integridad de los algoritmos implementados}
50
50
Todos los algoritmos los cuáles se encuentran disponibles en \texttt{IS-SSL} han sido validados y refinados a lo largo de múltiples iteraciones de trabajo con el fin de garantizar su integridad, de forma que se puede asegurar que reportan resultados tal y como el \textit{paper} original lo presentó.
51
51
52
52
\begin{itemize}
@@ -55,5 +55,170 @@ \subsection{Validación de la integridad de los algoritmos implementados}
55
55
\end{itemize}
56
56
57
57
58
-
\subsection{Experimentación de filtros de ruido para aprendizaje semi-supervisado}
58
+
\section{Experimentación de filtros de ruido para aprendizaje semi-supervisado}
59
+
60
+
\subsection{Introducción}
61
+
El aprendizaje semi-supervisado se basa en el entrenamiento de un modelo a partir de un pequeño número de prototipos etiquetados y uno mucho mayor de prototipos no etiquetados. Gracias a los innumerables campos de aplicación que posee, en los últimos años ha recibido mucha atención de la comunidad científica.
62
+
63
+
El método se basa en la mejora del aprendizaje de forma iterativa, mediante la explotación de los datos no etiquetados en combinación con los etiquetados. De forma que iterativamente se etiqueten aquellos con mayor confianza, aumentando el tamaño del conjunto de datos etiquetados, y con ello el espectro del cuál el modelo puede aprender.
64
+
65
+
La contrapartida se presenta en forma de que numerosos estudios empíricos demuestran como existen situaciones en las cuales el uso de esos datos no etiquetados pueden degradar el modelo. Siendo aconsejable el poder explotar los datos de forma segura.
66
+
67
+
Es por ello que múltiples estudios~\cite{zhao2021safe, guo2020safe, li2016towards} ya se han adentrado en el aprendizaje semi-supervisado seguro. Entendiendo por \emph{seguro} que el rendimiento de la generalización nunca es estadísticamente peor que los métodos que sólo utilizan datos etiquetados~\cite{li2019safe}.
68
+
69
+
Esta experimentación posee como objetivo validar la hipótesis:\\
70
+
\emph{<<¿Se obtiene una selección más segura en aprendizaje semi-supervisado gracias a la aplicación de métodos de selección de instancias?>>}
71
+
72
+
Introduciendo como novedades nuevos métodos de selección de instancias, así como clasificadores, hasta ahora no evaluados en problemas de esta naturaleza.
73
+
74
+
\subsection{Experimentación}
75
+
La experimentación ha sido realizada utilizando la aproximación propuesta en~\cite{li2019selfk}, bajo la cual el etiquetado de las instancias se produce en base a picos de densidad y la reducción del mismo mediante el uso de un filtrado de ruido previo.
76
+
77
+
Para la realización de la experimentación se utilizan 18 conjuntos de datos seleccionados del repositorio de la Universidad de California Irvine (UCI), la descripción de los diferentes conjuntos de datos se encuentra en la Tabla~\ref{tab:exp:datasets}. Los experimentos son realizados con diferentes porcentajes de número de instancias etiquetadas sobre el total, disponibles en la Tabla~\ref{tab:exp:percents}.
78
+
79
+
En todos los experimentos, se realiza una validación cruzada de 10 \textit{folds}, con el fin de obtener los resultados de la experimentación se utilizan las métricas ACC, \textit{f1 score}, y el error cuadrático medio.
80
+
81
+
\begin{align}
82
+
\text{\textit{ACC}} & = \frac{\text{\# tp}}{\text{\# Total de instancias}} \\
El conjunto de datos es dividido en 9 \textit{folds} para el conjunto de entrenamiento y 1 para el conjunto de prueba. Se utiliza selección estratificada aleatoria para la separación de los datos en entrenamiento y validación.
88
+
89
+
Anteriores artículos~\cite{li2019selfk} proponen esta misma aproximación pero utilizando únicamente el filtro propio \emph{ENaNE}, y el clasificador base \textit{k-Nearest Neighbors}, tal y como se muestra en la Tabla~\ref{tab:exp:classifiers} esta aproximación utiliza 3 clasificadores base con el fin de obtener una mayor diversidad de soluciones. Además, se utilizan los métodos de selección de instancias presentados en la Tabla~\ref{tab:exp:filters}.\\
90
+
Con todo esto se obtiene un espectro mucho más amplio de soluciones comparables, permitiendo validar la hipótesis planteada.
91
+
92
+
El procedimiento seguido es directo y sencillo, aseguramos que los valores son separados en cada experimento de la misma forma mediante una semilla aleatoria. El pseudocódigo se encuentra dispoible en el Algoritmo~\ref{alg:pseudo-exp}.
93
+
94
+
\begin{algorithm}[]
95
+
$random\_seed \leftarrow XX$
96
+
\For {dataset en datasets}{
97
+
\For {clasificador en clasificadores}{
98
+
\For {filtro en filtros}{
99
+
\For {\textit{fold} en CV} {
100
+
Instanciar el modelo con sus parámetros. \\
101
+
Entrenar el modelo. \\
102
+
Predecir los datos de test. \\
103
+
Cálculo de métricas. \\
104
+
Guardar las métricas.
105
+
}
106
+
}
107
+
}
108
+
}
109
+
\caption{Pseudocódigo del proceso de experimentación.}\label{alg:pseudo-exp}
\caption{Relación de cada conjunto de datos con los diferentes porcentajes de etiquetado utilizados.}\label{tab:exp:percents}
198
+
\end{table}
199
+
200
+
\FloatBarrier
201
+
\subsection{Resultados}
202
+
El análisis de los resultados a los que podemos llegar se realiza en función de cada estimador base, ya que se han seleccionado 3 de naturaleza distinta, no se pueden comparar de manera tan simple entre ellos.
203
+
204
+
La aproximación seguida para conocer qué filtro (o ninguno) reporta mejores resultados para cada conjunto estimador base, han sido los \textit{rankings} medios para cada conjunto de datos y cada porcentaje de etiquetado. En la Figura~\ref{fig:exp-general} se muestra un resumen de todos los filtros para cada estimador\footnote{\emph{base} hace referencia a el resultado reportado por el estimador sin la aplicación de ningún método de selección de instancias sobre el conjunto de datos etiquetados.}.
205
+
59
206
\imagenFlotante{../img/memoria/aspectos-relevantes/General}{Resumen en función del clasificador y filtro.}{exp-general}
207
+
208
+
En la Figura~\ref{fig:exp-general} no se aprecia a <<simple vista>> tendencia alguna para ningún clasificador base y método de selección de instancias, que destaque sobre el resto. Si bien se puede intuir que \texttt{LSSm} tiene a mejorar según se poseen más instancias, no es una conclusión válida, es por ello que se realizan tests estadísticos para comprobar si existen diferencias significativas entre los mismos.
209
+
210
+
El cálculo de los rankings medios es validado mediante comprobación con \texttt{KEEL}\footnote{\textit{Knowledge Extraction based on Evolutionary Learning}. Herramienta de software Java que puede utilizarse para un gran número de tareas diferentes de descubrimiento de datos de conocimiento. KEEL proporciona una sencilla interfaz gráfica de usuario basada en el flujo de datos para diseñar experimentos con diferentes conjuntos de datos y algoritmos de IA.}~\cite{alcala2009keel, alcala2011keel} de forma que se puede realizar el cálculo de Nemenyi como \textit{post hoc} estadístico.
211
+
212
+
Por motivos de espacio se muestra un resumen de las figuras obtenidas: \ref{fig:knn-posthoc}, \ref{fig:gaussnb-posthoc} y \ref{fig:tree-posthoc}, cada par clasificador-porcentaje de instancias etiquetadas dispone de su propio diagrama de \emph{Critial Difference} disponibles desde el siguiente \href{dd}{enlace}. De igual manera los \texttt{CSVs} resultantes del proceso de experimentación, los \textit{logs}, los \textit{rankings} medios, \dots, se encuentran disponibles en el correspondiente directorio del \href{https://github.com/dpr1005/Semisupervised-learning-and-instance-selection-methods/tree/main/experimentation}{repositorio} de \texttt{IS-SSL}.
213
+
214
+
\imagenFlotante{../img/memoria/aspectos-relevantes/knn-posthoc}{Diagrama \textit{Critical Difference} para \textit{k-NN}.}{knn-posthoc}
215
+
\imagenFlotante{../img/memoria/aspectos-relevantes/gaussnb-posthoc}{Diagrama \textit{Critical Difference} para \textit{Gaussian NB}.}{gaussnb-posthoc}
216
+
\imagenFlotante{../img/memoria/aspectos-relevantes/tree-posthoc}{Diagrama \textit{Critical Difference} para \textit{Decission Tree}.}{tree-posthoc}
217
+
218
+
\FloatBarrier
219
+
\subsection{Conclusiones}
220
+
Tal y como se apreciaba ya en la Figura~\ref{fig:exp-general}, no existe una diferencia significativa entre los diferentes métodos de selección de instancias en relación con el aprendizaje semi-supervisado seguro. Los diagramas representando la Diferencia Crítica \ref{fig:knn-posthoc}, \ref{fig:gaussnb-posthoc}, \ref{fig:tree-posthoc}, y todos los faltantes no añadidos, no reportan en ningún caso un claro vencedor sobre los demás, para ningún clasificador base analizado.
221
+
222
+
Estos resultados nos permiten llegar a la conclusión de que si bien los tiempos de ejecución son ligeramente inferiores en función del método de selección de instancias utilizado (en función de la <<agresividad>> con la que elimine instancias), los resultados que cabe esperar sean reportados por las diferentes aproximaciones analizadas, serán similares en tanto en cuanto se ejecuten en condiciones idénticas.
0 commit comments