Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AÑOS DE INDEPENDENCIA”
INTEGRANTES DE EQUIPO:
- MUNAYCO PERALTA, JERCY
- ORTIZ GARCÍA, ALISON
DOCENTE:
- MORALES LEON, JULIO CESAR
CICLO:
- X
AÑO:
2021 - HUACHO
XGBoost for Business in Python and R
Instalación
10. El siguiente paso también es, por supuesto, descargar “R”, por lo que
buscaremos en el navegador lo siguiente y le damos clic:
11. Nos redireccionará a la página oficial, buscaremos la opción para descargar, le
damos clic y automáticamente comenzará la descarga:
¿Qué es XGBoost?
Peculiaridades de XGBoost
Factores No linealidad
No puede lidiar con Es excelente para
NA
factores o variables de tratar la relación de
Trata a los NA como
carácter, debe no linealidad entre las
información.
transformarlos en variables dependiente
variables ficticias. e independientes.
Trampa de la variable ficticia
Imagina que tienes que hacerlo por variables nativas, tienes Coca-Cola y también tienes
Pepsi. No puede incluirlos a ambos cuando vaya a realizar cualquier tipo de aprendizaje
automático o técnica econométrica. ¿Por qué? El problema es la multicolinealidad (La
multicolinealidad es un problema que surge cuando las variables explicativas del
modelo están altamente correlacionadas entre sí.).
Dividir en
entrena
miento y
Definir el conjunto
conjunto de Evaluar la
de datos. pruebas. calidad
Sensibilidad (sensitivity or
Exactitud (Accuracy) Especificidad (Especificity)
recall)
Accuracy = (VP + VN)/Total Sensitivity = VP / (VP + FN) Especificity = VN / (VN + FP)
Usado cuando tenemos el Utilizado cuando estamos Utilizado cuando estamos
conjunto de datos sesgados hacia valores falsos sesgados hacia valores
equilibrado verdaderos
Área bajo la curva ROC
- Es una medida de
desempeño para un
problema de clasificación.
- Es una medida de
rendimiento para problemas
de regresión.
Tenemos algunos puntos de datos aquí y luego tenemos los mismos puntos de datos en
el otro. Ahora tenemos un modelo que es así, y luego tenemos el otro que encaja
completamente en las observaciones.
Ahora, ¿cuál es el que estamos ajustando y cuál está subalimentando? Evidentemente
muy sencillo. Entonces, el de la derecha está sobreajustado y el de la izquierda está
subalimentado.
¿Por qué importa esto? Si hacemos un modelo y resulta como cualquiera de ellos, al
aplicarlo a su equipo de prueba, probablemente resultará en muchos errores. Entonces,
la idea clave aquí es que debe encontrar un equilibrio entre el sobreajuste y la
alimentación insuficiente. Y esto es tan conocido como el equilibrio entre sesgo y
varianza.
Peso mínimo del niño: se relaciona con la suma del peso de cada observación.
Los valores bajos pueden significar que tal vez no haya mucha observación en la
ronda.
Máxima profundidad: ¿Qué tan grande debería ser? Mientras más grande, tiene
másdetalles.
Muestra por árbol: ¿Qué parte del árbol debe analizarse por ronda?
Valores SHAP
En el gráfico, se tiene valores rojos y tienes azules. El rojo significa alto y el azul
significa bajo.
Entonces tenemos la duración, por ejemplo:
- Los valores de alta duración, brindan una mayor probabilidad de que una
persona diga que sí a la campaña de marketing directo.
- Cualquier cosa por encima de cero, hay una mayor probabilidad. Y cualquier
cosa por debajo de cero, hay una probabilidad menor o dificulta la probabilidad.
Lo primero que haremos es configurar nuestro entorno de trabajo, para ello usaremos el
archivo compartido que ya lo tenemos descargado (bank-full), lo ubicaremos
directamente desde Spyder ingresando a Files y localizando la ubicación donde
guardamos la carpeta compartida.
Ahora, para poder hacer uso del archivo, importamos algunas bibliotecas como:
Seleccionamos el código introducido y ejecutamos y le damos clic en variable explorer
para ver resultados.
Nos muestra el resultado, donde nos indica que encontró el archivo y lo que contiene,
vemos que nuestro conjunto de datos está en una sola columna
Procederemos a separarlos por columnas de la siguiente manera:
De esta manera podemos obtener los datos almacenados de una predicción de depósito a
plazo corto o depósito a largo plazo.
Empezaremos a trasformar y aislar las variables que son X e Y. Para ello echaremos un
vistazo a la estructura de datos. El primero será Y echemos un vistazo a nuestro
explorador de variables.
Vemos que nuestra variable Y está ubicada en el último lugar. En Python para poder
obtener esta columna se hace de la siguiente manera:
Ejecutamos y obtenemos el resultado esperado:
Y así obtenemos los datos de edad, balance, día, duración... las 7 columnas dentro de
esta variable.
Ahora, vamos a dividir nuestro conjunto de datos en un conjunto de prueba, para ello
importaremos librería para empezar a entrenar a nuestras variables X y la Y, lo que
queremos lograr es identificar el tamaño de prueba, para ellos si una variable tiene 20 la
otra será 80. Los valores que se insertan son aleatorios pueden ser a preferencia, solo se
toman datos de prueba.
Asignamos el tamaña que será de 0.2 y el estado aleatorio será 1502.
Entonces obtener más de 36k y 9k, así que tenemos nuestra división tanto en nuestra X
como en nuestra Y.
Podemos observar que se barajean los datos para poder obtener el resultado.
Ahora transformaremos nuestra variable Y ya que este tren está en blanco.
Ahora crearemos matrices con nuestras variables X, Y para ello creamos nuestra
biblioteca de impulso adicional que hemos importado y el Kadia.
Vamos a llamar al primer tren y vamos a nuestra biblioteca de X Reboost y luego
hacemos The Matrix. Ahora, para ver qué hay dentro del uso de la matriz de datos en
XY Boost. Es una estructura de datos interna que se utiliza con un impulso adicional,
que está optimizada tanto para la eficiencia de la memoria y velocidad de
entrenamiento.
Lo único que necesitamos incluir son datos, estos son de muestras y luego la etiqueta.
Así que estas serán las dos cosas que especificará. Empezamos con el tren X y luego
hacemos lo mismo con Y.
Ahora lo que vamos a hacer es indicar los parámetros que usaremos. Necesitamos
afirmar que estamos haciendo un problema de clasificación y que nuestro objetivo o
nuestra variable dependiente es binario. Y la clave aquí es que lo llamaremos
parámetros uno. Hacemos los estándares, que son 0.3, y luego la profundidad máxima.
La clave aquí no es realmente tener los mejores valores, sino solo tener algunos valores
para ver. Porque obviamente los mejores valores que obtendremos serán cuando
hagamos eso.
El siguiente es el tren, estos son los datos a entrenar, que es nuestro tren que creamos
arriba. Ejecutamos y obtenemos lo siguiente:
Hemos pasado de tener ese conjunto de datos a transformarlo y ser capaz de usar XY
boost y luego usar X reboost.
Ahora, realizaremos predicciones, para ello, creamos la variable “prediction1”, esto será
igual a la predicción de la matriz de prueba
Pero como nosotros necesitamos saber si es un “Si” o “No”, transformamos los valores
a 1 o 0, según la proximidad a estos. Para ello, realizamos el siguiente comando:
Luego crearemos una variable que almacenará la matriz de confusión de los datos de
“y_test” y “prediction1”:
Como resultado de la ejecución del comando, observamos que solo tenemos variables
ficticias.
Como siguiente paso a realizar, armaremos nuestro conjunto de datos final, el cual
consiste en unir el conjunto de datos creado anteriormente y el conjunto de datos
numéricos usado al principio. Digitamos el siguiente comando:
Como resultado, observamos que se obtuvo los nombres de las 43 columnas del dataset:
Nos percatamos que existe una columna la cual no necesitamos, la última, por lo que se
procederá a eliminarse de la siguiente manera:
Como siguiente paso, volveremos a aislar nuevamente las variables porque nuestra
variable dependiente se encuentra como una columna, y para ello, repetiremos un paso
realizado anteriormente y también dividir entre nuestro entrenamiento y nuestro
conjunto de pruebas. Digitamos lo siguiente:
Resultados:
A continuación, dividiremos el conjunto de datos en conjunto de entrenamiento y
pruebas:
Ahora, crearemos nuevas matrices XGBoost. Para ello realizaremos una función ya
hecha anteriormente. Copiamos y pegamos:
Como resultado, podemos ver que al menos nuestra área debajo de la curva ha mejorado
un poco. Estando ahora por encima de 0.9.
El siguiente paso a realizar será hacer nuevas predicciones, pero con el dataset final y la
vez, crear una nueva matriz de confusión. Por lo que copiaremos el siguiente código:
Como siguiente paso, vamos a establecer los parámetros de validación cruzada. Para
ello, importamos la siguiente librería y creamos una variable que almacene la
configuración:
Observamos que se creó exitosamente:
Luego de haber creado la función, tenemos que indicar cuales son los parámetros de
evaluación, es decir, donde se encuentra X_test y y_test. Además, evaluarla con el área
debajo de la curva
Este proceso, al ejecutarlo, demorará un par de horas, y luego de ello, tendremos los
siguientes resultados que significan que han mejorado:
Una vez obtenido los resultados, intentaremos realizar otra prueba con dichos resultados
obtenidos (reemplazando los parámetros), por lo que copiaremos y modificaremos el
código anterior, quedando de la siguiente manera :
Obteniendo los siguientes resultados, los cuales nos indican que ha habido una mejora
significativa respecto a nuestros anteriores modelos:
Una vez obtenido el modelo final, realizaremos una nueva predicción, para ello,
digitamos el código ya utilizado anteriormente, quedando de la siguiente manera:
Teniendo como resultado:
Como siguiente paso, crearemos una nueva matriz de confusión y a su vez, generaremos
un nuevo reporte para ver la matriz con más detalla, teniendo así:
Matriz de confusión:
El Reporte generado, nos indica que si hubo una mejora a comparación de las creadas
anteriormente:
Ahora, graficaremos todos los puntos importantes del conjunto de datos para que se
vean más llamativos y más entendibles, por lo que tenemos:
Como último paso, intentaremos graficar con calores SHAP, por que tenemos que ir
descargar en la siguiente página: