Escolar Documentos
Profissional Documentos
Cultura Documentos
Para su realización se han empleado entre otros, Microsoft Excel, el sistema Software de
Análisis Estadístico SAS ® v. 9.0, y GNU Weka v3.6.x.
MIM-UCM Página 2
CONJUNTO DE DATOS
El conjunto de datos de entrada es una muestra de 48842 datos censales relativos a ingresos
anuales (capital-gain) y otras trece variables, principalmente en los Estados Unidos de
América. Dado que el archivo original censo_20 estaba corrupto, se procedió a descargar una
copia desde su ubicación original en [12, 13].
MIM-UCM Página 3
MACRO EXCEL
Existen herramientas en Microsoft Excel que nos permiten construir árboles de clasificación
con bastante potencia y capacidad de parametrización, que muestran gráficos arborescentes y
de tarta y un completo análisis de resultados. A ello se une la facilidad para importar y
exportar datos en diferentes formatos, junto con la flexibilidad de su módulo Solver y la
comodidad del soporte idiomático.
MIM-UCM Página 4
MACRO SAS
El software para realizar análisis CHAID está disponible en el módulo Enterprise Miner de SAS,
y se utiliza para construir test automáticos de detección de interacciones basándose en la
distribución Chi-cuadrado. Se adjunta una muestra de ejecución en el Anexo.
Sin embargo, al no tenerse acceso licenciado a dicho programa, se decidió utilizar una macro-
instrucción previa, que data de 1970, antes de su comercialización. Se trata de la macro
TREEDISC.
Se recibió junto con las especificaciones una versión de dicha macro referida al 15 de
Noviembre de 1994 [31], constituyendo la versión revisada por Michael Friendly [33].
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: TREEDISC */
/* TITLE: Decision tree to predict a categorical variable */
/* PRODUCT: IML */
/* SYSTEM: ALL */
/* KEYS: */
/* PROCS: IML */
/* DATA: */
/* */
/* SUPPORT: saswss UPDATE: 15Nov94 */
/* REF: */
/* MISC: Bug with LEAF= and NOMINAL= fixed 03Dec93 */
/* Added color options for DRAW=GR 07Mar94 */
/* Added POS= option for DRAW=GR 10May94 */
/* Added INTO_, TIE_, and POST_ to */
/* OUTTREE= data set 3Sep94 */
/* Added PFORMAT= option 17Oct94 */
/* Bug in CODE= with unformatted ordinal */
/* character variable fixed 15Nov94 */
/* */
/****************************************************************/
MIM-UCM Página 5
/*
Revised: 11 Aug 2005 10:24:15 M. Friendly
- Fixed bug in pvalues module
- Include XMACRO from filename macros
*/
Se localizó una versión posterior con una ligera mejora en cuanto a la comprobación de
formatos de entrada en los argumentos [32]. Se usó ésta última.
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: TREEDISC */
/* TITLE: TREEDISC MACRO - BETA VERSION */
/* PRODUCT: IML */
/* SYSTEM: ALL */
/* KEYS: */
/* PROCS: IML */
/* DATA: */
/* */
/* SUPPORT: saswss UPDATE: 25Aug95 */
/* REF: */
/* MISC: Bug with LEAF= and NOMINAL= fixed 03Dec93 */
/* Added color options for DRAW=GR 07Mar94 */
/* Added POS= option for DRAW=GR 10May94 */
/* Added INTO_, TIE_, and POST_ to */
/* OUTTREE= data set 3Sep94 */
/* Added PFORMAT= option 17Oct94 */
/* Bug in CODE= with unformatted ordinal */
/* character variable fixed 15Nov94 */
/* Changed 2nd arg in PROBF call from */
/* 1e10 to 1e9 due to 6.11 limit 25Aug95 */
/* */
/****************************************************************/
También se debe utilizar XMACRO (v6.10) que incluye las subrutinas de utilidades para macros
procedimentales:
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: xmacro */
/* TITLE: Utility routines for PROC-like macros */
/* PRODUCT: stat */
/* SYSTEM: all */
/* KEYS: macros */
/* PROCS: */
/* DATA: */
/* */
/* SUPPORT: saswss UPDATE: 01Dec00 */
/* REF: */
/* MISC: */
/* */
/****************************************************************/
MIM-UCM Página 6
Dado que esta macro no lleva a cabo la fase de Validación tras haber hecho la poda del árbol en la fase
de Construcción tal como hace SAS Enterprise Miner, se ha modificado el criterio de parada en la macro
TREEDISC (renombrada MACROARBOLES) mediante la opción “ALPHA=” para que detenga la subdivisión
en nuevos nodos descendientes cuando el p-valor asociado al estadístico 𝑗𝑖 2 (el único posible) sea
mayor que 0.075.
Existen otros dos valores ALPHA que no se modificaron, para la fusión (Merge) y partición (Split):
ALPHAM y ALPHAS.
MIM-UCM Página 7
CÓDIGO FUENTE
/************************************************************************
UCM-MIM-EAMD ALFONSO DE LA FUENTE RUIZ 2009
http://www.linkedin.com/in/alfonsofr
************************************************************************/
/* Siempre incluir XMACRO.SAS antes de TREEDISC.SAS en sus ubicaciones
adecuadas. También podría referenciarse XMACRO desde TREEDISC.
Evidentemente, habrá que modificar todas las rutas de directorio.
La Macro TREEDISC se ha modificado y renombrado como MACROARBOLES; */
**%inc 'C:\Documents and
Settings\Alfonso\Escritorio\CBravo\ResultTreedisc\_Resultados\xmacro.sas';
**%inc 'C:/Documents and
Settings/Alfonso/Escritorio/CBravo/ResultTreedisc/_Resultados/xmacro.sas';
**%inc 'C:\Documents and
Settings\Alfonso\Escritorio\CBravo\ResultTreedisc\_Resultados\macroarboles.sas';
**%inc 'C:\Documents and
Settings\Alfonso\Escritorio\CBravo\ResultTreedisc\_Resultados/macroarboles.sas';
%inc 'e:\stat\sample\xmacro.sas';
%inc '!sasroot/xmacro.sas';
%inc '!sasroot/macroarboles.sas';
/*
TREEDISC Macro
%treedisc( data=..., depvar=...,
nominal=...,
ordinal=...,
ordfloat=...,
MIM-UCM Página 8
options=list noformat read,maxdepth=3,
trace=medium, draw=gr, leaf=50,
outtree=all);
• Need to specify type of each variable
– Nominal, Ordinal, with a floating value
*/
*** Generar código del paso DATA para clasificar las observaciones;
%macroarboles(intree=ARBOL, code=print);
MIM-UCM Página 9
WEKA
Para efectuar la construcción del árbol de clasificación con Weka, se comienza descargando la
aplicación de código abierto (licencia GNU) de la página web de la Universidad de Waikato
[22], junto con la máquina virtual Java, si es necesario por no estar previamente instalada.
MIM-UCM Página 10
Una vez eliminadas las variables, se guardará el archivo con otro nombre.
Desde el mismo Weka Explorer podemos ir realizando algunos análisis preliminares, eligiendo
la pestaña “Classify” y desde allí Zero-R, Cross-Validation y la variable “Capital-gain”. Tras
pulsar “Start” obtenemos la siguiente información de ejecución:
Scheme: weka.classifiers.rules.ZeroR
Relation: adult-weka.filters.unsupervised.attribute.Remove-
R3,5
Instances: 48842
Attributes: 13
age
workclass
education
marital-status
occupation
relationship
race
sex
capital-gain
capital-loss
hours-per-week
native-country
class
Test mode: 10-fold cross-validation
MIM-UCM Página 11
Pulsando con el botón derecho sobre la línea generada en la lista de resultados, observamos
un ejemplo de la variable “Education” contra “Capital-gain” aumentando un poco el
desplazamiento Jitter para visualizarlo mejor:
O la variable “Education” contra “Class”, que se define como “ganar más de 50.000 al año”
(50K):
MIM-UCM Página 12
También podemos visualizar los datos en la pestaña “Visualize”, reduciendo un poco el
tamaño de gráfico, incrementando el tamaño de punto y coloreando la variable “Capital-gain”
(azul=bajo, naranja=alto):
Podemos abandonar el Weka Explorer por el momento y volver al estado en que dejamos el
Weka Experimenter, donde cargaremos los datos a través de “Datasets/Add new…”.
Aparecerá una nueva línea en el cuadro Datasets. Ahora debe elegirse el tipo de algoritmo en
el cuadro que está a su derecha, etiquetado “Algorithms”.
User Clasifier: Interactively classify through visual means. You are Presented with a scatter
graph of the data against two user selectable attributes, as well as a view of the decision tree.
You can create binary splits by creating polygons around data plotted on the scatter graph, as
well as by allowing another classifier to take over at points in the decision tree should you see
fit.
Malcolm Ware, Eibe Frank, Geoffrey Holmes, Mark Hall, Ian H. Witten (2001). Interactive machine learning: letting users build
classifiers. Int. J. Hum.-Comput. Stud.. 55(3):281-292.
OPTIONS
debug -- If set to true, classifier may output additional info to the console.
MIM-UCM Página 13
ZeroR: Class for building and using a 0-R classifier. Predicts the mean (for a numeric class) or
the mode (for a nominal class).
OPTIONS
debug -- If set to true, classifier may output additional info to the console.
J48: Class for generating a pruned or unpruned C4.5 decision tree. For more information, see
Ross Quinlan (1993). C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, San
Mateo, CA.
OPTIONS
binarySplits -- Whether to use binary splits on nominal attributes when building the trees.
confidenceFactor -- The confidence factor used for pruning (smaller values incur more pruning).
debug -- If set to true, classifier may output additional info to the console.
minNumObj -- The minimum number of instances per leaf.
numFolds -- Determines the amount of data used for reduced-error pruning. One fold is used for pruning, the rest for growing the
tree.
reducedErrorPruning -- Whether reduced-error pruning is used instead of C.4.5 pruning.
saveInstanceData -- Whether to save the training data for visualization.
seed -- The seed used for randomizing the data when reduced-error pruning is used.
subtreeRaising -- Whether to consider the subtree raising operation when pruning.
unpruned -- Whether pruning is performed.
useLaplace -- Whether counts at leaves are smoothed based on Laplace.
Naive Bayes: Class for a Naive Bayes classifier using estimator classes. Numeric estimator
precision values are chosen based on analysis of the training data. For this reason, the
classifier is not an UpdateableClassifier (which in typical usage are initialized with zero training
instances) -- if you need the UpdateableClassifier functionality, use the NaiveBayesUpdateable
classifier. The NaiveBayesUpdateable classifier will use a default precision of 0.1 for numeric
attributes when buildClassifier is called with
zero training instances.
OPTIONS
debug -- If set to true, classifier may output additional info
to the console.
displayModelInOldFormat -- Use old format for model
output. The old format is better when there are many class
values. The new format is better when there are fewer
classes and many attributes.
useKernelEstimator -- Use a kernel estimator for numeric
attributes rather than a normal distribution.
useSupervisedDiscretization -- Use supervised discretization
to convert numeric attributes to nominal ones.
MIM-UCM Página 14
Una vez elegido el número de iteraciones (por defecto en 10, estadísticamente significativo
pero quizá algo lento para tantos datos ,teniendo en cuenta que el número de dobleces
“Folds” para la validación cruzada también es 10) y con los cuatro algoritmos encolados (o de
uno en uno), cambiamos a la pestaña “Run” y pulsamos “Start”. Téngase en cuenta la gran
cantidad de memoria RAM que se utilizará para efectuar los cálculos. El resultado quedará
almacenado en el archivo que le hayamos indicado en el campo “Results Destination” de la
pestaña “Setup”.
Sería muy largo y complicado explicar lo que hace cada uno de los algoritmos, de los que hay
varias decenas en la versión 3.6 de Weka, y para qué caso son apropiados unos u otros.
Para el ZeroR, que es uno de los más ligeros en términos de recursos de sistema, se muestran
a continuación los resultados de la primera línea de datos del fichero de salida, según se
visualiza en Excel:
'adult-weka.filters.unsupervised.attribute.Remove-
R3,5',1,1,weka.classifiers.rules.ZeroR,'',48055541465867954,20090930.2159,43957,4885,
3716,1169,0,76.069601,23.930399,0,0,0.364068,0.426659,100,100,3878.108322,3878.10
8322,0,0.793881,0.793881,0,0,0,0,0,0,0,0,1,3716,1,1169,0,0,0,0.5,0.760696,0.760696,0.2
39304,0.239304,0.578658,0.760696,0.657306,0.5,0.05,0.091,0.050072,0.030043,1216,58
51889,655313,?
MIM-UCM Página 15
Una vez generado el fichero de salida, pues cargarse éste en la pestaña “Analyse” a través del
botón “File…”, para efectuar a continuación un test con “Perform test” cuyos resultados se
muestran a continuación:
Tester: weka.experiment.PairedCorrectedTTester
Analysing: Percent_correct
Datasets: 1
Resultsets: 1
Confidence: 0.05 (two tailed)
Sorted by: -
Date: 1/10/09 0:25
Key:
(1) rules.ZeroR '' 48055541465867954
El visualizador arborescente admite mejoras, pero también se pueden visualizar los archivos
así generados desde la Interfaz Gráfica Principal de Weka, menú Tools, opción ArffViewer.
MIM-UCM Página 16
LICENCIA
La licencia de copia y distribución es libre y se agradece. En lo particular se rige bajo los
principios específicos de Creative Commons:
MIM-UCM Página 17
BIBLIOGRAFÍA
Esta bibliografía incluye una serie de libros, artículos y otras referencias que han sido
consultadas para la realización del presente trabajo.
[7]: “SAS forum (24 y 25 de octubre de 2007, IFEMA – Madrid)” Véanse artículos en el “Blog
de Alfonso y Compañía” de los días 23, 25 y 26 de octubre de 2007:
- Anuncio: http://alfonsoycia.blogspot.com/2007/10/sas-forum-enmadrid.html
- En directo: http://alfonsoycia.blogspot.com/2007/10/desde-el-sasforum.html
- Crónica del SAS forum: http://alfonsoycia.blogspot.com/2007/10/crnica-del-sas-
forum-2007.html
MIM-UCM Página 18
[8+: “DBMiner Enterprise versión 0.8 tutorial” by Jiawei Han and Jian Pei, Simon Fraser
University of Canada. http://www.cs.sfu.ca/CC/459/han/tutorial/tutorial.html
*11+: “Introduction to arules – A computational environment for mining association rules and
frequent item sets” by Hahsler, Grün, Hornik and Buchta (24 March 2009) http://cran.r-
project.org/web/packages/arules/vignettes/arules.pdf
*16+: “Data Mining Using SAS® Enterprise Miner” by Randall Matignon. John Wiley & Sons Inc.
(2007)
[18+: “Introduction to Data Mining” presentations by Tan, Steinbach, Kumar. Chapter 5 et. Al.
http://dis.unal.edu.co/~fgonza/courses/2008-II/mineria/index.html
[20+: “Weka Experimenter Tutorial” by David Scuse and Peter Reutemann, University of
Waikato (26 January 2007)
http://freefr.dl.sourceforge.net/project/weka/documentation/3.5.x/ExperimenterTutorial-
3.5.5.pdf
MIM-UCM Página 19
[21+: “Taller (1) sobre Minería de Datos” de Carolina Sarmiento y Carlos Andrés Morales,
Universidad Nacional de Colombia. http://camoralesma.googlepages.com/
[22+: “WEKA: Waikato Environment for Knowledge Analysis” by the University of Waikato.
http://camoralesma.googlepages.com/tabd
*25+: “Data Mining in Market Research” presentation by the Department of Statistics of the
University of Auckland.
http://www.stat.auckland.ac.nz/~balemi/Data%20Mining%20in%20Market%20Research.ppt
*26+: “Data Mining: Practical Machine Learning Tools and Techniques (Second Edition)” pp.
437 y ss. et al., by Ian H. Witten & Eibe Frank, University of Waikato. Morgan Kaufmann (2005)
[28]: “SAS Institute Inc. 2008. SAS/STAT® 9.2 User’s Guide”. Cary, NC: SAS Institute Inc.
*29+: “SAS/STAT® 9.2 User’s guide – Procedures and knowledge base” online:
http://support.sas.com/documentation/onlinedoc/stat/index_proc.html
*30+: “An overview and evaluation of decision tree methodology” by Moore, Jesse and Kittler
at the ASA Quality and Productivity Conference (23-25 May 2001) http://www.amstat-
online.org/sections/qp/qpr/QPRC2001/contributed/Moore.pdf
*34+: “Statistics 557 Course: CHAID and the TREEDISC macro” by Kenneth J. Koehler at the
Department of Statistics of the Iowa State University.
http://www.public.iastate.edu/~kkoehler/stat557/slides557.html
*35+: “Data Mining concepts and Techniques. Second Edition” chapter 6 by Jiawei Han and
Micheline Kamber, University of Illinois at Urbana-Champaign. Morgan-Kaufmann (2006)
MIM-UCM Página 20