Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Presentado por:
Andrés Felipe Brieva
Héctor Bustamante Ortega
Jonier Jiménez Rodríguez
José David Cantillo
Grupo 3
Docente
Idanis Beatriz Diaz Bolaño
Santa Marta
(Magdalena, Colombia)
2021 -1
Contenido
1. Problema a resolver 3
Número de usuarios ¡Error! Marcador no definido.
Histograma de las variables medibles 5
Matriz de correlación (mapa de calor) 6
Boxplot 7
2. Tratar los datos 8
Outliers o valores atípicos 8
Columna Special day 9
Convertir Dtypes (de numérico a tipo categórico) 9
Convertir etiquetas de texto a números categóricos 10
Construcción del modelo de predicción 10
3. Uso de gridsearchCV para pruebas múltiples de combinaciones con las
configuraciones para nuestra red neuronal multicapa. 11
4. Análisis del resultado con la matriz de confusión 15
Análisis del resultado 15
Matriz de confusión 15
5. Conclusiones 16
¿Cómo podemos en un futuro mejorar los resultados? 17
1. Problema a resolver
El problema por solucionar es: “Saber la intención de los clientes al comprar (si generará
dinero), cuando visitan una página web de un producto”, en la dataset nos vamos a
encontrar estas columnas:
● Revenue: esta va a ser nuestra clase categórica donde dice si el usuario genera
ingresos o no.
● Administrative, Administrative Duration, Informational, Informational
Duration, Product Related y Product Related Duration: representan el número de
diferentes tipos de páginas visitadas por el visitante en esa sesión y el tiempo total
invertido en cada una de estas categorías de página.
● Bounce Rate: porcentaje de visitantes que ingresan al sitio desde esa página y luego
se van ("rebotan") sin activar ninguna otra solicitud al servidor de análisis durante esa
sesión.
● Exit Rate: el porcentaje que fueron los últimos en la sesión.
● Page Value: representa el valor promedio de una página web que un usuario visitó
antes de completar una transacción de comercio electrónico.
● Special Day: indica la proximidad del tiempo de visita del sitio a un día especial
específico (por ejemplo, Día de la Madre, Día de San Valentín) en el que es más
probable que las sesiones finalizan con la transacción.
● Operating system, browser, región, traffic type: diferentes tipos de sistemas
operativos, navegador, región y tipo de tráfico utilizado para visitar el sitio web.
● Visitor type: si el cliente es un visitante nuevo o que regresa.
● Weekend: un valor booleano que indica si la fecha de la visita es el fin de semana.
● Month: mes del año.
Número de usuarios
Con un total de 12,330 datos en los cuales: 10,422 que no generan ingreso y 1,908 generan
ingreso, los cuales vamos a clasificar en un futuro para entrenar y probar nuestra red
neuronal, donde el 84,68% están en True (generan ingresos) y 15,47% están en False (no
genera ingreso).
Histograma de las variables medibles
El histograma es una gráfica que representa cómo se distribuyen los datos en forma de barra
donde “X” son los datos y “Y” es la frecuencia de estos, algunas de estas gráficas tienen
espacios entre datos dichas graficas son: Region, TrafficType, OperatingSystems, Browser
y SpecialDay que son datos numéricos, pero representan a categorías y no son datos
continuos. Podemos ver que algunas de ellas se genera una forma que se parece a una
distribución normal que es capaz de aproximarse al valor de una variable aleatoria como en
este caso, aunque no esté completo porque eso sería en una situación ideal, por ejemplo, la
variable “Exitrates” que muestra la forma de una media campana.
Matriz de correlación (mapa de calor)
La matriz de correlación que en nuestro caso es el mapa de calor, muestra con colores las
ciertas relaciones que tienen una columna con otras columnas, donde el color más fuerte que
es el rojo oscuro es que están 100% relacionadas de manera uniforme si una sube la otra sube,
si una baja la otra baja, el color azul claro es que están menos correlacionados, y el azul
fuerte es una correlación inversa, si una sube otra baja, si baja la otra sube. En nuestro mapa
de calor podemos ver algunas que están fuertemente correlacionadas que son:
Con toda esta información de cuanto se relacionan unas con otras podemos decidir en un
futuro si quitaremos algunas columnas porque nos proporciona la misma información, de
tener una columna o la otra. También podemos ver la influencia de otras variables a nuestra
variable de clasificación como pueden ver Revenue con PageValues que tienen una alta
relación.
Boxplot
Datos tratados
Columna Special day
Uno de los problemas del dataset es esta columna, porque la descripción de esta columna es
numérica pero no es necesaria porque la descripción es:
La columna “Month” cómo “visitor_type”, tienen texto cómo “feb”, “nov” o como
“Returning_Visitor”, este es un problema y hay que convertirlo a número categórico.
Donde convertimos los meses a número y el tipo de dato a número.
Construcción del modelo de predicción
Para construir el modelo de predicción hay que primero, separar nuestra columna de etiqueta
de clasificación y segundo hacer un split para separar los datos de entrenamiento y prueba (un
80% para entrenamiento y 20% para prueba).
X = label_data.drop(['Revenue'],axis=1)
y = label_data.Revenue
En nuestro primer uso de gridsearchCV usamos varias configuraciones para elegir cual es la
mejor función de activación:
probamos con todas las funciones de activación para ver cuál es la mejor función de
activación para nuestro problema, dando como la mejor combinación ‘logistic’:
param_grid = [
{
'activation' : ['logistic'],
'solver' : ['lbfgs', 'sgd', 'adam'],
'alpha' : [0.01],
'hidden_layer_sizes': [
(3, 2)
]
}
]
param_grid = [
{
'activation' : ['logistic'],
'solver' : ['adam'],
'alpha' : [0.01, 0.001, 0.1, 0.0001],
'hidden_layer_sizes': [
(3, 2)
]
}
]
Ahora se viene de último, pero no menos importante de los demás de hecho es lo más
importante que son nuestras capas escondidas de nuestra red neuronal perceptrón
multicapa:
param_grid = [
{
'activation' : ['logistic'],
'solver' : ['adam'],
'alpha' : [0.01],
'hidden_layer_sizes': [
(3, 2),
(4, 3, 2),
(7, 2),
(6, 4, 3, 2)
]
}
]
En las capas escondidas probamos con estas 4 combinaciones, 2 capas escondidas, con 3
neuronas en la primera capa y 2 en la segunda capa. en la segunda combinación con 3 capas
escondidas con 4 neuronas en la primera capa, 3 en la segunda capa y 2 en la tercera capa, y
por último intentamos con más neuronas, con dos capas: en la primera capa 7 neuronas y en
la segunda capa 2 neuronas.
En nuestro resultado nos dio (7, 2), dando a entender que son dos capas, con 7 neuronas en la
primera capa y en la segunda capa 2 neuronas.
Ahora con estas últimas configuraciones tratemos de entrenar y probarlo para ver cuánto nos
puede dar en el porcentaje de precisión.
Tratamos de probar con más capas o diferentes capas que están cerca a nuestro resultado
anterior que es (7, 2):
param_grid = [
{
'activation' : ['logistic'],
'solver' : ['adam'],
'alpha' : [0.01],
'hidden_layer_sizes': [
(8, 5),
(7, 4),
(6, 3)
]
}
]
param_grid = [
{
'activation' : ['logistic'],
'solver' : ['adam'],
'alpha' : [0.01],
'hidden_layer_sizes': [
(7, 2),
(7, 3),
(7, 4),
(7, 7)
]
}
y nos volvió a dar (7, 4):
Matriz de confusión
Esta matriz de confusión se usa para ver el desempeño de nuestra red neuronal al etiquetar
“Revenue”, que nos genera ingresos o no de los clientes al entrar en las páginas web. en la
columna y fila que se junta “positivo” con “positivo” que son 164 clientes, esto significa
que la predicción versus el valor real acertó en que genera ingresos en 164 clientes. En
positivo versus negativo son 74, es que falló en esos 74 en donde la etiqueta es “genera
ingreso”, ahora negativo versus positivo son 115 acá este lugar es donde falló en predecir la
red neuronal pensó que se etiqueta “no genera ingreso” pero realmente es que esos 115
generan ingreso, en negativo versus negativo son 1399, es que “no genera ingresos” y la red
neuronal predijo efectivamente que “no genera ingreso”.
En todo esto que hemos usado nuestro resultado, ¿Cuál de estos números son los que hizo
bien?, bueno en nuestra red neuronal donde pensó que es positivo y realmente era positivo, y
en donde la red neuronal pensó que era negativa y efectivamente es negativo que son 164 y
1399 respectivamente, en un total de 1,752 que nuestra red neuronal acertó de unos 1,536 que
hay en total en los datos de prueba. Unos de los problemas que podemos ver en esta tabla es
en las columnas de nuestra predicción de positivo y negativo, de 164 vs 74 y 115 vs 1399,
podemos ver que es más difícil de predecir cuándo gasta dinero en los números
relativamente. Si calculamos las probabilidades son:
5. Conclusiones
Data tratada
Con esta gráfica podemos concluir que esta dataset tiene muchos outliers, porque este tipo de
datos como de navegar en sitios web en donde se toma información de personas, no siguen un
“patrón” tan claro y existen muchos datos que están fuera del patrón y son muy exagerados
o pobres, como un cliente que abre y cierra la página web o deja el computador con esa
página web abierta, entonces esto hace que los datos adquiridos son muy bajos o altos. En un
futuro mejorar nuestro dataset en la calidad de los datos porque existe una baja calidad en
estos así mejorar nuestra dataset y así sería más sencillo predecir usando nuestro modelo.
En nuestra dataset son 12,330 datos en total, donde 1,980 son clientes que generan ingresos y
10,422 no generan ingresos. unos de los problemas del dataset como pudimos ver es la
diferencia de examples de que no generan ingresos que son demasiados en comparación a los
que generan ingresos y es incluso menos cuando tratamos nuestros datos, tal vez por esto es
más fácil predecir cuando alguien no genera ingreso por que tiene más examples.
Una opción seria mejorar nuestra dataset tomando más datos de ejemplo: cuando un cliente
genera ingresos dado que en nuestra dataset representan el 16% (1,980) son muy pocos en
comparación del 84% (10,442) que no generan ingreso y así subir el porcentaje de acierto de
nuestra red neuronal.
También podemos usar otro modelo, aunque las redes neuronales multi perceptrón son muy
útiles, además de que usamos la más básica estructura en la red neuronal, hay otros modelos
que pueden dar muy buenos resultados, modelos como: clasificador Naive Bayes para
modelos de Bernoulli multivariable (BernoulliNB), Clasificación de vectores de soporte C
(SVC), Bosque aleatorio (RandomForestClassifier), etc. Como podemos ver existen varios
modelos multivariables son buenos a la hora de clasificar nuestra data, en la siguiente imagen
podemos ver un ejemplo de la web oficial de las diferencias de clasificadores:
Imagen sacada de Classifier comparison
No solo existen estas si no que hay muchos y cada uno de estos clasificadores son usados
para distintos tipos de problemas.