Skip to content

Commit 310413f

Browse files
Merge pull request #221 from dpr1005/development
Improved documentation
2 parents 885aa0f + 85f0413 commit 310413f

File tree

7 files changed

+101
-6
lines changed

7 files changed

+101
-6
lines changed

docs/anexos.pdf

30.8 KB
Binary file not shown.

docs/anexos.tex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
\usepackage{placeins}
1111
\usepackage{adjustbox}
1212
\usepackage{tabularx}
13+
\usepackage{diagbox}
14+
\usepackage{etoolbox}
15+
\usepackage{siunitx}
16+
\usepackage{array}
1317
\usepackage{placeins}
1418

1519
% Moneda

docs/bibliografia.bib

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,4 +519,14 @@ @article{wu2018self
519519

520520
@misc{SCRUMWIKI, title={Scrum (desarrollo de software)}, url={https://es.wikipedia.org/wiki/Scrum-(desarrollo-de-software)}, note={https://es.wikipedia.org/wiki/Scrum-(desarrollo-de-software)}, year={2022}}
521521

522-
@misc{SKLEARNGUIDELINES, title={Scikit-Learn Coding guidelines}, url={https://scikit-learn.org/stable/developers/develop.html#coding-guidelines}, year={2022}, author={scikit-learn developers}}
522+
@misc{SKLEARNGUIDELINES, title={Scikit-Learn Coding guidelines}, url={https://scikit-learn.org/stable/developers/develop.html#coding-guidelines}, year={2022}, author={scikit-learn developers}}
523+
524+
@article{triguero2014characterization,
525+
title={On the characterization of noise filters for self-training semi-supervised in nearest neighbor classification},
526+
author={Triguero, Isaac and S{\'a}ez, Jos{\'e} A and Luengo, Juli{\'a}n and Garc{\'\i}a, Salvador and Herrera, Francisco},
527+
journal={Neurocomputing},
528+
volume={132},
529+
pages={30--41},
530+
year={2014},
531+
publisher={Elsevier}
532+
}

docs/memoria.pdf

2.78 KB
Binary file not shown.

docs/tex/5_Aspectos_relevantes_del_desarrollo_del_proyecto.tex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ \subsection{Docker}
4646

4747
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.
4848

49+
\subsection{Validación de la integridad de los algoritmos implementados}
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+
52+
\begin{itemize}
53+
\item Los algoritmos de selección de instancias han sido validados contra los homónimos correspondientes proporcionados por \texttt{Weka}, \textit{sortware} de ML desarrollado por la Universidad de Waikato.
54+
\item Los algoritmos de aprendizaje semi-supervisado han sido validados contra los implementados por el grupo de investigación ADMIRABLE de la Universidad de Burgos.
55+
\end{itemize}
56+
4957

5058
\subsection{Experimentación de filtros de ruido para aprendizaje semi-supervisado}
5159
\imagenFlotante{../img/memoria/aspectos-relevantes/General}{Resumen en función del clasificador y filtro.}{exp-general}

docs/tex/6_Trabajos_relacionados.tex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,16 @@ \subsection{Comparativa entre MLaaS y UBUMLaaS}
9797
\section{Aprendizaje Semi-Supervisado Seguro}
9898
A pesar de que se han hecho multitud de aproximaciones y estudios sobre Clasificación Semi-Supervisada~\cite{jesper2020survey}, los prototipos son habitualmente clasificados dependiendo de diferentes suposiciones relacionadas con la distribución de los ejemplos etiquetados y no etiquetados. Habitualmente los modelos se basan en la suposición de existencia de matrices y/o \textit{clusters}. Si los datos corresponden a un \textit{manifold}\footnote{Término técnico que se utiliza para clasificar espacios de dimensión arbitraria. Para cada número entero existe un espacio plano llamado espacio euclidiano que tiene características muy similares al plano cartesiano. Esencialmente una generalización del espacio euclidiano tal que localmente (áreas pequeñas) es aproximadamente lo mismo que el espacio euclidiano pero el espacio entero no tiene las mismas propiedades del espacio euclidiano cuando se observa en su totalidad.} de menor dimensionalidad que el espacio de entrada, es adecuado para suposición de \textit{manifold}~\cite{wang2011solution}.
9999

100-
Siguiendo con esta idea en mente, la construcción de grafos permite determinar el comportamiento de los modelos, ya que dos prototipos conectados por una aritsta fuerte probablemente indique que ambos prototipos poseen la misma etiqueta~\cite{wang2013semi}. La suposición de \textit{cluster} supone que prototipos <<similares>> deberían tener las mismas etiquetas.
100+
Siguiendo con esta idea en mente, la construcción de grafos permite determinar el comportamiento de los modelos, ya que dos prototipos conectados por una arista fuerte probablemente indique que ambos prototipos poseen la misma etiqueta~\cite{wang2013semi}. La suposición de \textit{cluster} supone que prototipos <<similares>> deberían tener las mismas etiquetas.
101101

102102
La aplicación de técnicas de <<autoetiquetado>> son aquellas que aprovechan un clasificador supervisado para etiquetar la clase desconocida y no hacen suposiciones específicas acerca de los datos de entrada~\cite{triguero2015self}. Para ello lo habitual es entrenar un clasificador o un conjunto de ellos y posteriormente aprovechar el conocimiento adquirido por este(os) clasificador(es) para entrenar uno nuevo que produzca mejores resultados~\cite{blum1998combining, zhou2005tri}.
103103

104104
Todos los modelos con los que habitualmente se trabaja se basan únicamente en el uso de aquellas instancias que se encuentran etiquetadas para obtener una mayor diversidad en los clasificadores, sin pararse a utilizar la gran y abundante información que se encuentra dentro de los prototipos no etiquetados~\cite{zhao2021safe}. Pero es aquí donde surge el problema real, no se tiene en cuenta que estos clasificadores iterativos también introducen ruido en el conjunto de datos etiquetados, es decir, clasifican mejor o peor pero no son seguros; todo ello propicia que en determinadas ocasiones el rendimiento empeore.
105105

106+
En~\cite{triguero2014characterization} se propone el análisis de características de una gran variedad de filtros de ruido de diferente naturaleza, con el objetivo de mejorar el auto-entrenamiento en aprendizaje semi-supervisado orientado a problemas de clasificación. Muchos de los filtros propuestos ya se habían estudiado previamente en aprendizaje supervisado, pero el proceso de filtrado puede ser más difícil de realizar cuando se trata de problemas de aprendizaje semi-supervisado debido al reducido número de instancias que se poseen etiquetadas.
107+
108+
\cite{triguero2014characterization} comprueba como los filtros <<globales>>, algoritmos CF e IPF, destacan como la familia de filtros con mejor rendimiento, mostrando que la concordancia de hipótesis de varios clasificadores también es robusta cuando se reduce la proporción de datos etiquetados disponibles. La mayoría de los enfoques locales necesitan más datos etiquetadas para rendir mejor. El uso de estos filtros ha dado lugar a un mejor rendimiento que el logrado por métodos de auto-formación como son SETRED y SNNRCE. Obteniendo como conclusión que el uso de filtros <<globales>> es muy recomendable en el campo en el que se enmarca tanto este como el citado trabajo.
109+
106110
Con el fin de trabajar con aprendizaje semi-supervisado seguro, en~\cite{zhao2021safe} se propone una nueva forma de trabajar con clasificadores supervisados en un \textit{ensemble}, los cuales a partir de múltiples iteraciones y pasadas sobre el conjunto de datos etiquetados lo acabarán etiquetando de forma segura. Para ello los clasificadores son entrenados con conjuntos de datos extraídos de los prototipos etiquetados y los cuales han sido seleccionados entre aquellos que poseen una baja ambigüedad. Posteriormente se etiquetas aquellos prototipos para los cuales los clasificadores acuerdan mediante mayoría de la clase a la que corresponde y se reentrenan los modelos.
107111

108112
De la misma forma que se acaba de ver cómo hay trabajos en la literatura acerca de mejorar los métodos ya existentes de clasificación semi-supervisada, también existen métodos basados en \textit{clusters} los cuáles eran brevemente introducidos al principio de esta sección. Uno de los mayores problemas que se encontraban éstos métodos era el poder generalizar para cualquier conjunto de datos independientemente de cuál fuese su distribución~\cite{adankon2011help, gan2013using}.

docs/tex/D_Manual_programador.tex

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -519,18 +519,87 @@ \subsection{Pruebas del sistema}
519519

520520
El resultado de las ejecuciones se puede ver la Figura~\ref{fig:tests-superados-is-ssl}.
521521

522+
\subsection{Validación}
523+
Todos los algoritmos que se incluyen en la biblioteca han sido probados y testados en múltiples iteraciones con el fin de garantizar su integridad, de forma que sea capaces de reportar los resultados adecuados y su implementación sea correcta según se propusieron en sus correspondientes \textit{papers} de publicación.
522524

525+
Los algoritmos de selección de instancias han sido testados contra los homónimos propuestos por \texttt{Weka}, y en ambos se han utilizado árboles de decisión (J48 en \texttt{Weka}) y vecinos más cercanos, como clasificadores base para realizar la comparativa. La experimentación se ha realizado mediante validación cruzada, con 5 \textit{folds}, tanto para \texttt{Weka} como para los implementados. Se ha tenido en cuenta la diferencia de lenguajes de programación Java (\texttt{Weka}) y los implementados en Python.
523526

527+
En las Tablas~\ref{tab:is-algs-checks-knn}~y~\ref{tab:is-algs-checks-tree} se aprecia la comparativa uno a uno de los resultados arrojados por cada uno de los algoritmos para cada uno de los clasificadores base utilizados. Si bien puede observarse como para determinados pares conjunto de datos : algoritmo, no son compatibles por diferentes motivos, la muestra es lo suficientemente grande como para asegurar una variación menor al $\pm 5\%$ su fiabilidad.
524528

525529

530+
De igual manera, los algoritmos de aprendizaje semi-supervisado han sido validados contra los propios del grupo de investigación ADMIRABLE de la Universidad de Burgos. Estos últimos sí que se encuentran implementados en Python, por lo que se esperan resultados prácticamente idénticos. La experimentación en esta ocasión también se ha realizado con validación cruzada de 5 \textit{folds}, pero como se trata de conjuntos de datos de semi-supervisado, ha sido una validación cruzada estratificada.
526531

532+
En la Tabla~\ref{tab:ssl-algs-check} se aprecia la comparativa uno a uno de los resultados arrojados por cada uno de los algoritmos. En el caso del \textit{Co-Training}, la implementación desarrollada por este proyecto es capaz de soportar conjuntos de datos con más de dos vistas significativas (internamente las re-trabaja), mientras que el propuesto por ADMIRABLE no. Los resultados son tal y como se esperaba, con variaciones del $\pm 1\%$.
527533

534+
\begin{landscape}
535+
\begin{table}[]
536+
\centering
537+
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
538+
\begin{tabular}{l|cc|cc|cc|cc|cc}
539+
\toprule
540+
\multirow{2}{*}{\diagbox{Dataset}{Algoritmo}} & \multicolumn{2}{c}{CNN} & \multicolumn{2}{c}{RNN} & \multicolumn{2}{c}{ICF} &\multicolumn{2}{c}{MSS} & \multicolumn{2}{c}{DROP3} \\
541+
~ & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka \\
542+
\midrule
543+
Contraceptive & \bfseries 46,71 & 45,48 & \bfseries 46,71 & 41,34 & 43,86 & \bfseries 45,14 & \bfseries 47,32 & 46,83 & 46,13 & \bfseries 46,36 \\
544+
Yeast & \bfseries 51,41 & 49,60 & \bfseries 50,20 & 42,86 & 52,18 & \bfseries 54,38 & \bfseries 52,69 & 49,80 & \bfseries 57,12 & 56,53 \\
545+
Wine Quality Red & \bfseries 51,91 & 51,22 & 48,34 & \bfseries 53,04 & 52,59 & \bfseries 53,41 & \bfseries 54,91 & 51,10 & \bfseries 57,32 & 56,16 \\
546+
Segment & \bfseries 87,53 & 83,42 & \bfseries 78,48 & 75,80 & \bfseries 90,43 & 90,39 & \bfseries 93,98 & 92,29 & 87,45 & \bfseries 92,64 \\
547+
Wine Quality White & 47,66 & \bfseries 48,65 & 42,18 & \bfseries 45,67 & \bfseries 53,15 & 49,47 & \bfseries 51,29 & 50,61 & \bfseries 51,79 & 51,59 \\
548+
Banana & \bfseries 87,34 & 87,28 & \bfseries 86,83 & 77,49 & 81,53 & \bfseries 87,08 & \bfseries 88,26 & 86,57 & 85,13 & \bfseries 89,45 \\
549+
Phoneme & \bfseries 84,92 & 83,98 & \bfseries 81,46 & 80,03 & 82,60 & \bfseries 84,09 & \bfseries 87,27 & 85,16 & 82,70 & \bfseries 86,09 \\
550+
Page Blocks & 94,77 & \bfseries 95,36 & \bfseries 94,77 & 93,09 & \bfseries 95,87 & 92,84 & 95,63 & \bfseries 95,74 & 93,47 & \bfseries 95,49 \\
551+
Texture & 87,22 & \bfseries 90,64 & 81,11 & \bfseries 84,91 & 92,47 & \bfseries 94,85 & \bfseries 97,98 & 97,20 & 92,31 & \bfseries 97,11 \\
552+
\bottomrule
553+
\end{tabular}
554+
\caption{Comparación de resultados ACC de los algoritmos de selección de instancias, el clasificador base es \textit{3-NN}.}\label{tab:is-algs-checks-knn}
555+
\end{table}
528556

557+
\begin{table}[]
558+
\centering
559+
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
560+
\begin{tabular}{l|cc|cc|cc|cc|cc}
561+
\toprule
562+
\multirow{2}{*}{\diagbox{Dataset}{Algoritmo}} & \multicolumn{2}{c}{CNN} & \multicolumn{2}{c}{RNN} & \multicolumn{2}{c}{ICF} &\multicolumn{2}{c}{MSS} & \multicolumn{2}{c}{DROP3} \\
563+
~ & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka & IS-SSL & Weka \\
564+
\midrule
565+
Contraceptive & \bfseries 51,87 & 51,19 & \bfseries 51,87 & 41,68 & 45,01 & \bfseries 50,03 & 51,45 & \bfseries 51,93 & 49,42 & \bfseries 50,37 \\
566+
Yeast & 51,55 & \bfseries 51,68 & \bfseries 50,20 & 42,31 & 38,68 & \bfseries 53,57 & \bfseries 54,51 & 51,08 & 52,80 & \bfseries 55,99 \\
567+
Wine Quality Red & \bfseries 54,98 & 54,41 & \bfseries 55,41 & 47,84 & 46,72 & \bfseries 53,35 & \bfseries 56,22 & 54,91 & 56,35 &\bfseries 56,41 \\
568+
Titanic & 57,06 & \bfseries 78,87 & 57,06 & \bfseries 61,08 & \bfseries 37,51 & 32,30 & \bfseries 32,30 & \bfseries 32,30 & \bfseries 59,93 & --- \\
569+
Segment & \bfseries 88,18 & 84,59 & \bfseries 82,86 & 72,03 & \bfseries 82,51 & 86,28 & \bfseries 92,86 & 78,18 & \bfseries 82,25 & 75,11 \\
570+
Wine Quality White & \bfseries 52,42 & 52,12 & \bfseries 47,12 & 45,28 & \bfseries 53,48 & 48,88 & \bfseries 51,56 & 50,90 & \bfseries 50,51 & 50,31 \\
571+
Banana & \bfseries 84,62 & 55,17 & \bfseries 84,17 & 56,23 & \bfseries 58,68 & 55,17 & \bfseries 86,57 & 55,17 & \bfseries 83,26 & 55,45 \\
572+
Phoneme & \bfseries 78,41 & 73,47 & 72,17 & \bfseries 73,48 & 68,74 & \bfseries 74,85 & \bfseries 82,07 & 69,41 & 75,13 & \bfseries 76,70 \\
573+
Page Blocks & 95,08 & \bfseries 95,91 & \bfseries 95,08 & 93,24 & 83,95 & \bfseries 95,60 & 95,63 & \bfseries 96,02 & 92,69 & \bfseries 93,95 \\
574+
Texture & \bfseries 77,02 & 74,87 & 69,75 & \bfseries 72,24 & 65,53 & \bfseries 74,62 &\bfseries 85,27 & 80,16 & 78,49 & \bfseries 79,05 \\
575+
\bottomrule
576+
\end{tabular}
577+
\caption{Comparación de resultados ACC de los algoritmos de selección de instancias, el clasificador base es \textit{Decision Tree}.}\label{tab:is-algs-checks-tree}
578+
\end{table}
529579

530580

581+
\begin{table}[]
582+
\centering
583+
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
584+
\begin{tabular}{l|cc|cc|cc}
585+
\hline
586+
\multirow{2}{*}{\diagbox{Dataset}{Algoritmo}} & \multicolumn{2}{c}{Co-Training} & \multicolumn{2}{c}{Tri-Training} & \multicolumn{2}{c}{Democratic Co-Learning} \\
587+
~ & IS-SSL & ADMIRABLE & IS-SSL & ADMIRABLE & IS-SSL & ADMIRABLE \\
588+
\midrule
589+
Contraceptive & \bfseries 47,52 & --- & 45,82 & \bfseries 46,64 & 47,11 & \bfseries 47,39 \\
590+
Yeast & \bfseries 23,47 & --- & 13,20 & \bfseries 23,31 & 51,75 & 5\bfseries 2,35 \\
591+
Wine Quality Red & \bfseries 52,66 & --- & 51,66 & \bfseries 55,16 & 61,10 & \bfseries 62,23 \\
592+
Titanic & \bfseries 77,33 & \bfseries 77,33 & \bfseries 77,33 & \bfseries 77,33 & \bfseries 78,46 & \bfseries 78,46 \\
593+
Segment & \bfseries 66,02 & --- & 78,01 & \bfseries 79,91 & 95,58 &\bfseries 95,93 \\
594+
Wine Quality White & \bfseries 46,18 & --- & 42,51 & \bfseries 44,36 & 59,35 & \bfseries 62,07 \\
595+
Banana & 60,06 & \bfseries 61,04 & \bfseries 62,06 & 61,08 & 87,92 & \bfseries 88,47 \\
596+
Phoneme & \bfseries 77,50 & 76,00 & 74,24 & \bfseries 75,98 & \bfseries 87,12 & 86,94 \\
597+
Page Blocks & \bfseries 88,52 & --- & 81,94 &\bfseries 89,55 & \bfseries 95,52 & 95,38 \\
598+
Texture & \bfseries 74,62 & --- & 75,76 & \bfseries 77,44 & \bfseries 97,20 & 96,93 \\
599+
\bottomrule
600+
\end{tabular}
601+
\caption{Comparación de resultados ACC de los algoritmos de aprendizaje semi-supervisado.}\label{tab:ssl-algs-check}
602+
\end{table}
531603

532604

533-
534-
535-
536-
605+
\end{landscape}

0 commit comments

Comments
 (0)