Post on 05-Jul-2015
description
AGRUPACION DE EMPLEADOS
La empresa de software para Internet “Memolum Web” quiere extraer tipologías de
empleados, con el objetivo de hacer una política de personal más fundamentada y
seleccionar a qué grupos incentivar. Las variables que se recogen de las fichas de
los 15 empleados de la empresa en 1999 son:
· Sueldo: sueldo anual en euros.
· Casado: si está casado o no.
· Coche: si viene en coche a trabajar (o al menos si lo aparca en el parking de la
empresa).
· Hijos: si tiene hijos.
· Alq/Prop: si vive en una casa alquilada o propia.
· Sindic.: si pertenece al sindicato revolucionario de Internet
· Bajas/Año: media del nº de bajas por año
· Antigüedad: antigüedad en la empresa
· Sexo: H: hombre, M: mujer.
RESOLUCION DEL PROBLEMA AGRUPACION DE EMPLEADOS
1. En primer lugar vamos a leer los datos de los empleados para lo cual
procederemos a ir al programa clementine 12.0 ya ubicados en nuestra área de
trabajo procedernos a agregar un var.file en nuestra área de trabajo que se
localiza en la parte inferior como se indica
a) ya agregado el var. File procederemos a dar doble click sobre el para cargar los
datos como de muestra en la imagen inferior
b) ubicaremos el archivo de Empleados4.csv que contiene los datos con los cuales
se trabajara a lo largo de esta práctica el cual seleccionaremos y presionaremos el
botón abrir.
c) posteriormente de abrir el archivo cvs se cargaran los datos como se muestra a
continuación, se aplicaran los cambios y los datos se cargaran al var.file.
2) Ahora añadiremos un nodo tabla el cual encontraremos en la parte inferior de la
interface de clementina y lo conectaremos, para esto posicionaremos el más sobre
el var.file pulsaremos clic derecho y seleccionaremos la opción conect con el clic
izquierdo sobre la tabla realizaremos la conexión con el nodo var.File, como se ve
en la siguiente figura:
a) Se procederá a dar doble click sobre la tabla para verificar aparecerá una
pantalla en la cual presionaremos el botón ejecute.
b) aparecerá una tabla en la cual estarán los datos de lo contrario regrese a los
pasos anteriores y verifique que no salteo ningún paso asi se vera la tabla.
c) A continuación añadimos un nodo “Type” y lo enganchamos. Todos los atributos
deberían estar IN exceptuando el número de ejemplo, que es irrelevante y pondremos NONE, como se muestra en lasiguiente figura:
d) Ahora vamos a utilizar un algoritmo de clustering para obtener grupos sobre esta población. En primer lugar vamos a probar con tres grupos. Para ello añadimos un
nodo Kmeans, lo enganchamos al nodo Type y modificamos el campo “Number of clusters” a 3, como se ve en la siguiente figura:
c) Ahora podemos ejecutar el stream, obteniendo un nodo diamante Kmeans. Lo
podemos añadir y conectaremos al nodo Type, como se muestra en la siguiente
figura:
d) ahora añadimos una tabla a la salida del nodo diamante Kmeans podemos
observar qué ejemplos exactamente han caído en qué clúster como se muestra en la siguente imagen
3) procederemos a la agrupación de empleados con datos errones o fatlantes La empresa de software para internet “Memolum Web” ha aumentado
vertiginosamente su plantilla en los últimos años, debido principalmente a una absorción de la compañía “Intelligent Stones” y quiere ver si las tipologías de
empleados existentes siguen valiendo. Las variables que se recogen de las fichas de los 40 empleados actuales de la empresa son:
· Sueldo: sueldo anual en euros. · Casado: si está casado o no.
· Coche: si viene en coche a trabajar (o al menos si lo aparca en el parking de la empresa). · Hijos: si tiene hijos.
· Alq/Prop: si vive en una casa alquilada o propia. · Sindic.: si pertenece al sindicato revolucionario de Internet
· Bajas/Año: media del nº de bajas por año · Antigüedad: antigüedad en la empresa · Sexo: H: hombre, M: mujer.
a) si corremos nuestra tabla conectada al var.file podremos observar los datos
faltantes así como los erróneos que en los siguientes pasos se realizara el correcto análisis en la imagen inferior se muestra la tabla con los campos los cuales están
sin contenido.
b) Ahora vamos a realizar ciertas gráficas para detectar datos anómalos. Nos interesa ver los datos numéricos, ya que en estos casos es más fácil detectar
outliers. Para ello podemos añadir ciertos nodos “Plot” para comparar diferentes valores. Por ejemplo, podemos querer visualizar la antigüedad respecto al sueldo y
además mostrando los estudios. Añadimos un nodo “Plot” y lo enganchamos con la fuente de datos. Si lo editamos podemos especificar que el campo X será “Sueldo”, el campo Y será “Antigüedad” y el campo de overlay será “Estudios”:
Si lo ejecutamos tendremos la siguiente gráfica:
Parece destacar un dato cerca de los 400000€ de sueldo que parece ser un dato
anómalo, dadas las características de la empresa.
c) De modo similar podemos añadir y conectar otro nodo Plot para intentar
relacionar el número de Hijos con las Bajas mostrando el Sexo como overlay. El
resultado es el siguiente.
de momento, no nos aporta demasiada información, aparte que la antiguedad
parece estar relacionada con estar casado. Elige una interpretación para esta
relación:
a) Los jóvenes van saltando de una empresa a otra, con lo que no obtienen
antigüedad.
b) La edad y el estado civil están relacionados en el total de la población por lo
que esto no es más que una muestra de ello, ya que para estar más de 10 años
en la empresa hay que tener por lo menos 30 años.
c) Casarse envejece.
d) Todas las anteriores.
El stream que llevamos hasta el momento es el que se muestra en la siguiente
figura:
4) Siguiendo con nuestro problema, hemos identificado dos campos con valores
faltantes y dos registros anómalos. Ya que tenemos 40 empleados, lo más
conveniente en este caso es eliminar los dos registros anómalos, pues los
resultados con 38 empleados van a ser similares que con 40 (además más fiables
al haber eliminado registros dudosos).
a)Para eliminarlos, iremos al archivo cvs y los elimaneros guardaremos cambios y
se cargara de nuevo la base de datos en var.file ejecutamos el nodo “Table” y
pinchamos sobre los datos anómalos: en este caso
El sueldo del registro 16 y los hijos del registro 18, como se muestra en la
siguiente figura.
Posteior mente correremos la tabla, como podemos observar los datos anomalos
ya no se encuentran que era el renglon 16 y 18
Pulsando en el menú “Generate”, pulsamos la opción “Select Node (“or”)”: el cual
nos creara un generated en la superficie de trabajo como se muetra a
continuación.
Nos ha generado un nodo select con el nombre “Generated”. Enganchamos el
nodo fuente con él y lo editamos, para comprobar que las condiciones se han
generado bien y para modificar el modo a y para modificar el modo a “Discard”
(porque son los que queremos eliminar), como se muestra en la siguiente figura:
Para combrobar que los datos anómalos se han eliminado aregaremos una tabla
nueva y la conectaremos con el nodo créate y procederos a ejecutarla para
sersiorarnos que los datos anómalos se han eliminado como podemos observar
en la imagen inferior.
Podemos añadir un nodo “Table” y engancharlo con el nodo “generated” para
comprobar que realmente elimina esos dos registros, resultando en 38 registros de
datos.Una vez resuelto el tema de los datos anómalos vamos a ocuparnos de los
datos faltantes. En primer lugar vamos a abordar el campo “Estudios”. Según se
tiene conocimiento de la manera de adquirir este dato (en el momento de
contratación en la empresa) es muy posible que la ausencia de valor en este
campo pueda significar que el contratado no tenía estudios aparte de los
elementales,
Dejando en blanco este campo. Por tanto, vamos a suponer que aquellos registros
sin estudios van a ser realmente “Estudios obligatorios”. Para arreglarlo, y
siguiendo este criterio, vamos a añadir un nodo “Filler”. Previamente debemos
añadir un nodo “Type” y conectarlo al nodo“generated”, como se muestra a
continuación
Ahora pinchamos en el checkbox “defibe blancks”, para que nos reconozca los
valores en blanco, como se muestra en la siguiente figura:
Ahora ya sólo nos queda abordar los blancos en “Alq/Prop”. Al haber tres casos
con nulo en este atributo, no parece aconsejable eliminar tres registros, ya que su
información puede ser valiosa. La idea es intentar rellenarlos con algún valor
relativamente razonable. Una idea sería ver qué valor es más frecuente y rellenar
con ese valor, pero en este caso prácticamente los dos valores tienen una
frecuencia similar. Otra opción sería predecir ese valor faltante. Eso es lo que
vamos a hacer. Para ello vamos a crear un clasificador para obtener este valor. En
primer lugar, vamos a eliminar (momentáneamente) los tres valores blancos. Para
ello, ejecutamos el último nodo “table” yseleccionamos uno de los campos que
estén en blanco. Pulsamos en el menú “Generate” como se muestra a
constinuacion en el diagrama:
Nos ha generado un nodo “Generated” que enganchamos al nodo “filler”. Editamos
el nodo “Generated” para que excluya estos registros nulos:
Ahora añadimos un nodo “Type” a este nodo “generated” y vamos a señalar el
campo “Alq/Prop” como campo de salida (OUT):
Ahora añadimos un nodo de clasificación, por ejemplo, un “C&r tree” y lo
enganchamos al nodo Type como se muestra en la siguiente figura:
Ahora ejecutamos el stream y obtenemos un modelo en el área de trabajo derecha
del Clementine. El cual conectaremos a nuestro nodo type como se muestra en la
siguiente imgen:
Añadimos un nodo “analysis", se conectara nuestro crt alq/prop como se muestra
en la siguiente figura:
Podemos evaluar la calidad del modelo ejecutando el nodo “analysis": el cual nos
dará un 100% de correct lo cual es un muy porcentaje.
Este modelo es lo suficientemente aceptable para substituirnos los valores blancos
que teníamos en ese campo. Para ello, volvemos a copiar el modelo en la zona de
trabajo de la izquierda y lo enganchamos a través de un nuevo nodo Type con el
filler y añadimos un nodo “Table”:
Si ejecutamos la tabla, vemos que el modelo genera valores para Alq/Prop en un
nuevo campo “RAlq/Prop”:
Por último, el campo “Estudios” sería interesante que fuera numérico en vez de
simbólico. Es decir, que fuera una escala. Para ello añadimos un nodo “Derive”. Lo
conectamos al nodo diamante “Alq/Prop” de arriba y lo editamos, poniendo como
nombre “Vestudios” y de tipo “Set”,
Ponemos el primer valor current 1 con la condición (Estudios == ‘Obl’) y le damos
al botón “Add”. Así lo vamos haciendo con todos los valores siguientes, como se
muestra en la siguiente tabla:como se muestra en la figura:
Podemos observar el resultado añadiendo un nodo “Table”:
Por último, ya sólo nos falta quedarnos con las columnas válidas. En este caso, se
trata de quedarnos con la columna Vestudios y no la vieja Estudios y en el caso de
Alq/Prop con la derivada y no con la original, que tiene blancos. Para eso
simplemente añadimos un nodo Filter que enganchamos con el nodo “VEstudios"
y lo editamos de la siguiente manera:
Ahora ya podemos examinar mejor los datos y realizar múltiples gráficas y tablas
para analizar losdatos, p.ej. los plots que ya vimos, nuevos histogramas, tablas
“Matriz”, etc:Para esto agragaremos tres plots y los conectaremos al ultimo filter tal
como se muestra en la figura
Ahora vamos a añadir un nodo “Type” que lo enganchamos a continuación de
“filter” y ponemos la dirección de todos los campos a IN menos el campo “#Ej” que
ponemos NONE.
Además, para pode utilizar bien los datos, vamos a cambiar el tipo de VEstudios,
que lo habíamos generado como Set y vamos a cambiarlo a Integer Value
utilizando un nodo Type adicional, como se muestra en la siguiente figura:
Agregaremos un nodo kemens para obtener los datos deseados después de
aplicar los filtros en el nodo filter
A continuación procederemos a ejecutar nuestro nodo kemens para extraer los
datos el cual obtendremos un diamante k-mens el cual aparecerá en la parte
superior derecha del programa lo conectaremos a nustro nodo type.
Procederemos a agregar una table la cual conectaremos al diamante k-mens para
observar los datos filtrados que nos aparesera como cluster se muestra en la
siguente figura
A continuación procederemos a agregar un nodo región el cual nos alludara a
establecer la regiones de los clustering de el k-mens previamente configurado
A continuación agregaremos un nuevo nodo k-mens el cual conectaremos a el nodo
región para clustericar los datos deseados.
Procederemos a ejecutar el nodo kmens el cual clusterisara nuestros datos
posteriormente etraeremos el diamante k-mens el cual contendrá los datos de
clostering.
Agregaremos una tabla nueva para ver los datos clasificados por regiones el cual
la tabla la conectaremos de nuestro nodo región.
Procedemos a ejecutar nustra tabla para ver los datos clustering cargados por
región.
Por ultmio crearemos un nodo k-mens para cargar un nuevo grupos de datos
obteniendo otra dimencion y filtro el cual se conectara a nustro nodo región.
Procederemos a ejecutar nuestro nodo k-means para obtener el diamante k-mens
el cual lo conectaremos a nuestro nodo región.
Para comporbar la closterisacion correcta de nuestro k-mens agregaremos una
tabla la cual conectaremos a nuestro k-mens
Procederemos a ejecutar nuestra tabla la cual nos dara como resultado nuestra
tabla de empledos clasificados por clusterin deseados