190 likes | 334 Views
Clasificación Supervisada en Elvira Rosa Blanco y Aritz Pérez {rosa, ccbpemaa}@si.ehu.es. Intelligent Systems Group Universidad del País Vasco. Introducción. Variables discretas DiscreteClassifier Naive_Bayes TAN CMutInfTAN Otros modelos clasificatorios Variables continuas BClassifier
E N D
Clasificación Supervisada en ElviraRosa Blanco y Aritz Pérez {rosa, ccbpemaa}@si.ehu.es Intelligent Systems Group Universidad del País Vasco
Introducción • Variables discretas • DiscreteClassifier • Naive_Bayes • TAN • CMutInfTAN • Otros modelos clasificatorios • Variables continuas • BClassifier • NBayes • TreeAugmentedNB
Clasificación con Variables Discretas Classifier DiscreteClassifier Naive_Bayes TAN CMutInfTAN
DiscreteClassifier I • Clase abstracta: DiscreteClassifier.java (elvira/learning/classification/supervised/discrete) • Constructor: indicar laplace • Métodos: • train(): construye el modelo • structuralLearning(): realiza el aprendizaje estructural • factorize(): realiza el aprendizaje de los parámetros
DiscreteClassifier II • Métodos: • test(cases): testea el modelo • categorize(fichero_entrada, fichero_salida): categoriza un fichero • assignClass(double[]): devuelve la clase más probable para la instancia • métodos de acceso • Constructor: • vacío • cases, laplace
Train() y Test() • Comunes a todos las subclases de DiscreteClassifier • train(): realiza el aprendizaje estructural y paramétrico mediante los métodos structuralLearning() y factorize() • test(cases): testea la bondad del clasificador en el conjunto de datos según el % de bien clasificados llamando al método assignClass(double[])
Categorize() • Común a todas las subclases de DiscreteClassifier • Genera un nuevo fichero a partir del fichero de entrada, en el que los casos han sido etiquetados
Naive_Bayes I C • Todas las variables predictoras son condicionalmente independientes dada la clase X1 X2 ... Xn
Naive_Bayes II • structuralLearning(): aprende una Bnet según el modelo naïve Bayes • factorize(): asigna las probabilidades correspondientes en las tablas de probabilidad condicionada de los Nodes de la Bnet. • assignClass(double[]): devuelve la clase más probable para la instancia Naive_Bayes nb = new Naive_Bayes(cases, true); nb.structuralLearning(); nb.factorize();
TAN I C • Las variables predictoras siguen una estructura de árbol: • todas las variables (excepto la variable raíz) tienen un padre además de la clase X1 X2 X3 X4
TAN II • Contiene los métodos comunes a los modelos con estructura de árbol: • factorize(): teniendo en cuenta la estructura de árbol, calcula las tablas de probabilidad condicionada • assignClass(double[]): a partir de las tablas de probabilidad condicionada, asigna una clase a un ejemplo
CMutInfTAN • structuralLearning(): • Aprende una estructura de árbol según el algoritmo propuesto por Friedman et al. (1997) • Utiliza la información mútua de dos variables predictoras dada la clase • Mantiene un vector donde relaciona las dos variables predictoras con su información mútua dada la clase. CMutInfTAN tan = new CMutInfTAN(cases, true); tan.structuralLearning(); tan.factorize();
Otros modelos clasificatorios • Naive_Bayes: • wrapperSelectiveNaiveBayes (Langley y Sage, 1994) • wrapperSemiNaiveBayes (Pazzani, 1997) • TAN: • wrapperTAN (Keogh y Pazzani, 1998)
Clasificación con Variables Continuas Classifier Graph BClassifier NBayes TreeAugmentedNB
BClassifier I • Clase abstracta: BClassifier.java (elvira/learning/classification/supervised/continuous) • Variables predictoras continuas, clase discreta • Distinto planteamiento: no se aprende una Bnet, mantiene una NodeList, sus Links y las tablas de probabilidad condicionada
BClassifier II • Constructor • Métodos: • learn(caselistmen): realiza el aprendizaje del modelo • learnStructure(): aprendizaje estructural • learnParameters(): aprendizaje paramétrico • getCondProb(configuration): devuelve la probabilidad asociada a la configuration • getClassification(configuration): devuelve un vector con las probabilidades asociadas a cada valor de la clase • getClass(configuration): devuelve la clase más probable para la configuration
NBayes • Todas las variables predictoras son condicionalmente independientes dada la clase • learnStructure(): aprende los Links necesarios para el modelo naïve Bayes
TreeAugmentedNB • Adapta el modelo de naïve Bayes aumentado a árbol propuesto por Friedman et al. (1997) • Calcula la información mútua de dos variables continuas dada la clase (discreta) asumiendo normalidad • learnStructure(): aprende la estructura de árbol