Mostrando las entradas con la etiqueta Minería de Datos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Minería de Datos. Mostrar todas las entradas

8 de diciembre de 2010

Optimización de Enjambres de Partículas (PSO) – Método Heurístico

El método de optimización de enjambres de partículas (PSO por sus siglas en inglés Particle Swarm Optimization) es un método de optimización heurístico que fue descrito cerca de 1995 por James Kennedy y Russell C. Eberhart, y este método evoca del comportamiento de los enjambres de insectos en la naturaleza.
En concreto, el enjambre que se pone de ejemplo para explicar este método es uno de abejas, ya que las abejas a la hora de buscar polen buscan la región del espacio en la que existe más densidad de flores, ya que es ahí donde existe más polen. Este método ha sido portado al campo de la computación en forma de algoritmo y se emplea en la actualidad en la optimización de distintos tipos de sistemas.



EL MÉTODO
El espacio de soluciones está formulado como un espacio de dimensión dimension_espacio. En él una población (enjambre) de partículas (insectos) de tamaño n, que actúan de agentes de búsqueda, se mueve en el espacio de soluciones guiadas por los miembros del enjambre que han obtenido las mejores posiciones – mejores valores de la función objetivo f -. El tamaño del enjambre suele oscilar entre 20 y 40 partículas.
Para problemas muy difíciles se eleva a un rango de 100-200.


Cada partícula i se comunica con un entorno o grupo social N(i), Este entorno puede ser parte o todo el enjambre, y puede variar dinámicamente. La estructura de los entornos puede tener una topología anular en la que cada partícula se relaciona con dos, una topología en forma de estrella en la que cada partícula se relaciona con todas. Otra alternativa, Kennedy y Clerc 2006, es fijar el número de partículas k que informan a otras que son elegidas al azar. Estas partículas se renuevan cada vez que mejora la posición grupal.


Cada partícula i guarda información de la mejor posición obtenida Pbest y del mejor valor obtenido por cualquier partícula del entorno Gbest. La información de estas mejores posiciones influye en el comportamiento de la partícula.


Así pues, cada partícula i del enjambre lleva asociados los siguientes vectores:
P[i] posición actual,
V[i] velocidad actual,
Pbest[i] posición de la mejor solución encontrada,
Gbest[i] mejor posición obtenida por cualquier partícula del entorno.

En el gráfico podemos ver un enjambre dentro del cual hay tres grupos o entornos sociales de partículas. Cada grupo tiene su "leader", . El óptimo se encuentra en J.

  
 
Veamos los diferentes pasos de la versión estándar de este algoritmo.


Paso I: Inmersión aleatoria de los insectos en el espacio de búsqueda:
A las partículas inicialmente se les asigna una posición aleatoria, P0[i] ( si el número de variables de la función es dimension_espacio, cada componente será denotada por P0[i][k], k = 1..dimension_espacio2), dentro de su región factible, y así mismo se les asigna una velocidad aleatoria, V0[i], con valores en la región factible, para evitar, en lo posible, que la partícula se "escape" a posiciones no factibles.


Se va a almacenar la mejor solución por la que pasa cada partícula i, que inicialmente se supone f_best[i] = +∞. Análogamente se hace lo mismo con la mejor solución del grupo social al que pertenece i, f_best_grupo[i].


Paso II: Actualizando la velocidad y posición de las partículas:
Tras cada iteración hay que recalcular la velocidad, y actualizar la posición de los insectos a partir de las nuevas velocidades. Así para la partícula i su velocidad es:


V[i]= c_inercia.V[i] + c_confianza1 .rnd1.(Pbest[i]- P[i])+ c_confianza2 .rnd2. (Gbest[i]- P[i]) (*)


Dónde:
c_inercia es un parámetro que representa el efecto de la inercia, controlando el efecto de la velocidad y evitando que crezca indefinidamente;
c_confianza1 y c_confianza2 son parámetros que marcan la confianza de la partícula en sí misma y en su grupo.
Los valores rnd1 y rnd2 son números aleatorios entre 0 y 1.


Es habitual tomar c_inercia=1 y c_confianza1 = c_confianza2 en el rango [0,4]. También lo es tomar estos tres parámetros de forma que su suma sea 1. En la versión estándar de Kennedy y Clerc los valores son: c_inercia = 1/(2+ln2) y c_confianza1 = c_confianza2 = 0.5 + ln2;


La posición de la partícula será: P[i]=P[i]+V[i] (**)


Se han ido contando las infactibilidades, cuyo cómputo se ha tenido en cuenta a la hora de dar valores a los parámetros, procurando que el número de infactibilidades no sea muy elevado.


Paso III: Actualización de las mejores soluciones de cada partícula:
En una matriz Pbest[i] vamos almacenando la mejor posición de cada insecto y en otra matriz, f_best[i], el mejor valor de la función objetivo. Tras cada iteración si la solución obtenida por la partícula i es mejor que la mejor conocida hasta ese momento son actualizadas Pbest[i] y f_best[i]. Así mismo en la matriz Gbest[i] se va almacenando la mejor posición del grupo social o entorno de la partícula i. Tras cada iteración si la solución obtenida por alguna de las partículas de N(i ) es mejor que la mejor conocida hasta ese momento es actualizada Gbest[j],A j E N(i ).

 
De tal manera, el pseudocódigo del algoritmo sería el siguiente:

Inicializar aleatoriamente todos los insectos
Mientras t < max_iter hacer
Para cada insecto i hacer
Calcular velocidad teniendo en cuenta la inercia, su mejor posición y la mejor posición de su entorno social (*)(**);
Calcular posición tras variación velocidad;
Si no factible i HacerFactible;
Obtener funcion_objetivo;
    Si Valor_funcion < f_best[i] entonces actualizar
P_best[i] y f_best[i]
Si Valor_funcion < f_best_grupo[i] entonces actualizar
G_best[j] y f_best_grupo[j] A J E N(i)
t:= t+1

Sistemas Basados en Reglas (rule-based systems)


Los sistemas basados en reglas trabajan mediante la aplicación de reglas, comparación de resultados y aplicación de las nuevas reglas basadas en situación modificada. También pueden trabajar por inferencia lógica dirigida, empezando con una evidencia inicial en una determinada situación y dirigiéndose hacia la obtención de una solución, o bien con hipótesis sobre las posibles soluciones y volviendo hacia atrás para encontrar una evidencia existente (o una deducción de una evidencia existente) que apoye una hipótesis en particular.


Un ejemplo clásico de un sistema basado en reglas es el dominio específico de sistema experto que utiliza reglas de deducción o elecciones.



Algunos ejemplos de sistemas basados en reglas son:

  • Sistema que ayuda a un médico a elegir el correcto diagnóstico basado en un conjunto de síntomas
  • Sistema que selecciona los movimientos tácticos para jugar un juego
  • Sistema para realizar análisis léxico para recopilar e interpretar los programas de ordenador, o en el procesamiento del lenguaje natural
Un sistema basado en reglas típico cuenta con cuatro componentes básicos:

  1. Una lista de reglas o base de reglas, que es un tipo específico de base de conocimientos
  2. Un motor de inferencia o razonador semántico , lo que infiere información o toma de acción basado en la interacción de la entrada y la base de reglas
  3. Memoria de trabajo temporal
  4. Una interfaz de usuario u otra conexión con el mundo exterior a través del cual las señales de entrada y salida son recibidas y enviadas

 

EJERCICIO

Se realiza este ejercicio como práctica de estas reglas utilizando un archivo .csv con el precio histórico de la gasolina desde 1991 hasta octubre de 2010.


El archivo .csv fue cargado a R y se obtuvo la media y los outlier (superior e inferior), donde:
    > mean(gasolina)

          PrecioDlls

       1.671285


    > outlier(gasolina)

          PrecioDlls

       4.114


    >
 outlier(gasolina, TRUE)
PrecioDlls
0.907

  
A partir de esta información generaremos 4 clases, donde:
  1. Si el precio está entre 0.907 (menor) y 1.2891425 (la mitad de la diferencia entre la media y el valor menor) será considerado "Muy Barato".
  2. Si el precio está entre 1.2891425 y 1.671285 (media), será considerado como "Barato"
  3. Si el precio está entre 1.671285 (media) y 2.8926425 (la mitad de la diferencia entre la media y el valor mayor), será considerado como "Caro"
  4. Si el precio está entre 2.8926425 - 4.114 (mayor), será considerado como "Muy Caro".

Estas condiciones son programadas en ifs anidados en un documento de Excel con la siguiente formula, pensando que el precio está en la columna A:


=SI(A2 = 2.8926425,"Muy Caro",SI(A2=1.671285,"Caro",SI(A2=1.2891425,"Barato","Muy Barato")))


Con esta fórmula se obtienen los siguientes resultados:

1.266Muy Barato
1.272Muy Barato
1.321Barato
1.619Barato
1.626Barato
1.703Caro
1.713Caro
1.687Caro
1.704Caro
1.679Caro
1.647Barato
1.601Barato
2.858Caro
2.86Caro
2.849Caro
2.898Muy Caro
2.905Muy Caro
2.864Caro
2.786Caro

 


 

Outlier Detection (Detección de Datos Anómalos)


Un valor anómalo 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 señalar las observaciones anormales, es necesario especificar cuáles son las observaciones normales.

Dos actividades son esenciales para la caracterización de un conjunto de datos:
  1. El examen de la forma global de los datos graficados de características importantes, incluyendo la simetría y las desviaciones de los supuestos.
  2. El examen de los datos de observaciones atípicas que están muy lejos de la mayoría de datos. Estos puntos se refieren a menudo como los valores extremos.
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 el cuartil inferior y superior (definido como el 25 y 75 percentiles). Si el cuartil inferior es Q1 y el cuartil superior es Q2, entonces la diferencia (Q2 - Q1) se llama el rango intercuartil o CI.

Un diagrama de caja se construye dibujando un cuadro entre los cuartiles inferior y superior con una línea continua trazada a través de la caja para localizar la mediana. Las siguientes cantidades (llamadas vallas) son necesarias para la identificación de valores extremos en las colas de la distribución:
  1. Valla interna inferior: Q1 - 1,5 * CI
  2. Valla interna superior: Q2 + 1.5 * CI
  3. Valla exterior inferior: Q1 - 3 * CI
  4. Valla exterior superior: Q2 + 3 * CI
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 utilizando el lenguaje y software R

En lenguaje R tenemos algunas funciones que nos permiten representar a la perfección este tema de anomalías.

Antes que nada generaremos un arreglo de 200 valores aleatorios y los visualizamos utilizando las siguientes instrucciones:
> y=rnorm(200)
> y

Al hacer esto, obtenemos el listado de valores, en este caso:
[1] -1.165853888 -0.955031545 -0.400880160 -0.236351755 0.027450224 0.264035645 1.164070642 -1.009940666 -0.215460271 2.535920209 -0.175013095
[12] 0.912400191 -0.127012647 0.980683431 -0.690220551 1.810227257 -0.083157212 -0.386534007 -0.371779463 1.938586420 -0.488154266 -1.019324308
[23] 2.629907093 -0.394080257 1.100920589 -0.914918369 1.453785890 0.225141840 -0.941417392 -1.996026513 -1.388112092 -0.276942237 -0.856065661
[34] -0.042576800 -0.469769793 0.896523593 -2.142289587 0.106668092 0.311102646 1.619171129 -1.325171756 -0.122146025 -0.295685593 0.129063802
[45] -0.153838305 1.362181677 0.538499106 1.233888968 -2.130028233 0.139157479 0.596722491 1.079477830 -0.263774619 2.191134043 -0.002627052
[56] -0.413915506 -1.007515083 -0.574816473 -0.482291746 -0.721780844 -1.025907628 -1.089927958 1.173801297 -0.082981608 -1.231377050 -2.712315073
[67] 1.445477900 -0.079720081 -0.449926763 -0.154191149 -0.712822448 -0.569890902 0.009564743 -0.338627746 1.701151651 -1.563883739 -1.672801315
[78] 0.385131736 -1.213862200 1.538937810 -1.054074341 -0.006126526 -2.290854019 1.407962777 0.220766548 0.237166688 0.214319836 0.607137111
[89] -0.432512859 -1.261568786 1.275437551 0.835784114 2.464322128 -0.821995974 0.853527852 0.377911273 0.973842634 0.027204201 2.302954317
[100] -0.901702528 -0.192658880 0.213383555 0.719825832 -0.507056210 0.349633367 0.569031224 -1.644298289 -1.030787221 1.992107112 -1.062339006
[111] 0.853355458 -0.179214011 -1.877108775 0.097302843 0.586843297 0.227901153 -1.337615592 0.297757759 0.955298601 -0.300573060 -0.234448821
[122] -0.624419801 -0.879537349 0.668275658 0.335697526 0.587730056 -1.186918987 0.678356750 1.069862688 -1.616948855 0.007750086 -0.279580543
[133] -0.642341536 -0.820946614 -0.775683799 0.027930232 -0.241186576 -0.797547075 0.631171851 0.038633245 -0.700816972 -0.796872053 1.073859628
[144] -0.340740803 0.757887883 1.321953231 -1.164196340 -0.083359570 -0.377654571 0.086319961 1.378932129 0.399875571 0.866069196 -0.346559686
[155] -0.812785484 -0.632942191 -0.337267626 -0.380453425 -0.691912362 -1.781040611 0.340368061 0.984578321 1.728054826 0.940681904 -0.156874246
[166] 1.255180807 0.720627300 -0.157533577 -0.098809027 -0.038628890 -0.187352360 0.828662725 0.259983177 1.528909142 1.200236996 0.508354296
[177] -1.249758744 0.608455200 -0.514451102 0.366154599 -1.579730166 -1.109476643 0.620700948 0.817736081 0.847031104 -0.180082208 0.213875082
[188] -0.148941407 -0.723089183 -0.083476433 1.280877039 0.066672708 -0.133964593 -0.059672883 0.490301296 -0.321303024 -1.107683228 -0.305780755
[199] -1.722887273 0.181962787

Con estos valores utilizaremos la función outlier, definida como aquella que encuentra el valor con la mayor diferencia entre la media y el mismo valor. El uso de esta función es:

outlier(x, opposite = FALSE, logical = FALSE)

donde,
x: Es el arreglo de datos
opposite: Está por default en TRUE y este define el valor opuesto (si el valor más grande tiene la máxima diferencia de la media, da el más pequeño y viceversa)
logical: Está por default en TRUE, da vector de valores lógicos, y la posición del posible valor atípico lo marca como TRUE.

 
Entonces, utilizamos la función de la siguiente manera:
> outlier(y)
[1] -2.712315

Otra función con la cual se cuenta es la de chisq.out.test, en la cual se realiza una prueba de ji cuadrado para la detección de un valor atípico en un vector.

El uso de la función es el siguiente:

chisq.out.test (x, variance =var(x), opposite = FALSE)

donde,

x: es    un vector de valores de datos numéricos.
variance: conocida como la varianza de la población. Si no se da, se estima de la muestra, pero no hay mucho sentido por lo que en tal prueba (que es similar a la puntuación z)
opposite: es un indicador lógico que indica si no se desea comprobar el valor con mayor diferencia de la media, sino todo lo contrario

 
Entonces, ejecutamos lo siguiente:
> chisq.out.test(y)

 
Y como resultado obtendremos:

chi-squared test for outlier

data: y
X-squared = 7.5101, p-value = 0.006135
alternative hypothesis: lowest value -2.71231507343222 is an outlier

 
Como conclusión, ambas pruebas nos arrojan que el valor anómalo es el -2.712315.

 
Se anexa las imágenes de las ejecuciones:

7 de diciembre de 2010

Análisis de la Herramienta de Minería de Datos: Pentaho

Pentaho es una herramienta open-source de business intelligence. Cuenta con versiones para sistemas operativos Linux y Windows. Entre las versiones que cuenta tiene las siguientes:

  • Pentaho BI Suite 3.7 GA
  • Pentaho Data Integration 4.1 GA
  • Pentaho BI Suite for Hadoop 3.7 GA
  • Pentaho Data Integration for Hadoop 4.1 GA
Para esta evaluación fue seleccionada la herramienta Pentahoo BI Suite 3.7 GA para Windows, para la cual se utilizó una computadora con Windows 7, procesador Inter Core 2 Duo de 2.53 GHz y 4 Gb de memoria RAM.

Las versiones están disponibles para descarga como una versión de evaluación de 30 días y al seleccionar la versión deseada se presenta un formulario para indicar datos personales y el propósito de la descarga.


En el sitio no se visualiza información de precios para la adquisición, para esto es necesario contactar al fabricante. 

El proceso de instalación es un poco largo pero al finalizar se cuenta con estas herramientas y documentación:


Para utilizar la herramienta Aggregation Designer primero fue necesario crear un ODBC, que para este ejemplo se utilizó un ODBC que se conecta a SQL SERVER 2008 que se tenía instalado de forma local:

Una vez seleccionado el ODBC se selecciona el archivo de esquema Mondrian, para la cual se basa en la especificación mencionada en el sitio: http://mondrian.pentaho.com/documentation/schema.php



Report Designer funge como un reporteador similar a un Crystal Reports donde se puede crear un informe desde cero o desde un wizard:


En este caso se generó un reporte desde el wizard siguiendo los pasos:
  1. Seleccionar el templeate:
  2. Seleccionar los datos de origen:
  3. Se configura la información a desplegar en el reporte:
  4. Al finalizar tenemos el previo del reporte


Con estas herramientas ademas de tener acceso a importar información desde muchas fuentes también se tiene la posibildad de tratarla para analizarla y desplegarla de la manera nosotros necesitamos.

26 de octubre de 2010

Síntesis del artículo de Agrupamiento de Grafos

En este artículo la Dra. Elisa Scheaffer presenta un estudio realizado sobre el agrupamiento de grafos.
El proceso de identificar la heterogeneidad de los datos no uniformes se le llama agrupamiento clasificación de datos. Los grafos son estructuras formadas por un conjunto de vértices (o nodos) y aristas que conectan un par de nodos.
El agrupamiento de grafos es una tarea de agrupar vértices de la gráfica en grupos de tal manera que queden pocos vértices fuera de los grupos.
El estudio consta de 10 secciones, en donde se abordan desde las definiciones básicas y necesarias para comprender el agrupamiento de grafos, hasta los problemas que quedan inconclusos, las direcciones futuras y las conclusiones sobre este tema.
En la sección 2 de este estudio, se otorgan los términos y definiciones que facilitan el entendimiento del resto del estudio. En esta se proveen términos de complejidad computacional, algoritmos de aproximación, teoría de grafos y cadenas de Markov.
En la sección 3, se comienza con la tarea de definir lo que constituye una agrupación en un grafo y lo que una agrupación debería ser. También se discuten algunas clases especiales de gráficos. En esta sección también se menciona cual es el objetivo de la agrupación, una vez dado un conjunto de datos, este consiste en dividir el conjunto de datos en grupos de tal manera que los elementos asignados a un grupo determinado son similares o conectados en sentido predefinido.
En esta sección se abordan temas de modelos de generación para los grafos agrupados, propiedades deseables del grupo y las representaciones de los grupos para las diferentes clases de grafos, como lo son los grafos bipartitas y los grafos directos.
En la sección 4 se aborda el tema de las mediciones para identificar grupos, en donde primeramente se hace una visión de las medidas de similitud de vértices que pueden ser utilizadas de former manner para identificar el conjunto de un vértice específico o para agrupar todos los vértices en un conjunto de grupos, y luego presentar las posibles cluster fitness measures que sirven para métodos que producen la agrupación mediante la comparación de diferentes grupos y seleccionando uno que cumpla u optimice un criterio determinado.
En la sección 5 se ve el tema de los métodos globales para agrupamiento de grafos, en donde se ve la complejidad del agrupamiento global, cálculo iterativo o en línea de los agrupamientos globales, agrupamiento jerárquico, agrupamiento de división global y agrupamiento aglomerativo global.
En la sección 6 se ven los métodos locales para el agrupamiento en grafos, los cuales son utilizados para encontrar un buen grupo que contiene un vértice especificado o un conjunto de vértices mediante el examen de un número limitado de vértices a la vez, los cuales están en la "vecindad" del vértice especificado.
En la sección 7 se describe la dificultad de comparar, evaluar y realizar el benchmarking de los métodos de agrupamiento de grafos.
En la sección 8 se presentan las aplicaciones del agrupamiento de grafos, aplicaciones en agrupamiento de datos, en redes de información y uso de la información, en sistemas de bases de datos, en redes sociológicas y biológicas, entre otras.
En la Sección 9 se revisan los problemas abiertos y las direcciones futuras, y en la Sección 10 se llega a la conclusión del estudio.

12 de octubre de 2010

Proyecto - Sistemas de soporte para la toma de decisiones

Hola a todos, buen día,

Este blog será el medio por el cual estaré publicando las tareas e investigaciones de la clase de maestría "Sistemas de soporte para la toma de decisiones", así como los avances que se vayan registrando en el proyecto que estará desarrollando para esta materia.

Como opciones para el proyecto estoy contemplando analizar alguno de los siguientes (aunque aún no lo tengo definido, se aceptan sugerencias):


  1. Los datos de las becas otorgadas por el Conacyt, tanto para ejercerlas en México como en el extranjero.
  2. Según los datos publicados por el INEGI, la pobreza que se registra en nuestro país.
  3. Los datos de la alfabetización con la que se cuenta actualmente en Nuevo León, según la SEP de este estado.
  4. El comportamiento en las búsquedas registradas en el sistema OPAC de CÓDICE. (Proyecto Seleccionado)

Reseña del libro de Data Warehouse

Libro: Building a Data Warehouse With Examples in SQL Server
Autor: Vincent Rainardi

Liga del libro en Google Books


Este libro está escrito por un arquitecto y desarrollador de Data Warehouses Vicent Rainardi, quien tiene 12 años de experiencia en TI. Tiene experiencia también en el desarrollo de bases de datos en SQL desde el 2000 y escribe artículos sobre data warehouses para SQLServerCentral.com.

El libro viene adentrándonos en lo que son las data warehouses en sus primeros capítulos, tanto en lo que son éstas, su arquitectura y metodología.

Este libro también es una ayuda en cuanto a la definición de los requerimientos para nuestras data warehouses, tanto funcionales como no funcionales, así como en el modelado de datos.

En cuanto al diseño físico de la base de datos también nos explica Vicent Rainardi las consideraciones que debemos tener en el almacenaje de la información, en la configuración y normalización de la Base de Datos, así como en el uso de índices y vistas.

Dentro de este libro también encontraremos las guías para la extracción de información usando los SSIS (SQL Server Integration Services) o desde archivos de texto, Bases de datos relacionales, entre otras. Además de información sobre el llenado del data warehouse, sobre el cómo asegurar la calidad de los datos.

También, dentro del capítulo 11 de este libro se viene hablando sobre cómo generar reportes desde el data warehouse, en él se explica el Wizard para la generación de reportes, el uso apropiado de parámetros, del layout del reporte, el agrupamiento, ordenación y filtrado de información, entre otros.

En el resto de los capítulos se hace mención sobre cómo administrar las data warehouses, cómo usar estos data warehouses para Business Intelligence, así como las pruebas que se pueden aplicar a las data warehouses.

En general este libro parece ser una excelente guía para la generación de data warehouses en SQL Server 2005, desde su concepción hasta su administración.