jueves, 16 de diciembre de 2010

Algoritmos en línea


Los algoritmos en línea pueden procesar pedazo-por-pedazo sobre un conjunto de datos que están siendo procesados, sin tener un historial de datos. En cambio los algoritmos fuera de línea trabajan con  datos históricos para dar respuesta a la toma de decisiones.
Se dice que un algoritmo es en línea  (en inglés on line) cuando es capaz de ponerse a trabajar en el problema para el que fue diseñado sin necesidad de disponer de todos los datos de entrada antes de empezar, es decir, que puede trabajar a medida que va recibiendo los datos de entrada.
Por ejemplo, el algoritmo de ordenación BubbleSort no es un algoritmo en línea (podría decirse que es fuera de línea u offline), porque si tiene que trabajar sobre 10 valores, necesita que los diez valores estén disponibles al comienzo del algoritmo. Sin embargo, el algoritmo de ordenación InsertionSort sí es un algoritmo en línea, porque si tiene que trabajar sobre 10 valores, puede leer el primero y procesarlo, y luego el segundo y procesarlo, y luego el tercero y procesarlo... ý así hasta el último. Puede realizar parte de su trabajo con una entrada parcial de los datos, ya que el procesamiento de los datos sólo depende de los datos de entrada leídos hasta el momento, y no de la totalidad.

La siguiente tabla muestra los dos tipos de algoritmos:
ON-LINE
OFF-LINE
Búsqueda Secuencial
Búsqueda Binaria
Ordenación por Inserción
QuickSort

Ordenación por Selección

Merge Sort

Debido a que no conoce la entrada de  todo, un algoritmo en línea se ve obligado a tomar decisiones que luego pueden resultar  no ser óptima, y el  estudio de los algoritmos  en línea se ha centrado en  la calidad de la toma de decisiones que es posible en este contexto. El algoritmo de análisis competitivo formaliza  esta idea al comparar el rendimiento relativo de un algoritmo en línea y sin conexión para la instancia del mismo problema. Para otros puntos de vista sobre las entradas en línea a los algoritmos,  ver Algoritmo de flujo (centrado  en la cantidad de memoria  necesaria para representar con precisión las entradas anteriores),  el algoritmo dinámico (centrado  en la complejidad de tiempo de  mantenimiento de soluciones a  los problemas con las entradas de línea) y la máquina de aprendizaje en línea.
Ejemplo de un algoritmo en línea:
El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos.

Si vieramos el procedimiento de este algoritmo, mas o menos tendría el siguiente comportamiento:



Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.
En el siguiente ejemplo, 32 debe ser insertado entre 26 y 47, y por lo tanto 47, 59 y 96 deben ser desplazados.
k+1
11 26 47 59 96 32 
11 26    47 59 96
11 26 32 47 59 96

En la implementación computacional, el elemento k+1 va comparándose de atrás para adelante, deteniéndose con el primer elemento menor. Simultáneamente se van haciendo los desplazamientos.
11 26 47 59 96 32
11 26 47 59    96
11 26 47    59 96
11 26    47 59 96
11 26 32 47 59 96

El algoritmo  en pseudocódigo (con listas que empiezan por 0) debería ser como el siguiente:


algoritmo insertSort( A : lista de elementos ordenables )
    para i=1 hasta longitud(A) hacer
         index=A[i]
         j=i-1
         mientras j>=0 y A[j]>index hacer
              A[j+1] = A[j]
              j = j - 1
         fin mientras
         A[j+1] = index
    fin para
fin algoritmo


Aunque este algoritmo tiene un mejor orden de complejidad que el de burbuja, es muy ineficiente al compararlo con otros algoritmos como quicksort. Sin embargo, para listas relativamente pequeñas el orden por inserción es una buena elección, no sólo porque puede ser más rápido para cantidades pequeñas de elementos sino particularmente debido a su facilidad de programación. 
Implementación en JavaScript
void insertionSort(int numbers[], int array_size) {
   int i, a, index;
   for (i=1; i < array_size; i++) {
      index = numbers[i];
      a = i-1; 
      while (a >= 0 && numbers[a] > index) {
         numbers[a + 1] = numbers[a];
         a--;
      }
      numbers[a+1] = index;
   }
}



miércoles, 15 de diciembre de 2010

Búsqueda Tabú



Introducción
“Los procedimientos meta-heurísticos son una clase de métodos aproximados que están diseñados para resolver problemas difíciles de optimización combinatorio, en los que los heurísticos clásicos no son ni efectivos ni eficientes. Las meta-heurística proporcionan un marco general para crear nuevos algoritmos híbridos combinando diferentes conceptos derivados de: inteligencia artificial, evolución biológica y mecanismos estadísticos.”
Búsqueda Tabú (Tabu Search)
La Búsqueda Tabú (Tabu Search - TS) es un procedimiento meta-heurístico cuya característica distintiva es el uso de memoria adaptativa y de estrategias especiales de resolución de problemas. Su filosofía se basa en la explotación de diversas estrategias inteligentes para la resolución de problemas, basadas en procedimientos de aprendizaje. El marco de memoria adaptativa de TS explota la historia del proceso de resolución del problema haciendo referencia a cuatro dimensiones principales, consistentes en la propiedad de ser reciente, en frecuencia, en calidad, y en influencia.
La búsqueda tabú sirve para resolver problemas que estén relacionados con los siguientes ámbitos:
·         planificación de los recursos,
·         telecomunicaciones,
·         diseño VLSI,
·         análisis financiero,
·         programación, planificación del espacio,
·         la distribución de energía,
·         moleculares ingeniería, logística,
·         clasificación de patrones,
·         de fabricación flexible,
·         la gestión de residuos,
·         la exploración de minerales,
·         análisis biomédico,
·         la conversación del medio ambiente y
·         decenas de otros problemas.
Optimización de ruteo aplicando métodos heurísticos con el uso de búsqueda tabú
El problema de ruteo de vehículos es uno de los problemas más analizados en la actualidad. Una gran cantidad de técnicas, heurísticas han sido empleadas para darle solución a este problema, entre ellas Búsqueda Tabú.
Búsqueda Tabú
Son muchas las técnicas existentes para la optimización de problemas. Esta técnica emplea métodos que pueden ser globales o locales. Los globales, como global de un problema, mientras que los locales se concentran en la vecindad de las solución generada inicialmente, por lo que necesitan de otras técnicas adicionales para encontrar el óptimo global.
Los métodos de búsqueda global lo que persiguen es no caer en óptimos locales, explorando con más eficiencia el espacio de la búsqueda. Esto lo hacen trabajando generalmente con un componente aleatorio de búsqueda, que hace que si se encuentran en un óptimo local, salten a otro punto del espacio de búsqueda, donde pueden encontrar otro óptimo local o posiblemente global
La búsqueda tabú es un procedimiento iterativo y heurístico para resolver problemas discretos de optimización combinatoria y de gran escala. Fue propuesta inicialmente por Fred Glover, y desde entonces ha sido aplicada en la solución de una gran cantidad de problemas de optimización.
Esta técnica busca escapar de óptimos locales, empleando algunas metodologías como el uso de memorias flexibles. Además esta técnica impone y relaja restricciones con el fin de explorar áreas prohibidas, y de hacer cortes de la región factible, al tener en cuenta las restricciones que la limitan.
La Búsqueda Tabú se cimienta en tres puntos principales:
1.       El uso de estructuras de memoria basadas en atributos diseñados para permitir criterios de evaluación e información de búsqueda histórica, la cual se explota más a fondo que las estructuras de memoria rígida (como en ramificación y acotamiento) o por sistemas de periódica de memoria (como recorrido simulado y otro métodos aleatorizados.)
2.       Un mecanismo asociado de control, mediante el empleo de estructuras de memoria, basado en el interjuego entre las condiciones que registren y liberan al proceso de búsqueda (envuelto en las restricciones tabú y el criterio de aspiración.)
3.       La incorporación de funciones de memoria de diferentes lapsos de tiempo, para implantar estrategias que refuercen la combinación de movimientos y las características de solución que históricamente se han encontrado buenas, mientras que las estrategias de diversificación manejan la búsqueda dentro de nuevas regiones.
La búsqueda tabú se basa en dos procesos principales clave que son: restringir la búsqueda al clasificar un movimiento como tabú o prohibido, y liberar la búsqueda empelando una función de memoria de término corto que proporciona una estrategia de olvido. Estos últimos debido a que después de varias interacciones se pueden levantar la clasificación de tabú para un movimiento según el nivel de aspiraciones como se menciono anteriormente.
La búsqueda tabú emplea dos estrategias para encontrar el óptimo local, las cuales están relacionadas con la memoria a largo plazo, que son la intensificación (a término medio) y la diversificación (a término largo). La primera de ellas consiste en regresar a regiones catalogadas como buenas, con el fin de explorarlas mejor; mientras que la otra consiste en analizar nueva áreas no exploradas del espacio de soluciones.
Hay que tener en cuenta que el tamaño de la lista tabú es un parámetro, el cual no puede ser muy pequeño para evitar el ciclado, ni muy grande para no restringir la búsqueda, pues se puede impedir llegar a valles profundos, es decir, obtener el óptimo local. Este tamaño puede determinar mediante pruebas empíricas preliminares. También existen las listas tabú múltiples, cada una desarrollada para un atributo en particular, cada uno de los cuales puede tener un peso, para determinar el status tabú de los movimientos que contiene.

Nota: El contenido de esta entrada esta basado en el atrículo de una tesis "Optimización de ruteo de vehiculos empleando búsqueda tabú" el cual recomiento  apliamente ya que ahi se expone un algoritmo para esta optimización.

Reglas de Asociación



En minería de datos hay diferentes tipos de algoritmos que nos ayudan a la toma de decisiones.
Introducción
·      Algoritmos de clasificación, estos nos ayudan a predecir una o más variables discretas, basándose en otros atributos del conjunto de datos.
·      Algoritmos de regresión, que predicen una o más variables continuas, como las pérdidas o los beneficios, basándose en otros atributos del conjunto de datos.
·      Algoritmos de segmentación, que dividen los datos en grupos, o clústeres, de elementos que tienen propiedades similares.
·       Algoritmos de asociación, que buscan correlaciones entre diferentes atributos de un conjunto de datos. La aplicación más común de esta clase de algoritmo es la creación de reglas de asociación, que pueden utilizarse en un análisis de la cesta de compra. Un ejemplo serían el algoritmo que utiliza Amazon para establecer la relación de las preferencias de los libros de los usuarios del sitio, en base a búsquedas o compras realizadas.
·       Algoritmos de análisis de secuencias, que resumen secuencias o episodios frecuentes en los datos, como un flujo de rutas Web.
En este pequeño artículo tratara solamente de las reglas de asociación.
Las reglas de asociación se utilizan para descubrir hechos que ocurren en común dentro de un determinado conjunto de datos.
Se han investigado ampliamente diversos métodos para aprendizaje de reglas de asociación que han resultado ser muy interesantes para descubrir relaciones entre variables en grandes conjuntos de datos.
Algoritmo Piatetsky-Shapiro
Describe el análisis y la presentación de reglas 'fuertes' descubiertas en bases de datos utilizando diferentes medidas de interés. Basado en el concepto de regla fuerte, Agrawal et al en su libro “Mining Association Rules Between Sets of Items in Large Databases”, presentó un trabajo en el que indicaban las reglas de asociación que descubrían las relaciones entre los datos recopilados a gran escala en los sistemas de terminales de punto de venta de unos supermercados. Por ejemplo, la siguiente regla:
{Cebollas,Vegetables}=>{Carne}
Encontrada en los datos de ventas de un supermercado, indicaría que un consumidor que compra cebollas y vegetales a la vez, es probable que compre también carne. Esta información se puede utilizar como base para tomar decisiones sobre marketing como precios promocionales para ciertos productos o donde ubicar éstos dentro del supermercado. Además del ejemplo anterior aplicado al análisis de la cesta de la compra, hoy en día, las reglas de asociación también son de aplicación en otras muchas áreas como el Web Mining, la detección de intrusos o la bio-informática.
Un Ejemplo muy popular
Un caso muy famoso sobre reglas de asociación es el de la "cerveza y los pañales", basado en el comportamiento de los compradores en el supermercado. Se descubrió que muchos hombres acaban comprando pañales por encargo de sus esposas. En la cadena de supermercados Wal-Mart, donde se descubrió este hecho, se adoptó la medida de colocar la cerveza junto a los pañales. De esta manera consiguió aumentar la venta de cerveza.
Definiendo el problema
Según la definición original de Agrawal et al el problema de minería de reglas de asociación se define como:
I={i1, i2, i3,…,in} un conjunto de n atributos binarios llamados ítems.
D={t1, t2,t3,…tn} un conjunto de transacciones almacenadas en una base de datos.
Cada transacción en D tienen un Id (identificador) único y contiene un subconjunto de ítems de I. Una regla se define como una implicación de la forma:
X=>Y
Donde:


Los conjuntos de items X y Y se denominan respectivamente “antecedente” (o parte izquierda) y “Consecuente” (o parte derecha) de la regla.
Caso Práctico
Para ilustrar estos conceptos véase el siguiente ejemplo sobre ventas en un supermercado. El conjunto de ítems es:

 En la siguiente grafica se muestra una base de datos contiene los ítems, donde el código '1' se interpreta como que el producto (ítem) correspondiente está presenta en la transacción y el código '0' significa que dicho producto no está presente. Un ejemplo de regla para el supermercado podría ser:
Ejemplo:
Base de datos con 4 items y 5 transacciones
ID
Leche
Pan
Mantequilla
Cerveza
1
1
1
0
0
2
0
1
1
0
3
0
0
0
1
4
1
1
1
0
5
0
1
0
0


Significaría que si el cliente compró 'leche' y 'pan' también compró 'mantequilla', es decir, según la especificación formal anterior se tendría que:
X={Leche, Pan}
Y={Mantequilla}
Reglas significativas, 'soporte' y 'confianza'
Nótese que el ejemplo anterior es muy pequeño, en la práctica, una regla necesita un soporte de varios cientos de registros (transacciones) antes de que ésta pueda considerarse significativa desde un punto de vista estadístico. A menudo las bases de datos contienen miles o incluso millones de registros.
Para seleccionar reglas interesantes del conjunto de todas las reglas posibles que se pueden derivar de un conjunto de datos se pueden utilizar restricciones sobre diversas medidas de "significancia" e "interés". Las restricciones más conocidas son los umbrales mínimos de "soporte" y "confianza".
El 'soporte' de un conjunto de ítems X en una base de datos  se define como la proporción de transacciones en la base de datos D que contiene dicho conjunto de ítems:

En el ejemplo anterior el conjunto {Leche, Pan} tiene un soporte de:

Es decir, el soporte es del 40% (2 de cada 5 transacciones).
La 'confianza' de una regla se define como:

Por ejemplo, para la regla:
{Leche, Pan}=>{Mantequilla}
La confianza sería:

Este cálculo significa que el 50% de las reglas de la base de datos que contienen 'leche' y 'pan' en el antecedente la también tienen 'mantequilla' en el consecuente; en otras palabras, que la regla:
{Leche, Pan}=>{Mantequilla} 
Es cierta en el 50% de los casos


La confianza puede interpretarse como un estimador de P(Y | X), la probabilidad de encontrar la parte derecha de una regla condicionada a que se encuentre también la parte izquierda.
Las reglas de asociación deben satisfacer las especificaciones del usuario en cuanto a umbrales mínimos de soporte y confianza. Para conseguir esto el proceso de generación de reglas de asociación se realiza en dos pasos. Primero se aplica el soporte mínimo para encontrar a los conjuntos de ítems más frecuentes en la base de datos. En segundo lugar se forman las reglas partiendo de estos conjuntos frecuentes de ítems y de la restricción de confianza mínima.
Encontrar todos los subconjuntos frecuentes de la base de datos es difícil ya que esto implica considerar todos los posibles subconjuntos de ítems (combinaciones de ítems). El conjunto de posibles conjuntos de ítems es el conjunto potencia de I y su tamaño es de 2n − 1 (excluyendo el conjunto vacío que no es válido como conjunto de ítems). Aunque el tamaño del conjunto potencia crece exponencialmente con el número de ítems n de I, es posible hacer una búsqueda eficiente utilizando la propiedad "downward-closure" del soporte (también llamada anti-monótona) que garantiza que para un conjunto de ítems frecuente, todos sus subconjuntos también son frecuentes, y del mismo modo, para un conjunto de ítems infrecuente, todos sus super-conjuntos deben ser infrecuentes.

Detección de anomalías


¿Cuáles son los valores atípicos en los datos?
Un valor atípico es una observación que se encuentra a una distancia de otros valores anormales en una muestra aleatoria de una población. En cierto sentido, esta definición deja en manos del analista (o un proceso de consenso) para decidir lo que se considera anormal. Antes de las observaciones anormales puede ser señalado, es necesario para caracterizar las observaciones normales.
Estas dos actividades son esenciales para la caracterización de un conjunto de datos:
·         Examinar la forma global de los datos graficados de características importantes, incluyendo la simetría y las desviaciones de los supuestos.
·         Examinar datos. Estos puntos se refieren a menudo como los valores extremos. Existen dos técnicas gráficas para identificar datos anómalos (diagramas de dispersión y diagramas de caja) junto con un procedimiento analítico para la detección de valores extremos, cuando la distribución es normal.
Construcción de un diagrama de dispersión
El diagrama de caja es una pantalla gráfica útil para describir el comportamiento de los datos en el medio, así como en los extremos de las distribuciones.
El diagrama de caja se utiliza la mediana y los cuartiles inferior y superior (definida como los percentiles 25 y 75). Si el cuartil inferior es Q1 y el cuartil superior es Q2, entonces la diferencia (Q2 - Q1) se llama el rango inter-cuartil o IQ.
Diagrama de dispersión con vallas
Un diagrama de caja se construye dibujando un cuadro entre los cuartiles superior e inferior con una línea continua trazada a través de la caja para localizar la mediana. Las siguientes cantidades (llamadas vallas en ingles fences) son necesarios para la identificación de valores extremos en las colas de la distribución:
·         Valla inferior interna: Q1 - 1.5*IQ
·         Valla superior interna: Q2 + 1.5*IQ
·         Valla inferior externa: Q1 - 3*IQ
·         Valla Inferior externa: Q2 + 3*IQ
Detección de criterios de valores atípicos
Un punto más allá de la valla interior a ambos lados se considera un valor atípico leve. Un punto más allá de la valla exterior se considera un valor atípico extremo.
Ejemplo de valores atípicos en un diagrama de caja.
Ejemplo de un conjunto de datos donde N=90 observaciones, como se muestra a continuación se examina para los valores extremos:
30, 171, 184, 201, 212, 250, 265, 270, 272, 289, 305, 306, 322, 322, 336, 346, 351, 370, 390, 404, 409, 411, 436, 437, 439, 441, 444, 448, 451, 453, 470, 480, 482, 487, 494, 495, 499, 503, 514, 521, 522, 527, 548, 550, 559, 560, 570, 572, 574, 578, 585, 592, 592, 607, 616, 618, 621, 629, 637, 638, 640, 656, 668, 707, 709, 719, 737, 739, 752, 758, 766, 792, 792, 794, 802, 818, 830, 832, 843, 858, 860, 869, 918, 925, 953, 991, 1000, 1005, 1068, 1441
Utilizando una herramienta para graficar como StatFit ó Excel podemos ver el siguiente diagrama de dispersión:

Los cálculos son los siguientes:
·         Mediana = (n+1)/2 el mayor punto de datos = al promedio del 45 o 46 puntos observados = (559 + 560)/2 = 559.5
·         El cuartil inferior = 0.25(N+1) = 0.25*91=22.75 por lo tanto; 411 + 0.75(436-411)=429.75
·         El cuartil de arriba= 0.75(N+1) = 0.75*91 = 68.25 por lo tanto, 739 +0.25(752-739) = 742.25
·         Rango de inter-cuartiles = 742.25 - 429.75 = 312.5
·         Valla inferior interna=429.75 - 1.5 (312.5) = -39.0
·         Valla superior interna = 742.25 + 1.5 (312.5) = 1211.0
·         Valla inferior externa = 429.75 - 3.0 (312.5) = -507.75
·         Valla superior externa = 742.25 + 3.0 (312.5) = 1679.75
Examinando los puntos de la cerca y los datos, un punto (1441) es superior a la valla interior superior y se destaca como un valor atípico leve, no hay valores atípicos extremos.

martes, 14 de diciembre de 2010

Herramienta de Minería de Datos (Pronosticos)

SQL Server Business Intelligent Developer

Los complementos de minería de datos de SQL Server 2008 para Office 2007 proporcionan asistentes y herramientas que facilitan la tarea de extraer información significativa de los datos. Con ellos podrá obtener tendencias y patrones que se encuentran ocultos en datos complejos, visualizar dichos patrones en gráficos y visores interactivos y, por último, generar resúmenes completos y coloridos para presentaciones o análisis comerciales. Puede analizar correlaciones y ejecutar predicciones con los datos almacenados en tablas de Microsoft Office Excel, así como crear y modificar modelos de minería de datos almacenados en una instancia de SQL Server 2008 Analysis Services.

Introducción a la predicción y el análisis

Si ésta es la primera vez que usa la minería de datos, conviene que comience con las Herramientas de análisis de tabla para Excel, que incluyen herramientas fáciles de usar para las tareas siguientes:
·         Analizar los factores que influyen en un resultado
·         Buscar categorías en los datos
·         Rellenar con valores basados en los ejemplos proporcionados
·         Realizar predicciones basadas en una serie
·         Identificar valores potencialmente erróneos en los datos
·         Realizar análisis Y si
·         Identificar requisitos para alcanzar un objetivo especificado
·         Crear una hoja de cálculo que se pueda usar para calcular puntuaciones
·         Analizar patrones de productos que habitualmente se compran juntos.
En este ejemplo vamos a usar la herramienta Pronostico del Add-In de Microsoft  de SQL Server 2008 que usa el algoritmo de series de tiempo de Microsoft para predecir valore futuros basándose en las tendencias de los datos de series temporales existentes en los siguientes meses de una compañía basándose en las condiciones actuales y en otros factores de sus datos.
Ejercicio básico de pronóstico
El objetivo es pronosticar las ventas en Europa y Norteamérica.
En este ejemplo haremos un pronóstico del potencial de compra de bicicletas a partir de un nuevo conjunto de datos de los clientes teniendo en cuenta las características de los actuales compradores de bicicletas en base al siguiente conjunto de datos:

Puntos a considerar
·         Cabe mencionar que esta herramienta utiliza el algoritmo para series temporales de Microsoft.
·         Un dato interesante es que este algoritmo no puede usar las herramientas pronóstico para predecir una fecha.
·         Como podemos ver en la siguiente grafica estos los valores de la tabla muestran las nuevas predicciones, en una columna nueva, al final de la tabla de datos de origen.

·         La grafica contiene dos tipos de línea, la continua es la tendencia en base a los datos descriptivos y la línea punteada muestra la predicción de los datos en base a algoritmos para obtener la inferencia.
·         En algunos casos, la predicción puede no tener tantos segmentos como se solicita, esto significa que los datos eran insuficientes para habilitar el algoritmo para pronosticar hasta ese punto del futuro.
·         La herramienta Pronóstico solamente hará predicciones que cumplan con un umbral mínimo de probabilidad.
·         También hay que observar que no hay etiquetas para valores predichos. Esos valores los podemos agregar en la hoja de cálculo de manera manual.

Breve descripción de proyecto


El proyecto que voy a desarrollar tiene como fin determinar que periodos son los más propicios para publicar el sistema del Catálogo Electrónico (OPAC de CÓDICE)* de la UANL ya que  continuamente se hacen mejoras del sitio, se corrigen los defectos, etc.
Lo que se pretende hacer aplicando la minería de datos es lo siguiente:
1.       Saber cuáles son los mejores periodos del año para publicar el sitio en un ambiente de  producción.
2.       Predecir cuál será la cantidad de usuarios que visitarán el sitio en el siguiente año y/o periodo  posterior en base a la cantidad de visitas del sitio basándonos en años anteriores.
Para esto haremos uso de herramientas como R, Octave, Microsof SQL Server con el add-in de Business Intelligence, además de utilizar la opción de visualización de Google Analytics.
Beneficios
1.       Tener un plan estratégico y saber cuál es el mejor periodo del año para hacer las publicaciones del sitio y así afectar a la cantidad mínima de usuarios.
2.       Saber cuál es el incremento/decremento de la cantidad de usuarios que acceden al sitio del Catálogo Electrónico y tomar decisiones en base a los datos estadísticos.
Nota: El Catálogo Electrónico (OPAC, por sus siglas en ingles Online Public Access Catalog) es la parte web del sistema CÓDICE que sirve para hacer diferentes tipos de búsquedas (Rápida, Alfabética y Avanzada) y recuperar el acervo bibliografico de bibliotecas de la UANL que actualmente están dadas de alta, el cual fue desarrollado por la Dirección General de Informática de la Universidad Autónoma de Nuevo León.