Nube de Etiquetas
(Ah?)
Mostrando las entradas con la etiqueta Operations Research. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Operations Research. Mostrar todas las entradas

martes, marzo 31, 2015

Las herramientas que manejas no definen lo que eres

Con frecuencia, las personas que han incursionado en el área de minería de datos, análisis de sistemas, e investigación de operaciones, vienen de áreas muy distintas a las que los empleadores (y el público en general) creen que los expertos en estas áreas deben venir.

Los cursos de optimización en la Universidad Simón Bolívar, durante algún tiempo fueron dictadas por profesores, cuya carrera base era reflejo de esto que acabo de mencionar:

  • Una profesora egresada de Licenciatura en computación.
  • Un profesor egresado de Matemáticas Aplicadas.
  • Un profesor egresado de Ingeniería Civil.
  • Un profesor egresado de Ingeniería Eléctrica.
  • Un profesor egresado de Ingeniería de Producción.
A pesar de la diversidad de orígenes, ha habido una convergencia (en estos profesores, al menos) hacia el área de investigación de operaciones, a un nivel suficiente como para ser docentes, y en la mayoría de los casos, realizar aportes al estado del arte mediante publicaciones en revistas y conferencias científicas arbitradas.

Sin embargo, las personas que interactuan con quienes hemos hecho "vida" en el área de investigación de operaciones, minería de datos, análisis de sistemas, y máquinas de aprendizaje, suelen suponer que la carrera base es Ingeniería de Computación, o Matemáticas.

El trasfondo que implica la formación de un egresado de Computación, está lleno de una serie de herramientas y lenguajes que raras veces son dominados por especialistas de investigación de operaciones / machine learning / análisis de sistemas. Por ejemplo:
  • Lenguajes de bajo nivel (C++, por ejemplo).
  • Bases de datos (SQL, por ejemplo).
  • Arquitectura de Redes.
  • Programación de páginas web.
  • ...etc.
Sin embargo, estas no son destrezas necesariamente requeridas para que una persona sea un especialista en las áreas de las que he venido hablando.

Quienes asumen que quienes son especialistas en optimización y patrones, son necesariamente matemáticos, pues están dejando de considerar que la optimización utiliza las matemáticas como fundamento base, pero constituye más bien un uso práctico de los aspectos teóricos de las matemáticas. En muchos casos de la vida real, la investigación de operaciones está fundamentada en heurísticas, que pueden estar más fundamentadas en el sentido común, y emulación de ciertos aspectos de la naturaleza (como las colonias de hormigas, las neuronas, o los enjambres de abejas) que en teoremas fuertes matemáticos asociados a la optimalidad.

Es importante para quienes desean encontrar un profesional que resuelva un problema, con un enfoque de investigación de operaciones / análisis de sistemas / machine learning (aprendizaje artificial), deben entender que para este tipo de proyectos y problemas, es muchísimo más importante la manera de pensar (capacidad de abstracción, capacidad de análisis y síntesis, capacidad de comunicar ideas complejas, capacidad de volver cuantitativas variables subjetivas), que el manejar un lenguaje o herramienta particular.

Las herramientas y tecnologías que una persona utiliza, y la forma en que se enmarca el pensamiento, son un subproducto de los intentos que se han realizado para resolver problemas. Hay que tomar en cuenta, que para resolver un problema particular, por lo general, son válidas muchas alternativas de herramientas y tecnologías.

Ejemplo: Se necesita hacer "agrupamiento" (clustering). Esto puede hacerse en Matlab, R, Python, Lenguaje C++, Fortran, SPSS, SAS,... e incluso en Excel, programando con Visual Basic para Aplicaciones. Más importante que la herramienta a usar, es que el profesional que consigamos tenga la capacidad de analizar el problema, identificar los aspectos relevantes a considerar, e implemente la solución de forma eficiente, cumpliendo con los requerimientos exigidos. Quien sepa programar en cualquiera de estos lenguajes y herramientas, podría fácilmente aprender otro. En estos casos, lo más difícil de la programación, no es saber cómo se escribe una instrucción, sino tener claro en la cabeza qué es lo que se quiere hacer.

Es importante entonces buscar las personas con el cerebro entrenado para el tipo de problema, y no personas que sepan usar un conjunto de herramientas. El que tiene la capacidad de analizar y resolver el problema, aprenderá fácilmente la herramienta que necesite utilizar.

viernes, mayo 04, 2012

Enfoques basados en optimización convexa para clasificación de patrones

Tal y como lo comenté anteriormente, el próximo martes 8 de mayo de 2012, en la Sala Carlos Aragone, Edf. FEI-256 (segundo piso), de la Universidad Simón Bolívar (USB), a las 2:30pm se dictará un seminario titulado:

ENFOQUES BASADOS EN OPTIMIZACION CONVEXA
PARA LA CLASIFICACION DE PATRONES

El expositor, el Prof. Orestes Manzanilla (del Dpto. Procesos y Sistemas de la USB)

Resumen

En este seminario se mostrará un enfoque novedoso para resolver un problema específico dentro de las áreas de minería de datos, aprendizaje artificial y reconocimiento de patrones: el de la clasificación de patrones. Este es un problema con diversas aplicaciones, entre las cuales se puede mencionar el apoyo en
prognosis médica, otorgamiento de créditos, categorización de textos, prospección petrolera, detección de patrones de fraude, detección de patrones físicos (sonoros, visuales, etc), análisis de perfiles de expresión genética, ADN y proteínas diversas. Se hará un breve repaso de las técnicas más comunes para la resolución de este problema,  nacidas de la estadística, y de distintos campos de “máquinas de aprendizaje”, algunos de ellos bio-inspirados, indicando brevemente las ventajas y desventajas de cada método.
Se expondrá un grupo de heurísticas basadas en optimización lineal, y lineal entera-mixta para la generación de clasificadores de patrones de tipo no-lineal (pero lineal por partes), que puede representarse tanto como redes neurales artificiales, como árboles de clasificación, explicando las ventajas y  desventajas que comparativamente se observan respecto a los métodos mencionados anteriormente.
Los métodos están orientados hacia la búsqueda de (1) la minimización de la dependencia del “éxito” de la implementación, de la experticia del implementador, cerrando la brecha "tecnológica" que actualmente mantiene a los no-expertos alejados de este tipo de problemas, y (2) la escalabilidad de la técnica, para garantizar su aplicabilidad en bases de datos masivas. Por último, se esboza el posible uso de las  estructuras no-lineales generadas en el espacio multi-dimensional, ya no tanto para la predicción de la categoría o patrón de un nuevo
indivíduo de clase desconocida, sino para la visualización de los patrones en el espacio multi-dimensional.

Palabras claves: Programación lineal, Redes neurales artificiales, Máquinas de Soporte Vectorial, Clasificadores de patrones, Máquinas de aprendizaje.

lunes, abril 04, 2011

Aceptado artículo sobre el uso de programación lineal para la construcción de clasificadores de patrones binarios

Fue aceptado en la revista Decision Support Systems (4ta revista en el ranking de las revistas de Investigación de Operaciones) el siguiente artículo:

García Palomares, U; Manzanilla, Orestes
. "Novel linear programming approach for building a piecewise nonlinear binary classifier with a priori accuracy". DECISION SUPPORT SYSTEMS. 2011. Indexada en el SCIENCE CITATION INDEX.

En este trabajo, el prof. Ubaldo García Palomares y yo hemos diseñado un algoritmo que construye una estrutura no-lineal, pero lineal por partes, que separa la data de entrenamiento de un problema de clasificación, logrando alcanzar, en ese conjunto, una precisión tan alta como se requiera.

En cada iteración, se resuelve un modelo de programación lineal, o un número arbitrariamente pequeño de modelos de programación lineal entera-mixta. Se muestran bondades que permiten el uso de procesamiento paralelo y/o distribuído.

Entre las bondades que presenta el trabajo, al igual que otros algoritmos similares como el Multi-Superficie (MSM) de Olvi Mangasarian, es que requiere de un mínimo de parámetros a utilizar por parte del usuario, haciendo que el resultado de la aplicación del modelo sea poco dependiente de las decisiones de implantación por parte del usuario.

La estructura resultante puede ser evaluada tanto como árbol de clasificación, como red neuronal artificial.

Actualización del 11 de Abril de 2011
Puede descargarse la versión preliminar enviada para la revista Decision Support Systems, en la sección de Reportes Técnicos del CESMa (Centro de Estadística y Software Matemático), correspondiente al año 2011.

lunes, febrero 07, 2011

¡Aprobadas tesis de maestría en I.O. aplicada a Machine Learning!

Orgullosamente felicito a mis dos amigas y tesistas de la maestría en Ingeniería de Sistemas de la USB (opción Investigación de Operaciones), Adriana Torres y Ana Serra, quienes este viernes en la mañana tuvieron sus respectivas defensas, con un jurado integrado por mi persona, como tutor, por el prof. Marcos Raydan, como miembro principal del jurado. Los presidentes del jurado evaluador fueron, respectivamente, Ana María Borges y Hugo Montesinos.

Los nombres de los trabajos de grado son:
  • "Clasificación multicategoría de patrones mediante optimización de multisuperficies" - Adriana Torres
  •  "Algoritmo de Boosting en Métodos Multi-superficies para clasificación binaria" - Ana Serra
Ambas defensas tuvieron lugar en la sala de reuniones del Centro de Estadística y Software Matemático.

Felicidades por un trabajo bien hecho! Es un placer contar con tesistas de ese calibre.

martes, diciembre 07, 2010

Búsqueda Directa no monótona para optimización con restricciones lineales

Tengo el agrado de invitarlos a la defensa de la Tesis Doctoral denominada

     "MÉTODO DE BÚSQUEDA DIRECTA NO MONÓTONA
             PARA OPTIMIZAR UNA FUNCIÓN OBJETIVO
                SUJETA A RESTRICCIONES LINEALES"

presentada por el estudiante ILDEMARO JOSÉ GARCÍA URREA
como requisito parcial para optar al título de DOCTOR EN INGENIERÍA.

Fecha: viernes 10 de diciembre del 2010
Hora: 2:00 pm
Sitio: sala 133 del edificio Ciclo Básico 1.

Trabajo realizado bajo la tutoría del Prof. Ubaldo García Palomares

Jurado examinador:
     Prof. Bernardo Feijoo (USB),
     Prof. Marcos Raydán(UCV),
     Prof. Ubaldo García Palomares(USB),
     Prof. Ebert Brea (suplente UCV),
     Prof. Débora Cores (suplente USB)

lunes, junio 01, 2009

Charla: Clasificadores multi-superficie con minimización asimétrica de errores


En el contexto del Primer Ciclo de Charlas de los Postgrados en Estadística a realizarse los días jueves de las semanas impares de este trimestre, este jueves 4 de junio de 2009 dictaré esta charla, a las 11:30 am en el edificio MyS oficina 108. Específicamente, se realizará en la sala de seminarios del CESMa-USB.

Las charlas están pensadas para que estudiantes o egresados de nuestros programas compartan resultados o avances de sus trabajos de grado, estimulando el intercambio de ideas entre los participantes.

El tema de mi ponencia, en esta ocasión, versará sobre el uso de heurísticas de optimización, para la generación de un clasificador de patrones (reconocedor de patrones) multi-superficie. Se hablará sobre las Redes Neurales Artificiales de Clasificación Binaria (perceptrones de una capa oculta), Máquinas de Vectores de Soporte (SVMs), y sobre enfoques innovadores en el tratamiento asimétrico de errores de clasificación.

miércoles, marzo 18, 2009

Optimización por "enjambres"

Todos hemos escuchado de los algoritmos genéticos.

Básicamente, se usan para ver, dentro de un espacio matemático, qué punto es el "mejor". Para saber cuando un punto es mejor que otro, simplemente se evalúa cierta función en ese punto, y se ve cuanto vale. Por lo general, se busca que sea lo mayor posible, o lo menor posible (problemas de maximización y minimización, respectivamente). Esa función la podemos llamar "Aptitud", o como se le nombra clásicamente en Investigación de Operaciones: Función Objetivo (puede ser minimizar costos, riesgos, distancias, o maximizar ganancias, flexibilidad, robustez, etc).

(NOTA: si tienen flojera de leer, pasen al final del post, que hay un video EXCELENTE!)

Subiendo (o bajando) montañas...

Esa solución es un vector "x". Usualmente en optimización, uno se busca un "x-inicial", y evalúa la "aptitud"de los puntos que están en los alrededores de ese lugar, y se sigue alguna estrategia para suponer hacia dónde hay que moverse para encontrar un mejor valor de la función. Una vez se determina hacia dónde se busca una mejor solución, se "avanza" un poco (una distancia a escoger juiciosamente), y tenemos una nueva "x". El proceso se repite, hasta que  uno ve que en los alrededores no hay nada mejor, y supone que llegó al "mejor" lugar (el que tiene menor valor o mayor valor en la función objetivo). Puede ocurrir que se llegó a un óptimo local (había otro máximo mejor, pero éste se encontró más rápido).

La competencia para "sobrevivir"...

En Algoritmos Genéticos, no se hace esto. Los pasos son más o menos los siguientes:

  1. Generar a los competidores. Aleatoriamente creamos una cantidad grande de posibles soluciones, es decir, no una "x", sino (pongamos un número) 100 diferentes soluciones, x1, x2,..., x100. Estos serán nuestra "población".
  2. Selección "natural". Ahora toca jugar a la madre naturaleza, y determinar cuáles son los mejores de ellos, es decir los más aptos. Pongamos un número: seleccionamos a los 20 mejores (se evalúa la función objetivo en cada uno y tomamos los que tienen los 20 valores más pequeños o más altos de esa función). A los que no entren en este grupo, los "matamos" (eliminamos esas variables).
  3. Sexo libre, 100% de fertilidad, y la aparición de mutantes.  Cada uno de estos 20 ganadores, es apareado con los otros 19 (aunque pueden seguirse estrategias menos promíscuas ;D ), con un 100% de posibilidad de embarazo. Es decir, siempre se genera uno o más hijos en cada apareamiento. Puede haber apareamiento entre más de dos de los competidores, cosa que en la biología no ocurre! (aquí si tendría sentido la serie de televisión "Mis dos papás"). Cada hijo es una "x" nueva, cuyas características genéticas (valores de cada posición del vector "x"), son una mezcla de las de sus padres. Adicionalmente, aleatoriamente algunos de los hijos producidos en esta etapa tienen alguna característica genética cambiada aleatoriamente, lo que corresponde a una mutación. La población crece hasta tener 100 indivíduos nuevamente, donde están los 20 padres, y los demás son los hijos.
  4. Ahora se repite el proceso, porque se vuelve a ver cuáles son los 20 más aptos, y el resto se muere, y se produce nuevamente un apareamiento... Esto se repite hasta que las diferencias de aptitud entre los miembros de la población son muy pequeñas, y están todos muy cerca (tienen genes casi iguales). En ese momento se supone que el promedio de los genes de la población es la solución al problema (el mejor valor de "x" en el espacio matemático, según esa función objetivo fijada).
Importante es notar que en este método, hay dos componentes del comportamiento del algoritmo: la exploración (generando aleatoriamente "x" por todo el espacio, y aleatoriamente generando indivíduos mutantes, de forma ciega), y la explotación (siempre matando a los peores, y dejando a los mejores, hace que se aglomeren cada vez más arriba en las "montañas" de la función objetivo). Esto hace que sea menos probable que la solucion encontrada sea un óptimo local, y en eso puede resultar mejor que la optimización clásica.


Vuelen, hijos míos, exploren, ayúdense y destruyan al enemigo!

Ahora entonces tenemos a las técnicas de Optimización por "enjambres". Estas no son una población en la que se mueren los menos aptos. Por el contrario, siguen vivos, y el que no mueran agrega ese componente de "exploración" del que hablamos en los algoritmos genéticos, pero el que compartan información, hace que busquen las partes altas del espacio matemático, lo que equivale a un comportamiento de explotación. Dicen que nadie aprende de la experiencia ajena, lo cuál es verdad en el genético, pero acá se rompe esa regla!

  1. Enjambre en caos. Cada "x" nace, inicialmente, en una posición aleatoria, con una velocidad aleatoria, volando hacia una dirección aleatoria. Es decir, la locura y el caos total!
  2. Corran la voz!... la versión matemática de un chisme. Cada indivíduo (que es una posible solución "x" al problema), se entera de en qué posición está el que, dentro de toda la población, ha conseguido un mejor espacio para explorar (el que tenga mejor valor para la función objetivo). También se entera, de entre los que estén más cerca de él, cuál es el que mejor posicionado está.
  3. La información es de quién la usa!. Cada uno de los indivíduos de la población ahora decide cómo usa la información que tiene, y la pondera respecto a lo que él ya venía haciendo (por algo venía en esta dirección, no?). Aleatoriamente le da más o menos importancia al chisme de dónde está el mejor de toda la población, dondé está el mejor de sus vecinos, y hacia dónde iba cuando se enteró de estos dos chismes. Según la información, elige una nueva dirección, y camina por ahí, llegando a una nueva posición. Allí vuelven a llegarle los chismes actualizados, y se repite el proceso.
  4. Cuando todos más o menos están en el mismo sitio, el promedio de los lugares en los que están se asume como la respuesta al problema.
Interesante, no?

Ahora vean un video de unos robots que tienen la tarea de arrimar un objeto hacia su base. Ninguno de ellos logra ver más allá de unos centímetros de su naríz, pero se comunican perfectamente entre ellos, y trabajan bajo la optimización de enjambres. Poco a poco ubican el objeto, y logran llevarlo hacia su objetivo. Realmente alucinante!!
(gracias Gregorio por comentarme sobre este tema y pasarme el video!)







miércoles, mayo 21, 2008

Psicología aplicada en Máquinas de Aprendizaje: los seres humanos no son números

Creo que ya que les hablé del Premio Netflix, es bueno que les comente este excelente post en el que hacen reseña de un hecho curioso: una persona que originalmente viene del área de Psicología, llamada Gavin Potter, logró un marcado avance en este concurso. Hasta el momento en que esa persona entró, ninguno de los grupos concursantes no habían logrado hacer avances significativos desde hacía algún tiempo.... ¡y estoy hablando de personas que han probado ya múltiples ideas para resolver el problema!

Esta persona oriunda del área de Psicología, ya desde su primer intento, logró un avance mucho mayor que todos los avances recientes de los demás equipos. No pienso hacer una paráfrasis del post acá, pero si resumir en pocas palabras lo importante, y que debemos tener en cuenta al enfrentarnos a problemas reales:


Los especialistas en cómputo, estadística e inteligencia artificial pueden desarrollar algoritmos muy elaborados, y entonarlos para que trabajen muy bien ante los datos disponibles para el problema de Netflix. En ellos los números representan a los cinéfilos, y a sus gustos, y las fórmulas tratan de "predecir" el gusto que tendrán por la próxima película.

Esto está bien... salvo por el hecho de que....

¡Las personas no son números... ...ni miran las películas como si éstas lo fuesen!

Potter consideró a las personas como personas, e interpretó las calificaciones de las personas, tomando en cuenta cosas ya conocidas del comportamiento humano al momento de asignar calificaciones. El hecho de que esos números fueran asignados por un ser humano, es una información que, de alguna forma, había que incluír en el modelo.

Tomar en cuenta el factor humano, es algo que se díce más fácil de lo que se hace. ¿Cómo valernos de la psicología para estudiar personas sobre las cuáles no sabemos nada, excepto cuánto "dicen" que les gustó una película.

En corto, la forma en que Potter lo hizo, fue la siguiente:
  • Consideró que los gustos de las personas pueden cambiar a medida que pasa el tiempo. Uno puede darle más "peso" a las calificaciones más recientes que a las muy viejas.
  • Consideró el efecto "anclaje", que se refiere a la inercia que nos invade cuando asignamos calificaciones numéricas a algo (me ha pasado en mi experiencia como profesor universitario!). Si una persona ve tres películas seguidas que merecen 4 estrellas, y luego ve una que es un poco mejor, muy probablemente le asignará un 5. Sin embargo, si empezó viendo un par de películas a las que les dió sólo una estrella, esa misma película, que en otra circunstancia hubiese calificado con un 5, recibiría posiblemente sólo un 4 o incluso un 3. Potter se ocupó de medir este efecto en la data proporcionada por Netflix, y tomó en cuenta este efecto en las fórmulas, para determinar más precisamente los gustos de los cinéfilos.
La moraleja detrás de esto es muy importante:

sin importar que tan buenos modeladores seamos, al enfrentar un problema real, tener en el equipo una persona que sepa de la parte de la realidad que está tratando de modelarse. Es posible que a un especialista en computación, optimización o estadística se le ocurra algo de este estilo, pero, como sugiere el post en cuestión: incluír al especialista de la parte de la realidad que estamos estudiando puede ahorrar trabajo en modelos infructuosos.

Para cerrar, les paso el link al post es éste:
http://www.wired.com/techbiz/media/magazine/16-03/mf_netflix?currentPage=all

lunes, marzo 24, 2008

Nuevos enlaces

Hay ahora en el costado derecho del blog, nuevos links...

Más links de Investigación de Operaciones:

The OR Society
http://www.orsoc.org.uk/orshop/(txcjre45jcxf1q55fpzu32zc)/orhomepage2.aspx

Operations Research/Management Science Today
http://www.lionhrtpub.com/ORMS.shtml

International Federation of Operational Research Society
http://www.ifors.org/

Asociación Latino-Iberoamericana de Investigación Operativa
http://www-2.dc.uba.ar/alio/

International Society on Multiple Criteria Decision Making
http://www.terry.uga.edu/mcdm/

Military Operations Research Society
http://www.mors.org/

Mathematical Programming Society
http://www.mathprog.org/

Omega Rho International Honor Society
http://omegarho.informs.org/

TutORial IFORS
http://www.ifors.ms.unimelb.edu.au/tutorial/

WWW for Operations Research and Management Science
http://www.worms.ms.unimelb.edu.au/

Operations Research/Management Science Today
http://www.lionhrtpub.com/ORMS.shtml


Nueva sección de Links de ciencias relacionadas a I.O.

Clinical Operational Research Unit
http://www.ucl.ac.uk/operational-research/

Society for Industrial and Applied Mathematics
http://www.siam.org/

Center for Operations Research and Econometrics
http://www.uclouvain.be/en-core.html

Decision Sciences Institute
http://www.decisionsciences.org/

Institute of Industrial Engineers
http://www.iienet2.org/Default.aspx

Phramaceutical Management Science Association
http://www.pmsa.net/

Production and Operations Management Society
http://www.poms.org/

Game Theory Society
http://www.gametheorysociety.org/



Nuevo link personal

Mi Tlog (TumblrLog)
http://ozono27.tumblr.com

Notas sobre Investigación de Operaciones

Hay un excelente material (resumido y fácil de entender), que ha sido publicado por el profesor J. E. Beasley en su sitio web. Se trata del material de un curso que el dicta a nivel universitario, y recoge información bastante útil.

No sólo abarca la mayoría de los temas "clásicos" de I.O., sino que también proporciona información sobre la historia de la I.O., así como de las instituciones y asociaciones que se han formado en el mundo por gente de esta área.

Si están empezando en esto de Investigación de Operaciones, y no les molesta leer un poco de inglés, les recomiendo altamente esta página (aunque sea poco vistosa).

lunes, febrero 11, 2008

¿Regresión usando Programación Lineal?

Alfredo me comentaba que había leído varios tópicos de Investigación de Operaciones, pero que ninguno de los tópicos era Data-Mining, por ejemplo, o métodos Multi-Superficie. En mi respuesta le insinué que ciertamente no son tópicos de la IO, pero no por ello es imposible que si se idea una formulación adecuada del modelo, la IO pueda aportar en campos que en principio se asumen como "diferentes".

En un post anterior escribí sobre la diferencia entre Regresión y Clasificación. Para la mayoría de los que han tenido contacto con cursos introductorios de IO, estará claro que no son parte del temario de IO.

Todo esto me inclinó a escribir hoy acerca de una aplicación de IO para Regresión. Ya a muchos les quedó claro que me he ocupado bastante del uso de la IO para clasificar, y bueno, la Regresión quedó huerfanita, al parecer... ;o)

Antes que todo, quiero dejar claro que el modelo más famoso en la actualidad, para realizar clasificación binaria (los SVM) también es utilizado para regresión. Con esto quiero decir, que lo que voy a desarrollar acá no es la invención de la rueda.
Es un simple ejemplo ilustrativo, que me permitirá (espero yo!) mostrar una regresión mediate IO, sin entrar en detalles sobre los SVMs (vale la pena acotar que fue parte de los ejercicios de un curso de Análisis de Sistemas Lineales del Prof. Ubaldo García Palomares de la USB).

El ejemplo es el siguiente:

Se tienen 4 puntos en el plano cartesiano...
e1 = (0.1 , 1.0)
e2 = (0.8 , 2.2)
e3 = (2.2 , 2.8)
e4 = (3.3 , 3.9)

Que lucen más o menos así, al graficarlos en Excel (disculpen la cuña!):


Bueno. Se nos pide que, sin usar mínimos cuadrados, aproximemos una recta

y = a*x + b

que pase lo más cerca posible a todos esos puntos.

Yo voy a resolver el problema formulando un modelo de programación lineal... primero, tengo como información que la función a aproximar es una línea recta. Si me disculpan una notación extremadamente simple, diré que cuando tenga un i-ésimo punto ei, con componentes (xi , yi), tendré un error dado por la resta

[ yi - yi~ ]

donde yi~ es el estimado que me arroja la función de la recta, es decir:

yi~ = a*xi + b.

En mínimos cuadrados, se quiere hacer pequeña la suma de los errores cuadráticos:

[ yi - yi~ ]^2

Bueno, como me pidieron que no fuese una minimización de los errores cuadráticos, me quedaré con la expresión [ yi - yi~ ].

Ahora, ese error me va a dar positivo cuando el estimado sea menor que el valor real, y negativo cuando pase lo contrario... y si sumo los errores así, podrían cancelarse positivos con negativos, dando una suma que realmente no significará nada para mi.

Así que voy a hacer pequeña, en cambio, a la suma de los errores absolutos:

| yi - yi~ |

Ahora, recordemos de bachillerato que la función "valor absoluto" ( y=|x| ) no es lineal, así que... evidentemente no puedo resolverlo con Programación Lineal....

... O SI!!!

Yo puedo respirar profundo, abrir y cerrar los ojos, y escribir lo mismo, de forma un poquito diferente. Puedo tranquilamente decir que yi~ es igual a yi, más una variable "di" que mide el i-ésimo error de forma no-absoluta, así:

di = yi - yi~

yi~ + di = yi

Ahora, todavía la suma de los errores "di" me deja en las mismas, porque podría tener positivos y negativos (con toda seguridad!). No he hecho nada interesante aún. Sin embargo, ahora si respiro profundo y me aseguro de que mi lapiz tiene punta, porque voy a jugar con ese error "di". Quiero jugar de forma que tenga sólo variables no-negativas, que crezcan cuando hay error. Por ello, voy hacer lo primero que se me ocurre: expresarlo como una resta de dos valores positivos.

NOTA: cualquier número puede expresarse como
la diferencia
de dos valores no-negativos. Ejemplo:
1 = 34-33
-8 = 10 - 18

Por lo tanto, "nadie me quita lo bailao" si yo decido escribir ahora la diferencia así:

yi~ + (dip - din) = yi

donde dip, vale di, si el error es positivo... (y din = 0)
y din, vale -di, si éste es negativo... (y dip = 0)

Digamos, para mostrarlo fácilmente, que si yi = 2, y el estimado yi~ = 3, entonces tendremos:
3 + 0 - 1 = 2

en otras palabras, dip = 0, y din = 1.

Por lo que din estaría sumando 1 a mi total de errores, en lugar de un -1 (aunque el error que he definido es negativo, porque el verdadero valor es más pequeño que el estimado).

Ahora tengo lo siguiente, si lo aplicamos a los 4 puntos:

y1~ + d1p - d1n = y1
y2~ + d2p - d2n = y2
y3~ + d3p - d3n = y3
y4~ + d4p - d4n = y4

con d1p, d2p, d3p, d4p, d1n, d2n, d3n, d4n todos >= 0.

Esas serían las restricciones de mi modelo, que si sustituímos los estimados por la expresión que proporciona el estimado en base a el xi (componente x del i-ésimo punto) en cada caso, sería lo mismo que:

(a*x1 + b) + d1p - d1n = y1
(a*x2 + b) + d2p - d2n = y2
(a*x3 + b) + d3p - d3n = y3
(a*x4 + b) + d4p - d4n = y4
d1p, d2p, d3p, d4p, d1n, d2n, d3n, d4n >= 0

Nótese que he colocado las variables en color azul. Lo que esté en negro es "dato".

Ahora, me podría asustar y gritar: ¡ahora tengo 2 veces más incógnitas que antes! ... pero en este tipo de cosas lo que se nos pide es que tengamos la valentía de seguir adelante a ver a donde se llega, hasta que se llegue,... a la solución...

...o a una calle ciega... lo cual es siempre una posibilidad que no tiene por qué desanimarnos si no estamos en un exámen.. jeje.

Así que tomamos un poco de chocolate caliente para el alma, y nos preguntamos: ¿qué es lo que quiero hacer pequeño? Respuesta: la suma de los errores dip y din.

Es decir, que mi función objetivo es la suma de los errores positivos y negativos:

Minimizar Z = (d1p + d2p + d3p + d4p) + (d1n + d2n + d3n + d4n)

Esto hará, que en la resolución el algoritmo utilizado quiera hacer que todas las variables dip y din tengan el menor valor posible: cero (0), colocando la recta justo para que pase por los puntos.... en tus sueños!! jaja...

Como lo más probable es que no lo logre, tendrá que sacrificar alguna de las variables dejándola que sea mayor que cero. Pero en ningún momento hará que una que no sea necesaria, sea mayor que cero. El modelo entonces queda formulado completo así:

Minimizar Z = (d1p + d2p + d3p + d4p) + (d1n + d2n + d3n + d4n)
din, dip, a, b

Sujeto a:
(a*x1 + b) + d1p - d1n = y1
(a*x2 + b) + d2p - d2n = y2

(a*x3 + b) + d3p - d3n = y3

(a*x4 + b) + d4p - d4n = y4
d1p, d2p, d3p, d4p, d1n, d2n, d3n, d4n >= 0

Abajo tengo una imágen donde muestro en excel como saqué las cuentas en la hoja de cálculo, para la función objetivo y los valores que necesito para las restricciones. Lo amarillo es celda que representa a una variable, y lo azul son celdas que cambian en función de las variables (diferente a como coloreé las cosas en el texto). Guardé ese pantallazo mostrando en particular la fórmula con que estoy calculando el y~.


Ya es el momento de llamar a la máquina que me dirá cuáles son los valores óptimos de "a" y "b" de la recta, es decir, aquellos que podrán existir haciendo la suma de los errores lo más pequeña posible. La forma en que llené los datos en el Solver, la muestro abajo. Dense cuenta de que hice que los dip y din fuesen no-negativos, pero no restringí en absoluto a las variables "a" y "b":

(Las dudas sobre lo que significa lo que se ve arriba las podemos aclarar luego en la medida en que me pregunten, si lo desean)

Finalmente, y para no seguir alargando el post, veamos el resultado que arroja el Solver, así como una graficación de la recta que resulta:


¿No está mal, eh? Bueno. Aquí termina el ejemplo de hoy.

Traté de hacer esto de forma que todos pudiesen replicar el resultado fácilmente. Espero haberlo logrado. ¡Cualquier cosa, como siempre: pregunten!

Así pues, tenemos una regresión, no basada en minimización de errores cuadrados, sino obtenida mediante la resolución de la clase de modelo más emblemático de la IO: la Programación Lineal.

¿Es la Regresión Lineal un problema de IO? Probablemente no... pero no significa que pueda usarla para resolver el problema. ¡Ese es el espíritu!

Nota: para los recién iniciados en esto, que estén curiosos y quieran ver más allá de lo evidente, les adelanto que este tipo de regresión tiene cierto tipo de ventajas respecto a la regresión cuadrática bajo ciertas circunstancias. Se llama minimización en "norma - 1", mientras que en la de mínimos cuadrados se minimiza la "norma - 2"....

...pero eso es parte de otra historia

XoD

sábado, febrero 09, 2008

Respuestas para Alfredo

Primero que todo, Alfredo, gracias por tomar la confianza de escribirme, me gusta ayudar (es una de las principales razones por las cuales escribo el blog... porque yo quisiera haber podido leer algo como esto cuando me iniciaba en el área). Como tus preguntas no son de las que uno quisiera responder con monosílabos, te respondo en un post.

Sabes? No se necesita ser una lumbrera para meterse en esto. Sólo se necesita hacer lo que estás haciendo: dedicarle... y algo que te ayudará a hacerlo, es tener gusto por esto. Al poco tiempo tendrás que explicarle a los demás que tu no eres una lumbrera (si ellos hubiesen pasado el mismo tiempo que tu, dedicándole a esto, no les parecería tan genial lo que tu puedes hacer con estas herramientas). Yo tampoco soy una lumbrera, by the way... jeje.

En cuanto a tus preguntas a mi "como analista de operaciones", tengo que decirte varias cosas:
No he tenido trabajo en la empresa privada como "analista de operaciones". Y con esto me refiero a que no he tenido un trabajo en el que haya podido utilizar la investigación de operaciones (hasta ahora).
  1. El trabajo de una persona que tiene experticia en investigación de operaciones puede ser (en el mundo empresarial/industrial) uno de planificación, por ejemplo, o el de consultor. El resto de los trabajos que he podido ver, puede que requieran puntualmente el uso de investigación de operaciones, pero una vez encontrado el modelo, e implementado, correrlo periódicamente no es un trabajo interesante para una persona con el perfil de IO.
  2. En el mundo académico, es obvio que el trabajo para una persona del área de IO es dar clases, y buscar ampliar los horizontes de la IO mediante la investigación, que además te pone en contacto con lo que otros locos están haciendo respecto a eso en otras partes del mundo.
  3. Recientemente un Gran Amigo de la infancia me propuso trabajar juntos como consultores. Mi actividad cotidiana en ese aspecto estaría formada por actividades de este tipo:
    • reunirme con el cliente para entender su problema
    • definir un modelo (esto es un proceso que es arte y ciencia)
    • definir cómo voy a recoger los datos que necesito y negociar con el cliente cómo vamos a recogerlos.
    • definir qué infraestructura informática necesito para resolver el modelo y negociarlo con el cliente.
    • intentar explicar al cliente en forma sencilla qué es lo que estoy haciendo.
    • fumarme una lumpia para resolver el modelo que planteé.
    • ver los resultados, y traducir eso en algo que pueda digerir el cliente.
    • antes que todo, demostrar al cliente qué beneficios le puede traer contratarte para que apliques IO
    • Eh... creo que esa es una lista que podría darte una idea de la no-cotidianidad del asunto.
  4. En cuanto a que si la IO es tan tomada en serio en Venezuela como lo podría ser en EEUU, te puedo decir, sin que me quede nada por dentro, que la respuesta es: NO. Lo más frecuente es que las respuestas en Venezuela las de alguien con experiencia (al menos aparente) o el viento que pegue en el dedo luego de ser correctamente ensalibado (yuck!). Esto no siempre es criticable, puesto que los "sistemas" que uno analiza en países como el nuestro no siempre son del todo estables, predecibles y bonitos, sino que la alta sensibilidad a miles de variables ... todas en comportamiento caótico... hacen que estas técnicas ameriten una gran inversión, o tengan poca probabilidad de ser efectivas. Eso no significa que haya puestos en las empresas del área de petróleo, comunicaciones, construcción, e industrias manufactureras y de producción "contínua" que denigren de estas técnicas. Simplemente que son pocos los sitios donde lo hacen. Tengo entendido que en "la anterior PDVSA" (dejémoslo así para no entrar en el tema político) había un departamento de gente de IO dedicada específicamente a mejorar los procesos e la empresa mediante estas técnicas. Hay empresas consultoras que valoran MUCHO que una persona tenga formación en IO, aunque no lo usen nunca en el puesto que le van a dar, tan sólo por "el tipo de pensamiento" que tenemos. Con esto termino en lo referente a las posibilidades de trabajo.
La pregunta sobre la "buena paga", no puedo respondértela con propiedad, porque tengo noticias de personas a las que les pagan bien poco, y otras que ganan una millonada. Los sueldos en PDVSA no estaban para nada mal, en "épocas anteriores", por ejemplo. Ahora, consultoras hay de muchas clases, unas que pagan mucho y luego, al finalizar un contrato te botan. Otras te pagan mucho menos, pero no te echan a la calle. Creo que lo importante es saber venderte.

No hay una "moda" como la que hay por la gente que tiene academia SAP, por ejemplo, que siempre son bien pagados, si es lo que querías saber. Espero esto te responda un poco tus inquietudes.

Me preguntas ¿Hacia donde se dirige la IO?... y me pones en problemas. La IO es un campo MUY amplio. No sólo en cuanto al tipo de técnicas que hay, sino a las aplicaciones, y al enfoque que tienen las personas. Por ejemplo, hay gente que se ocupa de la Programación Lineal, desde un punto de vista estrictamente matemático, generando nuevas aproximaciones a la resolución del problema. Otros se paran desde el punto de vista computacional, viendo como resuelven los obstáculos que pueden presentarse al sacar las cuentas con una computadora. Y hay otros, como yo, que nos ocupamos de usar el ingenio en resolver problemas nuevos con técnicas viejas, mediante innovación en la formulación. Aunque pensaba que esa era la última de mi enumeración, creo que también hay gente que se ocupa de mezclar las técnicas de IO con otras técnicas: estadística, lógica difusa, redes neurales, etc.

Cada uno de estos miembros de esta fauna de la IO, a su vez, tienen campos muy específicos en los que investigan, y todos los meses puedes ver en las revistas arbitradas que hay en el mundo, publicaciones de cosas nuevas. La pregunta, Alfredo, para respondértela más certeramente, tendrías que hacérmela restringida a un tipo de fauna de IO, y además restringida a un tipo de problema... vale? y disculpa esa!

Creo que es obvio que mi opinión es que hay MUCHO campo para investigar. No en vano hay revistas arbitradas dedicadas exclusivamente al área de IO.

Sin embargo quiero dejar en claro algo: los temas en los que se inicia el estudio de la IO son la Programación Lineal, la Teoría de Colas, el Pert-CPM, los modelos de Optmización en Redes, la Simulación de Eventos Discretos y la Programación Lineal Entera... eso es cierto...
Pero esos temas son las herramientas básicas.

Ahora, el Data-Mining, por ejemplo, no es en si mismo un tema típico de IO. Los modelos de IO que se han aplicado para hacer Data-Mining son eso mismo: algoritmos de un área, utilizados para resolver un problema de otra área (lo cual nos lleva a ver que las áreas están entrelazadas).

Por ejemplo, un problema de SVM (Support Vector Machine) ciertamente es un modelo de Programación Matemática (y por ende IO), pero no todo modelo de IO puede ser aplicado para el reconocimiento de patrones. Normalmente los modelos de Programación Matemática usualmente dan un resultado válido estrictamente para los parámetros que se utilizan al momento de resovlerlo,... y puedes mantener "la solución" sólo si cambian esos parámetros dentro de los rangos que de da el análisis de sensibilidad. Una vez cambian demasiado los parámetros, la solución es otra. Por lo tanto, en principio, no son buenos para "generalizar". En particular los modelos como el SVM y los utilizados en Métodos Multi-Superficie están construídos con la intención de obtener una buena capacidad de generalización, y los parámetros que reciben al formularlos, SON los elementos sobre los cuales se va a generalizar. Sólo por ello sirven para "simular" aprendizaje. ¡Así que OJO con eso Alfredo! Lo que si puedo permitirme decirte es que esto demuestra que la IO no tiene por qué restringirse a los temas y problemas clásicos.

La imaginación es el límite... dice el cliché por ahí... jeje... aunque yo también diría que ese límite a veces se hace más pequeño debido a las restricciones en capacidad de cómputo que tendremos siempre, obligándonos a simplificar nuestros modelos para poder tener una respuesta en un tiempo razonable.

¡Espero te sientas respondido!

miércoles, enero 30, 2008

Máquinas de Aprendizaje ¿con Investigación de Operaciones?

El tema del "Machine Learning" o de las Máquinas de Aprendizaje es un tema que en principio está en el terreno de la inteligencia artificial, pues cuando queremos que una "máquina" (en general un "ente" artificial) aprenda, básicamente estámos tratando de emular la forma en que el ser humano, a partir de su experiencia, logra tomar deciciones apropiadas, y esto, evidentemente, es parte de lo que llamamos "inteligencia".

Claro que este blog no es un blog de inteligencia artificial, sino de Optimización y Máquinas de Aprendizaje. Así que de ahí se puede desprender una razonable sospecha de que no voy a tratar a las máquinas de aprendizaje de modo general, sino sólo en los aspectos que tiene en común con el área de la Opimización (métodos prescriptivos de Investigación de operaciones, que comenté en un post anterior).

¿Y cuáles son esos tópicos de Máquinas de Aprendizaje que tienen que ver con Optimización? No pretendo en esto mostrar una lista completa de los tópicos, ya que mis conocimientos no abarcan con suficiente profundidad todos los tópicos de las Máquinas de Aprendizaje. Simplemente diré en respuesta a ello, me referiré en particular a los Algoritmos de Aprendizaje Supervisado.

El Aprendizaje Supervisado, como casi todos los tópicos de Máquinas de Aprendizaje, ha sido atacado desde enfoques estadísticos, de redes neurales, y ciencias teóricas de la computación. Son raros los casos en los que se enfrentan estos problemas desde el enfoque de la optimización. En particular, el área del "Data Mining" o Minería de Datos tiene importantes exponentes del área de optimización como lo son las diferentes técnicas de las famosas SVM o Máquinas de Vectores de Soporte.

Estas tienen como particularidad que minimizan el error de clasificación empírico (de allí que sean de Aprendizaje Supervisado) al mismo tiempo que maximizan la distancia que tiene la superficie separadora de las dos clases respecto a los elementos de esas clases que separa. Los problemas de minimización o maximización siempre buscan el comportamiento óptimo de un sistema. En este caso, la función a optimizar es al mismo tiempo los errores y el mencionado margen. Esta optimización simultánea fue deducida por Vapnik como parte de los aportes colaterales de sus nuevas propuestas en el área de la estadística, con apoyo de Chervonenkis.

Hay otros métodos de optimización que atacan problemas de Minería de Datos, por supuesto. Uno de ellos que me parece extremadamente interesante, aunque luego de su surgimiento no ha habido grandes avances en ese respecto, son los métodos "multi-superficie". En ellos se generan, siguiendo una estrategia "golosa", múltiples superficies, que seccionan el espacio en el que se encuentran los elementos a ser clasificados. La máquina de aprendizaje resultante no hace otra cosa que evaluar en cuál de las áreas delimitadas por esas superficies está el individuo que se desea clasificar. La respuesta es: la misma clase que tienen mayoritariamente los individuos de esa área.

Este tipo de estrategias generan, como sub-producto de su uso, el diseño de una red neural (perceptrón multicapa), o un árbol de clasificación.

En mi opinión es muy interesante el hecho de que algoritmos como estos puedan generar redes neurales de clasificación binaria "sin intervención humana". Es bien sabido en la comunidad de las redes neurales, que resolver un problema con redes neurales, la mayor parte de los casos puede considerarse no sólo una ciencia sino un arte, debido a que hay muchas decisiones "arbitrarias" que tomar, y que por ende provocan largas sesiones de ensayo y error, tanteo, o entonamiento. Hay que decidir, cuantas neuronas usar, de qué tipo, conectadas en qué forma, y por si fuera poco, luego decidirse por una estrategia para el entrenamiento.

El uso de algoritmos que propongan ya de por si la estructura y parámetros de la red, hace que el proceso de construír una red neural de clasificación deje de ser un arte, para empezar a convertirse en un proceso ya automático.

Por último, en este post de reflexiones sobre el uso de la optimización para resolver problemas de máquinas de aprendizaje, quiero asomar una idea. Invariablemente, la construcción de máquinas que aprendan a hacer clasificación binaria, basándose en los errores, implica el uso de técnicas para conseguir parámetros óptimos para esas máquinas. En el caso de las redes neurales como los Perceptrones Multicapa, es común el uso de algoritmos asociados al Backpropagation. Mi comentario es el siguiente: desde el punto de vista de optimización, la forma en que se plantea el problema que resuelve la retropropagación, es el tipo de problemas que todo optimizador quiere evitar, ya que:
* la función a optimizar no es convexa
* hay abundancia de óptimos locales
* hay abundancia de puntos estacionarios en los que un algoritmo de optimización fácilmente "cree haber llegado".

Para evitar algunos de esos problemas, se "distorciona" la función de transferencia de las neuronas del perceptrón multicapa, para que la función sea una sigmoidal "suave", en lugar de una función tipo "escalón", lo que da orígen a clasificaciones difusas (sin que en ello esté involucrada la batería de herramientas de las que se aprovisiona la lógica difusa para resolver estas situaciones).

Bueno, es probable que el 99.99% de las personas que lean esto se pregunten ¿y cómo piensa Orestes entrenar un perceptrón sin usar los principios de la retropropagación? Bueno. La respuesta es: buscándole la vuelta al problema, para sólo resolver problemas convexos. Más adelante les seguiré contando.

¿Dónde está el área de Investigación de Operaciones?

Quisiera contar acá una anécdota curiosa. Ya en mi artículo anterior mencioné la dificultad que tiene la gente de Investigación de Operaciones para responder a la pregunta “¿a qué te dedicas?”. Mucha gente cree que esto es una broma de profesor, pero ésto es tan serio, que ha dado lugar a situaciones confusas a nivel académico. Los matemáticos dicen que es una disciplina de los computistas. Los computistas le echan el muerto a los matemáticos. En la Universidad Simón Bolívar, los especialistas en esta área estaban inicialmente divididos en los departamentos de Matemáticas y Computación, y realmente muchos de ambos departamentos opinaban que debían estar en el otro. Luego se creó un departamento de Cómputo Científico y Estadística, que albergó a muchos de estos académicos. También surgió un departamento de Procesos y Sistemas (al cuál estuve adscrito mientras me dedique a labores académicas), que también albergaba a otro tanto.

En conclusión, tenemos una gran cantidad de personas que trabajan en los mismos problemas de forma aislada, probablemente usando muchas técnicas en común, y otras que ellos conocen sólo en su departamento y que podrían servir a los de los otros departamentos. Gente en lugares distintos trabajando sobre lo mismo, inevitablemente desembocará en fenómenos de “reinvención de la rueda”, en competitividad mal enfocada, y en que las personas no sepan a qué departamento ir, ante una duda. Obviamente, siendo una universidad de tipo experimental, donde las coordinaciones agrupan a las carreras, y los departamentos agrupan a los profesores, surge también la pregunta: “Quiero que los alumnos de la carrera X vean la materia Y, cuál departamento debería ofertar esa materia?”.

Como pueden ver, no siempre un "chiste de profesor" carece de seriedad.

No en vano dicen que el humor es el patio trasero de la inteligencia

martes, junio 05, 2007

¿Qué es la Investigación de Operaciones?

Investigación de Operaciones (también llamada Investigación Operacional), hoy en día es el nombre que se le da al “Análisis de Sistemas”. Realmente este último término suena como algo vago, pero ya veremos a qué se refiere.

El término “Operaciones” está heredado de las “operaciones militares", que vieron nacer a las técnicas y metodologías que ahora llamamos “Investigación de Operaciones”. En su orígen se trataba de “cumplir los objetivos”, sujetos a las "restricciones" que la situación de guerra exigía, con la "menor" cantidad de pérdidas.

Usted podrá decir: ¡Pero esto es algo que todo el mundo hace todo el tiempo, para ir a la oficina, para comprar en el supermercado, y quizá hasta para escoger una película en el cine!

Y lo dice con toda razón. Pero el hecho de que hayan llamado a un montón de matemáticos para que investigaran y desarrollaran una forma matemática de ayudarse en ese proceso, fue lo que dio orígen a todo esto. Y de allí que los militares decidieran agregar el otro término “Investigación”. Evidentemente el uso de esa palabra no implica necesariamente nada matemático,.. pero no me culpen a mi por ello!

En la actualidad, no es más que el uso de métodos cuantitativos para analizar sistemas (que no tienen una “manera tradicional” de modelarse matemáticamente).


Por ejemplo: existen ecuaciones perfectamente definidas para describir el movimiento de una roca lanzada en cierto ángulo y concierta velocidad. Sin embargo, qué pasa si tenemos una situación en la que la velocidad con que vamos a lanzar el objeto nos hace gastar más energía, y tenemos varios objetivos a los que queremos golpear, y tenemos que re-dirigir el cañón para apuntar al siguiente objetivo? ¿qué pasa si queremos disparar a todos los objetivos usando la menor cantidad de energía y empleando el menor tiempo posible? En esta situación, que ya es más compleja, si bien se utilizan modelos matemáticos clásicos (los que describen el lanzamiento de un proyectil), el modelo para esa “operación” es algo que hay que elaborar especialmente para ese tipo de situación.

Lo que hay que determinar en este “sistema” o en esta “operación”, es qué va a hacer el cañón en cada momento, y esto no es más que una serie de decisiones. Por ello se dice que la Investigación de Operaciones es una “ciencia de las decisiones”, significando con ello, que implica el uso del método científico para soportar la toma de decisiones.

Uno oye eso de “Decisiones” y cree que se trata sólo de “Gerenteces”. Pero en este caso podemos ver que no es así. Si estamos estudiando un sistema de reconocimiento de huellas dactilares en una base de datos de la policía, el que la computadora “diga” que “esta huella es de la misma persona que esta otra huella”, es también una decisión. También lo puede ser, el administrar el accionamiento o no de turbinas en un sistema de represas, para manejar los requerimientos energéticos de la zona, y al mismo tiempo mantener de forma adecuada los niveles de agua; o el encontrar la ruta más corta entre dos puntos en una ciudad.

El Diccionario Web de Cibernética y Sistemas, dice que la Investigación de Operaciones “es el enfoque de la ciencia moderna para atacar problemas en las áreas gerenciales y directivas de sistemas grandes de personas, máquinas, materiales, y dinero, en la industria, gobierno y defensa” (la traducción es mía). Uno puede pensar que la descripción es demasiado amplia. Yo creo que definitivamente es demasiado limitativa, porque un sistema que se quiera analizar, puede perfectamente ser un ecosistema, y el interés por resolver el problema puede ser de una ONG, o de un particular. No importa quién desea que se resuelva el problema, ni importa (en mi opinión) si el problema involucra estrictamente personas, máquinas, materiales o dinero. Lo que importa es que hay un sistema “grande” (que implica la suficiente complejidad como para que la simple intuición no pueda darnos una respuesta satisfactoria y repetible), y que se empleen métodos cuantitativos para resolver las dudas. Para mi esto es Investigación de Operaciones.

Bueno, pero esto de “métodos cuantitativos” o “científicos” es bastante vago también, podrían decir (yo lo diría!). Y es que en realidad el enfoque particular de la Investigación de Operaciones por lo general cae en dos grandes tipos de métodos: Descriptivos y Prescriptivos.

  • Los Métodos Descriptivos, por lo general buscan describir mediante la emulación del comportamiento del sistema, bajo ciertas condiciones hipotéticas. El caso típico es el de los modelos de simulación. Uno decide bajo que condiciones estará funcionando el sistema, y lo simula, observando el comportamiento causado por esas condiciones. Esto permite entender mejor la sensibilidad que tiene el sistema a esas condiciones, y con ello permitir experimentar con un modelo ficticio, ahorrando los riesgos y costos asociados a experimentar con el sistema verdadero. Obviamente la experimentación otorga experiencia, la cuál permite luego tomar mejores decisiones. Hay que hacer énfasis en la naturaleza aleatoria de estos métodos. Lo que se aprende es el “comportamiento” general del sistema, pero no se sabe con certeza cuál será el resultado de la exposición del sistema a ciertas condiciones. No tanto por los errores en el modelaje, sino por el hecho de que estos modelos asumen que las condiciones y los procesos asociados al sistema son de naturaleza aleatoria. Sin embargo, ante la incertidumbre, con un enfoque estadístico se puede apoyar la toma de las decisiones.

  • Los Métodos Prescriptivos son, por su lado, los que no asumen (en principio) la naturaleza aleatoria de las condiciones y de los procesos que se llevan a cabo en el sistema. Así, no hace falta “experimentar”. Sencillamente son modelos en los que el resultado es “la mejor configuración” del sistema. Esa búsqueda implica la pre-suposición de un “óptimo”, no estadístico, sino totalmente determinístico. Si las relaciones y leyes que gobiernan al sistema son “tales”, y las condiciones variables pueden tener estos valores posibles, restringidos de “tal” manera, la mejor configuración de las variables es “ésta”. Obviamente se necesita una definición matemática de lo que es “mejor”, o, dicho de otra forma, una forma cuantitativa de comparar dos posibles soluciones, y saber cuál es mejor. Es importante siempre tener en cuenta que si las condiciones llegaran a ser distintas a las que se utilizaron para construír el modelo, esa "mejor solución" teórica, no lo sería en la realidad. El óptimo siempre existe, pero para el modelo teórico. ¿Cómo interpretar ese resultado adecuadamente para el sistema real, tomando en cuenta todos aquellos inponderables que no pueden modelarse? Ese es el principal reto de la optimización (también llamada "programación matemática").

De esta manera, según mi definición, uno puede usar la parte frita de su cerebro (LOL) para jugar “Age of Empires” o Monopolio “mejor”, o para tomar en cuenta riesgos, retornos de inversión, escenarios socio-económico-políticos para predecir y comparar las posibles decisiones, estrategias, políticas y controles posibles en la sociedad, y en ambos casos está haciendo Investiación de Operaciones.

Hay una página que, inspirada en este último tipo de modelos, se refiere a la Investigación de Operaciones como “La Ciencia de lo Mejor” (mala traducción mía de The Science of the Better). Allí ellos colocan su propia definición de esta área del conocimiento, y adicionalmente identificaron 5 signos que te permiten saber que puedes beneficiarte de la Investigación de Operaciones . Está buena esa parte, visítenla.