Implementación paralela del algoritmo PCTBagging dentro de la plataforma Weka

Manex Pagola 2025

Finalizado

Línea de investigación:
Explainable models
Descripción:

El grupo de investigación ALDAPA (http://www.aldapa.eus) dispone de una implementación del algoritmo PCTBagging (Partially Consolidated Tree Bagging), https://weka.sourceforge.io/packageMetaData/J48PartiallyConsolidated/index.html (recientemente aceptada como paquete oficial de Weka), el cual es un híbrido entre el algoritmo de construcción de árboles consolidados CTC y el bien conocido clasificador múltiple Bagging. El objetivo de este algoritmo es buscar una solución de compromiso entre la capacidad clasificatoria y la explicación de la clasificación.

Esta implementación contiene un parámetro llamado Porcentaje de consolidación, que indica el número de nodos internos del árbol consolidado (que son los que ofrecen la explicación) a mantener con respecto del número total de nodos del árbol completo. De esta forma, primero (Fase 1) se construye el árbol consolidado completo (algoritmo CTC) y luego se poda dejando sólo los nodos de mayor tamaño (población) comenzando desde el nodo raíz hasta el valor dado por el parámetro. Manteniendo la estructura común de este árbol parcial, a partir de este punto, se desarrollan todos los árboles como en el Bagging (Fase 2), de forma independiente.

Este proyecto propone cambiar la implementación del J48PartiallyConsolidated para que ambas fases del algoritmo se realicen, en la medida de lo posible, en paralelo, aprovechando los recursos hardware de la máquina en la que se ejecute.

La plataforma de Machine Learning WEKA (http://www.cs.waikato.ac.nz/ml/weka/), desarrollada en Java, contiene una implementación del algoritmo Bagging que ya consta de una opción (parámetro) para que sea ejecutado en paralelo en base al uso del threads, numExecutionSlots.

La idea es que, por defecto, a no ser que se indique lo contrario, a través de Java se obtenga el número de CPUs o cores disponibles con la llamada Runtime.getRuntime().availableProcessors() y ambas fases sean ejecutadas en tantos threads como este valor indique para aprovechar al máximo los recursos hardware.

Se podrían explorar distintas estrategias de reparto de carga entre los threads en ambas fases, así como probarlas en máquinas con distintas características hardware (velocidad de procesamiento, número de cores, etc.) y, en todo caso, habrá que analizar el rendimiento de las estrategias implementadas con respecto a la implementación en serie en los distintos contextos. Todo esto sin perder de vista que los clasificadores construídos deberán ser exactamente iguales en ambas versiones; paralela y serie (original).

Participantes:

Director(es):
Jesús M. Pérez
Olatz Arbelaitz
Universidad:
Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU)
Centro:
Informatika Fakultatea - Facultad de Informática
Departamento:
Konputagailuen Arkitektura eta Teknologia - Arquitectura y Tecnología de computadores
Fecha lectura:
2025-02-26
Año lectura:
2025