UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
Peumo Repositorio Digital USM https://repositorio.usm.cl
Tesis USM TESIS de Pregrado de acceso ABIERTO
2019-09
ESTIMACIÓN DE ESFUERZO EN
PROYECTOS DE SOFTWARE A
PARTIR DE HISTORIAS DE USUARIO
MORALES MATURANA, FELIPE IGNACIO
https://hdl.handle.net/11673/48577
UNIVERSIDAD T ´
ECNICA FEDERICO SANTA MAR´IA
DEPARTAMENTO DE INFORM ´
ATICA
SANTIAGO – CHILE
“ESTIMACI ´
ON DE ESFUERZO EN PROYECTOS
DE SOFTWARE A PARTIR DE HISTORIAS DE
USUARIO”
FELIPE IGNACIO MORALES MATURANA
MEMORIA DE TITULACI ´ON PARA OPTAR AL T´ITULO DE
INGENIERO CIVIL INFORM ´ATICO
PROFESOR GU´IA: RICARDO ˜NANCULEF
UNIVERSIDAD T ´
ECNICA FEDERICO SANTA MAR´IA
DEPARTAMENTO DE INFORM ´
ATICA
SANTIAGO – CHILE
“ESTIMACI ´
ON DE ESFUERZO EN
PROYECTOS DE SOFTWARE A PARTIR DE
HISTORIAS DE USUARIO”
FELIPE IGNACIO MORALES MATURANA
MEMORIA DE TITULACI ´ON PARA OPTAR AL T´ITULO DE INGENIERO CIVIL INFORM ´ATICO
PROFESOR GU´IA: RICARDO ˜NANCULEF PROFESOR CORREFERENTE: JOS ´E LUIS MART´I
SEPTIEMBRE 2019
Agradecimientos
A mi madre Carmen Gloria por el apoyo y amor incondicional que me ha brindando durante
toda mi vida, y por ser el pilar fundamental de lo que hoy soy como persona y profesional.
En memoria de mi padre Jorge, que a pesar de eventos muy turbulentos durante el transcurso
del proceso, logr´o dejarme por siempre la meta de alcanzar la mayor felicidad posible. En
memoria de mi abuelita Rosa, cuyo cari˜no, bondad, dulzura y amor quedar´an por siempre en
mis recuerdos. A mis t´ıos, quienes fueron un apoyo fundamental en momentos dif´ıciles. A
mi prima Karen, por estar tambi´en ah´ı y recordarme lo lindo que es simplemente vivir.
A mis queridos amigos de la universidad que me entregaron momentos inolvidables durante
mi estad´ıa en ella y quienes tendr´an por siempre un lugar en mi coraz´on: Jose, Dani, May,
Gustavo, Marco y Felipe. A mis amigos de toda la vida, Nini y Beto, por siempre estar ah´ı
cuando m´as lo necesitaba.
A Nursoft por confiar en mi en la realizaci´on de este trabajo. A mis compa˜neros y
ami-gos de Nursoft, que me han ayudado a no temer quien soy realmente y a siempre mejorar
profesionalmente.
A Jose, por su cari˜no y apoyo durante los d´ıas m´as dif´ıciles durante la realizaci´on de este
trabajo.
Finalmente, a todos los profesores que me formaron para convertirme en un profesional,
en especial al profesor Jos´e Luis Mart´ı por ser el principal apoyo durante toda la carrera
y al profesor Ricardo ˜Nanculef por presentarme el interesante mundo de las m´aquinas de
Resumen
En la industria del desarrollo de software, la estimaci´on inicial de la duraci´on de los proyectos
es de suma importancia para garantizar su ´exito y es una de las actividades m´as complejas
de realizar correctamente. Alrededor del 60 % de los proyectos fracasa por no cumplir con
expectativas temporales, por lo que se ha hecho ´enfasis en poder generar mejores m´etodos
de predicci´on. Sin embargo, existen falencias en la mayor´ıa de los m´etodos que no permiten
que sean implementados en la realidad.
En este trabajo se propone unframeworkde pron´ostico de esfuerzo en proyectos de software,
que utiliza la informaci´on de las historias de usuario y m´etodos de aprendizaje autom´atico.
Para esto se proponen adem´as aspecto clave de las historias de usuario que se relacionan con
el esfuerzo que requieren para ser terminadas.
Finalmente, se valida el framework con un dataset de proyectos que utilizan metodolog´ıas
´agiles para su realizaci´on, comparando su rendimiento con el estado del arte y el proceso de
estimaci´on cl´asico. En base a los resultados, se concluye respecto a la informaci´on que es
Abstract
In the industry of software development, the initial estimation of the duration of projects is
one of the most important and difficult tasks in the planning phase. Around 60 % of projects
fails due to unfeasible deadlines, so a lot of research has been done in order to mitigate it.
Most of this research, however, presents a degree of problems that makes it rather impossible
to implement in practice.
In this work, an effort forecasting framework is proposed that uses information of the user
stories to perform predictions with modern machine learning techniques. A set of key aspects
of the user stories is also proposed with the motivation to recognize useful information for
the predictive process.
Finally, the framework is validated on a modern dataset of projects that use agile
metho-dologies in their implementations, comparing its performance with the state of the art and
the current classic forecasting process. Based on the results obtained, conclusions are made
about the relevance of the proposed aspects of the user stories and the overall performance
´Indice de Contenidos
Agradecimientos iii
Resumen iv
Abstract v
´Indice de Contenidos vi
Glosario x
1. Introducci´on 1
1.1. Objetivos . . . 2
1.1.1. Objetivo general . . . 2
1.1.2. Objetivos espec´ıficos . . . 2
1.2. Metodolog´ıa . . . 3
1.3. Estructura de la memoria . . . 4
2. Problema y Contexto 6 3. Marco Te´orico 9 3.1. Metodolog´ıas contempor´aneas de desarrollo . . . 9
3.1.2. Modelo ´agil . . . 12
3.2. M´aquinas de aprendizaje . . . 13
3.2.1. Entrenamiento . . . 15
3.2.2. Overfittingyunderfitting . . . 16
3.2.3. Sesgo versus varianza . . . 16
3.2.4. Maldici´on de la dimensionalidad . . . 17
3.2.5. Regularizaci´on . . . 18
3.3. Ingenier´ıa de atributos . . . 19
3.3.1. Transformaci´on de atributos . . . 20
3.3.2. Selecci´on de atributos . . . 23
3.3.3. Principal Component Analysis(PCA) . . . 27
3.4. Modelos lineales de regresi´on . . . 28
3.4.1. M´ınimos cuadrados ordinarios . . . 29
3.4.2. Lasso . . . 30
3.5. Modelos no lineales de regresi´on . . . 30
3.5.1. M´aquinas de soporte . . . 30
3.5.2. Arboles de regresi´on . . . .´ 35
3.6. Optimizaci´on de modelos . . . 38
3.6.1. Tuneo de hiperpar´ametros . . . 39
3.6.2. M´etodos de ensamblaje . . . 40
3.7. Estimaci´on de distribuci´on por m´etodo de kernel . . . 45
4. Estado del Arte 47 4.1. M´etodos de estimaci´on de esfuerzo . . . 47
4.1.1. Estimaci´on por evaluaci´on experta . . . 48
4.1.3. Modelos param´etricos . . . 51
4.1.4. Aprendizaje autom´atico . . . 58
4.2. Caracter´ısticas utilizadas para la estimaci´on . . . 61
4.3. M´etricas de rendimiento . . . 63
5. Soluci´on Propuesta 65 5.1. Etapa de pre-procesamiento . . . 67
5.1.1. An´alisis de atributos . . . 68
5.1.2. Agregaci´on de atributos . . . 75
5.1.3. Definici´on de conjuntos . . . 79
5.1.4. Normalizaci´on y filtrado . . . 80
5.2. Etapa de selecci´on . . . 81
5.2.1. Selecci´on de hiperpar´ametros . . . 81
5.2.2. Selecci´on de modelos . . . 82
5.2.3. Modelos propuestos . . . 83
5.3. Etapa de pron´ostico . . . 86
5.3.1. Distribuci´on del valor esperado del estimador . . . 86
6. Validaci´on y Resultados 87 6.1. Importancia de los atributos . . . 88
6.2. Rendimiento de la soluci´on . . . 93
6.2.1. Comportamiento de selecci´on de modelos . . . 94
6.2.2. Rendimiento del framework seg´un atributos utilizados . . . 95
6.2.3. Relaci´on entre error y cantidad de datos . . . 99
6.2.4. Distribuciones obtenidas . . . 101
Bibliograf´ıa 106
Anexos 111
A. Proceso de reporte de esfuerzo actual en la empresa Nursoft . . . 111
B. Caracter´ısticas generales de los atributos propuestos luego del proceso de agregaci´on . . . 112
Glosario
Esfuerzo: cantidad de horas humanas requeridas para finalizar una actividad particular.
Historia de usuario (US): corresponde a una descripci´on en lenguaje natural que de-fine las caracter´ısticas de una funcionalidad que compone a un sistema.
Heur´ıstica: corresponde a un proceso espec´ıfico recomendado que no es posible vali-dar o que est´a validado de manera emp´ırica, sin ser a´un demostrado.
Backend: se refiere a la capa de l´ogica de un sistema en particular.
Cap´ıtulo 1
Introducci´on
El ´exito en los proyectos de desarrollo de software depende del equilibrio de 3 variables
fundamentales: el costo, el alcance y su duraci´on. Esta ´ultima debe ser definida al inicio de
los proyectos independientemente de la metodolog´ıa de desarrollo que se est´e utilizando, y
sin embargo es la que presenta la mayor tasa de problemas en la industria. Alrededor del 60 %
de los proyectos no logra finalizar dentro de los plazos que inicialmente fueron propuestos
[23], lo cual se explica por el gran nivel de incertidumbre que se tiene al inicio de ellos en
comparaci´on con estimaciones realizadas m´as tarde en el desarrollo [12].
La estimaci´on del tiempo de un proyecto se traduce en estimar el esfuerzototal requerido para realizarlo, que se define como la cantidad de horas humanas que se deben invertir para
desarrollar todas las funcionalidades que lo componen. El proceso de pron´ostico del
esfuer-zo ha sido exhaustivamente estudiado desde varios enfoques, con m´etodos y metodolog´ıas
asociadas a juicios expertos, modelos param´etricos y aprendizaje autom´atico [42], teniendo
la mayor´ıa de estas investigaciones problemas debido a la antig¨uedad de los datos que se
analizan, a la baja presencia de ellas en la industria, y por ´ultimo y m´as importante, a su
reducida aplicabilidad a desarrollos que utilizan metodolog´ıas ´agiles, las cuales poco a poco
se han convertido en un est´andar com´un en la industria. Lo anterior se debe principalmente
debido a que se utilizan datos de los proyectos que no est´an disponibles al inicio en
me-todolog´ıas ´agiles, en donde la planificaci´on tiende a ser cortoplacista y no suele haber un
necesidad de explorar nuevas formas compatibles con el agilismo para predecir el esfuerzo.
Es tambi´en relevante considerar que lo ´unico certero respecto a la estimaci´on de esfuerzo
en proyectos de software, es que en definitiva ´esta jam´as ser´a certera [50]. Por lo tanto, es
de esperar que todas las estimaciones de esfuerzo tengan un grado de incertidumbre en sus
pron´osticos. Luego, es necesario acompa˜nar el desarrollo de un m´etodo predictivo junto a la
definici´on de una estrategia para transparentar esta incertidumbre, sobre todo considerando
que es importante que los clientes due˜nos de los proyectos se puedan alinear con la idea de
procesos inciertos [6].
En este trabajo se utiliz´o un dataset actualizado de proyectos de software sobre el cual se
pro-puso un m´etodo de aprendizaje autom´atico para realizar pron´osticos del esfuerzo requerido
para completarlos, basado en las historias de usuario de cada uno. Estas ´ultimas corresponden
a la forma de documentar funcionalidades que se sugiere en las metodolog´ıas ´agiles
moder-nas. El dataset tiene en total 12 proyectos de la empresa de desarrollo de softwareNursofty
326 historias de usuario con atributos en bruto presentes en la base de datos donde residen,
a los cuales se referenciar´a de ahora en adelante como atributos base. Sobre estos se pro-puso adem´as la incorporaci´on de nueva informaci´on que mejore la precisi´on del pron´ostico
completo.
1.1.
Objetivos
1.1.1.
Objetivo general
Validar un m´etodo de aprendizaje autom´atico para pronosticar al inicio de proyectos
de desarrollo de software el esfuerzo requerido para finalizarlos, a partir de atributos
relevantes propuestos de las historias de usuario que los componen.
1.1.2.
Objetivos espec´ıficos
Construir una herramienta que permita a Nursoft agilizar futuras investigaciones sobre
Explorar y seleccionar distintos modelos de aprendizaje para realizar el pron´ostico.
Evaluar el impacto de la ingenier´ıa de atributos en el rendimiento de la soluci´on
pro-puesta.
Definir una estrategia para estimar la incertidumbre del pron´ostico.
Mejorar el rendimiento de la metodolog´ıa actual basada en Planning Poker utilizada
en Nursoft.
Comparar el rendimiento obtenido con investigaciones similares del estado del arte.
1.2.
Metodolog´ıa
La metodolog´ıa utilizada en el presente trabajo se basa en CRISP-DM, propuesta por Wirth
et al. [52], que define una serie de pasos que permiten construir y evaluar modelos sobre
conjuntos de datos que se desean explorar. Se definen en ´esta las etapas de entendimiento del
negocio, entendimiento de los datos, preparaci´on de los datos, modelamiento de los datos,
evaluaci´on del modelo y la puesta en producci´on de los modelos.
En primer lugar, la etapa de entendimiento del negocio se realiza explorando el estado del
arte de estimaci´on del esfuerzo en proyectos de software y realizando un an´alisis del proceso
actual que realiza la empresa de la cual provienen los datos.
Luego, y para poder entender la estructura de los historias de usuario que se utilizar´an para
realizar predicciones, se realiza un an´alisis de los atributos de las historias de usuario
dispo-nibles en los proyectos, enfoc´andose en la utilidad que tienen estos en los pron´osticos. Se
proponen adem´as un conjunto nuevo de atributos relevantes basados en las caracter´ısticas
m´as importantes que afectan el esfuerzo requerido para realizar funcionalidades.
A continuaci´on, se agregan los atributos propuestos previamente a las historias de usuario y
Subsiguientemente, se exploran, eval´uan y seleccionan distintos modelos de aprendizaje
au-tom´atico para construir elframeworkde pron´osticos de esfuerzo, haciendo ´enfasis en
mode-los que realicen selecci´on de atributos de manera inherente para poder visualizar y analizar
la importancia de cada uno de los atributos utilizados para el pron´ostico de un proyecto.
Posteriormente, se exploran y refinan m´etodos para poder obtener distribuciones de
probabi-lidad para visualizar la incertidumbre del pronosticador seleccionado durante el pron´ostico
de un proyecto.
Finalmente, se analizan los resultados finales de los pron´osticos obtenidos realizando
simu-laciones con los proyectos terminados en la empresa Nursofty se realiza una comparaci´on
con el estado del arte y el proceso actual de la empresa, utilizando m´etricas est´andar en el
rubro.
1.3.
Estructura de la memoria
En el cap´ıtulo 2 se define con m´as detalle la problem´atica a tratar y el contexto en el cual
se estar´a validando el m´etodo propuesto, explicando la procedencia de los datos que se
uti-lizar´an para realizar el pron´ostico del esfuerzo y los procesos internos actuales que se usan
para pronosticar.
En el cap´ıtulo 3 se resume la literatura referente a metodolog´ıas ´agiles y m´aquinas de
apren-dizaje, explicando c´omo se pre-procesan los datos, c´omo se describen los modelos probados
para la predicci´on y c´omo son estos seleccionados. Adem´as, se explican los m´etodos
utiliza-dos para visualizar la incertidumbre de los pron´osticos.
En el cap´ıtulo 4 se hace una revisi´on exhaustiva del estado del arte de la problem´atica de
predecir el esfuerzo de proyectos de software, haciendo ´enfasis en los distintos m´etodos para
realizar pron´osticos, en los atributos y caracter´ısticas interesantes que utilizan los estudios
para sus pron´osticos y en las m´etricas est´andares definidas en el rubro para realizar
En el cap´ıtulo 5 se presentan los resultados obtenidos al realizar pron´osticos con el
frame-worky se visualiza el rendimiento obtenido.
Finalmente, en las conclusiones se analizan los resultados obtenidos, realizando una
compa-raci´on con el estado del arte y el proceso actual utilizado en la empresa de donde provienen
Cap´ıtulo 2
Problema y Contexto
En todo tipo de proyectos es necesario realizar una estimaci´on inicial de su duraci´on.
Aque-llos enfocados en la construcci´on de software no est´an exentos a esta regla, siendo
particular-mente en este tipo de proyectos una tarea compleja considerando la inherente incertidumbre
que existe en el rubro. Esta incertidumbre proviene desde varios factores que han sido
abor-dado en diversos estudios [42], entre los cuales se destacan la existencia de requerimientos
iniciales inmaduros, falta de visi´on del producto final, riesgos no contemplados, factores
t´ecnicos y factores externos que no son inicialmente identificados. A´un con la alta
incerti-dumbre que es asumida en la industria, sigue siendo necesario estimar la variable temporal
al inicio debido a que no es factible iniciar un desarrollo de software sin tener al menos una
noci´on de los plazos iniciales de t´ermino, ya que de esto dependen otras variables, tal
co-mo el c´alculo de costo co-monetario y humano del proyecto y su factibilidad. Adem´as, ha sido
comprobado en varios estudios que es ´esta la variable que tiene mayor impacto en el ´exito
de los proyectos o en su eventual fracaso [42] [13].
La investigaci´on en el ´area de la estimaci´on y pronosticaci´on del tiempo necesario para
fina-lizar los proyectos se ha intensificado en la ´ultima d´ecada, en donde se han obtenido m´etodos
basados en juicio experto, m´etodos por analog´ıas con proyectos similares, m´etodos que
uti-lizan modelos param´etricos y m´etodos que utiuti-lizan aprendizaje autom´atico. Las t´ecnicas de
a expensas de una reducci´on en la transparencia de c´omo se est´a en verdad realizando la
predicci´on (Black-Box effect), especialmente en m´etodos basados en redes neuronales [30]. Todas estas t´ecnicas buscan estimar el tiempo en funci´on del esfuerzorequerido para
fina-lizarlo, enfoc´andose en la obtenci´on de una estimaci´on precisa y ´unica sin prestar mucha
atenci´on a la variabilidad de los pronosticadores.
En particular, se tiene que en la empresa de desarrollo de softwareNursoft, que se especializa
en desarrollo de software a medida, se tiene un error m´as bajo que la media observable en la
industria. En esta empresa, se utiliza la metodolog´ıa de juicio expertoPlanning Poker, que
es un est´andar en las metodolog´ıas modernas de desarrollo (metodolog´ıas ´agiles).
El esfuerzo de un proyecto de software en la empresa sigue las convenciones generales de
la industria, y se define como la cantidad de horas humanas que se deben invertir para su
finalizaci´on. Esto considera todos los distintos roles que participan en el desarrollo, tales
como desarrolladores, dise˜nadores, arquitectos de software, encargados de calidad y
admi-nistradores de operaciones. La estimaci´on del esfuerzo total del proyecto se realiza sumando
la estimaci´on del esfuerzo de cada uno de las funcionalidades que lo componen. Dada la
utilizaci´on del modelo ´agil en los procesos, los requerimientos se representan como historias
de usuario [37]. La documentaci´on en el formato de historias de usuario corresponde a una
explicaci´on en lenguaje natural sobre lo que se desea construir y define una cierta cantidad de
caracter´ısticas particulares que se deben cumplir. El esfuerzo de cada historia de usuario se
traduce a partir de una m´etrica especial de la metodolog´ıaScrum, llamado puntos de historia
de usuario. Estos puntos son consensuados y generalmente se interpreta que una unidad de
punto de historia de usuario equivale a un n´umero horas de trabajo humano espec´ıficas.
El proceso de estimaci´on actual consiste en realizar el proceso de planning poker para un
proyecto, y luego definir el valor en horas de cada punto asignado. Generalmente, se utiliza
la m´etrica de que cada punto equivale a 5 horas de esfuerzo humano. Por otro lado, el proceso
actual del registro del esfuerzo real requerido en cada historia de usuario se realiza a trav´es
de la plataformaBlackSheep. El proceso se explica con mayor detalle en el anexo A.
permita disminuir el error entre los pron´osticos de esfuerzo iniciales y el esfuerzo total final
requerido para el proyecto. Dicho proceso debe considerar toda la informaci´on relevante de
las historias de usuario, asegur´andose de que dicha informaci´on pueda ser f´acilmente
deduci-ble en potenciales nuevos proyectos. Dicho en otras palabras, es necesario que la informaci´on
del pasado a utilizar para pronosticar, pueda ser a˜nadida a los proyectos antes de que inicie
el desarrollo. El proceso debe poder proveer adem´as una representaci´on gr´afica de la
distri-buci´on de probabilidad de la estimaci´on para visibilizar y transparentar la incertidumbre del
proceso de desarrollo. Por ´ultimo, ´este debe poder reducir el error en la empresaNursoften
Cap´ıtulo 3
Marco Te´orico
3.1.
Metodolog´ıas contempor´aneas de desarrollo
En la industria de desarrollo de software se han creado diversas metodolog´ıas, modelos y
t´ecnicas para poder ordenar un proceso que se caracterizaba en sus inicios por ser muy
des-ordenado, desestructurado y ca´otico, y en donde abundaban los retrasos y clientes
insatisfe-chos, a una magnitud tan grave que incluso en el a˜no 1968 se comenz´o a hablar de una crisis
[38]. Fue gracias a esta crisis y a numerosos y catastr´oficos fallos que el ´area de desarrollo y
gesti´on de proyectos de software comenz´o a evolucionar y madurar hasta encontrar formas
de ordenar los procesos [45]. Esta estructuraci´on de procesos se formaliz´o en los a˜nos 70’s
y 80’s, para establecerse como una disciplina fija con el nombre de Ingenier´ıa de Software,
que se enfoca en mejorar los procesos de todos los aspectos de la producci´on de software,
desde las primeras fases de consolidaci´on del alcance de los productos, hasta su mantenci´on
una vez desarrollados.
Para efectos del presente marco te´orico y con el objetivo de clarificar conceptos que suelen
mezclarse en la pr´actica, es importante tener en mente que un modelo es muy distinto a una
metodolog´ıa, en el sentido de que el primero describe lo que se debe hacer, mientras que el
segundo c´omo hacerlo. Un modelo es entonces descriptivo, mientras que una metodolog´ıa
Los avances m´as significativos y revolucionarios en ingenier´ıa de software corresponden a
aquellos que han definido y estructurado todo el ciclo de vida de los proyectos. Entre los
principales modelos que se han propuestos para definir c´omo debe ser su ciclo de vida, se
destacanWaterfall,V-model,Spiral ModelyAgilecomo los m´as relevantes [45]. Este ´ultimo
es el m´as reciente y el que presenta el mayor porcentaje de ´exito [3] en d´onde el 39 % de los
proyectos finaliza sin dificultades, mientras que en el resto de los modelos solo el 11 % lo
hace. Adem´as este tiene un alto porcentaje de adopci´on en la industria moderna, incluyendo
empresas que se forman aplicando las metodolog´ıas del modelo desde el inicio y empresas
que poco a poco han ido migrando a las metodolog´ıas ´agiles en busca de hacer m´as eficientes
y adaptivos sus procesos.
3.1.1.
Modelo cl´asico
El modelo en cascada (Waterfall) es considerado como cl´asico en el ´area de desarrollo de
software y corresponde a uno de los primeros intentos de darle estructura el ciclo de vida
de proyectos de software. Se caracteriza por definir un proceso lineal de desarrollo en donde
es fundamental que los requerimientos del software que se quiere construir est´en definidos a
Figura 3.1: Modelo de ciclo de vida en cascada [7].
En este modelo las etapas est´an bien definidas, sin que ocurra traslape. En resumen, el
soft-ware es primero definido y dise˜nado seg´un los requerimientos previamente analizados y
definidos por le cliente y el equipo, luego es desarrollado en base a dicha definici´on, y por
´ultimo es puesto en producci´on y entra as´ı a un ciclo de mantenci´on.
Los proyectos que utilizan el modelo en cascada son relativamente m´as f´aciles de interpretar.
Sin embargo, en este modelo resulta ser muy importante recolectar correcta y prontamente
todos los requerimientos que el cliente, la organizaci´on o qui´en sea que lo desea construir
tenga en mente. Por lo mismo, una de las desventajas m´as caracter´ısticas y el por qu´e la
industria est´a generalmente abandon´andolo, es que aquellos requerimientos que se dejan
fuera no pueden ser incorporados de manera f´acil [7]. Muchas veces es necesario realizar
un nuevo proyecto para poder iterar sobre los construidos anteriormente. Por otro lado, los
opini´on durante el proceso de desarrollo respecto a varias funcionalidades, lo que hace que
cambios que pueden ser fundamentales para el ´exito del proyecto no puedan ser incorporados
prontamente.
3.1.2.
Modelo ´agil
Si bien han surgido varios modelos que buscan eliminar o mitigar los problemas definidos
anteriormente en el modelo cl´asico, el m´as relevante corresponde al modelo ´agil de
desarro-llo. Este modelo se enfoca en la capacidad de recibir requerimientos de forma adaptiva para
solventar todos los problemas anteriores.
Las metodolog´ıas del modelo ´Agil (o metodolog´ıas ´agiles), responden al llamadoAgile
Ma-nifesto, que corresponde a un documento en donde se encuentra la definici´on y especificaci´on
de lo que significa que una metodolog´ıa sea ´agil. Dicho manifiesto se reduce a 12 principios
espec´ıficos que buscan aumentar la calidad del software que se produce, centr´andose en la
adaptabilidad, la entrega de valor continuo y equipos aut´onomos [8]. Hoy en d´ıa existe una
tendencia por la industria a adoptar las metodolog´ıas ´agiles como est´andar en sus procesos,
en donde la metodolog´ıa deScrumes la que lidera dicha tendencia [37]. La acelerada
adop-ci´on de metodolog´ıas ´agiles por parte de las empresas se debe al gran ´exito que ha tenido
el modelo ´agil a la hora de asegurar que los proyectos de desarrollo de software terminen a
tiempo y dejando satisfechos a los clientes, adem´as de la gran versatilidad y adaptabilidad a
los cambios en los requerimientos que ofrece.
Incluso con la adopci´on de metodolog´ıas ´agiles, los proyectos deben de igual manera
mane-jar correctamente su alcance temporal para lograr entregar las soluciones a tiempo. Esto es
especialmente importante considerando que el pron´ostico certero de la duraci´on inicial de un
proyecto aumenta significativamente la probabilidad del mismo de ser completado [42]. No
adoptar una metodolog´ıa de predicci´on de esfuerzo inicial puede traer consecuencias de
dis-tinta ´ındole, como por ejemplo el retraso de proyectos que dependen de la entrega, deteriorar
la percepci´on de excelencia que tienen los clientes, y en el peor caso, que esto provoque una
p´erdida de competitividad en la industria. Lo anterior se hace mucho m´as relevante
consi-derando que para el a˜no 2015, alrededor del 40 % de los proyectos de software presentaron
atrasos relevantes con respecto a las estimaciones iniciales de tiempo y/o esfuerzo que se
realizaron. Producto de estos atrasos, alrededor del 20 % se vio afectado en mayor magnitud,
causando el fallo del proyecto [13] [23].
3.2.
M´aquinas de aprendizaje
Un algoritmo de aprendizaje autom´atico o de m´aquina de aprendizaje corresponde a aquel
que puede aprender de un conjunto de datos. Se dice que un algoritmo aprende de una
expe-rienciaEobtenida al realizar una tareaT con medida de rendimientoP, si su rendimiento en
T y formas de medir el rendimiento de ellasP[40].
Se dice que el proceso de aprendizaje de un algoritmo es supervisado si este conoce el
re-sultado que se espera luego de realizar una tarea en particular. Estos algoritmos se enfocan
en observar varias muestras de un vector aleatorio xy un vector de valores asociadosypara
poder predecirycon x, usualmente estimando p(y|x). El t´ermino supervisado proviene de la
analog´ıa de que el vectoryse puede interpretar como las respuestas correctas a un problema
que son prove´ıdas por un instructor o profesor, quien le va mostrando a la m´aquina qu´e hacer
y qu´e rendimiento est´a teniendo. Un algoritmo no supervisado, por otra parte, es aquel en
donde el algoritmo no tiene claridad sobre el resultado que se desea obtener y generalmente
intenta aprender de manera expl´ıcita o impl´ıcita la distribuci´on de probabilidad [22] p(x), o
alg´un conjunto interesante de propiedades de dicha distribuci´on. Siguiendo la analog´ıa
an-terior, en este tipo de aprendizaje no existe el instructor, y el algoritmo debe poder de igual
manera aprender algo acerca de la tarea que est´a realizando.
Las tareas que el algoritmo debe aprender a mejorar son generalmente clasificadas en dos
grandes familias: tareas de clasificaci´on y tareas de regresi´on. En las del primer tipo, un
al-goritmo debe decidir entre un total dekcategor´ıas a la cual un conjunto de datos pertenece.
Para resolver esto, el algoritmo generalmente debe resolver la funci´on f : Rn → {1,· · · ,k}
que transforma una serie de caracter´ısticas (representadas en un vector) a una categor´ıa
es-pec´ıfica. Un ejemplo de este tipo de tareas es el reconocimiento de objetos y patrones en
im´agenes, donde el ejemplo cl´asico es el reconocimiento de n´umeros escritos a mano.
Algo-ritmos de regresi´on, por otro lado, corresponden a aquellos cuya tarea es predecir un valor
continuo a partir de alg´un conjunto de datos. Generalmente, el algoritmo busca la funci´on
f : Rn → R. Un ejemplo de esto es la predicci´on de esfuerzo en proyectos de software a
partir de caracter´ısticas espec´ıficas.
En algoritmos supervisados, entrenar un modelo se define como la acci´on de entregar
carac-ter´ısticas de entrada X y resultados esperadosy para que este pueda encontrar la funci´on f
3.2.1.
Entrenamiento
Cuando un modelo de aprendizaje autom´atico supervisado aprende patrones de un conjunto
espec´ıfico de datos, se dice entonces que el modelo pasa por un proceso de entrenamiento.
En ´el, el modelo ajusta las variables libres de su implementaci´on (par´ametros) utilizando
como referencia el valor real de estos, con el objetivo de poder predecir de la forma m´as
general y precisa nuevas observaciones.
Para poder realizar la correcta evaluaci´on de los modelos, es necesario reservar un
porcenta-je del conjunto de datos que no sea utilizada para el entrenamiento de ellos. La forma m´as
com´un de realizar esto es realizar la divisi´on del conjunto de datos en un subconjunto de
entrenamiento (que ser´a utilizado para entrenar el modelo) y un subconjunto de test (que
ser´a utilizado para evaluar el rendimiento del modelo a trav´es del error obtenido al predecir
este conjunto). Es tambi´en bastante com´un reservar otro subconjunto adicional,
generalmen-te llamado de validaci´on, para realizar evaluaciones ingeneralmen-termedias en los modelos para, por
ejemplo, seleccionar los hiper-par´ametros m´as adecuados al problema y poder mantener el
conjunto de test como una instancia ´unica de evaluaci´on de la generalidad de la soluci´on se
est´a proponiendo.
Cross-Validation
Realizar una divisi´on del conjunto de datos para obtener subconjuntos de entrenamiento, test
y validaci´on no es siempre factible o lo m´as ´optimo, sobretodo cuando se tiene una baja
cantidad de observaciones. Esto hace que, por ejemplo, los modelos sean entrenados con
cantidades de datos demasiado peque˜nas o evaluados en cantidades peque˜nas tambi´en. Una
alternativa bastante usada corresponde al m´etodo de K-Fold Cross Validation, en donde se
toma todo la totalidad del conjunto de datos y se generanKinstancias distintas denominadas
f olds. En cada uno de los f olds, se realiza una divisi´on de los datos para obtener un conjunto
de entrenamiento y de validaci´on (o test si se utiliza para realizar evaluaci´on de modelos)
particular a cada una de los f olds, haciendo que el rendimiento sea el promedio del error
obtenido en el conjunto de evaluaci´on (test o validaci´on) de todos ellos. Este m´etodo es
igual forma utilizado en el proceso de evaluaci´on de modelos siempre y cuando no se realice
evaluaci´on de hiper-par´ametros en el mismo conjunto para asegurar que se est´a evaluando
correctamente sobre datos que no hayan sido utilizados para tomar decisiones previas.
3.2.2.
Overfitting
y
underfitting
Overfittingcorresponde al fen´omeno en el cual un modelo se ajusta demasiado bien para un
conjunto espec´ıfico de entrenamientos, lo que causa que pierda generalidad y no sea certero
para observaciones nuevas o que el modelo no pudo ver. Esto se ve generalmente reflejado
en el error de test, en donde el overfitting se observa generalmente cuando el error de
en-trenamiento mejora cada vez m´as, y el error de testing empeora.Underfitting, por otro lado,
ocurre cuando el error de entrenamiento es muy grande, lo que representa que el modelo no
puede capturar el patr´on y la correlaci´on entre el valor esperado y los atributos que componen
a las observaciones.
3.2.3.
Sesgo versus varianza
En modelos de aprendizaje estad´ıstico se puede demostrar matem´aticamente 1 que el valor
esperado de la variable que se quiere predecir en el conjunto de test depende de dos
varia-bles fundamentales: La varianza y el sesgo. La primera se refiere al error producido por la
sensibilidad a que cambie la estimaci´on ˆysi cambiamos el conjunto de datos utilizado para
entrenamiento, lo que termina haciendo que el modelo aprenda el ruido asociado al conjunto
de datos (overfitting). Por otro lado, el sesgo corresponde al error que proviene de
supues-tos err´oneos que se hacen del conjunto de dasupues-tos, que puede causar que el modelo no pueda
detectar correctamente relaciones relevantes entre los atributos que se utilizan underfitting.
Ambos tipos de error se pueden considerar como fuerzas opuestas y se puede visualizar
es-to matem´aticamente a trav´es de la ecuaci´on que define el valor esperado del error de una
estimaci´on:
E[(y−yˆ(x))2]=Varyˆ(x))+[Bias(ˆy(x))]2+σ2 (3.1)
DondeVar es la varianza del modelo, definida por:
Var(ˆy(x))= E[ˆy(x)2]−E[ˆy(x)]2 (3.2)
, Biasel sesgo definido por:
Bias(ˆy)= E[ˆy(x)]−y (3.3)
yσ2la varianza de la funci´on realy. Se puede observar que el error ´optimo se obtiene cuando
se logra reducir tanto el sesgo como la varianza, lo cual en la pr´actica no es trivial de lograr
debido a la naturaleza muchas veces contradictoria de estos.
3.2.4.
Maldici´on de la dimensionalidad
La colectivamente conocidamaldici´on de la dimensionalidaddefine varios fen´omenos que ocurren cuando se analizan espacios con altas dimensiones, dentro de los cuales el m´as
com´un corresponde al hecho de que el volumen del espacio en que viven los datos aumenta
exponencialmente cuando aumenta el valor de la dimensionalidad (figura 3.3), provocando
que existan una mayor cantidad de valores nulos (datos dispersos) al tener que existir´a una
mayor cantidad de instancias en donde para un atributo particularxse tenga un valor nulo en
Figura 3.3: La imagen representa la velocidad con que aumenta el volumen de un espacio
cuando aumentan la dimensionalidad. Se puede visualizar el cambio cuando la dimensi´on es
compuesta por el ejex, para luego componerse por los ejesyyz.
En m´aquinas de aprendizaje lo anterior es bastante problem´atico ya que tener datos dispersos
hace que los modelos de aprendizaje no puedan interpretar correctamente relaciones entre
caracter´ısticas en las observaciones de entrada, resultando en modelos cl´asicos y complejos
que no convergen o que presentan underfitting uoverfitting. En otras palabras, los valores
nulos propios de un espacio disperso a˜naden ruido adicional al conjunto de datos de que la
mayor´ıa de los modelos no puede obviar, causando la necesidad de tener la menor cantidad
de caracter´ısticas posibles en los datos para reducir as´ı el valor de la dimensi´on del espacio.
3.2.5.
Regularizaci´on
La regularizaci´on corresponde a m´etodos propios de cada uno de los modelos existentes
para evitar el overfitting. Generalmente, estos m´etodos implican a˜nadir penalizaciones bajo
ciertos escenarios y supuestos que permiten al modelo reducir el sobre-ajuste a los datos
3.3.
Ingenier´ıa de atributos
Antes de utilizar datos como input en modelos de m´aquinas de aprendizaje para tareas de
cualquier ´ındole, es necesario preprocesarlos para reducir el ruido que estos puedan contener
y para ayudar a los modelos a reconocer patrones de manera eficiente, y as´ı aprender mejor.
Se define comoatributola representaci´on num´erica de alg´un aspecto espec´ıfico de los datos que se quieren utilizar como entrada. Por ejemplo, un atributo de una persona es su edad,
que generalmente oscila en un rango de [0,100], con excepciones en donde existen registros
de gente que ha vivido m´as de 100 a˜nos. La ingenier´ıa de atributoses el acto de extraer atributos de los datos en bruto y transformarlos a formatos que se puedan utilizar en modelos
de aprendizaje autom´atico, ya que una buena parte de estos no pueden manejar datos que
no sean num´ericos, tales como listas, objetos, texto, im´agenes, audio, data binaria, etc. Este
proceso se realiza antes de entrenar los modelos de m´aquinas de aprendizaje y es crucial
de-bido a que la dificultad de entrenamiento puede ser reducida enormemente con los atributos
correctos, que resulta en modelos m´as precisos o en procesos computacionales m´as baratos.
El proceso es de suma importancia y generalmente se tiene que la mayor cantidad de tiempo
en la utilizaci´on de modelos de m´aquinas de aprendizaje se invierte en ´el.
Figura 3.4: Lugar de la ingenier´ıa de atributos en un flujo com´un de aprendizaje autom´atico
[54].
3.4, la ingenier´ıa de atributos se encuentra entre los datos en bruto y la obtenci´on de atributos
como tal.
3.3.1.
Transformaci´on de atributos
Los datos en bruto que se utilizan de entrada para un algoritmo de aprendizaje autom´atico
pueden venir en formatos incompatibles o inconsistentes, o simplemente en formatos que
pueden incluso generar sesgo e incerteza en los modelos utilizados. Por esto, es necesario
transformarlos en atributos num´ericos que sean compatibles con la teor´ıa matem´atica y
es-tad´ıstica que soporta a los modelos y sobre los cuales es posible simular aprendizaje. Existen
distintas t´ecnicas para transformar datos num´ericos, categ´oricos, de texto y de tipo m´as
com-plejos, como por ejemplo im´agenes o grabaciones multimedia. Dado el alcance del presente
trabajo, solo se definir´an los m´etodos relevantes que se utilizan para manejar datos num´ericos
y categ´oricos. Para el resto, se recomienda [54] como una introducci´on inicial.
Datos num´ericos
Los datos num´ericos pueden t´ecnicamente ser usados directamente en la mayor´ıa de los
modelos sin necesidad de ser procesados. Es necesario sin embargo, asegurarse de que todas
las observaciones que se utilizan est´en completas y dentro de rangos l´ogicamente posibles.
Para atributos que representan contadores, es necesario analizar si utilizarlos
directamen-te traer´a problemas de rango de valores muy altos. Por ejemplo, el contador de visitas de
un sitio web puede r´apidamente aumentar a grandes valores de magnitud, lo cual puede
producir un sesgo en los modelos de m´aquina de aprendizaje que utilizan la distancia
eu-clidiana para su entrenamiento, y por tanto son m´as sensibles a la hora de detectar si un
atributo tiene m´as importancia que otro o no. Adem´as de esto, muchos algoritmos utilizan
operaciones matem´aticas que hacen que los valores aumentan o disminuyan su valor en
va-rias ´ordenes de magnitud, imposibilitando entonces la convergencia de estos o alcanzado
los l´ımites computacionales de magnitud de valores num´ericos [9]. Para solventar el
de distintas ordenes de magnitud y hacer que el atributo indique a cu´al de estos intervalos
pertenece un dato espec´ıfico. Por ejemplo, la data en bruto podr´ıa traer un contador de visitas
de 109,342,423 ∼ 1,09·108y el atributo terminar siendo 8, que corresponde a su orden de
magnitud.
Dentro del mismo concepto de atributos num´ericos con rangos muy altos, se puede aplicar
la transformaci´on logar´ıtmicaloga(ax) = x, que corresponde al inverso de la funci´on
expo-nencial. Esta simple y conocida transformaci´on es una herramienta potente para trabajar
atri-butos que tienen distribuciones con colas pesadas, que pone un mayor peso de probabilidad
en la cola de la distribuci´on respecto a la gausiana. Es posible generalizar la transformaci´on
logar´ıtmica a toda la familia de transformaciones exponenciales definiendo la de Box-Cox
que se define por la f´ormula:
˜
x=
xλ−1 λ
ln(x) (3.4)
Esta transformaci´on define a toda la familia de transformaciones exponenciales que buscan
reducir la varianza de los atributos. La idea es encontrar el par´ametroλpor an´alisis de
m´axi-ma verosimilitud o por m´etodos gaussianos que estabilicen la varianza. Los detalles de este
m´etodo escapan al alcance del presente trabajo y es posible obtener m´as informaci´on en [26].
Datos categ´oricos
Una variable o dato categ´orico es utilizado generalmente para representar el valor que tiene
un atributo en un conjunto de categor´ıas. Por ejemplo, una categor´ıa podr´ıa representar la
nacionalidad de una persona, en donde los posibles valores equivalen a todas las
naciona-lidades existentes en el mundo. Este tipo de atributos no pueden ser ingresados de forma
directa a los modelos ya que la cardinalidad del tipo de datos enumerados genera sesgos en
los modelos. Siguiendo el ejemplo de la nacionalidad N ∈ {Suecia,Inglaterra,· · · ,Chile},
una soluci´on ingenua podr´ıa ser convertir estos valores a N0 ∈
R, en donde se le asigna un
n´umero real incremental a cada valor de la categor´ıa. El problema de lo anterior es que los
que se quiere predecir al orden en que se definen las categor´ıas [29].
La codificaci´onOne-Hot, permite transformar datos categ´oricos a m´ultiples atributos
bina-rios que indican la presencia o no de una categor´ıa en particular y soluciona la
problem´ati-ca anterior. Matem´atiproblem´ati-camente hablando, se convierte un dato que puede tomar valores en
V ∈ {c1,c2,· · · ,cn}a un vector de atributos de la formaX ∈Bn. Por ejemplo, el datoV =c2
se transformar´ıa al atributo X = (0,1,0,· · · ,0). La principal desventaja de este m´etodo es
que aumenta el n´umero de atributos de los datos de entrada, ya que cada valor de la categor´ıa
se transforma en un nuevo sub-atributo cuya correlaci´on se invisibiliza para los modelos.
Normalizaci´on de atributos
La normalizaci´on de atributos corresponde al proceso de cambiar su escala original de
va-lores al multiplicarlos por alguna constante espec´ıfica sin alterar su dimensi´on. Se realiza
generalmente para cada atributo en particular y las t´ecnicas m´as populares corresponden a
la normalizaci´on min-max, a la normalizaci´on por varianzas (o estandarizaci´on) y al
escala-miento por normalp. El proceso de normalizaci´on es bastante est´andar en el entrenamiento sobre todo cuando se quieren utilizar modelos de ´ındole lineal, ya que son los m´as sensibles
a las escalas. Las t´ecnicas vistas anteriormente tambi´en pueden considerarse cambios de
es-cala, pero son generalmente parte de un proceso que depende mucho m´as de la naturaleza de
los datos y la informaci´on que est´an representando.
Laescala min-maxconvierte la escala original de los atributos deRal dominio [0,1], seg´un:
ˆ
x= x−min(x)
max(x)−min(x) (3.5)
en donde ˆxcorresponde a las observaciones transformadas.
transformaci´on se define como:
ˆ
x= x−µ(x)
σ(x) (3.6)
en dondeµ(x) es la media de las observaciones en un atributo espec´ıfico, yσ(x) su desviaci´on
est´andar.
Es importante considerar que el escalamiento por min-max o por varianza pueden convertir
conjuntos de datos inicialmente dispersos en densos, por lo que su uso debe ser previamente
analizado.
Lanormalizaci´on por normalpse define seg´un:
ˆ
x= x
kxkp
(3.7)
En donde generalmente se utiliza la normal2que corresponde a la distancia euclidiana desde
el origen a un punto en el espacio y es la normas m´as frecuentemente usada en m´aquinas
de aprendizaje. La normal1, por otro lado, es utilizada para discriminar entre elementos que
son muy peque˜nos (pero no son cero) y los que s´ı lo son.
3.3.2.
Selecci´on de atributos
La selecci´on de atributos corresponde al proceso de determinar aquellos atributos que deben
ser incluidos en el entrenamiento y validaci´on del modelo a utilizar [29]. El proceso de
selec-ci´on se enfoca principalmente en eliminar aquellos atributos que no aportan informaselec-ci´on a la
predicci´on que se desea realizar o cuya informaci´on ya est´a presente en otros atributos (o en
una combinaci´on de varios atributos) haciendo que sean redundantes. Muchos modelos,
es-pecialmente aquellos basados en regresiones lineales, estiman par´ametros para cada atributo
de los datos, lo que tiene como consecuencia que la presencia de atributos sin informaci´on
aumente la incertidumbre y reduzca as´ı la efectividad de los modelos tal y como se puede
afectados por la dimensi´on de los atributos debido a la naturaleza de sus implementaciones.
Figura 3.5: Comportamiento del error cuando aumenta la cantidad de atributos que no
apor-tan informaci´on a las predicciones [29]. Es imporapor-tante notar que la dimensi´on no afecta en
gran medida a algoritmos basados en ´arboles.
La mayor´ıa de los enfoques para reducir la cantidad de atributos que se desea utilizar para
un modelo en particular se puede clasificar en tres grandes categor´ıas: m´etodos envolventes
(Wrapping methods), los m´etodos de filtrado y m´etodos incrustados.
M´etodos envolventes
Los m´etodos envolventes son algoritmos de b´usqueda que buscan encontrar la combinaci´on
de atributos que optimizan al algoritmo de m´aquinas de aprendizaje que se quiere utilizar.
entre todas las combinaciones posibles o en combinaciones guiadas por alg´un algoritmo de
inteligencia artificial [29].
El m´etodo m´as simple para buscar atributos corresponde a Classical forward selection. En
este algoritmo se tiene inicialmente un conjunto de atributos seleccionados vac´ıo As y un
conjunto de atributos candidatos por seleccionar Ac. En cada iteraci´on, se generan varias
instancias del predictor en donde cada una considera un atributo individual del conjunto de
atributos candidatos Ac. Para cada instancia, se realiza un contraste de hip´otesis estad´ıstico
sobre el predictor para determinar as´ı la relevancia de cada uno de los atributos en la
pre-dicci´on. Se selecciona aquel atributo m´as significativo y se a˜nade al conjunto de atributos
seleccionados As. Como el objetivo es reducir la cantidad de atributos, se suele definir un
m´ınimo de significancia para a˜nadir atributos a As, que si no se cumple hace que el
algorit-mo termine de realizar evaluaciones y entregue el conjunto final. De esta forma, se genera
un conjunto de atributos que son estad´ısticamente significativos y que se espera sea m´as
peque˜no que el conjunto inicial de atributos candidatos.
Figura 3.6: Algoritmo de Classical forward selection [29].
La generaci´on de combinaciones de atributos es un problema de inteligencia artificial y
gen´eticos, simulated anhealing, b´usqueda por colonias de hormigas, b´usqueda por
part´ıcu-las, wolf-search, entre muchos otros m´as. La definici´on de estos m´etodos queda fuera del
alcance del presente trabajo [29].
La principal desventaja de m´etodos de esta categor´ıa es que son computacionalmente
costo-sos y requieren un gran esfuerzo para asegurar la convergencia a la soluci´on ´optima global del
espacio de b´usqueda definido por la combinaci´on de atributos que se quiere probar. Adem´as,
a medida que aumenta la cantidad de atributos de las observaciones que se quieren predecir,
aumenta tambi´en (y m´as r´apido) el tama˜no del espacio de b´usqueda a una velocidad factorial.
M´etodos de filtrado
Los m´etodos de esta categor´ıa eval´uan a los potenciales atributos antes de que se entrene
el modelo, por lo que corresponde a un proceso de ´ındole no supervisado. Estos m´etodos
analizan informaci´on estad´ıstica de los atributos (como por ejemplo, la varianza) o a cada
atributo de manera aislada. Esto provoca generalmente que en la pr´actica se seleccionen
atributos importantes, pero que son redundantes. Adem´as, si se utilizan hip´otesis estad´ısticas
para seleccionar a los atributos, ocurre el llamado problema de la multiplicidad, en donde
pueden ocurrir falsos positivos en la selecci´on de los par´ametros [29].
El m´etodo m´as simple de ´esta categor´ıa consiste en eliminar aquellos atributos con una
va-rianza baja o nula, ya que implica que el atributo en cuesti´on no aporta informaci´on
signi-ficativa para diferenciar una observaci´on de otra, tanto en problemas de regresi´on como de
clasificaci´on.
M´etodos incrustados
Los m´etodos incrustados corresponden a m´etodos que utilizan modelos que en su
imple-mentaci´on realizan selecci´on de atributos de forma inherente. El caso m´as evidente de esto
corresponde a la utilizaci´on de ´arboles de decisi´on (secci´on 3.5.2), en donde el modelo se
va entrenando a medida que selecciona los atributos y sus valores espec´ıficos que mejor
´arbol, se van determinando aquellos atributos que son m´as relevantes para el proceso de
par-tici´on del conjunto de datos en funci´on a la cantidad de veces que el atributo es utilizado
para realizar una partici´on en el conjunto. Una vez que el ´arbol ha sido entrenado, se puede
acceder a la ponderaci´on de importancia de cada uno de los atributos y bajo alguna heur´ıstica
en particular, desechar aquellos cuya importancia sea relativamente baja para reducir as´ı la
dimensionalidad del conjunto completo [54].
La principal desventaja de estos m´etodos es que el modelo que es utilizado para realizar la
selecci´on de atributos genera un sesgo en los modelos subsiguientes que tomen las
observa-ciones con los nuevos atributos acotados, por lo cual es ideal poder realizar la selecci´on de
par´ametros del modelo selector en un conjunto de datos aislado del entrenamiento posterior,
o en su defecto, a trav´es de cross-validationque se explica en mejor detalle en la secci´on
3.2.1.
3.3.3.
Principal Component Analysis
(PCA)
PCA es una t´ecnica usada ampliamente para reducir la dimensionalidad de los atributos, as´ı
como tambi´en para otros problemas como la compresi´on de datos sin p´erdida de informaci´on,
extracci´on de caracter´ısticas en contextos de aprendizaje no supervisados y visualizaci´on
de datos. Corresponde a proyectar datos que est´an en un espacio vectorial inicial de una
dimensionalidad espec´ıfica a una menor dimensi´on, de forma que la varianza en el nuevo
espacio sea maximizada [9].
Matem´aticamente hablando, si se tiene un conjunto de N observaciones definido por{xn},
conn = 1,· · · ,N y siendo xnuna variable euclidiana de dimensi´on D, el objetivo es buscar
el valor ´optimo de M < Dpara maximizar la varianza del espacio vectorial proyectado. Sea
la media de las observaciones del conjunto definidas por:
x= 1 N
N
X
n=1
y sea entonces la varianza del espacio proyectado definida por:
1
N
N
X
n=1
{uT1xn−uT1x}2 = uT1S u1 (3.9)
en dondeS es la matriz de covarianza dada por:
S = 1 N
N
X
n=1
(xn− x)(xn− x) T
(3.10)
yu1 un vector unitario. El problema se reducen entonces a maximizaru1S u1.
Una desventaja de PCA es que se pierde la interpretabilidad del nuevo espacio de atributos
que es proyectado. Por ejemplo, si se describen observaciones de personas con los atributos
de edad, renta promedio y quintil social, y se realiza PCA para reducir la dimensi´on a 2
com-ponentes, no se podr´a saber con certeza qu´e es lo que est´an representando los dos atributos
que conforman el nuevo espacio.
Otra desventaja, por otro lado, es que PCA no funciona adecuadamente con variables
ca-teg´oricas, ya que no existe una noci´on correcta de distancia entre una categor´ıa y otra para
definir as´ı la proyecci´on de los atributos.
3.4.
Modelos lineales de regresi´on
Como se mencion´o en la secci´on 3.2, un modelo realiza regresi´on cuando necesita aprender
a predecir un n´umero real a partir de los atributos de entrada.
Los modelos de regresi´on lineales son aquellos que esperan que la funci´on objetivo de una
observaci´on ˆy(w,x) est´e definida por alguna combinaci´on lineal de los atributos que la
com-ponen. Esto se define matem´aticamente por la f´ormula:
ˆ
dondewi es el peso asociado al atributo xi, coni=0,· · · ,p.
Figura 3.7: Ejemplo visual del objetivo de una regresi´on de ´ındole lineal.
3.4.1.
M´ınimos cuadrados ordinarios
La t´ecnica m´as sencilla para poder encontrar el vector de coeficientesw = (w1,· · · ,wp), es
minimizar el residuo de la suma de cuadrados entre las observaciones y la funci´on objetivo.
Esto resuelve matem´aticamente el problema de la forma:
minw(kXw−yk22) (3.12)
donde X corresponde a la matriz de n × p, donde n es el n´umero de observaciones y p
el n´umero de atributos que tiene cada una. Gr´aficamente, lo que se est´a buscando es un
hiperplano que logre pasar por todos los puntos del espacio vectorial de atributos.
Es posible a˜nadir un par´ametro de regularizaci´on (secci´on 3.2.5) al modelo anterior seg´un la
f´ormula [43]:
minw(kXw−yk22)+αkwk22 (3.13)
que resuelve problemas inherentes a los m´ınimos cuadrados. Esta ´ultima es tambi´en conocida
as´ı que ciertos coeficientes tomen demasiada predominancia.
3.4.2.
Lasso
Lasso es un m´etodo popular de regresi´on que utiliza la norma l1 para obtener coeficientes
del vector w que sean dispersos [20]. Esto hace que tienda a preferir soluciones con m´as
pesos nulos (que valgan cero), que se traduce a reducir el n´umero de caracter´ısticas sobre las
cuales la funci´on ˆy(w,x) es dependiente, lo cual puede ser beneficioso en ciertos contextos
en donde se tienen muchos atributos que podr´ıan no estar aportando valor a las predicciones.
Matem´aticamente, consiste en un modelo basado en la ecuaci´on del modelo anterior 3.12,
dada por:
minw
1
2nkXw−yk
2
2+αkwk1 (3.14)
dondeαes una constante ykwk1es la normall1de los pesos.
3.5.
Modelos no lineales de regresi´on
Los modelos lineales permiten entregar muy buenas predicciones cuando son utilizados con
los hiperpar´ametros correctos y cuidando de tomar en cuenta los contextos en que cada uno
funciona mejor. Sin embargo, si el supuesto original de linealidad entre la salida de yy las
observacionesXno se cumple, el rendimiento decae considerablemente. Utilizar modelos no
lineales, por otro lado, permite prescindir del supuesto de linealidad original y son
recomen-dados cuando no se tiene noci´on de la relaci´on entre los atributos y la salida final.
3.5.1.
M´aquinas de soporte
Las m´aquinas de soporte (SVM) corresponden a m´etodos no param´etricos para regresi´on
dimensiones, a´un cuando la cantidad de observaciones es menor que la cantidad de atributos
de cada una.
Las SVM son m´as f´aciles de entender inicialmente en un contexto con un problema de
clasifi-caci´on, que corresponde a asignar a una observaci´on en particular una clase dependiendo del
valor de sus atributos. Una SVM realiza clasificaci´on al encontrar el hiperplano que
maximi-za el margen entre dos clases, que corresponde a la distancia entre los puntos m´as cercanos
Figura 3.8: El margen corresponde a la
distan-cia entre el hiperplano de decisi´on en color
ro-jo el hiperplano azul que pasa por el vector de
soporte de las clases [9].
Figura 3.9: Los vectores de soporte
encerra-dos por un c´ırculo morado son utilizaencerra-dos para
definir el margen [9].
Matem´aticamente, una SVM est´a definida como:
maxα L(α)=
m
X
i=1
αi−
1 2
m
X
i,j=1
y(i)y(j)αiαj hx( i)·
x(j)i (3.15)
caso, los pesos no est´an presentes en la f´ormula que se desea optimizar, ya que est´an definidos
seg´un:
w=
l
X
i=1
αiyixi (3.16)
La ecuaci´on 3.15 funciona cuando las variables son linealmente separables por un
hiper-plano, pero no es el caso en muchas aplicaciones de la vida real. Una forma de solventar
esto es realizar una transformaci´on del espacio original de los datos a una que es linealmente
separable. Lo anterior se conoce como el m´etodo de kernel y es lo que hace las SVM las
herramientas potentes que son. Para utilizar el m´etodo, se reescribe la ecuaci´on 3.15 seg´un:
maxα L(α)=
m
X
i=1
αi−
1 2
m
X
i,j=1
y(i)y(j)αiαj K(x(i),x(j)) (3.17)
Figura 3.10: Noci´on de la transformaci´on que realiza un m´etodo de kernel. Notar que en la
izquierda se tienen datos que no son linealmente separables, y se llevan a un nuevo espacio
en donde si lo son [47].
y se selecciona la transformaci´on por kernel adecuada, dependiendo de las caracter´ısticas
polinomial, que asume que la relaci´on entre los atributos es polinomial y est´a dado por:
k(xi,xj)=(xi·xj+1)d (3.18)
Otro kernel bastantemente utilizado, es el kernelGaussian Radial Basis Function(RBF).
k(xi,xj)=exp(−γkxi −yjk2)) (3.19)
Para regresi´on, se realiza una modificaci´on a las m´aquinas de soporte originales, pas´andose
a llamar m´aquinas de soporte para regresi´on (SVR). En este tipo de m´aquinas, el margen
se define como la distancia entre dos vectores de soporte espec´ıficos , que corresponden a
observaciones puntuales del conjunto de datos.
Figura 3.11: Definici´on del margen en SVR. Las l´ıneas punteadas definen los hiperplanos
paralelos al hiperplano de decisi´on s´olido y son calculados seg´un los vectores de soporte que
se utilizan [47].
El hiperplano que se obtiene a trav´es del c´alculo de los m´argenes es definido entonces por:
y=
N
X
i=1
3.5.2.
Arboles de regresi´on
´
Los ´arboles de regresi´on son modelos que agrupan las observaciones en diversas ´areasR1,· · · ,RJ
dependiendo del valor de los atributos de cada una. Es f´acil ver como act´ua un ´arbol en un
espacio de dos dimensiones tal y como se muestra en la figura 3.12.
Figura 3.12: Visualizaci´on de las divisiones realizadas por un modelo de ´arboles de decisi´on
en un conjunto de datos de dimensi´on 2 y con atributosX1yX2.tncorresponden a los valores
pivote en donde se realiza una partici´on, yRna las regiones que son generadas [25].
El espacio definido por los atributosX1yX2es divido en 5 ´areas de distinto tama˜no definidas
por los cortes t1,· · · ,t4. Estos cortes son las decisiones que se definen en el ´arbol cuya
Figura 3.13: Visualizaci´on del ´arbol de decisi´on generando al particionar el conjunto de datos
[25].
El valor que toma una observaci´on con valores de atributos que la hacen pertenecer a un
´area Rj espec´ıfica corresponde a la media de todos los valores que tambi´en caen en dicho
cuadrante. El proceso de aprendizaje, por lo tanto, corresponde a realizar los cortes que
mejor explican los distintos valores que pueden ir tomando las predicciones seg´un el ´area en
el que caen.
Matem´aticamente hablando, se busca minimizar el error definido seg´un:
J
X
j=1 X
i∈Rj
(yi−yˆRj)
2 (3.21)
en donde ˆyRj es la media del valor de ypara todas las observaciones del ´areaRj. En teor´ıa,
existen much´ısimas formas de realizar los cortes para un espacio con observaciones, y
ex-plorarlas todas es computacionalmente infactible. Por tanto, para la construcci´on de dichas
particiones se considera un enfoque greedydenominado partici´on binaria recursiva. En
es-te procedimiento, se selecciona el atributo Xj y un corte s tal que se divida el espacio del
atributo en dos regiones iguales{X|Xj ≥ s}y{X|Xj ≤ s}que lleve a la menor error posible.
debido a reglas que son demasiado estrictas en su construcci´on. Mientras m´as atributos utilice
el ´arbol para construir un flujo de de decisi´on, m´as probable es que experimente el fen´omeno.
Para contrarrestar esto se realiza el proceso de poda de los ´arboles (prunning), en donde una
vez que se tiene un ´arbol complejo y probablemente conoverfitting, se realiza un proceso de
b´usqueda del sub´arbol que tenga el menor error en el conjunto de testing.
Es importante considerar que los ´arboles de decisi´on trabajan muy bien sobre datos con
atributos que no siguen una relaci´on lineal. En caso se que dicha relaci´on lineal si exista, los
´arboles tienden a tener un performance menor que modelos m´as simple, como por ejemplo
Figura 3.14: Comparaci´on visual del rendimiento entre ´arboles de decisi´on y una regresi´on
en un problema de clasificaci´on. En las 2 figuras superiores se ejemplifica la clasificaci´on en
un dominio lineal, y en las inferiores en un dominio no lineal. A la izquierda se encuentra la
divisi´on realizada por la regresi´on, y a la derecha la realizada por el ´arbol de decisi´on [25].
3.6.
Optimizaci´on de modelos
Todos los modelos revisados anteriormente no funcionan correctamente si no se adaptan al
problema que se quiere resolver. Partiendo primero por definir si la correlaci´on entre los
uno y utilizar diversas t´ecnicas para evitar overfitting, underfitting y limitantes inherentes a
su estructura a y los proceso que realizan.
3.6.1.
Tuneo de hiperpar´ametros
Un hiperpar´ametro corresponde a alguna constante o heur´ıstica de un modelo que le da mayor flexibilidad para adaptarse a distintos conjuntos de datos y contextos distintos. Se les
llama hiperpar´ametros debido a que en la literatura se suele llamar como par´ametro a las variables libres (como los pesos en una regresi´on lineal) de cada uno de los modelos, cuyos
valores son aprendidos durante el entrenamiento. Los hiperpar´ametros pueden ajustar
regula-rizaci´on, inicializaci´on de par´ametros o modificar las heur´ısticas que se utilizan en el modelo,
como por ejemplo, el tipo de kernel que se utilizar´a para realizar las transformaciones en una
m´aquina de soporte.
La correcta selecci´on de hiperpar´ametros es crucial para asegurar los mejores resultados
posibles en cada uno de los modelos. Es imposible definir valores ´optimos espec´ıficos para
cada tipo de problema que se quiere trabajar en aprendizaje autom´atico, por lo que estos
tienen que ser calculados cada vez que se decide utilizar un modelo en un conjunto nuevo de
datos. Los valores que son asignados provienen de heur´ısticas, desde la experiencia de los
investigadores o desde la b´usqueda emp´ırica en el problema particular que se est´a abordando.
El proceso de tuneo de hiperpar´ametros corresponde a buscar el conjunto de
hiperpar´ame-tros que minimiza el error de validaci´on para un modelo y conjunto de datos espec´ıfico.
Esta b´usqueda puede hacerse a mano a trav´es de varios experimentos que se realizan en un
subconjunto de observaciones limitada y aleatoria, o bien, a trav´es de t´ecnicas de validaci´on
comocross-validation(secci´on 3.2.1).
La selecci´on de valores de un hiperpar´ametro se puede realizar con experimentaci´on emp´ırica
tal y como se muestra en la figura 3.15. Aqu´ı, un investigador debe observar los resultados
del comportamiento del hiperpar´ametro y decidir su valor seg´un lo que se puede interpretar
Figura 3.15: Ejemplo de investigaci´on del comportamiento del error de una m´aquina de
soporte de clasificaci´on a medida que cambia el valor del hiperpar´ametroC.
Dado que el problema de encontrar el conjunto ´optimo de hiperpar´ametros corresponde a un
problema cl´asico de b´usqueda de un espacio vectorial, es posible utilizar algoritmos de
inte-ligencia artificial, como por ejemplo, algoritmos gen´eticos de b´usqueda,simulated annealing
y otros m´as que en conjunto escapan del alcance del presente trabajo. La forma m´as f´acil de
realizar una b´usqueda m´as automatizada es recorrer la combinaci´on de los distintos posibles
valores que pueden tomar los hiperpar´ametros y seleccionar aquel conjunto que maximiza la
precisi´on de las predicciones.
3.6.2.
M´etodos de ensamblaje
Los m´etodos de ensamblaje combinan las predicciones de varios modelos base con alg´un
al-goritmo espec´ıfico para mejorar la generalidad y robustez de ellos. Esto es especialmente ´util
para modelos que tienden a experimentaroverfittingen su implementaci´on, tal y c´omo
suce-de en ´arboles suce-de suce-decisi´on. Existen dos gransuce-des familias suce-de m´etodos suce-de ensamblaje: m´etodos
que promedian las predicciones de cada uno de los modelos base, o m´etodos que buscan
ite-rativamente reducir el sesgo de ellos. En la primera familia se encuentraBaggingyRandom
conocen tambi´en en la literatura poraveraging methodsyboosting methodsrespectivamente.
Bagging
Los m´etodos de Bagging pertenecen a una clase de algoritmos que generan varias
instan-cias de un modelo en varias versiones del dataset original de los datos originales utilizados
para realizar el entrenamiento. El objetivo de realizar esto es reducir la varianza del
estima-dor original (por ejemplo, en ´arboles de decisiones). Generalmente, los m´etodos de bagging
funcionan mejor con modelos complejos, como por ejemplo, ´arboles de decisi´on de mayor
profundidad. Matem´aticamente, si se tiene un conjunto de entrenamiento D con n
obser-vaciones, el proceso de bagging genera mnuevos conjuntos de datos Di, cada uno con un
tama˜non0. El n´umeron0depende del tipo de algoritmo que se desea utilizar.
Cuando se utilizan subconjuntos de datos tal quen0<n, entonces se habla dePasting. Aqu´ı,
cada uno de los subconjuntos no tiene elementos repetidos y se asegura que cada subconjunto
tiene un tama˜no menor al original. Si se permite que los elementos se repitan, tal que ya no
se pueda afirmar quen0= n, se habla deBootstrap en donde durante el muestreo se permite
repetici´on.
La principal desventaja de los m´etodos deBagginges que cada instancia del modelo original
no tiene correcta informaci´on con respecto al rendimiento de los dem´as modelos. Esto es
especialmente complejo cuando se tiene que por las caracter´ısticas del modelo base
selec-cionado, este tiende a predecir un ´area en conjunto en cada instancia distinta de ´el, haciendo