Y-Scrambling
Teoría del algoritmo del método de validación Y-Scrambling
Cuando seleccionamos descriptores que pudieran ser relevantes para la construcción de un modelo QSAR, es posible encontrar algunos que parecen tener cierta importancia dada la alta dimensionalidad del espacio de rasgos en el que estamos trabajando. Puede mencionarse como ejemplo, durante la creación de modelos de selección basados en correlación, es realmente posible seleccionar 10 descriptores de un total de 1000, los cuales no tienen gran significación pero aparentan ajustar perfectamente en el modelo.
Para salvar esta casualidad remota pero posible se aboga por usar como método de validación, el método de Y-scrambling. Este realiza varias construcciones del modelos pero con vectores respuesta Y reordenados aleatoriamente y comparados con el modelo obtenido originalmente. Un algoritmo para ejecutar este método es el siguiente:
1. Para el conjunto de entrenamiento sobre el cual el modelo en cuestión ha aprendido, apartar los datos de los descriptores de los de actividad. Luego, reordenar aleatoriamente el vector respuesta Y. Como los valores y la distribución estadística es la misma, la posición relativa de cada compuesto con sus descriptores respecto al valor correspondiente del vector respuesta ha sido alterada, destruyendo así toda relación significativa que pueda haber existido entre los vectores de datos que conforman la variable independiente X y la variable dependiente Y.
Para la implementación de este método se crearon dos clases: la clase Y-Scrambling y la Resultado. La primera recibe como parámetro del constructor, el vector respuesta del modelo en cuestión. La segunda clase consta de tres parámetros principales, los cuales son: el número de creación dentro del conjunto, el valor de la métrica
r
2 y el valor de la otra métricaq
2 . 2. Luego del paso anterior, un nuevo modelo es obtenido para el cual algunas métricas talescomo
r
2 yq
2 son re calculadas.Se realizan iteraciones según un número fijo anteriormente establecido. En cada una de estas, se crea una nueva instancia de la clase Resultado llenando los atributos con los valores correspondientes.
3. Los pasos 1 y 2 son realizados un número de veces entre 50 y 100.
4. Los valores obtenidos durante las ejecuciones de los pasos anteriores son comparadas con las métricas del modelo original. Esta comparación puede ser realizada usando histogramas o “ploteo scatter” y mostrará cuanto los valores reales difieren de las distribuciones de referencia de confirmación obtenidas haciendo el test de permutación antes descrito.
Los valores reales deben estar situados en posiciones lejanas de los valores obtenidos por el test de randomización para poder decir que existe un modelo real creado sobre el conjunto de datos dado y que no es el mismo que los modelos que aprendieron mediante el método de Y-scrambling.
Definición computacional del algoritmo de validación Y-Scrambling.
Para la implementación de este método se utilizaron las clases para el trabajo con los datos Instances e Instance. Se crearon 3 clases: ModeloAleatorio, Scrambling y ControlScrambling.
La clase ModeloAleatorio contiene atributos en función de la representación de un modelo con todos sus parámetros. Scrambling se ocupa de obtener el vector de actividad respuesta y reorganiza sus elementos de forma aleatoria. De manipular cada una de estas clases y realizar la función del algoritmo se ocupa ControlScrambling.
Pseudocódigo
Se definen los siguientes atributos y métodos: Instances inst; Clasificador clas; Scrambling scram; Cadena modOriginal; Cadena[] modelos; Operaciones principales:
Constructor de la clase que recibe el conjunto de instancias y el clasificador a evaluar. NuevoClasificadorconstrucciónClasificador (Instances inst)
NuevaEvaluaciónModelos NuevaEvaluaciónModelos (Instances inst) ArregloRespuestaNuevaEvaluaciónModelos.obtenerArregloRespuesta ModOriginal Resultados (NuevaEvaluaciónModelos)
AleatorizarArreglo (ArregloRespuesta)
Método hacerScrambling ()
modelosCadena[Cantidad_de_modelos]
NuevaEvaluaciónModelosNuevaEvaluaciónModelos (Instances inst) modelos(i) NuevaEvaluaciónModelos.obtenerModelo
AleatorizarArreglo(ArregloRespuesta) ii+1
Lo cual se puede implementar de la siguiente manera:
Crear la clase ControlScrambling con los atributos antes mencionados al principio del pseudocódigo.
Luego el constructor de la clase tiene dos parámetros, uno es de tipo Instances que representa al conjunto de casos y el otro es de tipo Classifier para poder aplicarle este método de construcción de modelos.
Se crea un objeto de tipo Evaluation, el cual recibe como parámetro en su constructor el conjunto de instancias sobre las cuales se ejecutará. Se manda a construir el clasificador con la misma data que para la evaluación. Esto se hace llamando a un método que tiene incorporado la propia clase de tipo Classifier. Después, al invocar al procedimiento para evaluar el modelo según el clasificador en cuestión y el juego de datos actual se obtiene un vector con los valores de variable respuesta del modelo. Se recibe y se acumula el valor del modelo original para mostrarlo en los resultados del algoritmo. Por último se manda a aleatorizar el vector respuesta.
En otro método, el hacerScrambling , se define la cantidad de modelos aleatorios a generar.
Se obtiene el arreglo aleatorizado como resultado del método aleatorizar() de la clase Scrambling. Se realiza un ciclo según la cantidad de modelos y se itera por todas y cada una de las instancias del conjunto de datos pues el método que evalúa usando el vector, recibe como parámetros un valor de tipo double y una instancia (un caso); es decir; un elemento del arreglo respuesta y un elemento del conjunto de tipo Instances. Luego se acumula en el vector de modelos este resultado de la evaluación y se reordena nuevamente de manera aleatoria el vector respuesta.