Hola a todos:
Como muchos de vosotros sabéis, esta web la creé en su momento como una forma de transmitir todo el conocimiento que iba aprendiendo sobre programación en particular y Excel en general. En cierto modo es una forma de compartir el tiempo que dedico a mi hobbie que es programar y aprender a hacerlo cada día un poco mejor (nadie nace experto y dudo mucho que lleguemos a serlo en algún momento, todos debemos comprender la importancia de la humildad en nuestro aprendizaje).
Pues bien, hoy me apetece escribir acerca de otros trabajos e investigaciones que voy realizando por cuenta propia y con el poco tiempo del que dispongo actualmente (ya sabéis, la vida, las obligaciones profesionales, etc).
Hace un tiempo escribí un post en el que me atrevía a programar parte de un algoritmo ID3, cuyo funcionamiento se basa en los árboles de decisión. Si no lo habéis leído o visto, este es el enlace: GENERANDO UN ALGORITMO ID3 EN VBA
Sé que en el mercado existe software muy potente con este tipo de algoritmos programados y embebidos en programas específicos, pero me gusta probar, investigar y trabajar y sobre todo el contestarme a la pregunta ¿eso lo puedo hacer programando en Excel?.
Pues bién finalmente lo realicé y me llevó un par de semanas trabajando de veinte minutos a una hora cada día (no disponía de más tiempo).
Hace unos días encontré documentación sobre un tema muy concreto y que me interesa enormemente, ya no tanto por su implicación actual en la vida de las personas sino porque en el pasado me tocó sufrirlo de cerca con un familiar muy cercano, esto es: el cáncer.
Esta documentación la podéis encontrar en la UCI MAchine Learning UCI Machine Learning Repository un lugar web de naturaleza pública para que investigadores o personas interesadas en el machine learning puedan tener a su disposición datos con los que poder investigar.
En el caso del cáncer hay varios repositorios con documentación extensa, en mi caso, me decidí por este: machine-learning-databases breast cancer wisconsin
Aquí podréis encontrar una base de datos con diversos indicadores y su medición en una relación de casos:
En rojo os marco los archivos necesarios, el primero son los datos recogidos en un archivo plano txt delimitado por comas:
Para determinar el nombre de los campos y la escala de cada uno de ellos es necesario abrir el otro archivo con las especificaciones, y entre otras informaciones nos mostrará lo siguiente:
Efectivamente, aquí tenemos el nombre de todos los campos, incluido el último, como variable dicotómica (2 – el tumor es benigno y 4 – el tumor es maligno).
Pues bien, con esta información creí interesante utilizar el algoritmo que había creado en Excel basado en el ID3 para comprobar cuál era el resultado que mostraba y si podría tener sentido.
Lo primero que hice fue crear la base de datos e incluirla en la hoja Excel:
El resto del proceso es sencillo, solo hay que pulsar el botón «Generar Algoritmo» que se encuentra en la hoja Resultados.
La información obtenida fue la siguiente:
Aunque la información que se muestra es extensa, podemos extraer una serie de conclusiones inicialmente:
En primer lugar, de todas las variables que hemos analizado o procesado, son dos cláramente las que determinan el resultado es 2 o 4, estas variables que voy a denominar explicativas, son: la uniformidad en el tamaño de la célula y la uniformidad en la forma de la célula.
Sin embargo, en vista de otros estudios, parece que la tercera variable «el núcleo desnudo» sería también determinante.
En este caso, mi algoritmo está solo programado para analizar aquella variable con el atributo cuya ganancia sea máxima, es decir la uniformidad en el tamaño de la célula.
Posteriormente obtendremos el valor o ganancia de cada una de las variables en los diferentes nodos de la variable principal, es decir, la uniformidad va desde el 1 (más uniforme, hasta el 10 (menos uniforme).
Según los resultados en los niveles 1 y 10 no existe ningún indicador que determine si podría ser maligno o benigno, dado que el peso de cada variable en todos los casos es 0.
Cuando se trata de una uniformidad total el resultado tiene a ser benigno, sin embargo es necesario observar el comportamiento de los núcleos desnudos y los nucleolos normales. En los niveles 2, 3 y 4 serán determinantes los núcleos desnudos y el espesor de la masa y a partir del nivel 6 las probabilidades de un resultado maligno son mayores, dado que son multitud de variables las que tendrían incidencia o habría que tener en cuenta.
Quizás para resolver los casos 5 y 10 sean necesarios más casos en la muestra con la que estamos trabajando y en general muy seguramente sea necesario ampliar la muestra para obtener mayores evidencias.
Los datos indican que cuanto mayor es la uniformidad de la célula y (muy probablemente también la uniformidad de la forma) el resultado sería maligno. Aunque es necesario también tener en cuenta el «peso» del resto de las variables en cada uno de los niveles de la variable principal.
Existe un estudio sobre esta misma fuente de datos que no puedo dejar de mencionar, aunque se ha realizado con el algoritmo C5. Este estudio ya no se encuentra disponible para descargar, pero tenéis los datos en el archivo de ejemplo. Aunque los resultados venían dados por otro tipo de plataforma y algoritmo, coincidimos en bastantes conclusiones. Y la más importante es que es necesario un mayor número de casos y quizás implementar un algoritmo mucho más preciso que el C5.
Por último, esto solo se trata de un ejercicio a modo de ejemplo y sin mayores pretensiones que mostrar su funcionamiento. La información siempre ha de ser tratada y contrastada por profesionales que conozcan los conceptos, yo no soy médico ni tampoco tengo conocimientos en este área de trabajo, pero sí he tratado de construir un método para obtener una serie de informaciones.
Me gustaría disponer de más tiempo para seguir desarrollando, pero desgraciadamente no dispongo de tal ventaja. La solución es ir haciéndolo poco a poco y con los instrumentos que tengo a mi alcance : )
Estas son las cosas que hago y con las que disfruto, investigando, aprendiendo, equivocándome y volviéndolo a intentar.
Os dejo el caso práctico:
Descarga el archivo de ejemplo pulsando en: PROBANDO ALGORITMO PREDICTIVO ID3 CON RESULTADOS ONCOLÓGICOS
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies