Universidad Católica Boliviana – La Paz Maestría en Gestión de Sistemas de Información Minería de Datos Dra. Alicia Pérez Abelleira
Proyecto Final: predecir enfermedades usando datos genéticos de microarrays Esta guía ha sido adaptada del curso de Gregory Piatetsky-Shapiro disponible en KDnuggets. Lea bien el enunciado antes de comenzar. En esta primera página está la tarea a realizar y la forma de evaluarla. El resto son pistas y pasos a seguir. Ud. deberá entregar un informe como se indica en esta primera página. Datos Los datos genéticos están en el formato “genes por filas”, separados por comas. Tome el archivo datos_proyecto_final.zip y extraiga tres archivos:
pp5i_train.gfila.csv (datos de entrenamiento, 1.7 MB) pp5i_train_class.txt (clases de los datos de entrenamiento) pp5i_test.gfila.csv (datos de prueba, 0.6MB)
Instrucciones Datos de entrenamiento: archivo pp5i_train.gfila.csv, con 7070 genes (sin controles de Affy) para 69 muestras. En un archivo separado pp5i_train_class.txt están las clases para cada muestra, en el mismo orden que tienen las muestras en pp5i_train.gfila.csv. Hay 5 clases, con etiquetas EPD, JPA, MED, MGL, RHB. Datos de prueba: archivo pp5i_test.gfila.csv, con 23 muestras sin etiquetar y los mismos genes. Puede asumir que tiene una distribución de clases similar. Tarea: aprender el mejor modelo para los datos de entrenamiento usarlo para predecir la etiqueta (clase) de cada muestra del conjunto de prueba. Escribir un informe describiendo el trabajo realizado. Mediante experimentos aleatorios se vio que pueden obtenerse 10-12 respuestas correctas (de las 23 muestras que hay en el conjunto de prueba) simplemente “lanzando una moneda al aire” (es decir, cualquier modelo con una tasa de error mayor que 50% es realmente malo). La nota final se obtendrá combinando el esfuerzo (40%), la presentación (30%), y la precisión del modelo medida como 3*(Número de respuestas correctas - 11). La nota máxima es 106. A continuación se sugieren pasos para hacer este experimento, pero pueden ser modificados o mejorados, siempre y cuando el resultado sea una predicción para el conjunto de prueba y se describan los resultados.
Pistas importantes Asegúrese de no usar el número de muestra como atributo predictor. Los datos de entrenamiento están ordenados por clase, por lo que el número de muestra puede parecer un buen predictor en los datos de entrenamiento, pero no funcionará en los de prueba. Una de las muestras de tipo MED ha sido etiquetada seguramente de forma errónea (por una persona). Por tanto, al hacer validación cruzada el mejor resultado que puede esperarse es un error (en una muestra MED). Sin embargo, esto no debería afectar la predicción en el conjunto de prueba (donde todas las etiquetas, que ud no conoce, son correctas). Puede terminar el proyecto con pasos sencillos, pero si utiliza pasos más sofisticados seguramente obtendrá mayor precisión. A continuación se sugieren una serie de pasos como una manera de encontrar el mejor modelo, pero puede modificarlos si lo desea y lo cree oportuno.
Paso 1. Limpieza y preparación de los datos Deberá transponer los datos del conjunto de entrenamiento y asegurarse de que los nombres de los atributos son asignados correctamente. A los datos debe añadirles las etiquetas de clase que están en el archivo pp5i_train_class.txt. Puede hacerlo con el operador Join de RapidMiner. Otros operadores que tal vez le sean útiles son:
Rename by Example Set Role Guess types Generate ID
Puede tener dificultades si ud guarda el conjunto de datos en un archivo y después trata de leerlo en el Paso 2. (Guardar el resultado del Paso 2 no será problema porque el número de atributos queda muy reducido). Una forma de evitar este problema es colocar el paso 2 en el mismo proceso del paso 1. Sugiero que coloque las etapas del Paso 1 en un SUBPROCESO (operador Subprocess) de RapidMiner. Puede llamar al subproceso “Lee conjunto de prueba”.
Paso 2. Seleccionar los mejores genes por clase
Una forma sencilla de seleccionar los mejores genes por clase es dar pesos a los atributos (por ejemplo, mediante el cálculo de χ2 como hizo en un práctico anterior). Para cada valor de N=,4,6,8,10,12,15,20,25,30 seleccione los N mejores atributos. Guarde cada resultado (los datos con solo esos N atributos más la clase Class y el id SNO) en un archivo pp5i_train.Nmejores.gfila.csv. Obviamente tendrá un archivo para cada valor de N. Tenga en cuenta que debe seleccionar los mismos N mejores atributos en el conjunto de prueba para usarlo posteriormente. Sugiero que lo haga en este mismo paso generando los correspondientes archivos pp5i_test.Nmejores.gfila.csv. (Recuerde cómo hizo esto mismo en un práctico anterior.) En este momento podría tener un proceso con este esquema, que aplicaría para cada valor de N: 2
Paso 3. Encontrar la combinación de mejor clasificador/mejor conjunto de genes Use los siguientes clasificadores de RapidMiner:
Naive Bayes Árboles de decisión (C4.5) Vecino más próximo KNN (para valores K=1,2, 3, 4) Otro clasificador de RapidMiner a su elección - que pueda trabajar con datos multiclase.
a. Para cada clasificador, use los valores de parámetros por defecto, mida la precisión del clasificador (accuracy) en el conjunto de entrenamiento con validación cruzada usando los archivos generados anteriormente con los N=2,4,6,8,10,12,15,20,25,30 primeros genes. Para KNN, vea la precisión para K=1,2,3 y 4. Construya una tabla que muestre la precisión para cada algoritmo (filas de la tabla) y conjunto de datos (columnas de la tabla). Accuracy
N=2
N=4
N=6
N=8
…
Arbol de decisión Naive Bayes KNN con K=1 KNN con K=2
… b. Seleccione el modelo y conjunto de genes con el menor error por validación cruzada. Opcional: una vez que encuentre el conjunto de genes con el menor error por validación cruzada, puede modificar 1-2 parámetros relevantes del clasificador para ver si disminuye el error. Por ejemplo, para los árboles de decisión puede variar la forma en que se hace la poda.
Paso 4. Generar predicciones para el conjunto de prueba Ahora debería tener:
el mejor conjunto de entrenamiento (sea el archivo pp5i_train.Nmejores.gfila.csv, con 69 muestras, y siendo Nmejores el número de genes para el mejor N que encontró. el conjunto de prueba correspondiente, pp5i_test.Nmejores.gfila.csv, con los mismos genes y 23 muestras de prueba.
El archivo de entrenamiento debe tener todos los valores de clase de las muestras, mientras que el de prueba no los tiene.
3
a. Use el mejor conjunto de entrenamiento y el correspondiente de prueba para generar las predicciones de la clase para el conjunto de prueba. Algunos operadores que pueden resultarle útiles son Guess types, Set Role, y Apply Model. En la perspectiva de resultados, en Data View puede ver el valor del atributo Class asignado (predicho) a cada una de las 23 instancias por el modelo. Copie y pegue los resultados en una tabla (debe tener 23 filas y 2 columnas: el número de muestra SON y el valor de Clase).
Paso 5. Escribir un informe describiendo su esfuerzo
Documente cada paso. Para cada clasificador utilizado, descríbalo en un párrafo. Muestre con un gráfico la relación entre la tasa de error y el número de genes. Incluya la tabla con la precisión de cada uno de los clasificadores y cada conjunto de atributos. Indique qué clasificador y qué número de genes ha seleccionado. Incluya la tabla con sus predicciones de Clase para los datos de prueba (23 instancias).
4