Programación lineal Proyecto fecha de entrega: 13 de mayo 2012. 1 Objetivos En este proyecto vamos a utilizar programación cuadrática para resolver un problema relacionado con el diagnóstico de cáncer de mama. Los datos del proyecto provienen de las bases generadas en el WDBC1 , accesibles al público interesado gracias a los esfuerzos de las siguientes personas: a) Dr. William H.Wolberg (Department of Surgery, University of Wisconsin Medical School); b) Prof. W. Nick Street (Management Sciences Department, University of Iowa); c) Prof. O.L. Mangasarian (Computer Sciences Department, University of Wisconsin). Estos datos han sido utilizados para realizar proyectos de cursos de programación lineal por diferentes autores, entre los que se encuentran Steve Wright y Olvi Mangasarian2 . El programa Matlab wdbcData.m que utilizaremos en este proyecto para construir muestras de entrenamiento y de prueba fue escrito por ellos. El objetivo del proyecto consiste en desarrollar un clasificador que, utilizando información obtenida de una muestra de tejido tumoral, diagnostique automáticamente si el tumor es maligno o benigno. El clasificador se construye a partir de un conjunto de muestras de tumores cuyo diagnóstico ha sido establecido previamente. Este conjunto se conoce como conjunto de entrenamiento. Cada muestra del conjunto de entrenamiento tiene la siguiente información: • un identificador y una etiqueta con el diagnóstico maligno/benigno. • 30 atributos reales con 4 dı́gitos de precisión, los cuales forman un vector en R30 . La etiqueta divide al conjunto de entrenamiento en dos subconjuntos ajenos: M formado por las muestras con diagnóstico de tumor maligno; B constituido por las muestras con diagnóstico de tumor benigno. Desde el punto de vista matemático el clasificador adopta la forma de un plano que separa a ambos subconjuntos. Una vez que el clasificador ha sido construido, cualquier muestra 1 2 Wisconsin Diagnosis Breast Cancer Database Computer Sciences Department, University of Wisconsin 1 nueva se puede diagnosticar automáticamente dependiendo del lado del plano separador en el que la ubican sus 30 atributos. El plano separador se define como f (x) = wT x − γ en donde el vector w ∈ R30 y la constante γ se desconocen; el vector x está formado por los atributos de las muestras. Las condiciones que determinan a w y a γ son las siguientes f (x) > 0 =⇒ x ∈ M, f (x) ≤ 0 =⇒ x ∈ B. En este punto es importante hacer notar que los subconjuntos B, M son ajenos pero no necesariamente separables por una función lineal. Es decir que algunas muestras de entrenamiento van ser incorrectamente clasificadas por el separador. Si representamos a los m elementos del conjunto M por una matriz M ∈ Rm×n , y a los k elementos del conjunto B por una matriz B ∈ Rk×n , entonces el problema de escoger a w y a γ se reduce a resolver el siguiente problema de optimización min w,γ 1 ||(−M w m + em γ + em )+ ||1 + k1 ||(Bw − ek γ + ek )+ ||1 en donde em y ek son vectores de dimensiones m y k respectivamente, con componentes iguales a 1. La notación (u)+ tiene el siguiente significado (u+ )i = max{ui , 0}. El problema anterior minimiza aproximadamente el número de puntos que son clasificados incorrectamente mediante la minimización de la distancia de dichos puntos al plano separador. La siguiente formulación elimina el inconveniente de (·)+ y de || · ||1 min w,γ,y,z s.a. 1 T e y m m + k1 eTk z M w − em γ + y ≥ em −Bw + ek γ + z ≥ ek , y ≥ 0, z ≥ 0. Si los conjuntos B, M son linealmente separables, la formulación anterior puede generar soluciones múltiples. Una forma de evitar este inconveniente consiste en agregar un término cuadrático en la función objetivo. La formulación que utilizaremos en el proyecto es la siguiente min m1 eTm y + k1 eTk z + µ2 wT w w,γ,y,z s.a. M w − em γ + y ≥ em −Bw + ek γ + z ≥ ek , y ≥ 0, z ≥ 0. en donde µ es un parámetro de penalización; si el valor de µ se incrementa la norma de w decrece. 2 2 Metodologı́a La base de datoswdbc.data se puede leer con el programa wdbcData para generar las matrices M y B. El programa también tiene opciones para generar conjuntos de entrenamiento y conjuntos de prueba. 1. Modificar el programa que implementa el algoritmo de pasos largos para que acepte programas cuadráticos. 2. Incluir en el programa modificado un procedimiento para obtener un punto inicial (x0 , λ0 , s0 ). 3. Utilizar σ = 0.5. 4. Organizar los datos del problema de programación cuadrática para alimentar al programa 5. Probar el programa calculando el plano separador correspondiente al conjunto entrenador definido por fracTest = 0.1 y reord = 0. Utilizar µ = 0.001 en la formulación. Imprimir el número de muestras mal clasificadas, w, γ, y el valor de la función objetivo en el óptimo. 6. Probar el programa calculando el plano separador correspondiente al conjunto entrenador definido por fracTest = 0.15 y reord = 1. Utilizar µ = 0.001 en la formulación. Imprimir el número de muestras mal clasificadas, w, γ, y el valor de la función objetivo en el óptimo. La base de datos (wdbc.data y wdbc.names) y el programa wdbcData están disponible en la página http://allman.rhon.itam.mx/∼jmorales/ El archivo wdbc.names contiene información sobre el contenido y estructura de los datos en el archivo wdbc.data. 3