diseÑo de una herramienta basada en machine...
TRANSCRIPT
DISEÑO DE UNA HERRAMIENTA BASADA EN MACHINE LEARNING PARA TOMA DE DECISIONES EN LOS PROCESOS DE DUE DILIGENCE
DEL DERECHO LABORAL
Por
Laura Lizarazo Jhonathan Borda
Proyecto de grado propuesto como cumplimiento de los requisitos para la especialización en
Ingeniera de software
Director: Ing. Joaquín Meza
Revisor: Ing. Oswaldo Romero
Universidad Distrital Francisco José de Caldas Facultad de Ingeniería
Bogotá 2018
ii Introducción
El presente trabajo tiene como eje central a la inteligencia artificial que es una rama de las ciencias de
la computación que poco a poco se ha formado como parte de nuestra vida cotidiana y está cambiando
nuestro mundo con significativos avances. Está creando una revolución en conocimiento, formas de
hacer las cosas y cambiando nuestra propia visión del mundo. Así como ahora no concebimos el
mundo sin la web, en unos años no tardaremos en acostumbrarnos y asimilar la inteligencia artificial
como parte de una vida normal.
La inteligencia artificial tiene muchas ramas, pero en la que nos basamos para este proyecto fue
machine learning o aprendizaje de máquina, la idea principal de esta disciplina es hacer que los
procesos con el pasar del tiempo del tiempo se vuelvan más precisos y efectivos, esto se logra con la
identificación de patrones en estos procesos y la aplicación de algoritmos que analizan un conjunto de
datos para imitar el comportamiento humano deseado.
En Colombia la inteligencia artificial está creciendo en las diferentes áreas de aplicación, pero a pesar
de este crecimiento ha tenido poca aceptación de algunas personas y empresas que tienen la errada
creencia de que se reemplazará el trabajo humano, siendo que esta ha servido más para reforzar los
procesos y con la rama de la IA - machine learning disminuir el error humano.
El interés de este documento además de dar una visión general de la inteligencia artificial es
específicamente enfocarnos en el tema de aprendizaje de máquina, y en cómo se aplicó este
conocimiento al análisis de proyectos legales. Nuestro punto de partida y eje para diseñar un modelo
de aprendizaje está basado en un caso de estudio real; tomando la situación de una empresa y
llevándola a una red neuronal.
iii Tabla de Contenido
PARTE I. CONTEXTUALIZACIÓN DE LA INVESTIGACIÓN ..................................................... ix
1. Capítulo I Descripción de la investigación .......................................................................................... 1
1.1 Planteamiento/Identificación del problema ................................................................................ 1
1.1.1 Planteamiento del problema ...................................................................................................... 1
1.1.2 Formulación del problema ......................................................................................................... 1
1.1.3 Sistematización del problema .................................................................................................... 2
1.2 Objetivos ........................................................................................................................................... 2
1.2.1 Objetivo general .......................................................................................................................... 2
1.2.2 Objetivos específicos .................................................................................................................. 2
1.3 Justificación de la investigación ..................................................................................................... 3
1.3.1 Justificación práctica ................................................................................................................... 3
1.4 Hipótesis ........................................................................................................................................... 3
1.5 Metodología de la investigación ..................................................................................................... 3
1.5.1 Tipo de estudio ............................................................................................................................ 3
1.5.2 Método de investigación ............................................................................................................ 4
PARTE II. DESARROLLO DE LA INVESTIGACIÓN ........................................................................ 5
2. Capítulo II Análisis .................................................................................................................................. 6
2.1 Negocio ............................................................................................................................................. 6
2.1.1 Posse Herrera Ruiz ..................................................................................................................... 6
2.1.2 Proyectos Legales ........................................................................................................................ 6
2.1.3 Derecho Laboral .......................................................................................................................... 7
2.1.4 Due Dilegence ............................................................................................................................. 7
2.2 Inteligencia Artificial ....................................................................................................................... 8
2.2.1 Introducción ................................................................................................................................ 8
2.2.2 Definición y teoría de la inteligencia artificial ......................................................................... 9
2.2.3 Métodos de la inteligencia artificial convencional ................................................................ 11
2.3 Machine Learning .......................................................................................................................... 16
2.3.1 Aprendizaje supervisado .......................................................................................................... 16
2.3.2 Aprendizaje sin supervisión ..................................................................................................... 17
2.3.3 Función de costo ....................................................................................................................... 17
2.3.4 Sobreajuste ................................................................................................................................. 22
2.3.5 Tipos de redes neuronales ........................................................................................................ 22
2.4 Tipos de datos ................................................................................................................................ 34
2.4.1 Datos nominales ........................................................................................................................ 35
2.4.2 Datos ordinales .......................................................................................................................... 35
2.4.3 Datos de intervalo ..................................................................................................................... 36
2.4.4 Datos de relación ....................................................................................................................... 37
3. Capítulo III Desarrollo de la investigación ......................................................................................... 39
3.1 Análisis ............................................................................................................................................ 39
3.1.1 Organización .............................................................................................................................. 39
3.1.2 Proceso ....................................................................................................................................... 40
3.1.3 Aplicación ................................................................................................................................... 40
3.2 Requerimientos .............................................................................................................................. 43
3.2.1 Requerimientos Funcionales .................................................................................................... 43
3.2.2 Requerimientos NO Funcionales ........................................................................................... 43
iv 3.3 Desarrollo ................................................................................................................................... 44
3.3.1 Origen de los datos ................................................................................................................... 44
3.3.2 Exploración de datos ................................................................................................................ 46
3.3.3 Redes de entrenamiento ........................................................................................................... 57
3.3.4 Web Service ................................................................................................................................ 74
3.3.5 Cliente -Web .............................................................................................................................. 74
3.4 Validación del prototipo ............................................................................................................... 77
PARTE III. CIERRE DE LA INVESTIGACIÓN .................................................................................. 80
4. Conclusiones ............................................................................................................................................ 81
5. Trabajos Futuros ..................................................................................................................................... 82
6. Bibliografía ............................................................................................................................................... 83
ANEXOS .......................................................................................................................................................... 85
ANEXO I. Fragmento del DataSet utilizado en el proyecto ................................................................ 86
ANEXO II. Código del cliente de consumo del servicio...................................................................... 89
ANEXO III. Configuración Web Service ............................................................................................... 90
Instalación de Jupyter Kernel Gateway ............................................................................................... 90
Configuración de Notebook ................................................................................................................. 92
v Lista de Imágenes
Imagen 1. Dendral primer sistema experto. Tomado de:
https://expertossitemas.webcindario.com/dendral.html ........................................................ 12
Imagen 2. Grafo de síntomas y enfermedades. Tomado de: https://ccc.inaoep.mx/~esucar/Clases-
mgp/caprb.pdf ....................................................................................................................... 14
Imagen 3. Dispositivos basados en la lógica difusa ...................................................................... 15
Imagen 4. Ejemplo de grafico de datos. Autores .......................................................................... 18
Imagen 5. Regresión lineal simple. Autores ................................................................................. 20
Imagen 6. Desviación de regresión lineal. Autores ...................................................................... 20
Imagen 7. Desviación mínima. Autores ........................................................................................ 21
Imagen 8. Comparación de sobreajuste. Autores .......................................................................... 22
Imagen 9. Perceptrón. Tomado de:
https://es.wikipedia.org/wiki/Perceptr%C3%B3n#/media/File:Perceptr%C3%B3n_5_unidad
es.svg ..................................................................................................................................... 23
Imagen 10. Condición lógica AND. Tomado de:
https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.AND.svg ........... 24
Imagen 11. Condición lógica OR. Tomado de:
https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.OR.svg .............. 25
Imagen 12. Condición lógica XOR. Tomado de:
https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.XOR.svg ........... 25
Imagen 13. Función de paso. Tomado de:
https://en.wikipedia.org/wiki/Step_function#/media/File:Dirac_distribution_CDF.svg ...... 27
Imagen 14. Función sigmoide. Tomado de:
https://es.wikipedia.org/wiki/Funci%C3%B3n_sigmoide#/media/File:Funci%C3%B3n_sig
moide_01.svg ........................................................................................................................ 27
Imagen 15. Función tangencial. Tomado de:
https://es.wikipedia.org/wiki/Tangente_hiperb%C3%B3lica#/media/File:Hyperbolic_Tange
nt.svg ..................................................................................................................................... 27
Imagen 16. Función rectificadora. Tomado de:
https://es.wikipedia.org/wiki/Rectificador_(redes_neuronales)#/media/File:Rectifier_and_so
ftplus_functions.svg .............................................................................................................. 28
Imagen 17. Redes recurrentes. Tomado de:
https://www.asimovinstitute.org/author/fjodorvanveen/ ...................................................... 29
Imagen 18. Autocodificadores. Tomado de:
https://www.asimovinstitute.org/author/fjodorvanveen/ ...................................................... 29
Imagen 19. Redes con aleatoriedad. Tomado de:
https://www.asimovinstitute.org/author/fjodorvanveen/ ...................................................... 30
Imagen 20. Red profunda. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/ 31
Imagen 21. Redes profundas compuestas. Tomado de:
https://www.asimovinstitute.org/author/fjodorvanveen/ ...................................................... 31
Imagen 22. Funcionamiento de red convolucional. Tomado de:
https://stats.stackexchange.com/questions/146413/why-convolutional-neural-networks-
belong-to-deep-learning ........................................................................................................ 32
Imagen 23. Redes especializadas. Tomado de:
https://www.asimovinstitute.org/author/fjodorvanveen/ ...................................................... 32
vi Imagen 24. Red de turing. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
............................................................................................................................................... 34
Imagen 25. Ejemplo de datos nominales. Tomado de: https://medium.com/ai3-theory-practice-
business/the-engineers-guide-to-machine-learning-data-processing-data-types-
ba40e6bf8765 ........................................................................................................................ 35
Imagen 26. Ejemplo de datos ordinales. Tomado de: https://medium.com/ai3-theory-practice-
business/the-engineers-guide-to-machine-learning-data-processing-data-types-
ba40e6bf8765 ........................................................................................................................ 36
Imagen 27. Ejemplo de datos de intervalo. Tomado de: https://medium.com/ai3-theory-practice-
business/the-engineers-guide-to-machine-learning-data-processing-data-types-
ba40e6bf8765 ........................................................................................................................ 37
Imagen 28. Ejemplo de datos de relación. Tomado de: https://medium.com/ai3-theory-practice-
business/the-engineers-guide-to-machine-learning-data-processing-data-types-
ba40e6bf8765 ........................................................................................................................ 38
Imagen 29. Punto de vista de negocio. Autores ............................................................................ 39
Imagen 30. Punto de vista de proceso. Autores ............................................................................ 40
Imagen 31. Microservicios. Tomado de: https://docs.microsoft.com/es-
es/azure/architecture/guide/architecture-styles/images/microservices-logical.svg .............. 41
Imagen 32. Diseño básico de microservicio. Autores ................................................................... 41
Imagen 33. Diseño general de arquitectura de microservicios. Tomado de:
https://docs.microsoft.com/es-es/azure/architecture/guide/architecture-
styles/images/microservices-acs.png .................................................................................... 42
Imagen 34. Diseño y herramientas del prototipo. Autores ........................................................... 42
Imagen 35. Diseño de base de datos. Autores. ............................................................................. 44
Imagen 36. Flujo de control de la ETL. Autores .......................................................................... 45
Imagen 37. Flujo de datos de la ETL. Autores. ............................................................................ 45
Imagen 38. Asignaciones de columnas. Autores. ......................................................................... 46
Imagen 39. Categorización de los datos ....................................................................................... 47
Imagen 40. Histograma de la frecuencia de los datos. Autores .................................................... 48
Imagen 41.Cantidad de casos de Due Diligence por tipo de empresa. Autores. .......................... 49
Imagen 42. Cantidad de casos Due Diligence por tipo de caso. Autores. .................................... 50
Imagen 43. Tiempo en días por tipo de caso y empresa. Autores. ............................................... 50
Imagen 44. Total de casos por país. Autores. ............................................................................... 51
Imagen 45. Comportamiento de los días. Autores ........................................................................ 51
Imagen 46. Ruta principal de árbol de decisiones. Autores. ......................................................... 53
Imagen 47. Ruta alterna de árbol de decisiones. Autores. ............................................................ 54
Imagen 48. Ruta corta en árbol de decisiones. Autores. ............................................................... 55
Imagen 49. Dataset de horas por categorías. Autores. .................................................................. 57
Imagen 50. Logotipo de Anaconda, Jupyter y Spider. Tomado de:
https://www.youtube.com/watch?v=Q0jGAZAdZqM ......................................................... 58
Imagen 51. Primer modelo de regresión lineal. Autores. ............................................................. 59
Imagen 52. Procesamiento del primer modelo de regresión lineal. Autores. ............................... 61
Imagen 53. Prototipo de red neural. Autores. ............................................................................... 63
Imagen 54. Notebook del modelo. Autores. ................................................................................. 65
Imagen 55. Prototipo de red neural sin nodos de activación sigmoide. Autores. ......................... 66
Imagen 56. Prototipo de red neural. Autores. ............................................................................... 67
vii Imagen 57. Notebook del modelo.Autores. .............................................................................. 69
Imagen 58. Prototipo de red neural final sigmoide. Autores. ....................................................... 70
Imagen 59. Características de la maquina donde se realiza el entrenamiento de la red. Autores. 72
Imagen 60. Uso de máquina. Autores. .......................................................................................... 72
Imagen 61. Notebook del modelo final. Autores. ......................................................................... 73
Imagen 62. Reporte del aplicativo. Autores .................................................................................. 75
Imagen 63. Formulario de predicción de datos. Autores. ............................................................. 76
Imagen 64. Componentes del aplicativo. Autores. ....................................................................... 77
Imagen 65. Calculo del error cuadrático. Autores. ....................................................................... 77
viii Lista de tablas
Tabla 1. Campos de interfaz. Autores. .......................................................................................... 43
Tabla 2. Validación del prototipo de regresión lineal. Autores. ................................................... 63
Tabla 3. Comparación de predicción del prototipo vs datos reales. ............................................. 78
ix
PARTE I. CONTEXTUALIZACIÓN DE
LA INVESTIGACIÓN
1
1. Capítulo I
Descripción de la investigación
1.1 Planteamiento/Identificación del problema
1.1.1 Planteamiento del problema
En todo tipo de proyecto se desea hacer un correcto planeamiento de recursos, gestión y
costes. En este caso en particular se evaluó el proceso de tipo Due Diligence en el área de
práctica del derecho laboral, este proceso y su metodología se detalla más adelante de manera
puntual, pero consiste en una evaluación de los estados jurídicos de una empresa.
Actualmente este análisis se hace por medio de comparación de experiencias con proyectos
anteriores similares. Esta forma de análisis pone a prueba totalmente al experto que debe
realizar esta labor, y muchas veces se prestan casos o situaciones particulares que hacen que se
produzca costos diferentes que pueden causar una mala evaluación e incluso una pérdida de
capital. Si esto no se trata, este problema va a seguir generando pérdidas de dinero y recursos,
además de la valiosa información que se está perdiendo de cada uno de esos proyectos. Por
esta razón se propone el diseño de un sistema basado en machine learning para analizar y
aprender de los proyectos con los que se alimenta y así mitigar los posibles errores de análisis
y poder usar los datos de cada proyecto cargado para hacer predicciones más contundentes.
1.1.2 Formulación del problema
Entonces, ¿Cómo se puede minimizar el riesgo de fallo en la evaluación? Esta pregunta es el
eje de nuestra investigación y se quiere abordar por medio de tecnologías innovadoras y
competitivas.
En este ejercicio se optó por usar Machine Learning como motor y procesador, para generar
un modelo que cumpla en responder a esta pregunta de investigación, y que solvente el
problema planteado, además de generar una forma de seguir construyendo un sistema más
sólido y eficaz.
2
1.1.3 Sistematización del problema
Pero a raíz de esta selección surgen nuevos interrogantes.
• ¿Cómo trabaja y se implemente el Aprendizaje de máquina?
• ¿Qué modelos neurales podemos usar para realizar el análisis de datos
requeridos?
• ¿Qué variables son relevantes, dentro de nuestro proceso de análisis?
• ¿Qué modelo es el que más se ajusta a nuestro proyecto?
1.2 Objetivos
1.2.1 Objetivo general
Diseñar el prototipo de una aplicación que haga uso de los algoritmos de aprendizaje
supervisado para realizar un análisis de los proyectos de tipo “Due Diligence” en el derecho
laboral para que a través de las pasadas experiencias encuentre etiquetas de coincidencia y
prediga estimaciones precisas, disminuyendo los actuales altos índices de error.
1.2.2 Objetivos específicos
• Obtener una definición de Machine Learning que sirva como herramienta y poderla
llevar al campo práctico.
• Realizar un análisis que prediga estimaciones de presupuesto, recursos y tiempo cada
vez más asertivas; basándonos en la definición teórica y modelos identificados.
• Validar la efectividad del modelo funcional propuesto, por medio de la simulación de
procesamiento de datos para así mejorar o reestructurar el diseño.
3
1.3 Justificación de la investigación
1.3.1 Justificación práctica
Machine Learning es una rama de la inteligencia artificial y se tomó como modelo para generar
el proceso de aprendizaje aplicado al Due Diligence en el derecho laboral. Teniendo en cuenta
esta premisa se realizó una investigación previa para recolectar la mayor cantidad de
información que encamine a la solución, una vez recolectada esta información se inició con el
diseño del modelo. Generando así una base de conocimiento (ya que no existe), y además un
instrumento que se puede desarrollar, implementar y probar, o usar para futuras
investigaciones. En pocas palabras, se generó un diseño para análisis de proyectos altamente
estable y evolutivo, capaz de adaptarse y crecer a medida que se alimenta de datos de proyectos.
El producto de esta investigación sirve como referencia y campo de prueba para el
mejoramiento de los procesos de Due Diligence en otras áreas como tributario, litigios,
inmobiliario, etc... Para la firma de abogados Posse Herrera Ruiz, y se espera que se pueda
generar un modelo lo suficientemente complejo y estructurado para que pueda seguir
aprendiendo y adaptarse a otro tipo de proyectos fuera del área legal.
1.4 Hipótesis
La herramienta que plantea este proyecto será capaz de evaluar correctamente la cantidad de
recursos requeridos en los casos de Due Diligence, además con su uso se disminuirá la pérdida
de tiempo, dinero y otros recursos, minimizando los riesgos en la gestión del proyecto legal.
1.5 Metodología de la investigación
1.5.1 Tipo de estudio
El tipo de estudio es descriptivo ya que uno de los objetivos es identificar elementos y
características del problema de investigación, ahondar de forma teórica y generar un modelo
de análisis basado en las experiencias de una organización, además se espera que el resultado
4
de esta investigación permita formular nuevas hipótesis y generar un modelo mucho más
consistente y complejo que se adapte a nuevos escenarios.
1.5.2 Método de investigación
Se utilizó el método de investigación inductivo para plantear el marco teórico y así
fundamentar y contextualizar la investigación. Posteriormente para generar el diseño se
cambió al método deductivo, dando como resultado un método combinado de inducción-
deducción.
5
PARTE II. DESARROLLO DE LA
INVESTIGACIÓN
6
2. Capítulo II
Análisis
2.1 Negocio
2.1.1 Posse Herrera Ruiz Este proyecto fue un ejercicio que se realizó en la firma de abogados Posse Herrera Ruiz, la
revista dinero define a esta firma como “una firma de abogados que actualmente cuenta con
16 socios y más de 120 abogados especializados en diferentes áreas de prácticas e industrias
en Bogotá, Medellín y Barranquilla, siendo así una firma ‘full service’ con presencia en estas
ciudades, que maneja temas como propiedad intelectual, derecho público y comercio exterior.”
(Posse Herrera Ruiz, firma colombiana del año, 2015)
La firma se especializa en las siguientes áreas:
• Fusiones y Adquisiciones
• Derecho de la Competencia
• Resolución de Conflictos
• Derecho Corporativo
• Propiedad Intelectual
• Derecho Laboral y Migratorio
• Impuestos, Aduanas y Comercio Exterior
• Seguros
• Mercado de Capitales y Derecho Financiero
• Recursos Naturales y Energía
• Infraestructura y Asociaciones Público-Privadas APP
• Inmobiliario, Urbanismo y Agroindustria
• Medio Ambiente
2.1.2 Proyectos Legales Legal Projects Management (LPM) es la aplicación de conceptos de gestión de proyectos al
7
área jurídica, busca estimar un caso jurídico como un proyecto y poderle dar un manejo
estratégico de planificación, ejecución y cierre. Por lo general se rigen bajo PMI aunque en los
últimos años se han implementado proyectos con metodologías ágiles como SCRUM.
Es importante controlar un caso jurídico desde antes que comience para poder llegar a
culminarlo exitosamente para las partes interesadas. Como cliente se está interesado en
conocer el costo del proyecto anticipadamente y como proveedor de servicios se desea saber
la estimación de recursos para hacer una propuesta al cliente.
2.1.3 Derecho Laboral El derecho laboral en Colombia surge cuando los trabajadores se manifiestan ante el
desconocimiento de sus necesidades por parte de los grandes empresarios, a raíz de esto se
crean las leyes que protegen sus horarios de trabajo, su derecho a la salud y las pensiones, etc...
Y se vuelven necesarios como servicios mínimos a los cuales debe tener acceso un trabajador.
El derecho laboral es la rama del derecho que regula las relaciones entre empleadores y
empleados, con el objetivo de proteger el derecho fundamental al trabajo que tenemos los
colombianos y el cual el estado debe garantizar.
2.1.4 Due Diligence
Cuando se planea realizar un proceso de compra (generalmente de empresas) es necesario
realizar una investigación integral en todas las áreas (Laboral, tributario, fiscal, medio
ambiental, litigios, etc.…) de los estados de la empresa objeto de la adquisición, esta
investigación permite al cliente tener el máximo de información disponible en especial los
riesgos existentes y se pueda tomar una decisión con respecto a la adquisición.
En el área Laboral el proceso de Due Diligence debe identificar los aspectos donde haya
incumplimientos legales y que tengan impacto en los estados financieros, los siguientes
aspectos se consideran como los más importantes a tener en cuenta:
8
• Cumplimiento de la norma vigente
• Revisión del proceso de contratación
• Políticas de recursos humanos
• Política retributiva
• Seguros sociales
• Ausentismo en la compañía
• Incapacidades
• Otros... atrasos salariales, indemnizaciones de pago, riesgos laborales etc. 2.2 Inteligencia Artificial
2.2.1 Introducción
La palabra inteligencia aún no cuenta con una definición aceptada, sin embargos varios autores
de diferentes ramas del conocimiento coinciden que la inteligencia es una capacidad o
habilidad cognitiva de representar el mundo que nos rodea. Una de estas representaciones más
básicas es el lenguaje y la escritura donde por medio de los símbolos se intenta representar la
realidad.
La Real Academia de la Lengua Española define la inteligencia como la facultad de conocer,
entender o comprender, pero es una definición muy ambigua puesto que hasta un sistema de
aire acondicionado podría considerarse un sistema inteligente de bajo nivel por eso es que hay
muchas formas de definir un comportamiento inteligente y es necesario hacer énfasis en que
para considerar un sistema inteligente, se deben considerar todos los aspectos y demostrar un
alto nivel en las facultades que define la RAE.
La inteligencia artificial se considera que tuvo sus orígenes con los silogismos propuestos por
Aristóteles, esta forma de razonamiento es la base de la lógica y el pensamiento científico,
consta de dos premisas y una conclusión. Después de esto vinieron muchos aportes de
filósofos, matemáticos y científicos como (Boole, Gardner etc..) pero no fue hasta el año 1936
cuando Alan Turing desarrollo la famosa “máquina automática” que es un modelo
computacional de un dispositivo autómata finito donde se pueden leer, escribir o borrar
símbolos. Este concepto es la base del funcionamiento de los computadores que usamos hoy
en día.
9
En 1950 Alan Turing creo el Test de Turing para determinar las habilidades de
comportamiento inteligente en las maquinas, el fundamento de esta prueba era determinar si
las personas lograban diferenciar cuando estaban comunicándose con una maquina o con otro
ser humano.
Con estos aportes de Turing y de otros grandes científicos a la lógica matemática y el
razonamiento, en 1958 John McCarthy en el Instituto Tecnológico de Massachussets (MIT)
consolida el termino de inteligencia artificial refiriéndose a las maquinas que realizan cálculos
inteligentes y proponiendo utilizar el cálculo como un idioma para representar el
conocimiento.
Se pensaba que para los años 70 el mundo iba a estar rodeado de inteligencia artificial, pero
no fue sino hasta los años 90 donde las empresas empezaron a realizar inversiones en el área
de análisis y procesamiento de datos como foco principal en la inteligencia artificial. En 1997
se empodero el termino cuando IBM desarrollo Deep Blue un sistema informático que fue
capaz de vencer al campeón mundial del ajedrez.
2.2.2 Definición y teoría de la inteligencia artificial
La inteligencia artificial es la rama de la ciencia que trata de entender la inteligencia o el
comportamiento inteligente de los seres humanos y replicarlo en la construcción de un sistema
que sea útil en algún área del conocimiento como la psicología, física, economía, etc.
La IA aborda un complejo problema que es determinar “¿Cómo es posible que un diminuto
cerebro (sea biológico o electrónico) tenga capacidad para percibir comprender, predecir y
manipular un mundo que en tamaño y complejidad lo excede?” (Ponce Cruz, 2010) fue aquí
donde se comprendido que la IA debía empezar a comprenderse desde lo más básico de la
raciocinio, el razonamiento animal para luego guiar el enfoque hacia la naturaleza, a partir de
esto surgieron tres grandes grupos en los que se centra la inteligencia artificial:
10
• Comunicación y percepción: Aquí se encuentra todo lo relacionado con el lenguaje
natural y todo lo que se obtiene a través de los sentidos, consiste en intentar que la
maquina pueda comprender el lenguaje y el contexto de las palabras en una
conversación.
• Pensamiento simbólico: La representación mental de las experiencias a través de los
símbolos e imágenes, con esto se busca que la maquina sea capaz de “razonar” según
su base de conocimiento y que no solamente siga una serie de instrucciones lógicas.
• Ingeniería del conocimiento: Transmitir los conocimientos y metodologías de un
experto a un sistema, es la base de los sistemas expertos.
A partir de los anteriores grupos de estudio la IA surgieron los siguientes campos
fundamentales donde cada uno aborda uno o más grupos de estudio, estos campos son:
• Redes neuronales
• Sistemas difusos
• Sistemas expertos
• Redes bayesianas
• Basada en comportamiento
• Robótica
• Aprendizaje de máquina
Con los siguientes enfoques:
• Tecnológico
• Ingenieril
• Científica
Si bien aún estamos en el comienzo del desarrollo de la inteligencia artificial y los sistemas aún
se encuentran muy limitados en su proceso aprendizaje, en la última década ha habido
11
importantes evoluciones en la inteligencia artificial han mejorado procesos y los han hecho
más efectivos con un porcentaje de acierto más alto porque cuentan con muchas ventajas
frente al ser humano como, por ejemplo:
• Agentes externos: No están afectados por factores externos como el tiempo (no
envejecen), Cansancio, Presión, Entorno etc.
• Velocidad: Pueden resolver problemas en menor tiempo que un ser humano y mucho
más eficientemente
• Fortalecimiento de conocimientos
Sin embargo, también cuentan con muchas desventajas como, por ejemplo:
• Incapacidad de aprender de las equivocaciones, lo cual es un proceso de alta
importancia en el conocimiento.
• No cuentan con emociones, moralidad, sentido común, lenguaje natural etc.
2.2.3 Métodos de la inteligencia artificial convencional
2.2.3.1 Sistemas Expertos
Un experto es una persona enfocada en una disciplina especifica. Los sistemas expertos son
una rama de la inteligencia artificial que consisten en un programa computacional que esta
entrenado para el aprendizaje, memorización, razonamiento, comunicación y acción a partir
de una base de conocimientos, que le permite tomar decisiones como lo haría un humano
experto.
Para las compañías de hoy en día puede ser llamativo obtener un sistema experto puesto que
estos sistemas no están susceptibles a situaciones relacionadas con el ser humano como por
ejemplo que el experto se marche o tenga deterioros en su salud mental, además de ser más
rápidos y precisos.
12
Los sistemas expertos son usados en varias áreas como por ejemplo la medicina, donde los
sistemas hacen un diagnostico (inclusive más acertado que el de un ser humano), interpretación
de las imágenes médicas, monitoreo, detección de enfermedades etc. En la milicia donde
cuentan con armamento inteligente, cobertura, protección etc.
El primer sistema experto que se conoció fue Dendral un proyecto que tuvo una duración de
10 años iniciando su desarrollo en los años 60 por Edward Feigenbaum (programador), Bruce
G. Buchanan, Joshua Lederberg (experto en química orgánica) y Carl Djerassi, este tenía como
objetivo colaborar a los químicos orgánicos en la identificación de moléculas orgánicas
desconocidas analizando sus espectros de masas.
Dendral se desarrolló en el lenguaje de programación Lisp que es considerado como el lenguaje
de la inteligencia artificial, desarrollado por John McCarthy y es conocido por ser uno de los
lenguajes de alto nivel más antiguos después de Fortran. Ver Imagen 1.
Imagen 1. Dendral primer sistema experto. Tomado de: https://expertossitemas.webcindario.com/dendral.html
13
Mycin es otro sistema experto desarrollado en los años 70 como tesis doctoral en la
universidad de stanford por Edward Shortliffe (Mycin, s.f.) basado en Dendral, su principal
función consistía en el diagnóstico de bacterias que causaban infecciones en la sangre, a partir
de este diagnóstico generaba la recomendación de un tratamiento dependiendo de la persona.
A pesar de la efectividad de diagnóstico de Mycin nunca pudo salir al mercado por
inconvenientes en materia legal como por ejemplo la responsabilidad de las consecuencias de
los diagnósticos y/o tratamientos equivocados.
Este sistema experto al igual que Dendral estaba desarrollado sobre el lenguaje Lisp, opera
sobre una base de conocimientos con una estructura de control simple:
1. Colección de hechos
2. Conjunto de reglas
3. Generador de inferencias
2.2.3.2 Redes Bayesianas
Una red bayesiana es una técnica estadística muy usada en la rama de la inteligencia artificial
ya que a partir de un conjunto de variables aleatorias y sus relaciones se puede generar un
modelo de dependencia y obtener información interesante sobre cómo se relacionan las
variables y predecir el comportamiento de variables no conocidas en base a las que ya se
conocen, muchas veces este tipo de relación puede ser de causa efecto como por ejemplo
enfermedad y síntoma, si establecemos este concepto un sistema fácilmente puede a partir de
los síntomas predecir las enfermedades y gráficamente se podría ver en la Imagen 2:
14
Imagen 2. Grafo de síntomas y enfermedades. Tomado de: https://ccc.inaoep.mx/~esucar/Clases-mgp/caprb.pdf
2.2.3.3 Sistemas Difusos
Los sistemas fuzzy, borrosos o difusos son una extensión de la lógica, una forma matemática
de representar lo impreciso, vago y ambiguo de los cuantificadores del lenguaje natural que
usamos los seres humanos para compartir las experiencias con términos lingüísticos de bajo
nivel como “muy”, “alto”, “medio”, “moderado”, “bajo” que para un ser humanos serían
fáciles de comprender pero para una máquina que no tiene definidos estos conceptos es muy
relativo y dependerá mucho del contexto que se le esté dando.
Por ejemplo, tenemos la siguiente premisa “el nivel de la temperatura es moderada” un ser
humano comprendería fácilmente esta afirmación, pero no sería tan sencillo para una máquina
que no sabe lo que significa que la temperatura este moderada y dependerá totalmente del
contexto que se le dé al por ejemplo indicarle que la temperatura es considerada como bajo si
es menor a 0 grados centígrados y alta cuando supere los 30 grados centígrados, cuando se
definen estos valores el sistema puede determinar que la temperatura que se está midiendo
cuando esta entre los 0 y los 30 grados es “moderada”.
Por lo tanto, es importante alimentar muy bien los elementos base del sistema y entre más
precisos sean mejores serán los resultados del sistema, por ejemplo, podríamos indicarle el
contexto de “muy caliente”, “hirviendo”, “tibio”, “congelado” y el sistema podría crecer aún
más con la representación de estos intervalos.
15
La lógica difusa se fundamente en las reglas heurísticas “SI” y “ENTONCES” donde cada
enunciado debe ser “borroso” como por ejemplo “Si la temperatura tiende a ser más alta
ENTONCES está haciendo calor” a partir de estas premisas simples se construyen los
sistemas basados en la lógica difusa.
Actualmente muchos de los dispositivos que usamos están basados en la lógica difusa como
lo podemos ver con la Imagen 3:
Imagen 3. Dispositivos basados en la lógica difusa
16
2.3 Machine Learning
Machine learning (Aprendizaje de máquina o Aprendizaje automático) es una rama de la
inteligencia artificial que nace de la necesidad que tienen las máquinas de simular un
aprendizaje, para el análisis o clasificación de datos. Machine learning permite convertir los
datos recolectados en información útil y aplicable, volviendo a la inteligencia artificial en algo
reactivo y proactivo, que se puede adaptar y evolucionar. En este aspecto Machine learning
toma un papel muy importante, ya que es el encargado de dar versatilidad, aprovechar los
cambios y dar un valor agregado a la información recolectada, dándole al sistema una capa más
de análisis y complejidad.
Machine learning tiene dos corrientes de aprendizaje, a continuación, se describirá cada una
de ellas y se introducirá un poco de historia para ver el desarrollo y evolución de estos
conceptos, además de que permitirá explicar conceptos que se usaran más adelante en el
desarrollo del modelo que se propone a solucionar esta investigación.
2.3.1 Aprendizaje supervisado Con el aprendizaje supervisado se tiene un conjunto de datos y de antemano ya se conoce
como debería ser la salida, teniendo en cuenta la relación existente entre la entrada y la salida.
Es decir, se tiene un propósito claro y entendimiento de la relación entre variables.
Dentro del aprendizaje supervisado tenemos dos soluciones posibles, a problemas de
regresión y a problemas de clasificación. En un problema de regresión se trata de predecir un
resultado dentro de un conjunto de resultados continuos, lo que significa que estamos tratando
de asignar variables de entrada en una función lineal. Para comprender un poco mejor el
concepto se plantea el siguiente ejemplo:
Teniendo una cantidad de datos X, que se caracterizan por ser información referente a
atributos de casas (Precio, Tamaño), se desea generar una función para predecir el valor, siendo
17
conscientes que para el ejemplo se supone que la única variable que influye es el tamaño y de
esta depende el precio, pero se podría agregar tantas variables de entrada como se necesitaran.
Para plantear el problema de regresión se puede hacer con la pregunta, ¿Cómo se puede
calcular el precio de un inmueble teniendo como principal dato el tamaño del mismo?
Por el contrario, en un problema de clasificación se trata de predecir los resultados en un
resultado discreto, en otras palabras, se desea asignar las variables de entrada a unas categorías
discretas(conjuntos). Si usamos el ejemplo anterior el planteamiento de la pregunta puede ser,
¿Se vende el inmueble por más o menos del precio solicitado?
2.3.2 Aprendizaje sin supervisión Este tipo de aprendizaje permite abordar problemas con poca o ninguna idea sobre cómo
deberían definirse los resultados, se puede derivar una estructura de los datos de entrada donde
no necesariamente se conoce el efecto de las variables, Se puede derivar esta estructura al
agrupar los datos en función de las relaciones entre las variables, este modelo de aprendizaje
se basa en un concepto de la neurociencia denominado Efecto cóctel, que consiste en la
capacidad del cerebro de enfocar la atención auditiva en un estímulo particular mientras filtra
otros estímulos(auditivos). Este algoritmo de cóctel permite encontrar la estructura en un
entorno caótico, es decir poder identificar los atributos individualmente y un conjunto de
variables.
2.3.3 Función de costo El proceso de entrenamiento de una red neural es el siguiente. Se tiene un conjunto de datos
que corresponde a las variables de entrada y los resultados deseados en un conjunto . Para
dejarlo de una forma más clara, la red neuronal recibe para predecir , de tal manera que
para los datos de entrenamiento se usa una matriz m=( ), una porción de estos datos se
usará para el entrenamiento y la restante para evaluar la eficiencia de la red neuronal, en un
porcentaje recomendado de 90, 10.
18
Cuando se cargan los datos de entrenamiento a la red neuronal, el objetivo de la misma es
identificar y generar una función que dado X sea un buen predictor de Y. Expresado
matemáticamente, es de la siguiente manera h( ) . Donde h es la hipótesis.
Se puede medir la precisión de la función de hipótesis utilizando una función de costo.
Consiste en hacer un promedio (algo más sofisticado) de todos los resultados de la hipótesis
con entradas X y salidas reales de Y, es decir la porción de 10% que se dejó del conjunto de
entrenamiento, que es ahora el conjunto de validación.
Suponiendo que se tiene un conjunto de datos de entrenamiento m, tal como se muestra en la
Imagen 4, el objetivo es minimizar el error cuadrático de cada uno de los puntos (datos de
entrenamiento).
Imagen 4. Ejemplo de grafico de datos. Autores
La línea que se muestra en el gráfico de la Imagen 4 no necesariamente es la más optima, y
corresponde a la ecuación y = mx + b, en este caso m corresponde a la pendiente y b al punto
de origen. El error cuadrático es la distancia entre un punto y línea que se trazó, en este caso
esta línea se define como . Cada uno de los puntos que se muestran en el plano cartesiano
se expresan de la siguiente manera . Por lo que para calcular el error cuadrático de cada
19
uno de los puntos se emplea la ecuación . Por lo tanto, para hallar el error
cuadrático total se utiliza la sumatoria de los errores al cuadrado.
Con esto se obtiene el error cuadrático con respecto a la línea, y una vez concluido este proceso
se puede optimizar m y b para hallar los valores que disminuya el error cuadrático.
En la anterior ecuación se tiene en la primera parte de la igualdad la función de error cuadrático
medio y en la segunda parte la media de la hipótesis. Esta es la función de costo, la cual valida
si la línea descrita es la mejor opción para un conjunto de datos, esto con el gran objetivo de
conseguir la mejor línea posible, tal que las distancias verticales promedio cuadradas de los
puntos dispersos desde la línea sean mínimos. Así se garantiza que las predicciones que se
realizará en base a la función hipótesis sean lo más acertadas posible.
Para dejarlo más claro se hará un ejemplo con datos para poder visualizar cómo se hace el
ajuste de con la función de costo.
Suponiendo que se tiene un conjunto de datos de entrenamiento donde m=[(1,1), (2,2), (3,3)]
20
Imagen 5. Regresión lineal simple. Autores
plot([1,2,3],[1,2,3], '-o')
En este momento, como se muestra en la Imagen 5, se tiene una línea en donde la pendiente
es igual a 1 y la función de error cuadrático es igual a 0, ya que todos los puntos son atravesados
por la línea, ahora se ingresan nuevos datos [(1,0.5), (2,1), (3,1.5)], ver Imagen 6.
Imagen 6. Desviación de regresión lineal. Autores
Plot ([3,2,1,0,1,2,3],[3,2,1,0,0.5,1,1.5], '-o')
21
Se calculará el valor de error cuadrático para los nuevos valores con respeto a la primera línea.
Veamos cómo despejar el primer punto.
Si se continúa despejando más puntos, se obtiene una gráfica paraboloide 3D ya que hay que
notar que la función se construye a partir de los N datos que se tienen como variables A y
B. Aunque para poder observar mejor el punto de mínima desviación se visualiza en 2D, vea
la Imagen 7.
Imagen 7. Desviación mínima. Autores
x=-2:0.1:4;Y=(x.^2)-2*x+1;plot(x,Y)
Se debe tratar de minimizar la función de costo en este caso, es el mínimo global. Con
esto logramos identificar cual es el mejor camino que debe seguir la línea, ya sea para un sistema
de regresión lineal, como para un clasificador.
22
2.3.4 Sobreajuste
El sobre ajuste es un problema que aparece cuando se intenta reducir el error cuadrático a 0,
ya se obliga a la función a crear una línea que cruce por cada uno de los puntos, vea las gráficas
en la Imagen 8 donde se ejemplifica esto.
Imagen 8. Comparación de sobreajuste. Autores
Se introduce una matriz de entrenamiento con 5 datos, con un sobre ajuste como se muestra
en el gráfico de la izquierda., Al ingresar dos nuevos datos, representados en color verde se
puede comparar con el gráfico de la derecha como el sobreajuste afecta el resultado. Por ende,
el sobreajuste en un principio podría parecer el objetivo deseado, pero representa un gran
peligro para la predicción de datos.
2.3.5 Tipos de redes neuronales
Las redes neuronales artificiales están basadas en el concepto de las redes neuronales
biológicas, y como estas, se crean a partir de diferentes conexiones entre las neuronas que la
componen. Las redes neuronales biológicas establecen sus conexiones por medio del
aprendizaje y la repetición y se comunican entre sí por medio del proceso de sinapsis. En el
23
caso de las redes neuronales artificiales, las neuronas están basadas en un concepto anterior,
los árboles de decisiones, que se usan ampliamente en los sistemas expertos. Consiste en un
algoritmo que toma decisiones en forma de cascada, pasando por diferentes condiciones y
evaluaciones para deducir un resultado. Estos árboles se hacen en base a unas condiciones
preestablecidas. En el caso del aprendizaje automático estas condiciones no son
preestablecidas, y se generan a partir de funciones matemáticas, por lo que en una capa alta de
abstracción no se puede saber qué hace cada neurona, para conocerlo se debe resolver cada
una de las ecuaciones que genera ese árbol de decisiones, por este motivo se dice que cada uno
de estos nodos(neuronas) está en una capa oculta, Se puede definir un mínimo y máximo de
estos nodos y controlar su dirección de traspaso de información, en algo equivalente a una
sinapsis artificial. En algunas aplicaciones se pueden hacer nodos de los cuales se conoce su
funcionamiento para tareas específicas. El modelo matemático más simple de un nodo se
denomina perceptrón.
El perceptrón tiene varias unidades de análisis y a cada una se le asigna un peso sináptico, los
datos entran y se procesan en estas unidades que luego generan una función común que genera
el resultado, ver Imagen 9.
Imagen 9. Perceptrón. Tomado de: https://es.wikipedia.org/wiki/Perceptr%C3%B3n#/media/File:Perceptr%C3%B3n_5_unidades.svg
24
Como se mencionó el perceptrón es la neurona artificial más básica, pero independiente de la
complejidad todas las neuronas artificiales están compuestas por variables de entrada
(estímulos), una o varias funciones matemáticas y una salida. Lo que cambia he identifica cada
neurona son los pesos sinápticos y la función que realizan, es decir el peso sináptico es el ajuste
que se hace para acercarse a la respuesta deseada y la función es la encargada de procesar los
valores sinápticos para generar un resultado, hacer la regresión lineal.
Como es lógico deducir, una simple neurona solo es capaz de trabajar con una recta, lo que
traducido a programación es una compuerta lógica and u or, en el caso de una compuerta
lógica xor o expresiones más complejas se requiere el trabajo de múltiples neuronas, así se
pueden trazar múltiples líneas para clasificar los datos, vea las Imágenes 10, 11, y 12.
Imagen 10. Condición lógica AND. Tomado de: https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.AND.svg
25
Imagen 11. Condición lógica OR. Tomado de: https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.OR.svg
Imagen 12. Condición lógica XOR. Tomado de: https://commons.wikimedia.org/wiki/File:Computer.Science.AI.Neuron.XOR.svg
26
Las neuronas se organizan en la misma capa, es decir en un mismo vector que recibe los datos
de entrada ya sea de la capa de entrada o de una capa oculta para así llegar a la capa de salida
con el resultado deseado.
Las neuronas artificiales se especializan en el manejo de datos específicos, es decir al entrenar
una red neuronal, lo que se hace es especializar cada una de sus neuronas en el tratamiento de
ciertos datos, lo que se mide en este entrenamiento es la correlación de las variables de entrada
para así identificar los pesos sinápticos y generar la función de cálculo que dé como resultado
los datos esperados. Entonces, entre más complejo sea el problema a solucionar, más capas
ocultas se deben crear, esto introduce al concepto de aprendizaje profundo o deep learning,
que se estudiará más adelante. En este punto se puede imaginar un problema real que surge
en el entrenamiento de redes neuronales y es la relevancia de las variables de entrada. Es decir,
la cantidad de información no determina la calidad de la misma. Por lo tanto, es obligación de
quien entrena la red asegurar la relevancia de cada una de las variables de entrada.
Retomando la idea de la capa oculta, se puede decir que la capa de salida es la sumatoria de
cada una de las líneas que trazan las funciones que están en cada neurona de la capa oculta. Lo
que da como resultado otra línea. Esto destruiría totalmente la red neuronal, ya que
matemáticamente la sumatoria de varias líneas es otra línea. Por este motivo en las neuronas
se incluye una función de activación. El objetivo de esta es distorsionar el valor de salida
añadiendo deformaciones no lineales para así poder computar el resultado de varias neuronas
encadenadas. Entre estas funciones se tiene la función escalonada (ver Imagen 13), sigmoidal
(ver Imagen 14), tangente hiperbólica (ver Imagen 15), la unidad rectificada lineal (ver Imagen
16) y algunas estructuras alternativas que se conocen como funciones de base radial entre las
que se encuentran las estructuras Gausiana, Multicuadraticas y Multicuadraticas inversas o las
máquinas de soporte vectorial.
27
Imagen 13. Función de paso. Tomado de: https://en.wikipedia.org/wiki/Step_function#/media/File:Dirac_distribution_CDF.svg
Imagen 14. Función sigmoide. Tomado de:
https://es.wikipedia.org/wiki/Funci%C3%B3n_sigmoide#/media/File:Funci%C3%B3n_sigmoide_01.svg
Imagen 15. Función tangencial. Tomado de:
https://es.wikipedia.org/wiki/Tangente_hiperb%C3%B3lica#/media/File:Hyperbolic_Tangent.svg
28
Imagen 16. Función rectificadora. Tomado de:
https://es.wikipedia.org/wiki/Rectificador_(redes_neuronales)#/media/File:Rectifier_and_softplus_functions.svg
Las redes de retroalimentación son una evolución del perceptrón, añade una capa oculta, y
cada una de las entradas se comunica con la capa oculta, siempre hacia adelante, es decir que
no tiene bucles de retorno. Utiliza un sistema de entrenamiento llamado retropropagación, en
inglés backpropagation. Este método consiste en el cálculo del gradiente del
algoritmo(función) usado para hacer la predicción. En palabras más sencillas, los datos pasan
mínimo dos veces por la red para calcular el error respecto a la salida.
Una red neural de retroalimentación también puede usar funciones de base radial como
función de activación, con el fin de dar valores más certeros en aproximaciones de funciones.
Esta red de base radial se ajusta perfecto a sistemas que usan valores continuos.
Las redes de retroalimentación pueden seguir creciendo también en capas ocultas, esto con el
objetivo de minimizar los errores que se pasan de una capa a otra. Estas redes de
retroalimentación con más de una capa se llaman redes de alimentación profunda.
Con el uso de las redes de alimentación profunda (ver Imagen 17) y su evolución surge un
nuevo concepto, las células recurrentes, su trabajo consiste en generar una salida y volver a
procesarla. Lo que logra este reproceso es tener en cuenta un contexto. Por ejemplo, para el
29
procesamiento de palabras que requiere de un contexto para comprender su significado y
valor.
Imagen 17. Redes recurrentes. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
Estas células recurrentes no pueden almacenar mucho del contexto. Por lo que para solventar
esto se crean las células de memoria. Estas células de memoria pueden almacenar los últimos
datos procesados, hasta datos con intervalos de tiempo, resultando en la creación de una nueva
red. La red de memoria de corto y largo plazo, que tiene la capacidad de procesar fotogramas
de video, voz y escritura. Las células de memoria de esta red tienen unos elementos
denominados puertas recurrentes y son los encargados de controlar como se recuerda y olvida
la información. Sin estas puertas se logra que sea más fácil repetir la misma salida para una
entrada concreta varias veces, esto se hace en las redes de unidad de cerrado recurrente que
consumen menos recursos y se utilizan ampliamente en síntesis de sonido.
Imagen 18. Autocodificadores. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
Las redes que se comentaron anteriormente son para problemas de aprendizaje supervisado.
Modificando la estructura para que el número de nodos de entrada sea mayor al número de
nodos ocultos y el número de salidas es igual al número de nodos de entrada, se obliga a la red
30
neuronal a generalizar los datos y buscar patrones comunes. A este tipo de redes se le conoce
como autocodificadores (ver Imagen 18), y son usados en aprendizaje no supervisado. Esto se
logra gracias a que se comprimen las características, pero otra manera de hacerlo es
comprimiendo las probabilidades. En ese caso se conoce como un autocodificador variacional.
Los autocodificadores presentan un problema, y es que al reducir los nodos ocultos se puede
presentar un sobreajuste. Para solucionar esto se agrega un poco de ruido a las entradas, es
decir se añaden unos bits aleatorios a cada entrada, para así obligar a construir una salida con
ruido para así hacerla un poco más general y forzar a elegir características más comunes. A
esta red se le conoce como un autocodificador de eliminación de ruido. Otra manera de
construir un autocodificador es haciendo que la capa oculta tenga más nodos que la capa de
entrada y salida. A esta configuración se le llama autocodificador de dispersión.
Imagen 19. Redes con aleatoriedad. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
En la teoría de probabilidad existe el concepto de cadenas de Markov (ver Imagen 19), que
indica la probabilidad de que ocurra un evento dependiendo de un evento inmediatamente
anterior. Este concepto se puede aplicar a las redes neuronales de manera clásica, por ejemplo,
para predecir la probabilidad de una palabra que viene a continuación de otra. El ejemplo más
común sería el autocompletar de un teclado para dispositivos móviles, pero también pueden
ser usados como filtros bayesianos y para clustering, como una máquina de estado finito.
Una red Hopfield en su estructura es una red de Markov, pero están capacitadas con un
conjunto limitado de muestras para que respondan a una muestra conocida con la misma
muestra, por lo tanto, también se pueden usar para reconstruir y destruir las entradas, dado
31
que al responder con la parte restante devolverá la muestra completa. Las máquinas de
Boltzmann se distinguen de la red Hopfield porque en esta se definen unas entradas claras y
los nodos ocultos pasan a ser salidas una vez termina de procesarse los datos.
Imagen 20. Red profunda. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
Las redes de aprendizaje profundo (ver Imagen 20) son en realidad una pila de máquinas de
Boltzmann (rodeadas de VAE). Básicamente una red entrena a la otra en secuencia, y se usan
para generar datos por un patrón aprendido.
Imagen 21. Redes profundas compuestas. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
La Red convolucional profunda (ver Imagen 21) en este momento representa uno de los
grandes avances del machine learning con redes neuronales. Usa nodos de convolución, es
decir que agrupa funciones y genera una única función por neurona cada una con un propósito
diferente. Este tipo de redes se utiliza en el reconocimiento de imágenes, donde la red se
entrena con un conjunto de imágenes con un proceso de comprensión de características al
pasar por estas capas de convolución. A partir de los reconocimientos de imágenes, la primera
32
capa detecta gradientes, la segunda líneas, la tercera formas y así sucesivamente hasta tener la
escala de un objeto en particular, ver Imagen 22.
Imagen 22. Funcionamiento de red convolucional. Tomado de: https://stats.stackexchange.com/questions/146413/why-convolutional-
neural-networks-belong-to-deep-learning
Se puede invertir una red convolucional para a partir de una imagen construida obtener sus
características. Podemos unificar una red convolucional con una invertida para crear imágenes
con las cuales nunca ha sido entrenada. Y para presentarlo más correctamente al unificarlas
dejan de ser dos redes y se convierten en una red de tipo autocodificador.
Imagen 23. Redes especializadas. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
33
Por el contrario, como se puede ver en la Imagen 23 una red generativa adversaria, si está
compuesta por dos redes neuronales, una es un generador y la otra es un discriminador o
evaluador. Su trabajo consiste, uno por su parte generar datos y el otro al recibir los datos de
muestra intenta evaluar los resultados generados contra las muestras, por lo que este tipo de
redes puede estar en constante evolución, aunque deben estar en un equilibrio las dos redes.
Una máquina de estado líquido es una red que no está totalmente conectada, y las funciones
de activación se reemplazan por niveles de umbral. Donde los nodos acumulan valores de
muestras secuenciales y emite la salida solo cuando se alcanza el umbral, y reinicia su contador
interno a cero.
Las máquinas de aprendizaje extremo intentan reducir la complejidad de las redes neurales,
mediante la creación de capas ocultas dispersas con conexiones aleatorias, requieren menos
potencia computacional, pero su eficiencia depende de la tarea que vaya a realizar y de los
datos suministrados.
Las máquinas de estado de repetición son redes recurrentes con otro enfoque. ya que se
pueden activar nodos con características que son recurrentes.
Por último, tenemos la máquina neural de Turing (ver Imagen 24), esta red intenta solucionar
la visibilidad de las capas ocultas, ya que en las redes neuronales son como una caja negra,
podemos entrenarlas, mejorarlas y obtener resultados, pero la ruta de decisión está
mayormente oculto. Por este motivo esta red es de retroalimentación, pero con unos nodos
de memoria extraídos que permite leer y escribir dependiendo del estado actual de la mismo.
34
Imagen 24. Red de turing. Tomado de: https://www.asimovinstitute.org/author/fjodorvanveen/
2.4 Tipos de datos
Esta es una de las partes más importantes en la creación de redes neuronales, ya que la
eficiencia de la red depende directamente de la calidad y forma en que se le administren los
datos. Se deben tener en cuenta los siguientes objetivos:
• Entender el contenido y las relaciones entre los datos.
• Hacer el mejor uso de la información.
• Los datos se ajustan al modelo de Machine Learning.
El aprendizaje de máquina es un trabajo sin sentido si no se conoce y no se entienden los
datos. Para poder hacer esta labor se debe identificar:
• Características de los datos (Tamaño, tipos de datos, etc).
• Resumen estadístico del conjunto de datos (Escala y rango de las variables).
• Errores y valores que no son típicos.
• Distribución de los atributos y tags de identificación de los mismos.
• Frecuencia de rasgos categóricos.
Poder identificar todos estos aspectos de los datos se logra gracias a un proceso iterativo de
procesamiento de los datos, en donde se debe identificar los tipos de datos y al propósito y
tipo de predicciones que se pueden trabajar con ellos. Se pueden identificar cuatro grandes
grupos de tipos de datos.
35
2.4.1 Datos nominales
Este tipo de datos no requiere de una organización previa, ya que todas las agrupaciones son
excluyentes, ver Imagen 25.
Imagen 25. Ejemplo de datos nominales. Tomado de: https://medium.com/ai3-theory-practice-business/the-engineers-guide-to-
machine-learning-data-processing-data-types-ba40e6bf8765
2.4.2 Datos ordinales
Este tipo de datos requiere de un orden para poderse procesar, aunque no se conozca las
diferencias entre estas. Por ejemplo, en la figura que se presenta a continuación podemos ver
como se clasifica un grupo de datos, agrupándolo en perfiles comunes, en donde el orden es
totalmente importante para comprender el significado total de los datos, ver Imagen 26.
36
Imagen 26. Ejemplo de datos ordinales. Tomado de: https://medium.com/ai3-theory-practice-business/the-engineers-guide-to-
machine-learning-data-processing-data-types-ba40e6bf8765
2.4.3 Datos de intervalo
En este tipo de datos se requiere ordenar y reconocer las diferencias exactas entre los datos,
ver Imagen 27. Este tipo de datos se presta fácilmente para su uso en la estadística, con su
procesamiento con herramientas como moda, media, mediana, desviación estándar entre
otros. Al crear escalas(intervalos) podemos generar diversas caracterizaciones y designar
valores para cada elemento.
37
Imagen 27. Ejemplo de datos de intervalo. Tomado de: https://medium.com/ai3-theory-practice-business/the-engineers-guide-to-
machine-learning-data-processing-data-types-ba40e6bf8765
2.4.4 Datos de relación
Estos datos nos proporcionan en general la mayor cantidad de información posible y exacta
de los mismos (orden, valor, medición y atributos). Ya que podemos relacionar e identificar
los datos se pueden generar tanto medidas cualitativas como cuantitativas, y todo tipo de
operaciones matemáticas y estadísticas, ver Imagen 28.
38
Imagen 28. Ejemplo de datos de relación. Tomado de: https://medium.com/ai3-theory-practice-business/the-engineers-guide-to-
machine-learning-data-processing-data-types-ba40e6bf8765
Ya se adquirieron los conceptos y de destacaron los aspectos más importantes relacionados
con los tipos de datos, ahora se procede a realizar la tabulación de estos, para el posterior
diseño de la red neuronal.
39
3. Capítulo III
Desarrollo de la investigación
3.1 Análisis
Con ayuda del estándar de modelador de arquitectura empresarial archimate (The Open
Group, 2016) se utilizarán algunos puntos de vista que permitirán comprender acerca de la
organización sus procesos, la aplicación en infraestructura de estos.
3.1.1 Organización Para entender un poco cómo funcionan las interacciones entre los actores involucrados en la
aplicación, se mostrará el punto de vista de función del negocio:
Imagen 29. Punto de vista de negocio. Autores
Con la imagen 29 podemos inferir que el proceso inicia cuando un socio encuentra una
oportunidad de negocio y realiza una estimación sobre el mismo, cuando se da inicio al
proyecto legal diferentes abogados y asistentes empiezan a registrar información de sus
tiempos, gastos etc... en el ERP de la compañía a su vez con esta información los facturadores
40
se encargan de emitir facturas a los clientes. Con esta información ya centralizada en un ERP
se logra determinar más fácilmente los requisitos de datos que alimentaran la red neural.
3.1.2 Proceso
El proceso como tal de due diligence inicia con el levantamiento de la información necesaria,
la realización de un análisis con esta información y la entrega de un informe final. La Imagen
30 representa el proceso de due diligence:
Imagen 30. Punto de vista de proceso. Autores
3.1.3 Aplicación 3.1.3.1 Microservicios
Este estilo de arquitectura está enfocada a proveer una colección de pequeños servicios
autónomos, algunas de sus características son:
• Unidades pequeñas de despliegue
• Reducción en tiempo de desarrollo
• Los servicios pueden tener arquitecturas diferente y se acoplan independiente de esto
• Fácil escalado horizontal
Los microservicios son una evolución de la arquitectura enfocada a servicios,
41
pero integra nuevos conceptos enfocados a la gestión, orquestamiento y mantenimiento de
todos los servicios que componen la solución, ver Imagen 31.
Imagen 31. Microservicios. Tomado de: https://docs.microsoft.com/es-es/azure/architecture/guide/architecture-
styles/images/microservices-logical.svg
3.1.3.2 ¿Por qué esta arquitectura? Puede parecer que se está siendo muy ambicioso, y poco impráctico, ya que este tipo de
arquitectura requiere de un gran mantenimiento y gestión. Pero también no podemos olvidar
los beneficios. Principalmente se opta por esta arquitectura por su escalabilidad, ya que permite
ir actualizando la solución a medida que se necesite. Permitiendo la integración y
mejoramiento de servicios.
El prototipo se limita a generar un único microservicio, que corresponde al proceso de Due
Diligencie, que se revisó en capítulos anteriores. Recibiendo un vector con datos del proyecto
que se desea analizar y generando como salida otro vector con los resultados(predicción), ver
la Imagen 32.
Imagen 32. Diseño básico de microservicio. Autores
42
Aunque este tipo de arquitectura no se limita solo a crear un contenedor de microservicios,
tiene en cuenta aspectos como la seguridad y gestión de los microservicios por lo tanto para
tener una visión general del diseño y de las herramientas a usar, vea la Imagen 33 y la imagen
34.
Imagen 33. Diseño general de arquitectura de microservicios. Tomado de: https://docs.microsoft.com/es-
es/azure/architecture/guide/architecture-styles/images/microservices-acs.png
Imagen 34. Diseño y herramientas del prototipo. Autores
43
En la imagen 34 los hexágonos en blanco, con el icono de Docker, son la representación de
posibles microservicios, que para ejemplificar la arquitectura se mencionan, pero no son parte del
prototipo. El hexágono amarillo representa el microservicio con el que se trabajara. A
continuación, se explicará el uso y trabajo de este nodo. Que en realidad es el eje de esta
investigación.
3.2 Requerimientos
3.2.1 Requerimientos Funcionales
i. La autenticación a la aplicación debe realizarse por medio del directorio activo de la
compañía ii. Únicamente los usuarios con rol de Abogado o Socio podrán tener acceso iii. Se deben solicitar los siguientes datos, en el siguiente formato
Tabla 1. Campos de interfaz. Autores.
Dato Formato Elemento
Tipo Empresa Texto Dropdownlist
Tipo Caso Texto Dropdownlist
Lenguaje Texto Dropdownlist
Moneda Texto Dropdownlist
País Texto Dropdownlist
Departamento Texto Dropdownlist
Fecha Inicio Texto Datepicker
Las listas desplegables deben cargarse de acuerdo con la información existente en las bases de datos del ERP de la firma.
iv. El resultado de la proyección debe mostrarse en un informe detallado con el estimado de las probabilidades.
3.2.2 Requerimientos NO Funcionales
i. La aplicación debe estar disponible 7x24 ii. La aplicación debe ser Responsive iii. La aplicación debe tener un diseño sencillo y con alta usabilidad iv. El tiempo de espera en la realización de la predicción debe ser menos a 3 segundos
44
3.3 Desarrollo
3.3.1 Origen de los datos
Se elaboró una bodega de datos para almacenar la información filtrada que se va a procesar.
El diseño de la nueva base de datos se elaboró en Entity Framework y se obtuvo como
resultado el diagrama de la Imagen 35:
Imagen 35. Diseño de base de datos. Autores.
45
Para extraer la información requerida para la red se elaboró una ETL sencilla que extrae la
información principal de las bases de datos del ERP de la compañía, la transforma y la inserta
en una bodega de datos. La ETL tiene la siguiente estructura:
Flujo de control:
Imagen 36. Flujo de control de la ETL. Autores
Flujo de datos:
Imagen 37. Flujo de datos de la ETL. Autores.
La consulta filtra, agrupa y limpia la información requerida y por medio de la herramienta Data
Conversion se unifican todos los tipos de datos para que coincidan los formatos de las dos
bases de datos, una vez los datos se encuentren homogéneos, le añadimos el destino a la
consulta donde a través de la siguiente asignación establecemos la equivalencia de las columnas
de la consulta, en la bodega de datos (específicamente en la tabla Resumen) como lo muestra
la Imagen 38.
46
Imagen 38. Asignaciones de columnas. Autores.
Al final se genera una sola consulta, la cual se puede observar en detalle en el Anexo I. 3.3.2 Exploración de datos Se obtienen aproximadamente 2000 registros asociados con el proceso de Due Diligence de la
base de datos de la empresa con la que se desarrolla el proyecto (PHR). Después del proceso
que realiza la ETL de clasificación, limpieza y agrupación de datos, quedan alrededor de 800
registros que se proceden a tabular y catalogar. Dando como resultado la información que
muestra la Imagen 39.
47
Imagen 39. Categorización de los datos
La información se debe etiquetar y analizar, para poder generalizar los datos y crear
asociaciones entre ellos. Definiéndolos de la siguiente manera:
• El tipo de empresa se etiqueta como datos de texto categóricos.
• El tipo de caso se etiqueta como datos de texto categóricos.
• Lenguaje es numérico categórico.
• Moneda es numérico categórico.
• País son datos de texto categóricos.
• Departamento son datos de texto categóricos.
• La fecha de inicio se desagrega en varios campos. Para poder evidenciar si existe
alguna correlación entre estas variables y el resultado final.
o Año
o Mes
o Dia del mes
o Dia de la semana
48
• Finalmente, el dato que se quiere predecir, en este caso días de duración. Que es de
tipo numérico y se etiqueta como label objetivo.
Como se puede observar en la Imagen 40, hay algunas alertas en los datos. Por ejemplo, al
revisar los histogramas pertenecientes a los datos de Tipo Empresa, Tipo Caso y
Departamento. Esto es porque los datos están muy sesgados. Hay que revisar el peso de estos
datos dentro del cálculo para tomar alguna decisión respecto a dejarlos como parte del proceso
de predicción o determinar si la mejor opción es eliminarlos.
Imagen 40. Histograma de la frecuencia de los datos. Autores
Como muestra la Imagen 41, la cantidad de casos varia bastante por tipo de empresa no tiene
tendencia alguna igualmente sucede con los tipos de caso (Imagen 42). Pero si revisamos la
49
Imagen 43 podemos evidenciar que por tipo de caso si hay cierta relación con el tiempo de
duración de los casos.
Imagen 41.Cantidad de casos de Due Diligence por tipo de empresa. Autores.
50
Imagen 42. Cantidad de casos Due Diligence por tipo de caso. Autores.
Imagen 43. Tiempo en días por tipo de caso y empresa. Autores.
51
La imagen 44 nos permite determinar en cuales países se pueden encontrar mayor cantidad de casos.
Imagen 44. Total de casos por país. Autores.
La imagen 45 representa la dispersión de los días.
Imagen 45. Comportamiento de los días. Autores
52
En base a los datos y el análisis de las gráficas generadas a partir de estos se puede hacer el
ejercicio de desarrollar la predicción con sistemas de clasificación como de regresión lineal.
Aunque para el caso de clasificación (Agrupamiento) no se tiene el mejor entorno. Ya que las
variables demuestran resultados algo aleatorios y parece que en los datos se presentan algunos
errores. Aun así, se puede calcular el peso de las variables, la correlación entre ellas y la ganancia
de información que tiene cada una. Esto con el objetivo de separar los datos entre los rangos
más adecuados.
𝐺𝑎𝑛𝑎𝑛𝑐𝑖𝑎(𝑆, 𝐴) = 𝐻(𝑆) − ∑𝑆𝜗
𝑆𝜗∈𝑉𝑎𝑙𝑜𝑟𝑒𝑠(𝐴)
𝐻(𝑆𝜗)
Con la anterior formula se puede calcular la ganancia de las variables, teniendo en cuenta la
entropía propia de los datos. Cada una de las variables es procesada con esta ecuación dando
como resultado la ganancia de cada una. Se selecciona cada una de las variables según su
resultado de ganancia, de mayor a menor y con esto se puede construir un árbol de decisión.
Las imágenes 46, 47 y 48 muestran algunas rutas posibles de este árbol, en el lado derecho
podemos encontrar la decisión que toma el árbol para llegar al valor que es la última fila
marcada en verde.
53
Imagen 46. Ruta principal de árbol de decisiones. Autores.
54
Imagen 47. Ruta alterna de árbol de decisiones. Autores.
55
Imagen 48. Ruta corta en árbol de decisiones. Autores.
Este árbol de decisiones funciona ya como un predictor. Capaz de analizar cada una de las
variables y generar un valor aproximado al tiempo en días que tomara un proyecto de Due
Diligence. Mencionemos que las variables objetivo a predecir son:
• Tiempo de trabajo por socio
• Días de duración del proyecto
• Costo del proyecto
56
Otra opción es crear un algoritmo de agrupación, que sea capaz de clasificar los datos de
entrada en grupos, con el objetivo de relacionar y descubrir patrones comunes entre los datos.
Esto se logra con un algoritmo como k-means. En este caso no tiene sentido desarrollar este
algoritmo ya que tenemos grupos claramente definidos, por las variables categóricas.
Ya se tiene una aproximación a la segunda predicción requerida(días). Pero como se mencionó
son rangos aproximados, por lo que se procede a cambiar el algoritmo a un caso de regresión
lineal teniendo en cuenta el peso y ganancias de las variables. Con el objetivo de generar
aproximaciones más concretas.
Se utiliza un modelo preestablecido de la librería de sklearn utilizado para regresión lineal
(linear_model.LinearRegression()).
Este modelo recibe dos matrices, una de entrada (entrenamiento) y la matriz de salida
(resultados deseados). Entre estas matrices se realizan las respectivas correlaciones que
generen el mejor resultado, que se determina por medio del mínimo error cuadrático.
Ahora, trabajemos la segunda parte. La predicción del tiempo por categorías de socios. En
este caso se trabajarán con algunas de las anteriores variables y se incluirán algunas nuevas.
Como la categoría del socio y el tiempo de trabajo, ver Imagen 49.
57
Imagen 49. Dataset de horas por categorías. Autores.
3.3.3 Redes de entrenamiento Como ya se realizó el aplicativo cliente, el siguiente paso es diseñar una red neural que pueda
seguirse mejorando. Los datos y modelos diseñados hasta ahora nos acercan a una solución
de este tipo. A continuación, se describirán los siguientes prototipos de redes neurales
diseñadas y sus características.
Para las pruebas de los diferentes modelos se utilizó Anaconda, una suite de código abierto
que cuenta con una colección de más de 720 aplicaciones, librerías y conceptos diseñados para
el desarrollo de la ciencia de datos con Python (Toro, 2018).
Una de las aplicaciones que integra Anaconda es el cuaderno Jupyter que es una aplicación
web de código abierto que permite crear y compartir documentos que contienen código en
vivo, ecuaciones, visualizaciones y texto narrativo. Sus usos principales incluyen: limpieza y
transformación de datos, simulación numérica, modelado estadístico, visualización de datos,
aprendizaje automático entre otros (Jupyter, 2018). Para las pruebas de los modelos se decidió
58
usar Jupyter ya que es una plataforma sencilla de utilizar, pero muy poderosa que permite hacer
todo tipo de análisis con la información.
Imagen 50. Logotipo de Anaconda, Jupyter y Spider. Tomado de: https://www.youtube.com/watch?v=Q0jGAZAdZqM
El primer modelo que se implementó, como se puede ver en la imagen 51 fue completamente
de regresión lineal. Con ayuda de las librerías para elaborar graficas se logró observar
histogramas de la frecuencia de los datos.
59
Imagen 51. Primer modelo de regresión lineal. Autores.
En la Imagen 51 (Paso 1) podemos observar que se importaron las librerías:
• Numpy: Modulo para cálculos matemáticos
• Pandas: Análisis de datos
• Matplotlib: Gráfico de datos
• Seaborn: Complemento de la librería matplotlib para la representación gráfica de los
datos.
60
• Sklearn: Poderosa librería de Python para machine learning, es de uso libre y facilita
para el procesamiento de datos a través de algoritmos potentes de regresión lineal,
clasificación entre otros.
En el paso 7 de la Imagen 51 se importan los datos que generó la ETL en un formato de .csv
y se imprime el tamaño de los datos, para este caso se usa una muestra pequeña de 357 filas y
8 columnas, en el paso 8 se usa la función head para comprobar la cabecera de los datos y
verificarlos, en el siguiente paso se imprime el histograma de algunos datos para determinar su
frecuencia.
Una vez realizado este pequeño análisis de los datos, se crea una estructura bidimensional con
ayuda de la librería pandas. Se etiquetan las cabeceras y se convierte en un arreglo.
En la imagen 52 (Paso 11) se crea una instancia del modelo de regresión lineal y se entrena
con los datos de la matriz creada, cuando el procedimiento finaliza se imprimen los
coeficientes donde se puede ver que hay varios muy altos que oscilan en un rango de -23 y 3,
este es un primer indicativo que hay un problema con este modelo, luego se imprime la
desviación cuadrática del error que da un valor de 162.174,96 lo cual es muy alto, y por último
se imprime la dispersión de los datos que muestra un valor del 14% un valor muy bajo teniendo
en cuenta que se desea aproximar a 1, pero como resultado de la regresión y para efectos de
este proyecto es un valor positivo.
Ahora en el paso 12 de la Imagen 52 se proceden a graficar los valores resultado después de
procesados por la red, en el grafico del resultado se evidencia que los valores están muy
dispersos y no corresponden al concepto de regresión lineal. Sin embargo, se procede a validar
el modelo. La línea 15 muestra el resultado de una predicción la cual es relativamente buena
ya que se esperaba obtener un resultado de predicción de días de 483 y se obtuvo 416.
61
Imagen 52. Procesamiento del primer modelo de regresión lineal. Autores.
62
Así que procedimos a realizar una validación masiva y se obtuvieron los siguientes resultados:
Tipo Empresa
Tipo Caso
Lenguaje Moneda País Departamento Fecha Inicio
Resultado Real
Prototipo %
Desviación
2 42 1 1 10 19 42095 763 541 -29%
2 6 1 2 10 9 42644 761 410 -46%
5 5 1 1 10 9 40787 763 756 -1%
8 8 1 1 10 11 40817 738 757 3%
8 25 1 4 10 17 42583 822 392 -52%
9 25 2 2 34 44 41609 106 492 364%
9 25 2 2 34 44 41609 106 492 364%
12 25 1 1 10 17 40756 794 778 -2%
15 25 2 2 8 4 42309 856 444 -48%
15 57 2 2 12 19 42917 94 338 260%
15 57 2 2 12 19 42917 94 338 260%
21 25 2 1 10 17 41852 83 580 599%
21 31 2 1 10 19 41852 84 583 594%
21 31 2 2 10 19 42005 103 534 418%
21 31 2 2 10 19 42005 103 534 418%
21 31 2 1 10 19 42309 113 504 346%
21 31 2 1 10 19 42309 113 504 346%
21 42 2 1 10 19 42339 80 490 513%
21 42 2 1 10 19 42339 80 490 513%
21 31 1 1 10 19 43009 107 390 264%
21 31 1 1 10 19 43009 107 390 264%
22 59 2 2 34 61 42309 88 411 367%
22 18 1 1 10 11 42614 791 436 -45%
22 32 2 4 14 24 42675 87 355 308%
22 41 2 4 14 25 42675 87 352 305%
22 19 1 4 14 19 43282 123 247 101%
22 19 1 4 14 19 43282 123 247 101%
22 19 1 4 14 19 43282 123 247 101%
22 19 1 4 14 19 43282 123 247 101%
22 20 1 4 14 19 43282 123 246 100%
22 22 1 4 14 19 43282 123 245 99%
22 24 1 4 14 19 43282 123 243 98%
22 25 1 4 14 20 43282 123 246 100%
22 25 1 4 14 20 43282 123 246 100%
22 19 1 4 14 19 43282 123 247 101%
22 19 1 4 14 19 43282 123 247 101%
22 19 1 4 14 19 43282 123 247 101%
63
22 19 1 4 14 19 43282 123 247 101%
22 20 1 4 14 19 43282 123 246 100%
Tabla 2. Validación del prototipo de regresión lineal. Autores.
Conclusión: Como se puede observar en la tabla 2 hay una desviación muy alta en la
predicción de los datos, se encuentra sobre el 197%, por este motivo se marca este modelo
como no funcional y se procede a probar otros modelos.
En la imagen 53 podemos ver la representación gráfica la red que se intentó implementar
con la siguiente configuración:
• 64 nodos de activación ReLU (por sus siglas en ingles)
• 64 nodos de activación Sigmoide
• 1000 ciclos de entrenamiento
• Ganancia 0%
Imagen 53. Prototipo de red neural. Autores.
64
Para probar este prototipo se siguieron los pasos que se indican en la imagen 54 realizados en
el notebook de Jupyter. En el paso 1 se importan las librerías pandas, sklearn y TensorFlow,
en el siguiente (paso 2) se cargan los datos normalizados que generó la ETL y se crean las
matrices. El siguiente modulo (paso 3) es muy importante ya que es donde se añaden las
funciones de activación ReLU y Sigmoide. Cuando se entrena el modelo con 100.000 ciclos
(paso 4) se puede ir evidenciando que hay una perdida bastante alta de información así que
esto es un indicio de que esta red no sirve para modelar el tipo de información que se necesita.
Sin embargo, en el paso 6 realizamos la predicción que genera este modelo y se evidencia que
estos valores no tienen relación alguna con lo que se busca predecir, que son los días de
duración del proyecto.
65
Imagen 54. Notebook del modelo. Autores.
66
Conclusión: Este tipo de red no funcionó ya que la última capa está compuesta de nodos con
una activación sigmoide que no sirve para procesar los casos de estudio ya que este tipo de
redes se especializa en problemas de clasificación y no de predicción. Por esta razón se elimina
esta capa y se procede a generar un nuevo modelo.
En la imagen 55, se evidencia la representación gráfica de otro tipo de red que se intentó
implementar con la siguiente configuración:
• 128 nodos de activación ReLU
• 12 nodos de activación ReLU
• 1000 ciclos de entrenamiento
• Ganancia 0%
Imagen 55. Prototipo de red neural sin nodos de activación sigmoide. Autores.
En la imagen 56, se evidencia la representación gráfica de otro modelo, el cual cuenta con la
siguiente configuración:
67
• 8 nodos de activación ReLU
• 4 nodos de activación ReLU
• 1 nodo de activación lineal
• 1000 ciclos de entrenamiento
• Ganancia 0.26%
Imagen 56. Prototipo de red neural. Autores.
Como se puede apreciar en la Imagen 57, en el primer bloque de instrucciones se importan las
librerías necesarias. En el siguiente bloque se obtienen los datos y se hace la partición entre los
datos de entrenamiento y prueba.
En el cuarto bloque se hace la normalización de los datos. Un paso importante que comenzó
a estar presente en cada uno de los nuevos diseños, ya que este paso permite trabajar con
valores pequeños que dan mejor rendimiento al momento de ser procesados por la red neural,
eso sí, al hacer esta normalización se mantiene la proporción de distancia entre los datos, para
asegurar la integridad de los análisis de los mismos.
68
En el quinto bloque se construye como tal el modelo. Esta vez añadiendo una capa con una
neurona que se activa con una función lineal.
Al añadir más datos de entrenamiento y ciclos a esta red se evidencio que la función lineal
depende totalmente del ordenamiento de los datos, por lo que en cada iteración y cambios que
se hacían sobre el dataset de entrenamiento los valores de ganancia eran desiguales. Por este
motivo al finalizar cada entrenamiento arroja valores diferentes, por lo que al acercarse a la
solución con esta metodología requeriría de mucha prueba y error y seria altamente ineficiente.
Aunque el mejor resultado logrado fue de 26% de asertividad. Un valor realmente bajo.
69
Imagen 57. Notebook del modelo.Autores.
70
Estos son algunos ejemplos de las pruebas y diseños que se hicieron. En cada uno de estos se
probó con diferentes cantidades de neuronas, capas, funciones de activación y paquetes de
ejecución de datos. Con el fin de mejorar el rendimiento y ver con prueba y error como iba
mejorando o, por el contrario, como fallaba la red.
Al subir los ciclos de entrenamiento la cantidad de neuronas utilizadas es excesiva, por lo que
en cada una de las iteraciones se aleja del objetivo deseado, y tiende a incrementar el error en
vez de disminuirlo. Por lo que se cambia la cantidad de neuronas por capa para solucionar este
problema.
Así que, por último, en la imagen 61, se evidencia la representación gráfica del ultimo tipo de
red que se implementó el cual tiene la siguiente configuración:
• 64 nodos de activación ReLU
• 64 nodos de activación ReLU
• 100.000 ciclos de entrenamiento
• Ganancia 0.04%
Imagen 58. Prototipo de red neural final sigmoide. Autores.
71
La red utilizada finalmente pertenece al tipo de red de aprendizaje profundo, donde se
aprenden patrones para predecir los nuevos datos. Con esta red se obtuvo un porcentaje de
asertividad superior al 90% con tan solo 5000 iteraciones. Al tocar un poco sus parámetros e
incrementar las iteraciones de aprendizaje se logró un asertividad superior al 98%.
Para la función que calcula y ajusta los parámetros de la red neural se usó MSE (Error
cuadrático medio, por sus siglas en ingles), que se explicó en el capítulo anterior. Este ajuste
se hace con la finalidad de medir el rendimiento de la red basado en la distancia de error
cuadrado.
Como algoritmo de optimización de descenso de gradiente, que también se explicó
previamente, se usó RMSprop, un método de tasa de aprendizaje adaptativo, propuesto por
Geoff Hinton.
En los anteriores diseños se utilizó el método de optimización Adam, el cual también trabaja
con las tasas de aprendizaje adaptativo para cada parámetro. Pero este siendo mucho más
riguroso en la evaluación de parámetros, por lo que RMSprop da un mejor rendimiento como
prototipo.
Finalmente, como métrica de evaluación se usó MAE (Error medio absoluto, por sus siglas en
ingles), con esta métrica se pretende resumir y evaluar la calidad del modelo de aprendizaje.
72
En un primer intento se ejecutó la red con 1000 ciclos, y se tardó un tiempo aproximado de
30 minutos. En una maquina con las características que muestra la Imagen 59:
Imagen 59. Características de la maquina donde se realiza el entrenamiento de la red. Autores.
Aun así, con solo 1000 ciclos se obtuvo un error cuadrado medio de 66.80
Posteriormente ejecutamos la red con 100.000 ciclos y se dejó procesando toda la noche,
donde aproximadamente tardo 5 horas en finalizar el proceso de entrenamiento. Durante este
tiempo se registró un consumo de maquina elevado (ver Imagen 60) y una ralentización en el
sistema para realizar otras tareas.
Imagen 60. Uso de máquina. Autores.
73
En la Imagen 61, se puede ver el proceso realizado en el Notebook además se puede evidenciar
que este tipo de evaluación funciona muy bien con la función de perdida MSE.
Imagen 61. Notebook del modelo final. Autores.
74
3.3.4 Web Service
Para la integración con el predictor de proyectos se elaboró un web service a partir del
Notebook en Jupyter este servicio recibe los datos requeridos para hacer la predicción y
retorna la predicción en base al modelo elaborado. El detalle se encuentra en el anexo III de
este proyecto.
3.3.5 Cliente -Web Para la interacción con el usuario se desarrolló una aplicación web en Visual Studio 2017 y con
ayuda de Power BI se logró elaborar un reporte que muestra gráficamente un breve análisis
del historial de la información procesada en el ETL.
El aplicativo cuenta con una pantalla inicial donde está un reporte de los tipos de caso por
país, su categoría y número de empleados (ver Imagen 62). Donde el usuario podrá interactuar
con los tipos de caso para ver gráficamente como están distribuidos mundialmente y adicional
observar cuantos empleados por categoría colaboraron en proyectos con este tipo de caso.
75
Imagen 62. Reporte del aplicativo. Autores
En el módulo de predicción se encuentra el formulario donde se solicitan los datos básicos
para realizar la estimación de la duración del proyecto (Imagen 63), en este formulario se
consume el servicio generado por el notebook, el detalle de cómo se consume este servicio se
encuentra en el Anexo II.
76
Imagen 63. Formulario de predicción de datos. Autores.
El proyecto está dividido en 3 principales componentes como lo muestra la imagen 64
77
Imagen 64. Componentes del aplicativo. Autores.
En la carpeta de Datos se encuentra el modelo elaborado en Entity Framework que es lo que
nos permitirá interactuar con los datos alojados en la bodega de datos. En la Vista están
almacenados los formularios de interacción con el usuario y por último en la carpeta objetos
se encuentran los objetos creados adicionales a los del modelo de Entity.
3.4 Validación del prototipo
Se ejecutaron los comandos para determinar la medida del error cuadrático dando un valor de
21.08 que nos indica que el error es muy bajo, ver Imagen 62:
Imagen 65. Calculo del error cuadrático. Autores.
78
Los datos de entrenamiento se han dividido en un 70/30 %, para entrenamiento y validación
respectivamente. A continuación, en la tabla 3 se puede observar que la desviación del
resultado que genera el prototipo de predicción vs el resultado de casos reales anteriores de la
firma.
Tabla 3. Comparación de predicción del prototipo vs datos reales.
Tipo Empresa
Tipo Caso
Lenguaje Moned
a País Departamento
Fecha Inicio
Resultado Real
Prototipo %
Desviación
2 42 1 1 10 19 42095 763 807 5%
2 6 1 2 10 9 42644 761 765 1%
5 5 1 1 10 9 40787 763 765 0%
8 8 1 1 10 11 40817 738 745 1%
8 25 1 4 10 17 42583 822 819 0%
9 25 2 2 34 44 41609 106 128 17%
9 25 2 2 34 44 41609 106 128 17%
12 25 1 1 10 17 40756 794 791 0%
15 25 2 2 8 4 42309 856 865 1%
15 57 2 2 12 19 42917 94 128 27%
15 57 2 2 12 19 42917 94 128 27%
21 25 2 1 10 17 41852 83 103 19%
21 31 2 1 10 19 41852 84 223 62%
21 31 2 2 10 19 42005 103 109 6%
21 31 2 2 10 19 42005 103 109 6%
21 31 2 1 10 19 42309 113 495 77%
21 31 2 1 10 19 42309 113 495 77%
21 42 2 1 10 19 42339 80 115 30%
21 42 2 1 10 19 42339 80 115 30%
21 31 1 1 10 19 43009 107 116 8%
21 31 1 1 10 19 43009 107 116 8%
22 59 2 2 34 61 42309 88 52 -69%
22 18 1 1 10 11 42614 791 783 -1%
22 32 2 4 14 24 42675 87 83 -5%
22 41 2 4 14 25 42675 87 83 -5%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 20 1 4 14 19 43282 123 128 4%
79
22 22 1 4 14 19 43282 123 128 4%
22 24 1 4 14 19 43282 123 128 4%
22 25 1 4 14 20 43282 123 119 -3%
22 25 1 4 14 20 43282 123 119 -3%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 19 1 4 14 19 43282 123 124 1%
22 20 1 4 14 19 43282 123 128 4%
A partir de este análisis se puede evidenciar el éxito del proyecto, ya que los resultados
obtenidos en la mayoría de las predicciones se acercan mucho a la realidad. Evidenciando que
este modelo es el adecuado.
80
PARTE III. CIERRE DE LA
INVESTIGACIÓN
81
4. Conclusiones
• Uno de los pasos más importante y que toma más tiempo es la recolección,
análisis, clasificación y alistamiento de los datos. En un principio se tiende a
pensar que la parte compleja reside en la creación de la red neural, pero el
verdadero desafío está en implementar las herramientas y métodos de BigData,
ya que requiere de una gran exigencia de conocimiento y de análisis de datos.
• Es importante antes de embarcarse en la tarea de hacer un modelo de Machine
Learning tener claro el proceso de negocio que soporta y sobre todo tener los
datos ligados a este. Es totalmente contraproducente iniciar el desarrollo sin
tener los datos necesarios. Se entiende a estos datos como información que
representa valor para el proceso, que están activamente aportando al flujo del
negocio y que se tiene un histórico de ellos. Es más, si se hacen informes y
análisis a partir de estos datos mucho mejor, ya que esto valida la calidad de
los datos y su disposición para ser parte del proceso de machine learning.
• Para el procesamiento de los datos es importante tener en cuenta que la
maquina donde se ejecuta la red debe preferiblemente ser un servidor externo
y adicionalmente debe contar con un muy buen recurso de hardware ya que
esto impacta directamente en el tiempo en que se demora el aprendizaje de la
red.
• Machine Learning es un marco de trabajo que hace parte del conjunto de
herramientas de inteligencia artificial, su correcta implementación aporta valor
a los procesos existentes.
• Se evidencia a través del modelo diseñado, que las predicciones son muy
acertadas y además se hacen en un costo de tiempo menor, lo que representa
un gran beneficio a la compañía, puesto que actualmente el proceso se extiende
aproximadamente 1 o 2 días mientras el socio o la persona encargada hace una
revisión a la base de conocimientos.
82
5. Trabajos Futuros
Realizar el mejoramiento y mantenimiento de la red neuronal creada: Con el modelo de red
neural establecido en el prototipo y realizando un pequeño análisis sobre otras variables a tener
en cuenta (como la categoría del empleado) se pueden fácilmente adaptar algunos datos de las
entradas que produce la ETL para elaborar una red neural similar pero que sea capaz de
predecir la cantidad de recursos humanos que se requieren para el proyecto.
Una vez la red sea capaz de predecir el recurso humano es bastante sencillo calcular el costo
del proyecto aproximado (en términos de recurso humano) ya que se multiplica el valor de la
categoría del abogado por el número de personas requeridas, y con esto ya tenemos un
estimado del costo.
Sin embargo, queda abierta la posibilidad de experimentar con otro tipo de red neural que sea
capaz de predecir varias variables al tiempo.
También es posible integrar la red neural de este proyecto a un ecosistema de redes neuronales
que puedan predecir los procesos complejos que implica todo el desarrollo de proyectos, no
solo en el ámbito legal si no en otros ámbitos y áreas. En nuestro caso, los proyectos con los
que trabajamos todos los días (Proyectos de software).
Y para ir mucho más lejos, se podría pensar en la elaboración de redes para extraer información
a partir de las sentencias y requerimientos escritos (NPL, Procesamiento de lenguaje natural),
de esta manera poder obtener los datos sin el preprocesamiento y clasificación de la
información.
En el entorno de usuario se podrán elaborar muchos más reportes, tanto de análisis de datos
existentes como de predicción, ya que con el 30% de los datos de pruebas que tenemos en el
modelo se pueden pasar por la red neural para representar gráficamente estas estimaciones
con filtros predeterminados.
83
6. Bibliografía
Anderson, J. A., & A., J. (2007). Redes neurales. Alfaomega.
Benítez, R., Escudero, ., & K, . (2013). INTELIGENCIA ARTIFICIAL AVANZADA
(UOC). UOC.
Benjamins, R. (11 de Septiembre de 2018). Obtenido de Big Data & Data Science Blog:
Four design principles for developing sustainable AI applications: https://data-
speaks.luca-d3.com/2018/09/four-design-principles-for-
developing.html?utm_source=fe
Caballero, C. E., & Manios, S. R. (2016). Prototipo de Automatización del Proceso de
Importaciones a Colombia. Recuperado el 30 de 10 de 2018, de
http://repository.udistrital.edu.co/handle/11349/2794
Danièle Bourcier, P. C. (2003). Inteligencia artificial y derecho. UOC.
Dossman, C. (12 de Septiembre de 2018). Obtenido de The Engineers Guide to Machine
Learning: Data processing | Data Types: https://medium.com/ai3-theory-practice-
business/the-engineers-guide-to-machine-learning-data-processing-data-types-
ba40e
Google. (2018). Obtenido de Tensor Flow: https://www.tensorflow.org/
Group, M. C. (2017). Obtenido de Loss Functions: https://ml-
cheatsheet.readthedocs.io/en/latest/loss_functions.html
Hope, T., Resheff, Y. S., & Lieder, I. (2017). Learning TensorFlow. O'Reilly Media, Inc.
Jupyter. (10 de 2018). Jupyter. Obtenido de http://jupyter.org
Keras Documentation. (2018). Obtenido de https://keras.io/
Minka, E. (10 de 2018). Mean Absolute Erro. Obtenido de MAE :
https://medium.com/@ewuramaminka/mean-absolute-error-mae-machine-
learning-ml-b9b4afc63077
Mitchell, T. M. (2018). Universidad de Stanford. Obtenido de
https://www.coursera.org/learn/machine-learning/
Morgan, P. (2018). Machine Learning Is Changing the Rule. I. O’Reilly Media, Ed. (First
Edition).
Mycin. (s.f.). Recuperado el 8 de 10 de 2018, de Wikipedia, la enciclopedia libre:
http://es.wikipedia.org/wiki/Mycin
Ng, A. (2018). Universidad de Stanford. Obtenido de
https://www.coursera.org/learn/machine-learning/
Pajares Martinsanz, G. (2010). Ra-Ma. Obtenido de Aprendizaje automatico:
http://www.ra-ma.es/libros/APRENDIZAJE-AUTOMATICO-UN-ENFOQUE-
PRACTICO/23487/978-84-9964-011-2
Ponce Cruz, P. (2010). Inteligencia Artificial con Aplicaciones a la Ingeniería. México
D.F.: Alfaomega Grupo Editor, S.A. de C.V.
Posse Herrera Ruiz, firma colombiana del año. (2015). Portafolio, 1.
Ruder, S. (2016). Obtenido de An overview of gradient descent optimization algorithms:
http://ruder.io/optimizing-gradient-descent/index.html
Scikit-learn. (2018). Obtenido de Scikit-learn: https://scikit-learn.org/stable/
84
The Open Group. (2016). Obtenido de
http://pubs.opengroup.org/architecture/archimate3-doc/
Toro, L. (Octubre de 2018). Blog desde Linux. Obtenido de https://blog.desdelinux.net:
https://blog.desdelinux.net/ciencia-de-datos-con-python/
Towards Data Science. (04 de 08 de 2017). Towards Data Science. Obtenido de The
mostly complete chart of Neural Networks, explained:
https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-
explained-3fb6f2367464
Wasson, M. (2018). Microsoft Docs. Obtenido de Estilo de arquitectura de
microservicios: https://docs.microsoft.com/es-
es/azure/architecture/guide/architecture-styles/microservices
85
ANEXOS
86
ANEXO I. Fragmento del DataSet utilizado en el proyecto
A continuación, una muestra de 100 registros que se utilizaron para entrenar el modelo, el dataset completo contiene más de 5000 registros.
Tipo Empresa
Tipo Caso
Lenguaje Moneda País Departamento Fecha Inicio
Días Duración
1 12 1 2 9 5 40330 1220
1 25 1 1 10 15 42917 444
2 6 1 2 10 9 42644 761
2 42 1 1 10 19 42095 763
2 42 1 1 10 19 42795 610
3 2 2 2 34 42 40878 1197
4 3 2 2 8 4 40365 426
4 16 2 1 10 11 42767 238
5 5 1 1 10 9 40787 763
6 25 2 4 18 33 43266 139
6 25 2 4 18 33 43266 139
7 25 1 1 10 16 41183 892
7 25 1 1 10 17 40330 1220
7 28 1 1 10 19 41153 922
7 31 1 1 10 19 41579 452
7 31 1 2 34 48 40220 1855
8 8 1 1 10 11 40817 738
8 25 1 4 10 17 42583 822
8 25 2 1 10 17 42887 518
9 18 1 2 10 11 42795 610
9 25 1 2 14 20 41275 1730
9 25 2 2 34 44 41609 106
10 42 2 1 10 19 42461 944
11 27 2 2 13 19 41640 182
12 21 1 1 10 13 40909 1166
12 25 1 1 10 17 40756 794
12 25 1 2 34 44 40204 217
12 55 2 2 34 57 40634 329
13 18 2 2 2 2 43132 273
13 33 2 2 8 4 41913 1092
13 56 2 2 17 33 42522 483
13 56 2 2 34 60 42005 190
14 25 2 2 11 19 41730 1435
15 25 2 2 8 4 42309 856
87
15 25 2 2 10 17 41640 295
15 25 1 1 10 17 41548 527
15 57 2 2 12 19 42917 94
15 57 2 2 13 19 42826 431
15 60 1 2 34 64 41031 201
16 48 1 4 10 19 42917 488
17 55 2 2 34 58 42217 220
17 59 2 2 34 61 40330 654
18 16 1 1 10 11 40391 1159
19 55 2 2 10 19 42309 414
19 55 2 2 10 19 42217 506
20 15 1 1 10 11 42278 475
20 16 1 1 10 11 40940 344
20 21 1 1 10 14 40725 274
21 17 1 1 10 11 41792 1613
21 25 2 1 10 17 41852 83
21 31 2 1 10 19 41852 136
21 31 2 1 10 19 41852 84
21 31 2 2 10 19 42005 103
21 31 1 1 10 19 43040 76
21 31 2 1 10 19 42430 975
21 31 2 1 10 19 42370 1035
21 31 2 1 10 19 42826 339
21 31 1 1 10 19 43009 107
21 31 1 1 10 19 43101 304
21 31 1 1 10 19 43191 214
21 31 2 1 10 19 42309 1096
21 31 2 1 10 19 42005 1400
21 31 2 1 10 19 42491 366
21 31 2 1 10 19 41883 550
21 31 2 1 10 19 41913 519
21 31 2 1 10 19 42278 168
21 31 2 1 10 19 42339 190
21 31 2 1 10 19 41852 581
21 31 2 1 10 19 41883 610
21 31 2 1 10 19 41883 550
21 31 2 1 10 19 42309 113
21 42 2 1 10 19 42339 80
21 42 2 1 10 19 42461 196
88
21 42 2 1 10 19 41883 536
21 42 2 1 10 19 42278 245
21 42 2 1 10 19 42339 184
21 42 2 1 10 19 42339 80
21 42 2 1 10 19 41821 612
21 42 2 1 10 19 41883 535
21 42 2 1 10 19 41913 506
21 42 2 1 10 19 42278 251
21 42 2 1 10 19 42370 231
21 42 2 1 10 19 42370 305
21 42 2 1 10 19 42461 200
22 10 2 2 8 4 41365 710
22 11 2 2 8 4 41699 1306
22 16 2 2 8 4 41671 404
22 16 2 2 8 4 40969 397
22 18 1 1 10 11 42614 791
22 19 1 4 14 19 43282 123
22 19 1 4 14 19 43282 123
22 19 1 4 14 19 43282 123
22 19 1 4 14 19 43282 123
22 20 1 4 14 19 43282 123
22 22 1 4 14 19 43282 123
22 24 1 4 14 19 43282 123
22 25 1 4 14 20 43282 123
22 25 1 4 14 20 43282 123
22 25 2 2 14 20 40918 484
22 25 1 2 14 21 40969 356
89
ANEXO II. Código del cliente de consumo del servicio
El siguiente fragmento de código corresponde a una clase en el lenguaje c#, que se encarga
de consumir el servicio de Jupyter Notebook.
90
ANEXO III. Configuración Web Service
Instalación de Jupyter Kernel Gateway
Esta librería se utilizó para convertir un Notebook en un servicio Rest. Para configurarlo se deben realizar los siguientes pasos:
1. Instalar la librería con ayuda del entorno de Anaconda.
2. Aceptar e instalar las dependencias.
91
3. Abrir Anaconda Prompt, ejecutar el siguiente comando:
conda install -c conda-forge jupyter_kernel_gateway
Se debe esperar a que se instalen todas las librerías requeridas.
4. Iniciar el servicio de Jupyter Rest:
jupyter kernelgateway --KernelGatewayApp.api='kernel_gateway.notebook_http' --KernelGatewayApp.seed_uri='./RedNeuronalFinal2.ipynb'
92
Configuración de Notebook
Los siguientes dos bloques de código se deben ejecutar en el notebook para exponerlo como
un servicio rest. Se debe tener en cuenta la configuración y la correcta asignación de las
variables en el media query.