Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ASIGNATURA: PROGRAMACIÓN
MODALIDAD ESCOLARIZADA
Nombre de la actividad
ESTUDIO DE CASO
Catedrático.
Dr. José Isidro Hernández Vega
Presenta:
Jesús Enrique Soto Soto G14440056
DESARROLLO .............................................................................. 5
4.1 Planteamiento del problema para cada caso de estudio .... 5
4.2 Propuesta de algoritmo .................................................... 5
4.3 Evaluación del algoritmo en su desempeño por funciones
asíntotas (mejor y peor de los casos). ..................................... 5
4.4 Programa ......................................................................... 5
4.5 Resultados mediante salidas del programa (pantallas). .... 13
4.6 Conclusiones del caso de estudio. .................................... 14
REFERENCIAS ............................................................................. 15
INTRODUCCIÓN
Los árboles de regresión/clasificación fueron propuestos por Leo Breiman et al. (1984) y son
árboles de decisión que tienen como objetivo predecir la variable respuesta Y en función de
covariables.
La partición del espacio se hace de manera repetitiva para encontrar las variables y los valores de
corte c de tal manera que se minimice la función de costos ∑𝑖=𝑛
𝑖=1 (𝑦𝑖 − 𝑦̂𝑖 )2 .
El algoritmo Random Forest (Breiman, 2001) es una técnica de aprendizaje supervisado que genera
múltiples árboles de decisión sobre un conjunto de datos de entrenamiento: los resultados
obtenidos se combinan a fin de obtener un modelo único más robusto en comparación con los
P á g i n a 2 | 15
resultados de cada árbol por separado (Lizares, 2017). Cada árbol se obtiene mediante un proceso
de dos etapas:
Cada árbol generado por el algoritmo Random Forest contiene un grupo de observaciones aleatorias
(elegidas mediante bootstrap, que es una técnica estadística para obtener muestras de una
población donde una observación se puede considerar en más de una muestra). Las observaciones
no estimadas en los árboles (también conocidas como “out of the bag”) se utilizan para validar el
modelo. Las salidas de todos los árboles se combinan en una salida final Y (conocida como
ensamblado) que se obtiene mediante alguna regla (generalmente el promedio, cuando las salidas
de los árboles del ensamblado son numéricas y, conteo de votos, cuando las salidas de los árboles
del ensamblado son categóricas).
Las principales ventajas del algoritmo Random Forest (Cánovas et al., 2017) son:
• Pueden usarse para clasificación o predicción: En el primer caso, cada árbol “vota” por una
clase y el resultado del modelo es la clase con mayor número de “votos” en todos los
árboles, de forma que cada nueva observación se presenta a cada uno de los árboles y se
asigna a la clase más “votada”. En el segundo caso, el resultado del modelo es el promedio
de las salidas de todos los árboles.
• El modelo es más simple de entrenar en comparación con técnicas más complejas, pero con
un rendimiento similar.
• Tiene un desempeño muy eficiente y es una de las técnicas más certeras en bases de datos
grandes.
• Puede manejar cientos de predictores sin excluir ninguno y logra estimar cuáles son los
predictores más importantes, es por ello que esta técnica también se utiliza para reducción
de dimensionalidad.
• Mantiene su precisión con proporciones grandes de datos perdidos.
P á g i n a 3 | 15
Por otra parte, sus principales desventajas son las siguientes:
Las ventajas de Random Forest hacen que se convierta en una técnica ampliamente utilizada en
muchos campos, por ejemplo, teledetección (para clasificación de imágenes), bancos (para
detección de fraudes y clasificación de clientes para otorgamiento de crédito), medicina (para
analizar historiales clínicos a fin de identificar enfermedades potenciales en los pacientes), finanzas
(para pronosticar comportamientos futuros de los mercados financieros) y comercio electrónico
(para pronosticar si un cliente comprará, o no, cierto producto), entre otros.
P á g i n a 4 | 15
DESARROLLO
4.1 Planteamiento del problema para cada caso de estudio
El problema a analizar es el registro de los distintos puestos de una empresa, con sus
sueldos y niveles específicos. La solución que se busca es crear una predicción del sueldo en
base a los años que pueda permanecer un empleado en la empresa. Se generará un archivo
CSV que será usado en un programa de Python aplicando el algoritmo.
4.4 Programa
Se creo una clase Persona, con el atributo nombre que tendrán todas las clases.
P á g i n a 5 | 15
Interface Empleado cuenta con métodos que se implementaran en las clases de cada uno
de los puestos.
Clase Técnico que hereda el atributo de nombre y los métodos de la interface Empleado,
además de tener atributos y métodos independientes.
P á g i n a 6 | 15
Clase Ingeniero tiene herencia similar a la Clase Técnico, solo que sus atributos y sus
métodos son diferentes.
Tiene la misma herencia de las clases anteriores y también tiene modificaciones en sus
atributos y métodos.
P á g i n a 7 | 15
Hereda los atributos y métodos de la Clase Supervisor en conjunto con Clase Persona y la
interface Empleado. Además de agregar un atributo y un método.
Tiene la misma herencia que la clase anterior, en esta no se agregan atributos o métodos
extra.
En la clase Main, se declaran las librerías que serán usadas. Al inicio del código, declaramos
la variable salida que nos arrojara una ventana con los datos de los puestos, nombres y
sueldos de cada una de las clases previamente establecidas.
P á g i n a 8 | 15
Se instancian los objetos de cada clase con el atributo general que se tiene en la clase
principal (ó clase padre), en este caso trabajamos con nueve puestos diferentes.
Se establecen los atributos de cada uno de los objetos, después de esto estructuramos el
formato que se vera impreso en la ventana que va a generar la variable salida.
P á g i n a 9 | 15
Instanciamos el objeto writer de la clase PrinterWriter con el que imprimiremos el texto
que se generara en el archivo CSV, e instanciamos el objeto stb de la clase StringBuilder con
el que se va indexando cada una de las cadenas agregadas.
Al agregar todos los elementos, el objeto writer los toma y los agrega al archivo. Cuando
esto pasa nos lanza un mensaje en pantalla que el archivo ha sido generado. Se lanzará la
excepción FileNotFoundException en caso de no acceder al archivo. Como parte de clase se
agregan dos métodos uno que nos brindará acceso al archivo generado y otro para delimitar
cada uno los puestos agregados en el archivo con comas e identificar que se producirá un
salto de línea.
P á g i n a 10 | 15
Los métodos que fueron implementados para la lectura del archivo CSV. En el método
readCSVFile hacemos uso de las listas de Array para indexar los datos que fuimos
agregando.
P á g i n a 11 | 15
Agregando las librerias numpy, matplotlib, pandas y sklearn. En el caso de la librería numpy
se uso para crear una matriz con los datos generados en Java, matplotlib para generar un
grafico de la tendencia de los sueldos, panda que va de la mano con numpy para la
manipulación y análisis de los datos y sklearn para el aprendizaje automático.
Se trabajo con la estructura de 10 estimaciones en un lapso de 6 ½ años, 100 para 8 años y
500 para 2 años. Que nos darán una predicción del sueldo a través del algoritmo Random
Forest en conjunto con los árboles de regresión.
P á g i n a 12 | 15
4.5 Resultados mediante salidas del programa (pantallas).
P á g i n a 13 | 15
4.6 Conclusiones del caso de estudio.
Podemos concluir que, al generar datos con características específicas, estos pueden dar a
ver un panorama muy general de lo que se está trabajando, pero gracias a el análisis de
datos a través de los algoritmos de árboles de regresión y Random Forest suelen tener
resultados que nos ayudan a predecir las tendencias de las variables dependientes de los
datos que tienen diferencias entre sí. Además, se logran obtener datos los distintos
comportamientos en diferentes situaciones. Lo que se logro aquí, fue que a través de
clases, interfaces y herencia se estructurara cada una de las características de los datos a
analizar y ser agregados a un arreglo en formato de lista. Para luego agregarse a un
archivo que separa cada una de las características con un identificador. Esto se genero en
lenguaje JAVA, pero la implementación de los algoritmos se realizo en Python tomando el
archivo que se menciono anteriormente para realizar un análisis de regresión e incluir el
algoritmo adecuado para generar un modelo más adecuado para realizar una predicción
con ayuda de un numero de estimaciones con sus árboles de regresión.
P á g i n a 14 | 15
REFERENCIAS
Breiman, L., Friedman, J.H., Olshen, R.A., & Stone, C.J. (1984). Classification And Regression Trees
(1st ed.). Routledge.
https://doi.org/10.1201/9781315139470
Espinosa-Zúñiga, Javier Jesús. (2020). Aplicación de algoritmos Random Forest y XGBoost en una
base de solicitudes de tarjetas de crédito. Ingeniería, investigación y tecnología, 21(3), 00002. Epub
02 de diciembre de 2020.
https://doi.org/10.22201/fi.25940732e.2020.21.3.022
Lizares, M. (2017). Universidad Nacional Mayor de San Marcos. Recuperado el 10 de marzo de 2020
de Recuperado el 10 de marzo de 2020 de
http://cybertesis.unmsm.edu.pe/bitstream/handle/cybertesis/7122/Lizares_cm.pdf?sequence=1&
isAllowed=y
Cánovas, F., Alonso, F., Gomariz, F. & Oñate, F. (2017). Modification of the random forest algorithm
to avoid statistical dependence problems when classifying remote sensing imagery. Computers &
Geosciences, 103, 1-11.
https://doi.org/10.1016/j.cageo.2017.02.012
P á g i n a 15 | 15