Algoritmo Apriori
Algoritmo Apriori
Algoritmo Apriori
INGENIERÍA EN SISTEMAS
TÉCNICAS DE SIMULACIÓN
TRABAJO AUTÓNOMO #1
Algoritmo Apriori
ESTUDIANTE:
MERO ESPINAL ALEXANDER JOEL
CATEDRÁTICO:
ING. FABRICIO RIVADENEIRA
El algoritmo a priori fue propuesto en 1994 por Agrawal y Srikant. Esté diseñado
para operar sobre bases de datos que contienen transacciones (por ejemplo, colecciones
de artículos comprados por consumidores o detalles sobre la frecuentación a un sitio web).
Cada transacción es vista como un conjunto de ítems. Dado un valor de un umbral C, el
algoritmo a priori identifica todos los conjuntos de ítems que son subconjuntos de al
menos C transacciones en la base de datos. A priori utilizada un enfoque "bottom up",
donde subconjuntos frecuentes son ampliados por un ítem a la vez (este paso se conoce
como generación de candidatos) y grupos de candidatos son validados contra los datos.
El algoritmo termina cuando no se pueden encontrar más ampliaciones exitosas de los
conjuntos previos. Apriori utiliza una búsqueda en anchura y un Árbol de Merkle para
almacenar el conjunto de ítems candidatos eficientemente. Genera conjuntos de ítems
candidatos de tamaño k a partir de conjuntos de ítems de tamaño k − 1, luego poda los
candidatos que tienen un subpatrón infrecuente. Según el lema de clausura hacia debajo,
el conjunto candidato contiene todos los conjuntos frecuentes de tamaño k. Luego de este
paso, escanea la base de datos para determinar los conjuntos de ítems frecuentes entre los
candidatos.
Desarrollo
Para evaluar la calidad de una regla de asociación, se suelen emplear dos medidas:
soporte (o cobertura) y confianza (o precisión). El soporte de una regla se define como el
número de instancias que la regla predice correctamente. Por otra parte, la confianza mide
el porcentaje de veces que la regla se cumple cuando se puede aplicar, es decir, cuando
se cumple su antecedente.
Reglas de Asociación.
En minería de datos y aprendizaje automático, 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.
En general no es difícil extraer las reglas a partir de las bases de datos, el detalle
(y aquí esta el problema) es que es muy costoso computacionalmente, tanto que pudiese
ser imposible de generarlas para una base de datos con muchísimos productos, sin mas
detalle, imaginemos que tenemos una base de datos con solo 10 productos (tomemos en
cuenta que una departamental como walmart debe de tener miles en su inventario),
entonces para extraer las reglas debemos hacer combinaciones de estos productos, a decir,
para 10 productos tendremos 1024 posibles reglas (estas son las posibles combinaciones
entre 10 productos de diversos tamaños) ahora si tuviésemos 20 entonces seria 1,048,576
posibles combinaciones, y esto es el problema de los algoritmos con complejidad
exponencial.
La siguiente imagen muestra a mayor detalle lo que intento explicar para cinco productos
a decir :{a,b,c,d,e}
Es por ello que se usa la regla anti monotona para la poda, que nos dice en pocas
palabras: si un conjunto es infrecuente, entonces todos los conjuntos en donde este último
se encuentre tambien seran infrecuentes,es decir, si tenemos al conjunto {A,B} y este es
infrecuente, entonces {A,B,C} , {A,B,E}, {A,D,B,E} tambien seran infrecuentes por
contener a A y B en ellos. Entonces ignoraremos a todos estos, la imagen siguiente
muestra un ejemplo visual:
La forma de generar las reglas de asociación consta de dos pasos:
Ejemplo de a priori
Bien ahora entendiendo esto pues manos a la obra, tomemos el siguiente ejemplo
Bien el primer paso es generar las combinaciones frecuentes, entonces, digamos que
queremos un soporte superior al 50%.
Entonces busquemos dichos items, primero se parte de lo individual, es decir, para cada
articulo se cuenta su frecuencia:
Cerveza 3
Pan 4
Refresco 2
Pañales 5
Leche 4
Huevos 1
Café 1
Para nuestro ejemplo tenemos 5 transacciones, entonces tenemos que para cerveza su
soporte es:
Soporte Cerveza = 3 / 5 = 0.6, es decir, 60% , bien calculando los demás productos
tendremos la siguiente información:
Cerveza 60.00%
Pan 80.00%
Refresco 40.00%
Pañales 100.00%
Leche 80.00%
Huevos 20.00%
Café 20.00%
Entonces tenemos nuestros primeros conjuntos frecuentes que son (su soporte es
superior al 50%):
Cerveza,Pañales
Pan,Pañales
Pan, Leche
Pañales, Leche
Ahora, generaremos item de tres conjuntos, a partir de los conjuntos generados
anteriormente y tenemos
Bien ahora procederíamos a generar los items de cuatro a decir solo seria
Pan,Pañales,Leche Cerveza y como tiene un soporte del 20% entonces aquí terminamos
de generar nuestros conjuntos frecuentes y obtuvimos:
Pan,Pañales,leche
Cerveza,Pañales
Pan, Pañales
Pan, Leche
Pañales, Leche
tomemos a Pan,Pañales => Leche y tenemos 3 / 4 que da una confianza del 75% en
donde 3 = (repeticiones de pan,pañales, leche) y 4 = (repeticiones de pan, pañales)
y procederemos con calcular todas las reglas y aquellas que pasen serán las que
tomaremos.
Limitaciones de apriori
El proceso de generación de candidatos en el algoritmo apriori genera un número
grande de subconjuntos. Exploración de conjuntos de forma bottom-up encuentra
cualquier subconjunto maximal solo después de todos los de sus
subconjuntos propios. Algoritmos posteriores como Max-Miner trata de identificar el
conjunto maximal de ítems frecuentes sin enumerar sus subconjuntos, ejecutan "saltos"
en el espacio de búsqueda en vez de una estrategia puramente bottom-up.
Conclusiones
Se puede decir que a el algoritmo a priori está basado en reglas asociativas,
este algoritmo se encarga de crear subconjuntos a partir de las reglas, también
se puede decir que hay una regla en la que permite excluir ciertos subgrupos
de conjuntos, ya que si se encuentra una variable dentro de estas se eliminan.
Podemos decir que el algoritmo a priori no tiene limes al crear subconjuntos
ya que dependiendo de los datos este mezcla y crea estos subconjuntos.
Bibliografía
http://www.rcim.sld.cu/revista_18/articulos_htm/mineriadatos.htm
http://www.rcim.sld.cu/revista_18/articulos_htm/mineriadatos.htm
http://dis.unal.edu.co/profesores/jgomez/courses/data_mining/Mineria.pdf
www.cenatav.co.cu/doc/RTecnicos/RT%20SerieGris_016web.pdf
http://ferminpitol.blogspot.com/2014/05/reglas-de-asociacion-algoritmo-apriori.html