Características deseables en un algoritmo de detección de patrones

11 de julio de 2010 · Imprimir Imprimir

Una vez establecido que la detección de patrones se realiza a través del diseño de algoritmos que son finalmente ejecutados por computadores, conviene determinar cuáles son las características deseables en un algoritmo. Entre las más importantes cabe citar:

  • Eficiencia computacional: La detección de patrones en bases de datos es una tarea eminentemente práctica. En consecuencia, los algoritmos que se diseñen para este fin deben ser capaces de dar respuesta a los problemas que se planteen, más allá de cuál sea el tamaño particular de la base de datos sobre la que se vaya a aplicar el algoritmo. Dicho de otro modo, un algoritmo que funcione bien (es decir, que sea capaz de detectar patrones en un tiempo razonable) en bases de datos de reducido tamaño (con unas pocas decenas de filas y unas pocas columnas) pero fracase en bases de datos reales (por presentar tiempos de ejecución muy elevados) no resultará aceptable. De forma más precisa, debe exigirse que un algoritmo de detección de patrones sea eficiente desde el punto de vista computacional. Son muchas las formas de medir la eficiencia de un algoritmo pero, quizás, la más extendida sea la evaluación de su complejidad-temporal. La complejidad-temporal de un algoritmo es una expresión del tiempo de ejecución (o del número de operaciones) que precisa dicho algoritmo en función del tamaño del problema (medido, por ejemplo, a partir del número de filas o columnas de la base de datos analizada). Para expresar la complejidad-temporal de un algoritmo suele recurrirse a la llamada “notación de Landau” (o notación de la O mayúscula). Se dice que un problema es tratable cuando el algoritmo más eficiente para resolverlo tiene complejidad temporal polinómica o inferior, es decir, cuando la función que pone en relación el tiempo (o número de operaciones) que requiere el algoritmo para resolver el problema con el tamaño de éste pertenece a O(n^k) con k \in N. Este requisito es, en realidad, bastante laxo ya que complejidades polinómicas pueden suponer (si el grado del polinomio es alto) tiempos de ejecución que hoy en día (a pesar del rápido incremento en la velocidad de los procesadores) resultan inaceptables. Lamentablemente, muchos de los algoritmos que se diseñan para la detección de patrones presentan complejidades-temporales superiores a la polinómica y son, por tanto, intratables desde el punto de vista de la teoría de la complejidad algorítmica.
  • Robustez: Cualquier base de datos, y en mayor medida si es de gran tamaño, es susceptible de contener valores erróneos. En ocasiones, estos valores erróneos serán detectados (y convenientemente corregidos) por los procedimientos de detección de outliers, pero en ocasiones, aun a pesar de los mayores esfuerzos por parte de los analistas, los datos erróneos escaparán esta criba preliminar y pondrán en peligro la calidad de los análisis que se realicen tomando como materia prima la base de datos en la que se encuentran. Las fuentes de las que pueden provenir estos datos erróneos (a las que se les suele llamar fuentes de errores sistemáticos) son muchas y de diversa naturaleza. Entre otras cabe citar los problemas en los mecanismos de obtención de los datos (por ejemplo, errores en los instrumentos de medida, que pueden no estar correctamente calibrados), errores en la transmisión de los datos de unos soportes a otros (por ejemplo, al teclear manualmente los datos de un cuestionario en papel a una base de datos electrónica) o también errores en la preparación de los datos previa a la realización de algún análisis. Sin ninguna duda, el mejor antídoto contra este tipo de errores es un cuidado exquisito por parte del encargado de alimentar o manipular la base de datos en cada uno de los pasos descritos, pero, a pesar de los mejores esfuerzos por su parte, es imposible evitarlos por completo. De este modo, resulta evidente que una característica muy deseable en los algoritmos automáticos de detección de patrones es que éstos sean relativamente insensibles a la presencia de una cierta proporción de datos erróneos. A esta propiedad se le llama robustez. Así, se dice que un algoritmo de detección de patrones es robusto cuando los patrones detectados en una base de datos no se ven alterados (o al menos no de forma notable) cuando en ésta existe una proporción pequeña de datos erróneos. Lamentablemente, esta propiedad de robustez entra en conflicto con otra propiedad deseable: la sensibilidad, por la que un algoritmo debe detectar patrones diferentes en bases de datos diferentes.
  • Estabilidad: Si entendemos una base de datos como una manifestación concreta (particular) de un determinado mecanismo generador de datos, es cuando el concepto de estabilidad de un algoritmo cobra todo su significado. Dicho brevemente: los algoritmos de detección de patrones deberían detectar pautas en los mecanismos generadores de datos y no en la base de datos concreta que están analizando. Dicho de otra forma: diremos que un algoritmo de detección de patrones es estable si obtenidas dos bases de datos alternativas mediante el mecanismo generador (llamémoslas B1 y B2), el algoritmo detecta los mismos patrones en B1 y en B2. Así, un algoritmo estable es aquél que detecta los patrones que corresponden al mecanismo generador de los datos y que deja de lado las particularidades específicas de la base de datos que se está analizando.

A este respecto resulta muy apropiado el comentario de John Allen Paulos en su obra Innumeracy (traducida al español como El Hombre Anumérico) quien cita a Plutarco cuando afirma “It is not great wonder if, in the long process of time, while fortune takes her course hither and thither, numerous coincidences should spontaneously occur”. Se trata de una advertencia sobre el riesgo de lo que dos mil años más tarde se ha dado en llamar overfitting: el riesgo de que un algoritmo de detección de patrones se ajuste en exceso a la realidad concreta de una base de datos detectando, de este modo, pautas que no corresponden al mecanismo generador de los datos sino que son particulares de la base de datos y, por tanto, no generalizables.

El mismo Paulos pone de manifiesto (en un ejemplo que luego recogen Christianini y Shawe-Taylor) cómo la única forma de protegerse del riesgo de overfitting es mediante la limitación de los patrones que cabe esperar encontrar en la base de datos. Si el analista de los datos está dispuesto a encontrar cualquier patrón y diseña el algoritmo con este criterio es seguro que encontrará algún patrón sorprendente: “The paradoxical conclusion is that it would be very unlikely for unlikely events not to occur”. El ejemplo al que recurren los mecionados autores para ilustrar este fenómeno es la muy conocida Paradoja del cumpleaños, que pone de manifiesto cómo son suficientes 23 personas reunidas en una sala para que al menos dos cumplan años en una misma fecha (una fecha cualquiera del año) mientras que son necesarias 253 personas para que alguna cumpla años en una fecha concreta establecida a priori. La clave está en el espacio de patrones que se está dispuesto a encontrar (un día concreto es mucho más restrictivo que cualquier día del año).

Otro ejemplo puede ayudar a ilustrar la idea de overfitting. En efecto, imaginemos que contamos con n parejas (xi,yi) de observaciones tales que todos los valores del primer elemento de la pareja son distintos . Imaginemos que buscamos un patrón que prediga el valor de y en función del valor de x. Pues bien, si el espacio de patrones es el conjunto de polinomios de grado k y estamos dispuestos a incrementar cuanto sea necesario el valor de k, será posible encontrar un patrón (un polinomio de grado n-1) que prediga de forma perfecta cada uno de los valores y en función del correspondiente x. Ahora bien, si mediante el mismo mecanismo de generación de datos obtuviéramos otro conjunto de observaciones y aplicáramos el patrón aprendido en la base original para tratar de efectuar predicciones en la nueva base, los resultados serían mucho menos espectaculares. El conjunto de patrones susceptible de ser analizado era excesivamente grande y, por tanto, ha ocurrido el fenómeno de overfitting.

En aprendizaje estadístico, la llamada complejidad de Rademacher mide la riqueza de una familia de funciones (posibles patrones), entendiendo esta riqueza como la capacidad de la familia de funciones a adaptarse (y detectar) ruido aleatorio. Cuanto mayor sea la complejidad de Rademacher de una familia de funciones, mayor es el riesgo de overfitting que se deriva de su utilización.

Como se ha mencionado ya, la única vía para evitar el problema del overfitting es a través de la limitación o restricción del espacio de búsqueda de posibles patrones. Con este fin, es necesario contar con conocimiento experto en la disciplina a la que se refiere la base de datos analizada. Sólo un experto en el ámbito de estudio (apoyado por el diseñador del algoritmo) puede decidir de manera informada cuál es la naturaleza de los patrones que cabe detectar en su ámbito de conocimiento así como señalar qué patrones no son razonables. De esta manera, el diseñador del algoritmo estará en las mejores condiciones para poder adaptar el algoritmo al ámbito al que se refiere la base de datos analizada. En este sentido, los algoritmos deben ser parametrizables para, a partir de una misma base, adaptarse a problemas de distinta naturaleza.

Deja un comentario

buy mp3 | goodyear 500 | Luxury will come as a bonus! Buy Breitling replica watches.