Skip to content

Commit

Permalink
Memoir has been typo checked #245
Browse files Browse the repository at this point in the history
  • Loading branch information
dpuenteramirez committed Jun 6, 2022
1 parent b69231f commit 1a832eb
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 11 deletions.
Binary file modified docs/memoria.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions docs/memoria.tex
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@

\noindent Expone:

\noindent Que el alumno D. \nombre, con DNI dni, ha realizado el Trabajo final de Grado en Ingeniería Informática titulado <<Estudio de métodos de selección de instancias en aprendizaje Semi-Supervisado y aplicación web de MLaaS>>.
\noindent Que el alumno D. \nombre, con DNI 71303486J, ha realizado el Trabajo final de Grado en Ingeniería Informática titulado <<Estudio de métodos de selección de instancias en aprendizaje Semi-Supervisado y aplicación web de MLaaS>>.

\noindent Y que dicho trabajo ha sido realizado por el alumno bajo la dirección del que suscribe, en virtud de lo cual se autoriza su presentación y defensa.

Expand Down Expand Up @@ -459,7 +459,7 @@
% Abstract en castellano
\renewcommand*\abstractname{Resumen}
\begin{abstract}
Aquellos algoritmos más comúnmente utilizados en la literatura no acostumbran a encontrarse disponibles a través de bibliotecas existentes que los recojan, induciendo la necesidad de que el científico de datos que los necesite deba implementarlos y validarlos antes de poder hacer uso de los mismos.
Aquellos algoritmos más comúnmente utilizados en la literatura no acostumbran a encontrarse disponibles a través de bibliotecas existentes que los recojan, induciendo la necesidad de que el científico de datos que los necesite deba implementarlos y validarlos antes de poder hacer uso de estos.

El primer objetivo del proyecto es la creación de dos bibliotecas, las cuales recojan los algoritmos más comunes de selección de instancias, y de aprendizaje semi-supervisado. Las bibliotecas se validarán y se comprobará su integridad, además se realizará una experimentación completa con el fin de validar la hipótesis:\\
\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?>>}.\\
Expand Down
10 changes: 5 additions & 5 deletions docs/tex/3_Conceptos_teoricos.tex
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ \subsection{Aprendizaje semi-supervisado}\label{subsec:Aprendizaje-Semi-Supervis

En el aprendizaje transductivo, el problema es abordado desde la predicción de las etiquetas de las instancias no etiquetadas, dadas de antemano, teniendo en cuenta tanto los datos no etiquetados como los que sí lo están para entrenar un clasificador. Mientras que en el aprendizaje inductivo se consideran los datos etiquetados y no etiquetados como datos de entrenamiento, siendo su objetivo el predecir los ejemplos no vistos.

Para que el aprendizaje sea fructuoso requiere que las instancias se encuentren inter-relacionadas entre sí por alguna de sus características~\cite{javatpoint_semisupervised} indica las siguientes suposiciones que se dan en el aprendizaje semi-supervisado.
Para que el aprendizaje sea fructuoso requiere que las instancias se encuentren interrelacionadas entre sí por alguna de sus características~\cite{javatpoint_semisupervised} indica las siguientes suposiciones que se dan en el aprendizaje semi-supervisado.
\begin{enumerate}
\item \textbf{Continuity} o continuidad. Se asume que los objetos cercanos entre sí se encontrarán en el mismo \textit{cluster} o grupo de etiquetas.
\item \textbf{\textit{Clustering}} o agrupamiento. Las instancias son divididas en diferentes grupos discretos, compartiendo todos los elementos de un \textit{cluster} la misma etiqueta.
Expand All @@ -79,7 +79,7 @@ \subsection{Aprendizaje semi-supervisado}\label{subsec:Aprendizaje-Semi-Supervis


\section{Algoritmos de aprendizaje semi-supervisado}\label{sec_alg:semi-supervised}
A continuación se van a presentar los algoritmos implementados en este trabajo dentro del aprendizaje semi-supervisado.
A continuación, se van a presentar los algoritmos implementados en este trabajo dentro del aprendizaje semi-supervisado.

\subsection{\textit{Self-training}}
Los métodos de auto-etiquetado (\textit{self-training}), son uno de los métodos más sencillos de pseudo-etiquetado que existen~\cite{triguero2015self}. Consisten en un único clasificador el cual utiliza aprendizaje supervisado, el clasificador es entrenado con datos etiquetados conocidos al comienzo del entrenamiento y por los que se van conociendo a medida que pasan las iteraciones. Es decir, el clasificador inicialmente es entrenado con aquellos datos para los que se posea una etiqueta, y en sucesivas iteraciones se le reentrenará con el nuevo conjunto de datos etiquetado, que es el resultante de añadir a los datos etiquetados previos, aquellas predicciones con un elevado \textit{confidence level}~\cite{jesper2020survey}.
Expand Down Expand Up @@ -173,7 +173,7 @@ \subsection{\textit{Democratic Co-Training}}

Es por ello por lo que \textit{Democratic Co-Learning} utiliza un conjunto de datos etiquetados, \textit{L}, uno de no etiquetados, \textit{U}, y $A_1,\dots ,A_n$ para $n \geq 3$, siendo $n$ los algoritmos de aprendizaje supervisado, ver Algoritmo~\ref{alg:Democratic-Co}. El algoritmo comienza entrenando los $n$ clasificadores sobre el conjunto de datos etiquetado $L$; y para cada instancia $x$ del conjunto de no etiquetados $U$, cada clasificador predice una etiqueta $c_i \in \mathcal{C} = \lbrace c_1, c_2, \dots , c_r\rbrace$. Siendo $c_k$ la predicción mayoritaria. Posteriormente los $n$ clasificadores son re-entrenados con los nuevos datos etiquetados (añadidos a los que ya teníamos), este proceso se realiza de manera iterativa hasta que no se seleccionen más datos para realizar el etiquetado. Para la selección final se realizar un voto mayoritario ponderado entre los $n$ clasificadores.

Una instancia $x$ nunca será etiquetada por la decisión única de un clasificador, a menos que la mayoría de los clasificadores estén de acuerdo. Además se requiere que la suma de los valores medios de confianza de los clasificadores del grupo mayoritario sea mayor, que la suma de los valores medios de confianza de los clasificadores de los grupos minoritarios, siendo la confianza media de un clasificador $ (l + h)/2
Una instancia $x$ nunca será etiquetada por la decisión única de un clasificador, a menos que la mayoría de los clasificadores estén de acuerdo. Además, se requiere que la suma de los valores medios de confianza de los clasificadores del grupo mayoritario sea mayor, que la suma de los valores medios de confianza de los clasificadores de los grupos minoritarios, siendo la confianza media de un clasificador $ (l + h)/2
$ para $l$ y $h$ definidas por el intervalo de confianza del 95\% $\left[l,h\right]$.

Finalizando con la combinación de todas las hipótesis generadas para retornar la hipótesis final. Para realizar el cálculo utiliza un sistema de votación mayoritaria de entre las posibles clases, para hilar un poco más fino, se considera también para cada clasificador su valor de confianza de la predicción.
Expand Down Expand Up @@ -425,7 +425,7 @@ \section{Técnicas de selección de instancias}\label{sec:tecnicas-seleccion-ins
En la Tabla~\ref{tab:instance-selection-methods} se aprecian aquellos algoritmos implementados en primera instancia para la reducción de instancias dentro de $T$, el objetivo de todos ellos es que el subconjunto generado, $S$, sea capaz de clasificar correctamente $T$ en su totalidad prácticamente.

\subsubsection{Algoritmos de selección de instancias}\label{subsubsec:Instance-Selection-Algorithms}
Existen multitud de algoritmos a día de hoy que son capaces de reducir el número de instancias de $T$, en este trabajo se van a comentar los pertenecientes a la Tabla~\ref{tab:instance-selection-methods}. Cada uno de ellos tiene sus ventajas y sus desventajas como cabe esperar, en la literatura no apreciamos un <<este es mejor que aquel>> o similar.
Existen multitud de algoritmos hoy en día que son capaces de reducir el número de instancias de $T$, en este trabajo se van a comentar los pertenecientes a la Tabla~\ref{tab:instance-selection-methods}. Cada uno de ellos tiene sus ventajas y sus desventajas como cabe esperar, en la literatura no apreciamos un <<este es mejor que aquel>> o similar.

\paragraph{Algoritmo de edición de Wilson}\label{paragraph:ENN}
\hfill \break
Expand Down Expand Up @@ -617,7 +617,7 @@ \subsubsection{Algoritmos de selección de instancias}\label{subsubsec:Instance-
\hfill \break
Bajo el nombre de \textit{Decremental Reduction Optimization Procedure, DROP}~\cite{wilson2000reduction} nos encontramos con hasta 5 aproximaciones para la resolución del mismo problema. Todas ellas seleccionan prototipos en función de \textit{socio} y \textit{asociado}. Definidos como:
\begin{itemize}
\item Socio. Sea $X \not= \emptyset$, el socio de un objeto $P$ el cual pertenece al conjunto $X$, es aquél objeto que tiene a $P$ como uno de sus $k$ vecinos más cercanos.
\item Socio. Sea $X \not= \emptyset$, el socio de un objeto $P$ el cual pertenece al conjunto $X$, es aquel objeto que tiene a $P$ como uno de sus $k$ vecinos más cercanos.
\item Asociado. Todo prototipo que contenga a $P$ como a uno de sus $k$ vecinos más cercanos, será denominado asociado de $P$, denotado con la expresión $P.A_{1,\dots,a}$ donde $a$ es el número de asociados de $P$.
\end{itemize}

Expand Down
6 changes: 3 additions & 3 deletions docs/tex/4_Tecnicas_y_herramientas.tex
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ \subsection{Metodología SCRUM}\label{SCRUM}
\end{figure}

\subsubsection{\textit{Sprints}}
Los \textit{sprints} son periodos breves de \textbf{tiempo fijo} en el que el equipo trabaja para completar una cantidad de trabajo pre-establecida. Si bien muchas guías asocian los \textit{sprints} a la metodología ágil, asociando la metodología ágil y la metodología seguida en \textit{scrum} como si fueran lo mismo, cuando no lo son. La metodología ágil constituye una serie de principios, y la metodología \textit{scrum} es un marco de trabajo con la única finalidad de conseguir resultados.
Los \textit{sprints} son periodos breves de \textbf{tiempo fijo} en el que el equipo trabaja para completar una cantidad de trabajo preestablecida. Si bien muchas guías asocian los \textit{sprints} a la metodología ágil, asociando la metodología ágil y la metodología seguida en \textit{scrum} como si fueran lo mismo, cuando no lo son. La metodología ágil constituye una serie de principios, y la metodología \textit{scrum} es un marco de trabajo con la única finalidad de conseguir resultados.

A pesar de las similitudes los \textit{sprints} poseen un objetivo subyacente, entregar con frecuencia \textit{software} de trabajo.

Expand All @@ -29,7 +29,7 @@ \subsubsection{\textit{Sprint meetings}}
\end{itemize}

\subsubsection{Artifacts}
Uno de los componentes más importantes de cara a la metodología \textit{scrum} son los artefactos, o \textit{artifacts} por su nombre en inglés. Éstos incluyen el \textit{product backlog}, el \textit{sprint backlog} y los \textit{burn down charts}.
Uno de los componentes más importantes de cara a la metodología \textit{scrum} son los artefactos, o \textit{artifacts} por su nombre en inglés. Estos incluyen el \textit{product backlog}, el \textit{sprint backlog} y los \textit{burn down charts}.
\begin{itemize}
\item \textbf{\textit{Product backlog.}} Lista de trabajo ordenada por las prioridades para el equipo de desarrollo. Es generada a partir de las reuniones de planificación de los \textit{sprints}, contiene los requisitos. Se encuentra actualizado y clasificado en función de la periodicidad asignada a las tareas, pudiendo ser de corto o largo plazo. Aquellas tareas que se deban resolver a corto plazo deberán estar perfectamente descritas antes de asignarlas esta periodicidad, implicando que se han diseñado las historias de usuario completas, así como el equipo de desarrollo ha establecido las estimaciones correspondientes. Los elementos a largo plazo pueden ser abstractos u opacos, conviene que estén estimados en la medida de lo posible para poder tener en cuenta el tiempo que llevará desarrollarla.

Expand Down Expand Up @@ -60,7 +60,7 @@ \subsection{Python}

Python fue desarrollado al principio de la década de 1990 por Guido van Rossum en el Stichting Mathematish Centrum, CWI, en el Reino de los Países Bajos. Implementado como el sucesor del lenguaje ABC. Actualmente el lenguaje sigue siendo desarrollado por Guido, junto con contribuciones de muchos otros. El lenguaje está fuertemente influenciado por otros como: ABC, Ada, ALGOL 68, APL, C, C++, CLU, Dylan, Haskell, Icon, Java, Lips, Modula-3, Perl, Standard ML.

El principal objetivo de Python es la automatización de procesos con el fin de minimizar tanto complicaciones como tiempo de desarrollo. Debido a estas dos características, a día de hoy Python es el lenguaje de programación más utilizado para desarrollo de todo tipo de aplicaciones, tanto es así que, según las últimas estadísticas recuperadas por PYPL, ver~\cite{pyplindex}, además es el lenguaje de programación sobre el que más tutoriales se buscan en el top buscadores (Google, Bing, DuckDuckGo,\dots). Se aplica en campos tales como:
El principal objetivo de Python es la automatización de procesos con el fin de minimizar tanto complicaciones como tiempo de desarrollo. Debido a estas dos características, hoy en día Python es el lenguaje de programación más utilizado para desarrollo de todo tipo de aplicaciones, tanto es así que, según las últimas estadísticas recuperadas por PYPL, ver~\cite{pyplindex}, además es el lenguaje de programación sobre el que más tutoriales se buscan en el top buscadores (Google, Bing, DuckDuckGo,\dots). Se aplica en campos tales como:
\begin{itemize}
\item Ciencia de datos. Uso de las bibliotecas de Python desarrolladas para el análisis y visualización de datos.
\item Aprendizaje automático. Dado que Python es un lenguaje de programación tan estable, flexible y sencillo, es perfecto para varios proyectos de aprendizaje automático (ML) e inteligencia artificial (AI). De hecho, Python es uno de los lenguajes favoritos entre los científicos de datos, y hay muchas bibliotecas y paquetes de aprendizaje automático e IA disponibles en Python.
Expand Down
2 changes: 1 addition & 1 deletion docs/tex/6_Trabajos_relacionados.tex
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ \subsection{\textit{Frameworks} y bibliotecas}\label{related:frameworks}
Biblioteca de Python la cual da soporte a la definición de expresiones matemáticas empleadas en aprendizaje automático, la optimización de estas expresiones y la evaluación de la eficiencia con el uso de GPU. Siendo capaz de rivalizar implementaciones escritas en C. Theano está distribuida bajo licencia BSD\footnote{Licencia de \textit{software} libre permisiva, de igual manera que la licencia MIT, posee menos restricciones que GPL, siendo muy cercana al dominio público.}.

\item \textbf{\textit{Veles}.}
Escrito en C++, sus aplicaciones se encuentran dentro del marco del aprendizaje profundo. A pesar de ello utiliza Python para la automatización y coordinación de sus nodos. Sus objetivos principales son la flexibilidad y el rendimiento. Permitiendo la normalización de los datos antes de introducirlos en un cluster.
Escrito en C++, sus aplicaciones se encuentran dentro del marco del aprendizaje profundo. A pesar de ello utiliza Python para la automatización y coordinación de sus nodos. Sus objetivos principales son la flexibilidad y el rendimiento. Permitiendo la normalización de los datos antes de introducirlos en un \textit{cluster}.

Veles permite entrenar redes convolucionales, redes recurrentes, redes totalmente conectadas y otras topologías populares.

Expand Down

0 comments on commit 1a832eb

Please sign in to comment.