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
101
Embed
DISEÑO DE UNA HERRAMIENTA BASADA EN MACHINE …repository.udistrital.edu.co/bitstream/11349/14633... · mundo sin la web, en unos años no tardaremos en acostumbrarnos y asimilar
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
3.1.1 Organización .............................................................................................................................. 39
3.1.2 Proceso ....................................................................................................................................... 40
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
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.