Está en la página 1de 49

“AÑO DEL BICENTENARIO DEL PERÚ: 200

AÑOS DE INDEPENDENCIA”

XGBoost for business in Python

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

1. Necesitaremos instalar Python, para ello, buscamos en el navegador lo siguiente,


y le damos clic:

2. Nos llevará a la página oficial de Python, y desde ahí lo descargaremos


haciendo clic en lo siguiente, y comenzará la descarga:
3. Por consiguiente, necesitaremos utilizar un software que nos permita usar
Python, y en este caso, utilizaremos “Spyder”, para ello buscamos en el
navegador lo siguiente y daremos clic.

4. Nos redireccionará a la página oficial de Spyder, buscamos la opción de


descargar, le daremos clic y comenzará a descargar automáticamente:

5. Además, necesitaremos el software Anaconda para poder utilizar instalar


XGBoost, para ellos buscaremos en el navegador lo siguiente y le damos clic:
6. Nos redireccionará a la página oficial de Anaconda, buscamos la opción de
descargar, le daremos clic y comenzará a descargar automáticamente:

7. Luego de ello, ejecutaremos el archivo y procederemos con la instalación:


8. También, para este tema, necesitaremos descargar RStudio, por lo tanto,
buscamos en el navegador lo siguiente y le daremos clic:

9. Nos redireccionará a la página oficial, buscaremos la opción para descargar, le


damos clic y automáticamente comenzará la descarga:

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:

12. Después de descargar ambos, necesitas instalar ambos porque es el lenguaje de


programación y nuestro RStudio es el software que te permite usar R, luego
simplemente haga clic en ambos programas para intentar ejecutarlos y luego
simplemente siga todas las instrucciones.
13. Instalación de “RStudio”:
 Laboratorio teórico
Caso sobre Marketing Directo.
Caso de estudio realizado en Portugal sobre una campaña de marketing de los
cajeros bancarios. Se obtuvo datos interesantes sobre la lista de clientes con algunos
datos personales y también el resultado de esa campaña.
Lo contrataron para configurar qué clientes estarían dispuestos a registrarse en una
cuenta de ahorros en un banco a través del marketing directo. ¿Podemos predecir si
la gente diría sí a nuestro telemarketing o a nuestra campaña de marketing? Y la
pregunta es, ¿por qué deberíamos hacer eso?...
o Pérdida de clientes: llamar a un cliente que no puede registrarse puede
provocar que se dé de baja.
o Costo de oportunidad: Al intentar vender algo a un cliente que no
compraría, pierde la oportunidad de probar vender algo que compraría.
o Relevancia: Enviar constantemente productos que no les interesan, es
más probable que no estén interesados en sus productos futuros.

Otra perspectiva de ver el problema, segmentando los clientes, desde campañas


anteriores podemos ver en qué tipo de clientes se obtuvieron mejores resultados:

La complejidad aumenta a medida que profundiza en su problema. ¿Cuáles son los


problemas en general?:
 Profundidad del problema: tener más de 20, 50 o 100 controladores
aumenta la complejidad.
 Importancia: ¿Cómo sabe qué conductor es más importante?
 Análisis: bucear en profundidad eventualmente resultará en tener varios
cubos con pocos clientes. ¿cómo los interpretarías?

¿Qué es XGBoost?

Extreme Gradient Boosting (Aumento extremo del


XGBoost gradiente)

Puede ser construido con un algoritmo basado en


árbol o lineal

Es un algoritmo de conjunto (combinación de varios)

Cada nuevo modelo se basa en el precedente (mejora


continua)

Se puede usar tanto para regresión como para


clasificación.

Imaginemos que tenemos un caso en el cual se obtuvo un modelo de predicción y el


resultado se muestra a continuación:

Se obtuvieron 4 salidas determinadas y por consiguiente se realizó una predicción


otorgándole un peso a cada uno. Realizando 3 iteraciones, observamos como actúa el
aprendizaje automático, el cual poco a poco va a aprendiendo y obteniendo una mejor
continua. Y de esta manera, tratamos de evaluar cómo le está yendo al algoritmo y
luego evaluando cuándo está mal y cuando es correcto.
Pero esta es solo la primera parte. Ahora, está la segunda parte. Es clave y es una de las
cosas que hace que XGBoost sea tan especial.
XGBoost no tiene en cuenta todas las observaciones cuando se está ejecutando cada
iteración. En el primer árbol, la tercera observación se omite y luego evaluará basándose
solo en esas tres observaciones. Cuando pasa al segundo, la cuarta observación es
omitida y luego continúa aprendiendo en función de las ponderaciones y en función de
los resultados. Entonces, ¿cuál es la idea detrás de esto? La primera es que no se trata
solo de crear un modelo, porque si tiene diferentes conjuntos de datos, debido a que solo
está seleccionando una cierta cantidad de observaciones, también tiene diferentes
modelos que se están construyendo para luego tener uno realmente adecuado al final.
Esta es la parte del conjunto del aprendizaje automático. Y luego también hay una
segunda parte, que no toma en consideración todas las observaciones y, por lo tanto, no
se necesitan todos los predictores al mismo tiempo. Y esto, nuevamente, refuerza ese
mecanismo de conjunto porque no toma no solo todas las observaciones, pero tampoco
todos los predictores.

 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í.).

La correlación entre Coca Cola y


Pepsi es -1. Los extremos nunca son
La buenos y los modelos no funcionan
multicolinea bien con la multicolinealidad. Para
evitar esto, debe eliminar una
lidad variable ficticia.

Eliminarlo Cuando el algoritmo va fila por fila


evaluando la información, ver solo
no significa ceros también es información. de
que la hecho, la variable ficticia eliminada
se convierte en parte de la
informacion intersección. Puede verlo como su
se pierde línea de base

 XGBoost Paso a paso

Dividir en
entrena
miento y
Definir el conjunto
conjunto de Evaluar la
de datos. pruebas. calidad

Transfor Ejecutar Validació


mar XGBoost n cruzada
todos los y el
factores ajuste de
en parámetr
variables os.
ficticias
 Matriz de confusión
Se usa la matriz de confusión para evaluar los resultados de nuestro
modelo cuando la variable dependiente es binaria.

La forma en que funciona es que la matriz de confusión es de esta manera: Tienes


por un lado lo que predice y luego tienes la verdad o los valores reales:
- Verdadero positivo: es cuando predice que algo sucedió y realmente sucedió.
- Verdadero negativo: predice que algo no sucedió. Y, de hecho, no sucedió.
- Falso positivo: predice que sucedió, pero, de hecho, no fue así.
- Falso negativo: predice que no sucedió, pero de hecho lo hizo.

Principales combinaciones o métricas de la matriz de confusión

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.

- Nos dice qué tan buenos


somos para distinguir los
aspectos positivos de los
negativos.

 Error cuadrático medio o RSME (Root Square Mean Error)

- Es una medida de
rendimiento para problemas
de regresión.

- Mide el error entre lo que


realmente sucedió y nuestro
modelo.

 Sobreajuste y alimentación insuficiente

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.

 ¿Qué parámetros debemos ajustar?


Número de rondas: cantidad de veces que nuestro modelo debe ser entrenado.

ETA: Tasa de aprendizaje. Rapidez de aprendizaje del modelo.

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.

Gama: ¿Qué tan rápido se debe partir el árbol?

Submuestra: ¿Porcentaje de observaciones en cada árbol?

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.

Sobre los valores SHAP, tenemos:


 Interpretabilidad.
 Importancia de la característica.
 Impacto visual.
 pero recuerda, la correlación no es causalidad.
 Laboratorio Práctico
Procedemos a instalar la biblioteca de refuerzo adicional, entramos al navegador de
nuestra preferencia y escribimos XGBOOST como se muestra en la siguiente imagen:

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:

Y nos mostrará en columnas y datos separados:

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:

De igual manera procedemos a realizar el mismo proceso para la variable X, pero en


este caso solo queremos obtener datos numéricos
Obtenemos el resultado de la variable X.

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.

Teniendo como resultado:

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.

Transformaremos los valores por “1”

Entonces tenemos nuestros 0 y 1.


Hacemos lo mismo con nuestra prueba.

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.

Ahora hacemos métricas de evaluación o una vocal y su métrica de puntuación. Y


queríamos estar en la cita A, como ve, área debajo de la curva. Ejecutamos los
siguientes comandos:
Y como resultado obtenemos el parámetro:

Ahora lo que necesitamos ahora es almacenarlo en un modelo. Al cual llamaremos


modelo uno y luego igual. Y ahora tenemos que ir a nuestra biblioteca, que está debajo
de X, luego hacemos el tren de puntos. Incluiremos un número, este número será 50.
Entonces, cada 50 rondas me dirán que ha hecho esa cantidad de ROM. Así que son
cinco cosas las que debemos especificar.

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

Ejecutamos el comando y podemos observar que se creo exitosamente, y luego vemos a


detalle la matriz:

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:

Ejecutamos el comando y observamos que se ha realizado la transformación y ahora


solo existes valores 0 y 1:
Matriz de confusión
Para la utilizar la matriz de confusión, tenemos que importar los siguientes paquetes,
para ello escribimos los siguientes comandos:

Luego crearemos una variable que almacenará la matriz de confusión de los datos de
“y_test” y “prediction1”:

Ejecutamos el comando y podemos observar que se creó la matriz de los datos


indicados:
Ahora, realizaremos un reporte de clasificación de la matriz para poder verlo de otra
manera. Para ello, creamos una variable que almacene el reporte de los datos utilizados
anteriormente y, por consiguiente, lo mostraremos en la consola:

Ejecutamos la función y podemos observar el reporte. El valor que importa aquí es la


tasa de los verdaderos positivos (0.32) y verdadero negativo (0.91)

Ahora, procederemos a transformar variables categóricas en variables ficticias. Lo


primero que tenemos que hacer es aislar las variables categóricas para crear un nuevo
conjunto de datos. Para ello creamos la variable y luego especificamos el tipo,
excluyendo todos los que son de tipo numérico:

Ejecutamos y observamos que se creó el nuevo conjunto de datos, la cual claramente,


solo tiene variables categóricas:
Por consiguiente, transformaremos las variables categóricas en variables ficticias. Para
ello escribimos el siguiente comando, el cual, utilizará el dataset creado anteriormente:

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:

Ejecutamos el comando, y observamos que se creó exitosamente el dataset final:


Como siguiente paso, trataremos de obtener el nombre de las columnas de nuestro
conjunto de datos:

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:

Observamos que se eliminó la columna exitosamente:

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:

Otro paso a repetir, es el de agregar los mismos parámetros establecidos anteriormente y


ejecutar XGBoost nuevamente. Para ello, solo cambiaremos el nombre las variables
creadas y digitamos:

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 resultado, tenemos que se crearon exitosamente:

Nueva matriz de confusión creada:


Y, por último, mostramos el nuevo reporte creado con los datos del dataset final, en
donde apreciamos los nuevos valores de la tasa de los verdaderos positivos (0.43) y
verdadero negativo (0.92). Esto significa que estamos empezando a ser realmente
buenos para identificar quién diría que sí a nuestra campaña de telemarketing.

Ahora, trataremos de realizar un ajuste de medidor y ejecutar procesos en paralelo, pero


primero vamos a revisar cuantos procesadores tiene nuestra computadora, y para ello,
importaremos la siguiente librería:

Esto es importante para tener en cuenta el límite de nuestra computadora y no poner


valores demás y sobrecargar el procesamiento de nuestra computadora. Como resultado
observamos que, en nuestro caso, tenemos 8 procesadores o núcleos:

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, estableceremos un ajuste de nuevos parámetros, el será similar a los ya creados


anteriormente:

En este paso, haremos un problema de clasificación, el cual le especificaremos que


nuestra variable dependiente es binaria, por lo cual importaremos una librería y
digitaremos lo siguiente:
Crearemos nuestra función que realizará la validación cruzada. Importaremos una
librería que nos permita realizar esto. Digitamos lo siguiente:

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

Realizaremos un ajuste de hiperparametro y la validación cruzada. Y para hacer esto,


necesitamos crear un objeto donde almacenaremos toda la información:

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 :

Ejecutamos, esperamos y obtenemos lo siguientes resultados:


Y como paso adicional, ejecutaremos por última vez XGBoost, con los resultados
obtenidos anteriormente, para ello reemplazamos los valores a continuación, 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:

Todo lo ejecutado anteriormente se resumen en las predicciones que se ha generado, La


cantidad de personas que se llamaron, la cantidad de personas que dijeron que no y la
cantidad de personas que dijeron que si a nuestra campaña de marketing, lo cual
quedaría de la siguiente manera:

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:

Teniendo como resultado:


 Duración (seg.)
 Balance del promedio anual (euros)
 Último día de contacto del mes
 Edad
 Número de días que pasaron desde la última conexión con el cliente
 Número de contactos evaluados en la campaña
 Número de contactos evaluados en la campaña pasada
 Clientes suscritos
 Clientes que dijeron que sí
 Educación

Como último paso, intentaremos graficar con calores SHAP, por que tenemos que ir
descargar en la siguiente página:

En la consola digitaremos el comando que nos indica y comenzará la instalación:


Una vez instalado SHAP, importaremos y procederemos a escribir el siguiente código
para poder graficar los valores SHAP, quedando de la siguiente manera:

Teniendo como resultado final:


Con los datos similares a nuestro gráfico anterior.
- 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.

También podría gustarte