Skip to content

Commit

Permalink
Terminado de revisar la memoria
Browse files Browse the repository at this point in the history
  • Loading branch information
jlgarridol committed Jun 30, 2019
1 parent 435c91b commit f21e9c8
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 29 deletions.
Binary file modified doc/memoria.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions doc/memoria.tex
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
\RequirePackage[table]{xcolor}
\RequirePackage{xtab}
\RequirePackage{multirow}
\usepackage{amssymb}

\widowpenalty10000
\clubpenalty10000
Expand Down
2 changes: 1 addition & 1 deletion doc/tex/1_Introduccion.tex
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
\capitulo{1}{Introducción}

Gracias al avance de las técnicas y algoritmos de minería de datos, disciplinas no directamente relacionadas con la computación se han ido beneficiando de las ciencias de datos, a modo particular, la medicina está desarrollándose hacia modelos más preventivos gracias a las predicciones que se pueden generar utilizando estos métodos.
Gracias al avance de las técnicas y algoritmos de minería de datos, disciplinas no directamente relacionadas con la computación se han ido beneficiando de las ciencias de datos. A modo particular, la medicina está desarrollándose hacia modelos más preventivos gracias a las predicciones que se pueden generar utilizando estos métodos.

Es por este motivo que podemos ver en la literatura científica de los últimos años como se relaciona medicina y ciencia de datos, por ejemplo en estudios de detección de caídas~\cite{tolkiehn2011fall} o la motorización del sueño para la prevención de apneas~\cite{kortelainen2012sleepmonitoring}. En este trabajo de fin de grado, el objetivo es la detección de crisis epilépticas a partir de sensores de presión en un colchón y constantes vitales del paciente. Este TFG está adscrito al proyecto homónimo vencedor del concurso universitario \textit{Desafío Universidad Empresa}~\cite{radio:radio_amiga_burgos_2018}

Expand Down
6 changes: 3 additions & 3 deletions doc/tex/2_Objetivos_del_proyecto.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
\section{Objetivos generales}

\begin{itemize}
\item Estudio del estado del arte en detección de crisis epilépticas, tanto en materia de \textit{hardware}, datos utilizados como en técnicas y modelos existentes desarrollados por otros científicos. Con esto se busca explorar técnicas no antes utilizadas como también optimizar esfuerzos por los métodos que ya han probado su utilidad.
\item Estudio del estado del arte en detección de crisis epilépticas, tanto en materia de \textit{hardware} y datos utilizados como en técnicas y modelos existentes desarrollados por otros científicos. Con esto se busca explorar técnicas no antes utilizadas como también optimizar esfuerzos al trabajar sobre los métodos que ya han probado su utilidad.
\item Exploración e interpretación de los datos, las formas por las cuales se pueden representar y como se distribuyen los distintos ejemplos que representan crisis respecto a las situaciones normales. Aplicación de filtros, análisis estadísticos, proyecciones de n-variedad (\textit{manifold learning}), etc.
\item Exploración de técnicas de balanceo de datos existentes y aprendizaje automático para conjuntos de datos desequilibrados. Buscar la mejor combinación de técnicas de balanceo y modelos de aprendizaje automático para optimizar la detección de situaciones de crisis.
\item Búsqueda de un modelo que haga una clasificación lo más correcta posible centrando que la predicción sea acertada en situaciones de crisis mediante la optimización del valor del ratio de verdaderos positivos.
\item Búsqueda de un modelo que haga una clasificación lo más correcta posible centrado en que la predicción sea acertada en situaciones de crisis mediante la optimización del valor del ratio de verdaderos positivos.
\item Creación de una \textit{API REST} con la que poder distribuir de los datos de las camas y sus predicciones.
\item Implementar una interfaz web por la cual se puedan ver datos en tiempo real de las camas y sus predicciones.
\end{itemize}
Expand All @@ -26,7 +26,7 @@ \section{Objetivos personales}

\begin{itemize}
\item Contribuir a la mejora de la calidad de vida de pacientes que sufren de epilepsia.
\item Profundizar en el trabajo de investigador, sus metodologías y las fases de por las que pasa un proyecto de investigación.
\item Profundizar en el trabajo de investigador, sus metodologías propias y las fases por las que pasa un proyecto de investigación.
\item Comprender más técnicas de minería de datos, nuevos modelos y nuevas formas de abordar el análisis de datos.
\item Completar mi formación académica con el desarrollo de una aplicación que englobe la mayor cantidad del conocimiento adquirido en el estudio del Grado.
\end{itemize}
12 changes: 6 additions & 6 deletions doc/tex/3_Conceptos_teoricos.tex
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ \subsection{Definiciones}

\textbf{Preprocesado}~\cite{ubu:mineria1}: proceso por el cual se realizan operaciones sobre los datos con el fin de facilitar la interpretación de los mismos. Engloba procesos como la eliminación de instancias ruidosas, suavizado de señales mediante filtros, normalización de las características, eliminación de aquellas que poseen una baja variabilidad, el análisis estadístico y la proyección de los datos en espacios de menor dimensionalidad para su visualización, etc.

\textbf{Análisis de componentes principales}~\cite{wiki:pca}: se trata de una técnica estadística que se utiliza para crear una descripción del conjunto de datos utilizando unas variables no correlacionadas. El objetivo es encontrar los ejes de máxima varianza y realizar proyecciones de menor dimensionalidad de los datos facilitando la interpretación de los datos.
\textbf{Análisis de componentes principales}~\cite{wiki:pca}: técnica estadística que se utiliza para crear una descripción del conjunto de datos utilizando unas variables no correlacionadas. El objetivo es encontrar los ejes de máxima varianza y realizar proyecciones de menor dimensionalidad de los datos facilitando la interpretación de los datos.

\textbf{Proyección a 2-variedad} (\textit{Manifold learning}): se define como variedad a un objeto geométrico que representa un espacio que se parece localmente, la idea intuitiva sobre este concepto es el de un mapa, que proyecta en dos dimensiones un objeto que existe en tres dimensiones~\cite{wiki:manifold}. Por tanto, una proyección a 2-variedad es el proceso por el cual podemos disminuir la dimensionalidad de un conjunto de datos a dos dimensiones y poder estudiarlo mejor~\cite{tool:scikit-learn}. De la misma manera que no existe una única forma de transformar una esfera a un plano, tampoco existe una única forma de proyectar el conjunto de dimensiones a dos dimensiones, esto se explora en el capítulo 5 del Apéndice \textit{Cuaderno de investigación} adjuntado.
\textbf{Proyección a 2-variedad} (\textit{Manifold learning}): se define como variedad de dimensión n a un objeto geométrico que representa un espacio que se parece localmente a $\mathbb{R}^n$, la idea intuitiva sobre este concepto es el de un mapa, que proyecta en dos dimensiones un objeto que existe en tres dimensiones~\cite{wiki:manifold}. Por tanto, una proyección a 2-variedad es el proceso por el cual podemos disminuir la dimensionalidad de un conjunto de datos a dos dimensiones y poder estudiarlo mejor~\cite{tool:scikit-learn}. De la misma manera que no existe una única forma de transformar una esfera a un plano, tampoco existe una única forma de proyectar el conjunto de dimensiones a dos dimensiones, esto se explora en el capítulo 5 del Apéndice \textit{Cuaderno de investigación} adjuntado.

\textbf{Clasificador}: se trata de un algoritmo de aprendizaje supervisado que tiene de entrada los datos de una instancia y obtiene de salida la predicción de la clase a la que pertenece.
\textbf{Clasificador}: algoritmo de aprendizaje supervisado que tiene de entrada los datos de una instancia y obtiene de salida la predicción de la clase a la que pertenece.

\textbf{Detección de anomalías}~\cite{wiki:ooc}: también conocido como clasificación de clase única (\textit{one-class clasification}), es un tipo de clasificador que se centra en acotar el espacio en el cual las instancias de una única clase existen de tal manera que detecte como anomalía cualquier instancia que no esté dentro de ese espacio.

\textbf{\textit{Ensemble}}~\cite{ubu:mineria3}: consiste en un método que se basa en la premisa que un conjunto de clasificadores débiles al combinarse genera un clasificador fuerte. Bajo esta definición se pueden crear diversas técnicas que permitan crear estos clasificadores. Algunas de estas técnicas son: crear subconjuntos aleatorios de las instancias para entrenar el mismo clasificador con diversos datos (\textit{bagging}); entrenar a los clasificadores con pesos diferentes para las instancias o remuestreando los datos según este criterio (\textit{boosting}); usar diferentes semillas para los clasificadores (comité aleatorio); creación de conjuntos de árboles de decisión según diferentes criterios (bosques).
\textbf{\textit{Ensemble}}~\cite{ubu:mineria3}: método que se basa en la premisa de que un conjunto de clasificadores débiles al combinarse genera un clasificador fuerte. Bajo esta definición se pueden crear diversas técnicas que permiten crear estos clasificadores. Algunas de estas técnicas son: crear subconjuntos aleatorios de las instancias para entrenar el mismo clasificador con diversos datos (\textit{bagging}); entrenar a los clasificadores con pesos diferentes para las instancias o remuestrear los datos según este criterio (\textit{boosting}); usar diferentes semillas para los clasificadores (comité aleatorio); creación de conjuntos de árboles de decisión según diferentes criterios (bosques).

\textbf{Conjunto de datos desequilibrados}: también conocidos como desbalanceados, trata de un conjunto de datos en el cual las clases no están igualmente representadas existiendo una gran desproporción. Esta diferencia puede ser, como ejemplo, con proporciones de un 1\% para la clase minoritaria y un 99\% para la mayoritaria. Esto provoca en clasificadores normales que las instancias de la clase minoritaria sean ignoradas ya que un de predecir siempre las instancias como clase mayoritaria el acierto sería muy alto (en el ejemplo anterior tendríamos una precisión del 99\%).
\textbf{Conjunto de datos desequilibrados}: también conocidos como ``\textit{desbalanceados}'', es de un conjunto de datos en el cual las clases no están igualmente representadas existiendo una gran desproporción. Esta diferencia es alrededor de un 1\% para la clase minoritaria y un 99\% para la mayoritaria. Esto provoca en clasificadores normales que las instancias de la clase minoritaria sean ignoradas ya que derivaría en predecir siempre las instancias como las de la clase mayoritaria el acierto sería muy alto (en el ejemplo anterior tendríamos una precisión del 99\%).

\textbf{Balanceo de datos}~\cite{diez2015random, diez2015diversity, galar2012review}: este es el proceso por el cual se pretende equilibrar la proporción entre las clases de un conjunto de datos desequilibrados. Estos métodos pueden ser de sobremuestreo creando nuevas instancias de la clase minoritaria a partir de los datos existentes, submuestreo eliminando instancias de la clase mayoritaria o el muestreo aleatorio creando un \textit{ensemble} utilizando diversos conjuntos balanceados de manera aleatoria.
\textbf{Balanceo de datos}~\cite{diez2015random, diez2015diversity, galar2012review}: proceso por el cual se pretende equilibrar la proporción entre las clases de un conjunto de datos desequilibrados. Estos métodos pueden ser de sobremuestreo creando nuevas instancias de la clase minoritaria a partir de los datos existentes, submuestreo, eliminando instancias de la clase mayoritaria o el muestreo aleatorio, creando un \textit{ensemble} utilizando diversos conjuntos balanceados de manera aleatoria.
8 changes: 4 additions & 4 deletions doc/tex/4_Tecnicas_y_herramientas.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

\section{Investigación}

El proyecto ha sido desarrollado aplicando diversas técnicas de minería de datos siguiendo el proceso KDD~\cite{ubu:mineria1} (Fig.~\ref{fig:kdd}). Aunque en esta memoria se explicará superficialmente, el desarrollo completo de la investigación se encuentra en el cuaderno de investigación adjuntado.
El proyecto ha sido desarrollado aplicando diversas técnicas de minería de datos siguiendo el proceso KDD~\cite{ubu:mineria1} (Fig.~\ref{fig:kdd}). En esta memoria se explicará de forma sucinta, el desarrollo completo de la investigación se encuentra en el cuaderno de investigación adjuntado.

\begin{figure}
\centering
Expand All @@ -23,7 +23,7 @@ \section{Investigación}
\item \textbf{Transformación}
Se han generado datos estadísticos para series temporales que optimizaban el valor del área bajo la curva PCR~\cite{saito2015precision} desde los datos preprocesados.
\item \textbf{Minería de datos}
Se ha aplicado un sistema de clasificación doble, en primer lugar se utiliza un árbol de clasificación muy simple que divide entre las situaciones de despierto (bajas presiones en la cama) y acostado, en esta situación se aplica un clasificador \textit{Random Forest}~\cite{breiman2001random} para determinar si hay crisis o no.
Se ha aplicado un sistema de clasificación doble, en primer lugar se utiliza un árbol de clasificación muy simple que divide entre las situaciones de ``despierto''' (bajas presiones en la cama) y ``acostado'', en esta situación se aplica un clasificador \textit{Random Forest}~\cite{breiman2001random} para determinar si hay crisis o no.
\item \textbf{Interpretación}
Se ha desplegado una aplicación web con datos en tiempo real para evaluar de manera constante la situación actual del paciente.
\end{enumerate}
Expand All @@ -45,7 +45,7 @@ \subsection{\textit{Backend}}
\paragraph{Flask~\cite{tool:flask}}\textit{Microframwork} de código abierto (BSD) que ofrece una capa de abstracción muy alta de un servicio web, se utiliza para la creación de la lógica de negocio mediante la gestión de las rutas.
\paragraph{Jinja~\cite{tool:jinja}}Gestor de plantillas de código abierto (BSD) para Python, se utiliza para la creación de la interfaz web mediante la creación de páginas dinámicas en HTML.
\paragraph{Flask-SocketIO~\cite{tool:flask-socketio}}Integración del servicio de \textit{sockets}, \textit{Socket.IO}~\cite{tool:socketio}, compatible con los \textit{WebSockets}, se utiliza para la difusión de los datos en pacientes.
\paragraph{Gevent y Eventlet~\cite{tool:eventlet, tool:gevent}}Bibliotecas para el uso de tiempo real, asíncrono de hilos para el uso de \textit{Socket.IO}, el uso de estas bibliotecas es facilitar el procesado y difusión en tiempo real de los datos de los pacientes.
\paragraph{Gevent y Eventlet~\cite{tool:eventlet, tool:gevent}}Bibliotecas para el uso de tiempo real, asíncrono de hilos para el uso de \textit{Socket.IO}, el uso dado a estas bibliotecas es facilitar el procesado y difusión en tiempo real de los datos de los pacientes.

Para la programación del sistema de hilos que distribuyen datos en tiempo real se siguieron los paradigmas de la programación orientada a objetos y de programación funcional. El sistema de rutas siguió las guías del \textit{microframework Flask}.

Expand All @@ -64,7 +64,7 @@ \section{Herramientas generales}

\subsubsection{Servidor}
\paragraph{\textit{Nginx}}servidor web y de proxy reverso ligero de alto rendimiento~\cite{wiki:nginx} de código abierto (BSD simplificada).
\paragraph{\textit{MariaDB}}sistema de gestión de bases de datos derivado de \textit{MySQL}~\cite{wiki:mariadb} de código abierto (GPLv2). Este motor es extremadamente compatible con \textit{MySQL} porque es creado como una bifuración de esto para garantizar la existencia de este motor bajo GPL.
\paragraph{\textit{MariaDB}}sistema de gestión de bases de datos derivado de \textit{MySQL}~\cite{wiki:mariadb} de código abierto (GPLv2). Este motor es extremadamente compatible con \textit{MySQL} porque es creado como una bifurcación de esto para garantizar la existencia de este motor bajo GPL.
\paragraph{\textit{Proxmox}}es un entorno de virtualización de servidores~\cite{wiki:proxmox} de código abierto (AGPL). Su función principal es el despliegue y gestión de máquinas virtuales y contenedores.
\paragraph{\textit{Anarchy Arch}}sistema GNU/Linux derivado de \textit{ArchLinux}~\cite{wiki:arch} sobre el cual se ejecuta todo el servidor, está alojado en una máquina virtual del entorno \textit{Proxmox}.

Expand Down
Loading

0 comments on commit f21e9c8

Please sign in to comment.