Obteniendo reglas de asociacion con Oracle ODMiner -

Desde la versión 10g, oracle incluye dentro de su base de datos algunas funcionalidades en cuanto a datamining o minería de datos. La minería de datos es un área donde confluyen otras áreas como la estadística, el aprendizaje de máquina, bases de datos, que busca la extracción de conocimiento de gran cantidad de datos almacenados. Para ello, la minería de datos, ha profundizado en el estudio de diversas formas para extraer este conocimiento a saber:

Predicción: con base en datos secuenciales inferir el valor de un dato que no se conoce.

Clasificación: teniendo unas clases definidas y algunos ejemplos, entrenar un modelo de clasificación para que éste luego autónomamente clasifique otros ejemplos con base en lo aprendido.

Clustering o agrupamiento: Técnicas que se diferencian a la clasificación puesto que no se conocen las clases a priori. El objetivo es que el modelo vaya buscando los grupos basados en la semejanza entre los ejemplos. Los ejemplos que son más parecidos tratarán de unirse en un grupo y los menos parecidos tratarán de estar en grupos distintos.

Asociación: Busca hallar reglas que establezcan la asociación entre la ocurrencia o ausencia de determinados eventos.

Y es de este último del que se hará un ejemplo usando la herramienta ODMiner.

Las reglas de asociación son reglas que asocian la presencia de unos eventos con la presencia de otros eventos. El ejemplo mas conocido es la asociación que se descubrió en una tienda de mercados y que estableció que los hombres que compraban pañales el día sábado eran propensos a comprar cerveza. Este conocimiento ayudó a la tienda a definir estrategias para mejorar sus ventas.

Uno de los algoritmos más utilizados (quizá el más utilizado), es el algoritmo a priori, el cual se implementa como algoritmo para extraer reglas de asociación en ODMiner. (Este documento no se extiende en la explicación del algoritmo a priori)

Supongamos que tenemos una tabla que guarda todas las compras hechas durante un determinado periodo

Tabla compras1

idCliente

Fecha

productoComprado

valor

1

01/01/2005

5

15000

1

01/01/2005

2

100000

2

01/01/2005

7

200000

5

02/01/2005

9

10000

1

03/01/2005

6

2000

2

03/01/2005

1

90000

2

03/01/2005

2

100000

3

03/01/2005

1

90000

3

03/01/2005

2

100000

4

04/01/2005

2

100000

 

 

 

las respectivas tablas de clientes y productos :

Tabla clientes

IdCliente

NombreCliente

1

Juan Perez

2

Pedro López

3

Edgar Prieto

4

Arturo Tocarruncho

5

Rubén Sánchez

Tabla Productos

IdProducto

NombreProducto

1

Chocolate

2

Leche

3

Gaseosa

4

Jabón

5

Vino

6

Huevos

7

Galletas

8

Carne

9

Crema dental

La tabla compras muestra el detalle de toas las compras relizadas por determinado cliente. Cada registro de la tabla corresponde con un producto comprado en una fecha determinada por un cliente.

Podemos convertir el contenido de esta tabla en una tabla de la forma.

Tabla compras

IdCliente

Prod1

Prod2

Prod3

Prod4

Prod5

Prod6

Prod7

Prod8

Prod9

1

0

1

0

0

1

1

0

0

0

2

1

1

0

0

0

0

1

0

0

3

1

1

0

0

0

0

0

0

0

4

0

1

0

0

0

0

0

0

0

5

0

0

0

0

0

0

0

0

1

 

Con lo que se indica cuales productos fueron comprados por cada cliente. 1 indica que el cliente compró el producto, 0 indica la no compra del producto.

 

Es precisamente sobre ésta ultima tabla sobre la que vá a actuar el algoritmo para búsqueda de reglas de asociación

 

1 Crear una tabla llamada compras, cuya estructura será similar a la mostrada anteriormente.

Create table compras(

id_cliente number,

prod1 number,

prod2 number,

prod3 number,

prod4 number,

prod5 number,

prod6 number,

prod7 number,

prod8 number,

prod9 number,

prod10 number);

2.poblar la tabla:

Insert into compras values(1,0,0,0,0,0,1,1,1,1,1);

Insert into compras values(2,1,1,1,1,1,0,0,0,0,0);

Insert into compras values(3,1,0,1,0,1,0,1,0,1,0);

Insert into compras values(4,0,1,0,1,0,1,0,1,0,1);

Insert into compras values(5,0,0,1,0,0,1,0,0,1,0);

Insert into compras values(6,1,1,0,1,1,0,1,1,0,1);

Insert into compras values(7,1,0,0,1,0,1,0,0,1,0);

Insert into compras values(8,0,0,1,1,0,1,0,1,0,0);

Insert into compras values(9,1,1,1,0,1,0,1,0,0,1);

Insert into compras values(10,0,0,0,1,1,1,0,1,1,0);

3. Crear el modelo

Seleccionar el menú à Model/Association Rules/ Build…

Dar un nombre al modelo

 

Luego, seleccionar la tabla creada(en este caso, compras), y el correspondiente esquema al que pertenece.

 

Definir el margen de soporte y de confidencia para el algoritmo

Estos parámetros indican el porcentaje mínimo sobre el que se obtienen las reglas. Un margen muy pequeño praticamente generará todas las posible combinaciones de reglas y un margen muy alto posiblemente no genere reglas o reglas que no dicen mucho. Lo importante es hacer un buen balance, puesto que lo que se desea es generar patrones de compra, eventos que son comunes y no compras muy particulares o compras muy generales.

 

 

Como ya tenemos preparada la tabla:

 

Se muestra la configuración de los datos según la tabla: la palabra categorical indica que el 1 y el 0 no son tomados como numeros sino como etiquetas que indican si/no en este caso.

 

Listo, ha sido creado el modelo.

 

4. Luego de tener el modelo, procedemos a obtener las reglas de asociación:

Para esto se debe desplegar la opcion Models/Asocciatio Rules y se selecciona elmodelo creado anteriormente.

La opcion get rules permite generar las reglas del modelo.

 

Una vez se ha oprimido el boton get rules, se pueden ver las reglas

Un ejemplo de una regla generada:

IF PROD3=1 and PROD5=1 THEN PROD1=1

Confidence=1.0

Support=0.3

 

Esta regla se traduce como: quien compra producto 3 y producto 5 entonces también compra el producto 1

Tiene un soporte de 30%

Es decir que el 30% de los registros compran los productos 3 y 5

Y una confidencia del 100%

Es decir que el 100% de los registros del soporte compran el producto1

 

Vemos pues de esta manera que es muy fácil obtener conocimiento de nuestros datos via ODMiner.

Arturo T

arturo_toca at yahoo dot com

No votes yet
Otros links Externos relacionados con este tema: