Está en la página 1de 16

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE NUEVO LEÓN


SUBDIRECCIÓN ACADÉMICA
DIVISIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN
POSGRADO: MAESTRÍA EN INGENIERÍA

ASIGNATURA: PROGRAMACIÓN
MODALIDAD ESCOLARIZADA

Tema 4. IMPLEMENTACIÓN DE ALGORITMOS HACIENDO USO DEL


PARADIGMA ORIENTADO A OBJETOS

Nombre de la actividad
ESTUDIO DE CASO

Catedrático.
Dr. José Isidro Hernández Vega

Presenta:
Jesús Enrique Soto Soto G14440056

Cd. Guadalupe, Nuevo León a 31 de Mayo de 2022.


INDICE
INTRODUCCIÓN .......................................................................... 2

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.

Los árboles se pueden clasificar en dos tipos que son:

• Árboles de regresión en los cuales la variable respuesta y es cuantitativa.


• Árboles de clasificación en los cuales la variable respuesta y es cualitativa.
Un árbol de regresión consiste en hacer preguntas de tipo ¿𝑥𝑘 ≤ 𝑐? para cada una de las
covariables, de esta forma el espacio de las covariables es divido en hiper-rectángulos y todas las
observaciones que queden dentro de un hiper-rectángulo tendrán el mismo valor estimado 𝑦̂.

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 .

Los pasos para realizar la partición del espacio son:

1. Dado un conjunto de covariables (características), encontrar la covariable que permita


predecir mejor la variable respuesta.
2. Encontrar el punto de corte c sobre esa covariable que permita predecir mejor la variable
respuesta.
3. Repetir los pasos anteriores hasta que se alcance el criterio de parada.

Algunas de las ventajas de los árboles de regresión son:

• Fácil de entender e interpretar.


• Requiere poca preparación de los datos.
• Las covariables pueden ser cualitativas o cuantitativas.
• No exige supuestos distribucionales.

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:

1. Se genera un número considerable de árboles de decisión con el conjunto de datos. Cada


árbol contiene un subconjunto aleatorio de variables m (predictores) de forma que m < M
(donde M = total de predictores).
2. Cada árbol crece hasta su máxima extensión.

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:

• La visualización gráfica de los resultados puede ser difícil de interpretar.


• Puede sobre ajustar ciertos grupos de datos en presencia de ruido.
• Las predicciones no son de naturaleza continua y no puede predecir más allá del rango de
valores del conjunto de datos usado para entrenar el modelo. En el caso de predictores
categóricos con diferente número de niveles, los resultados pueden sesgarse hacia los
predictores con más niveles.
• Se tiene poco control sobre lo que hace el modelo (en cierto sentido es como una caja
negra).

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.2 Propuesta de algoritmo


La propuesta de algoritmo es un análisis con árboles de regresión en conjunto con el
algoritmo Random forest que nos dejara trabajar con un número específico de
estimaciones.

4.3 Evaluación del algoritmo en su desempeño por funciones


asíntotas (mejor y peor de los casos).
El mejor de los casos es que el sueldo aumente de manera exponencial en base al puesto y
el peor de los casos el sueldo no cambie mucho entre los puestos.

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

Breiman, L. (2001). Random Forests. Machine Learning, 45, 5-32


https://doi.org/10.1023/A:1010933404324

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

También podría gustarte