Tutorial Weka
Se requiere determinar si una persona gana ms de US$50 mil (>50k) o
menos (<=50K). Se definen ahora los pasos para analizar y limpiar datos.
Para esto debemos abrir el archivo [Link] en el Explorer de Weka.
1. Anlisis y limpieza de datos
Para analizar los datos existen varias formas de hacerlo, todas ellas
complementarias. Veremos el anlisis de un atributo numrico Age
y uno nominal Workclass.
Atributo Age
Revisin de caractersticas:
Campos relevantes:
Missing: Indica el nmero de valores faltantes o nulos.
Minimum: Valor mnimo del atributo.
Maximum: Valor mximo del atributo.
Revisin de la distribucin:
Se puede apreciar que existen outliers, que sera bueno revisar. Para
esto seleccionamos el tab Visualize, para hacer un anlisis ms
profundo de esta distribucin.
Con el control Jitter podemos ampliar o disminuir la distribucin.
Podemos apreciar que existen elementos muy alejados y adems
separados. Otra cosa es que representan personas de edad 90, lo
cual quizs no sea muy representativo.
Nota: El anlisis no solo es visual, tambin se debe aplicar criterios.
Filtro de datos
Vamos a filtrar a todas las personas que tienen 90 aos.
En el tab Preprocess, hacemos clic en el botn Choose. Debemos
elegir un filtro no supervisado y de instancia, RemoveWithValues.
Hacemos clic en el nombre del filtro para cambiar sus parmetros.
attributeIndex: ndice del atributo en listado.
InvertSelection: Cuando est en False, el filtro se hace hacia
debajo de la condicin (en este caso filtrara (elimina) todos los
menores a 90), en True filtra de la condicin hacia arriba.
matchMissingValues: Elimina los nulos, sin importar
condicin.
splitPoint: Condicin de quiebre para hacer el filtro (los
mayores a 90).
Nota: Si se desea leer ms cada parmetro, hacer clic en el botn
More.
Se debe ejecutar el filtro, clic en botn Apply. Ver los cambios en las
caractersticas del atributo.
Nota: En caso de error, hacer clic en botn Undo.
Atributo workclass
Revisin de caractersticas:
Define la cantidad de instancias por cada clase predefinida.
Ojo: Existen 2791 instancias nulas para este atributo.
Notar que las ltimas clases son irrelevantes para el caso de anlisis.
Se puede hacer un anlisis ms profundo utilizando la herramienta
Visualize y el Jitter.
Filtro de datos
Vamos a filtrar las clases WithOutPay y NeverWorked, utilizando el
mismo filtro anterior. Hacer clic en nombre de filtro para modificar
parmetros.
modifyHeader: Al eliminar las clases, se eliminan tambin sus
entradas.
nominalIndices: ndices de las clases a ser eliminadas.
Atributo fnlwgt
Tambin presenta outliers, utilizando el mismo filtro y los siguientes
valores para los parmetros: 3, T, T, X, X, 900000.
Nota: X significa que ese atributo no se considera en esta evaluacin,
por ser una variable numrica.
Atributo education y education-num
Si vemos el siguiente grfico, correlacin entre ambos atributos,
podemos notar que ambos atributos dicen lo mismo. Estn
directamente relacionados.
Ahora se tiene que eliminar uno. Nos quedamos con education-num,
debido a que es un valor numrico y ordenado, ms fcil de explicar,
cada valor tiene significado.
En cambio education, muestra un conjunto de clases, que sera un
poco difcil de explicar u ordenar (para el algoritmo).
Seleccionamos el atributo education y hacemos clic en el botn
Remove.
Atributos marital-status y relationship
Ambos se quedan, expresan conceptos
directamente relacionados.
diferentes.
No
estn
Atributo occupation
Por un anlisis de nmeros en las clases, nos damos cuenta que la
clase armed-forces tiene un valor bastante insignificante con respecto
a los otros. Entonces eliminar esa clase.
Filtro RemoveWithValues(6,F,T,T,last,X).
Atributos race y sex
Quedan y no presentan nada extrao.
Atributo capital-gain
Presenta un extremo preocupante (99999), que representa los no
sabe / no opina. Entonces debemos filtrarlos.
Filtro RemoveWithValues(10,T,X,X,X,50000)
Si analizamos el resultado podemos notar que existen aun algunos
outliers, por lo tanto volvemos a filtrar.
Filtro RemoveWithValues(10,T,X,X,X,30000)
Atributo capital-loss
Se eliminarn los outliers.
Filtro RemoveWithValues(11,T,X,X,X,3500)
Atributo hours-per-week
No vamos a filtrar nada, pero se debe tener en consideracin el
siguiente anlisis.
Una persona que trabaja 12 horas diarias, los 7 das de la semana =
84 horas.
Una persona que trabaja 14 horas diarias, los 7 das de la semana =
98 horas.
Ser cierto que existan personas que trabajen 99 horas a la
semana?
Atributo native-country
Existen una serie de pases de procedencia, eliminar los menores?.
La mejor solucin es saber si la persona es de EEUU o no, para esto
se deber cambiar el atributo a binario.
Filters Unsupervised Attribute NominalToBinary(13,F,F,F)
Se crea por cada caracterstica nominal un Nuevo atributo, pero el
que nos interesa es el primero native-country = United States, por lo
que debemos eliminar todos los dems.
Filters Unsupervised Attribute Remove (14-53, F)
Ahora debemos eliminar los valores nulos de este nuevo atributo.
Filtro RemoveWithValues(13,F,T,X,X,-10)
Atributo class
Este atributo es el que se debe determinar, para este atributo
estamos haciendo el clasificador. Podemos notar que est bastante
descompensado, por probabilidades el algoritmo siempre considera al
mayor (p.e. Fuga de clientes de un banco con clases como estas,
siempre apuntar al mayor cuando determine la fuga).
Recordar que este anlisis lo hacemos debido a que es el atributo que
determina nuestro anlisis.
Vamos a equiparar las clases:
Filters Supervised Instance Resample(1,F,F,0,50) Esto produce
una muestra aleatoria de la original.
biasToUniformClass = con 1 se define que sean dos clases
iguales, con 0 utiliza la misma distribucin (la original).
SampleSizePercent = Tamao de la submuestra como
porcentaje del conjunto original. (Si originalmente tena 100
datos, las clases resultantes tendrn un porcentaje de esos
datos distribuidos en ellas)
2. Revisin de atributos (tab Select attributes)
Determina la relevancia de los atributos. Vamos a evaluar la
correlacin de todos los atributos con el atributo Class.
Evaluamos con ChiSquaredAttributeEval y Ranker:
Evaluamos con InfoGainAttributeEval y Ranker:
Evaluamos con GainRatioAttributeEval y Ranker
Si observamos en los tres, los atributos relationship y marital-status
estn siempre entre los tres primeros. Analizaremos la correlacin
entre los dos.
Utilizando los tres evaluadores anteriores para marital-status,
podemos notar una alta correlacin entre este atributo y el atributo
relationship, por lo tanto se debe eliminar uno de ellos. Por criterio, el
atributo marital-status tiene mayor significado que relationship, por lo
tanto eliminamos relationship.
El siguiente paso es generar el modelo clasificador.
3. Clasificador
Se utiliza el tab Clasiffy, con las siguientes opciones:
Se trabajar con el rbol J48
minNumObj = 200 (nmero de hijos), para rbol ms
pequeo.
Se utilizar la opcin de testeo Cross-validation.
El atributo ser Class.
o
Haremos una clasificacin sin el atributo occupation:
Podemos ver:
Correctly Classified Instances = 81.3773% (eficiencia)
TP Rate (true positive) es alta para ambas clases.
Precision es alta para ambas clases.
Evaluacin sin eliminar el atributo occupation:
Ambos modelos son bastante similares.
Haremos una clasificacin con los datos originales, lo que se muestra
en la siguiente figura.
Aparentemente la eficiencia es mejor, pero se debe buscar que la
eficiencia, TP Rate y Precisin sean buenos en conjunto. Para este
caso el TP Rate de la clase 1 es bastante bajo y no muy bueno para
ofrecer buenos resultados.