220 likes | 291 Views
Algoritmo IPM2 Interaction Pattern Mining. AULA 21 DATA MINING. Problema de Mineração de Traços de Interação. Dados Conjunto de tra ços de interação Um critério de qualificação C= ( comp-min, minsup, maxerror, minscore )
E N D
Algoritmo IPM2 Interaction Pattern Mining AULA 21 DATA MINING
Problema de Mineração de Traços de Interação • Dados • Conjunto de traços de interação • Um critério de qualificação C= (comp-min, minsup, maxerror, minscore) • Determinar todos os padrões maximais p satisfazendo o critério de qualificação C • |p| ≥ comp-min • Sup(p) ≥ minsup com relação a maxerror • Score(p) ≥ minscore
Algoritmos IPM (Interaction Pattern Mining) • Primeiro algoritmo desenvolvido (Mining System-User Interaction Traces for Use Case Models – IWPC 2002) • Padrões não permitem erros de inserção • Técnica Apriori • IPM (Recovering Software Requirements from System-user Interaction Traces – SEKE 2002) • Utiliza busca em largura • Permite erros de inserção • IPM2 (From Run-time behavior to Usage Scenarios: An Interaction-Pattern Mining Approach – ACM SIGKDD 2002) • Utiliza busca em profundidade • Evita multiplas varridas no banco de dados, guardando as listas de localizações (técnica parecida com a do TreeMiner)
Algoritmo IPM2 – Fases principais • Pré-processamento • Elimina repetições • Descoberta de padrões (Mineração) • Minera os padrões sobre o banco de dados pré-processado que verificam o critério de qualificação especificado pelo usuário • Análise dos padrões minerados • Ajuste no critério de qualificação para identificar padrões de interação que realmente correspondem a requisitos funcionais do sistema legado. • Quanto mais longos os traços de execução e quanto mais estrito o critério c mais provável que os padrões minerados correspondam a requisitos funcionais do sistema legado real. • Um usuário com conhecimento do dominio da aplicação deve decidir quais dos padrões minerados correspondem a funcionalidades do sistema legado.
Fase de Pré-processamento • Um traço de interação normalmente contém repetições • 4 5 6 6 6 6 6 6 6 6 7 • Usuário acessou diversas vezes consecutivamente a tela 6 (por exemplo, no software de uma biblioteca, acessou diversas vezes a mesma instância da tela de consulta do catálogo) • Repetições podem impedir que certos padrões interessantes sejam detectados • 4 5 6 7 não é suportado se o MaxError ≤ 4 • Padrão é transformado em 4 5 (8) 6 7 Contador do identificador 6 – armazenado em separado
Fase de Mineração • Geração do conjunto inicial de padrões candidatos de tamanho 2 • Padrão candidato = satisfaz minsup e maxerror • Gerados exaustivamente a partir do banco de dados • Listas de localização são produzidas • Geração de padrões candidatos mais longos • Junta-se padrões de tamanho k com padrões de tamanho 2 • Geração é feita em profundidade no espaço dos padrões. • Construção de lista de localização associada a um padrão candidato
Geração do conjunto inicial de padrões candidatos de tamanho 2 1 2 3 4 1 4 ; (s1,1,2) 4 5 ; (s1,2,3) 1 5 ; (s1,1,3) 4 6 ; (s1,2,4) 1 6 ; (s1,1,4) 4 3 ; (s1,2,5) 5 3 5 6 S1 = 1 4 5 6 3 3 4 5 6 8 1 9 11 23 34 56 32 32 23 35 56 49 32 4 5 3 6 S2 = 2 3 5 6 2 3 3 4 5 8 6 1 9 11 4 34 5 7 8 6 35 56 49 32 4 5 3 6 α = 2
Geração do conjunto inicial de padrões candidatos de tamanho 2 Input: Um alfabeto A, um critério C= (c,sp,e,sc), um conjunto de sequências S Output: Todos os padrões candidatos de tamanho 2 (frequentes com relação a (sp, e). • Vec = vetor de tamanho |A| (cada posição i vai armazenar lista de padrões começando por i) • Para cada traço s em S • Para cada i = 1, ..., (|s| - e – 1) • Para j = i + 1, ... , i + e + 1 • Constrói padrão p = (s[i],s[j]) • Se p não está na lista de Vec(s[i]), • insere p nesta lista • Insere (s,i,j) na lista de localizações de p • Para cada id ε A • Varre os padrões de Vec[i] e elimina aqueles com lista de localizações < sp
Exemplo • A = {1, 2, 3, 4} • S1 = 2 4 3 2 4, S2 = 1 2 4 2 3, S3 = 3 2 4 2 4 • α = 2 , sp = 2 1 3 4 2 2 4 ; (1,1,2) 2 3 ; (1,1,3) 2 2 ; (1,1,4) (1,4,5) 3 2 ; (1,3,4) 3 4 ; (1,3,5) 4 3 ; (1,2,3) 4 2 ; (1,2,4) 4 4 ; (1,2,5) 1 2 ; (2,1,2) 1 4 ; (2,1,3) (2,1,4) (2,2,3) (2,2,5) (2,2,4)
Geração de padrões candidatos mais longos Esquema geral • Results:= ɸ • Para cada id ɛ A • Para cada p ɛ Vec(id) • TempResults = Expand(p) • Results:= Results U TempResults • Results:= Results – {p | p não-maximal} • Retorna Results
Geração de padrões candidatos mais longos {1,2} {2,3} {2,5} {3,5} Expand({1,2}) Expand({2,5}) Expand({2,3}) Expand({3,5}) Results4 Results2 Results3 Results1 Elimina não maximais Resultados
Expand(p={p1,p2,...pk}) • ExtResults:= ɸ • Para cada padrão {pk a} • Combina-se p com (pk,a) obtendo novo padrão p3 • Constrói-se a lista de localizações de p3 • Se p3 é frequente • TempResults:= Expand(p3) • ExtResults:= ExtResults U TempResults • Se sup(p) > sup(p3)% testando se p é maximal • Se |p| ≥ comp-min e score(p) ≥ minscore • Insere p em ExtResults • Caso contrário • Remove p de ExtResults • Se p3 não é frequente • Se |p| ≥ comp-min e score(p) ≥ minscore • Insere p em ExtResults
Construção de lista de localização associada a um padrão candidato Seja erro = k P1 = (a1,...,an) P2 = (an, b) P1 x P2 = (a1,...,an, b) (i, startp1, endp1) ɛ Loc(P1) (j, startp2, endp2) ɛ Loc(P2) • i = j • endp1 = startp2 • endp2 ≤ startp1 + erro + tamanho(P1) Então : (i, startp1, endp2) ɛ Loc(P1 x P2)
P1 P2 ... a1 ... an b Construção de lista de localização associada a um padrão candidato Seja erro = k P1 = (a1,...,an) P2 = (an, b) P1 x P2 = (a1,...,an, b) endp2 endp1= startp2 startp1 Entre as posições startp1 e endp2 no máximo podemos ter posições para os elementos de P1 e para um número de casas correspondente ao erro máximo
Exemplo s1 = 1 3 7 9 11 2 s2 = 2 1 7 9 8 11 4 2 ERRO = 2 P1 = <1, 7, 11 > (1, 1, 5) (2, 2, 6) P2 = < 11, 2 > (1, 5, 6) Testando se (1,1,5) pode ser combinado com (1,5,6) para produzir (1,1,6) startp1+ |P1| + erro = 1 + 3 + 2 = 6 = endp2 Logo (1, 1, 6) pertence a Loc(<1,7,11,2>) (2, 6, 8) Testando se (2,2,6) pode ser combinado com (2,6,8) para produzir (2,2,8) startp1+ |P1| + erro = 2 + 3 + erro = 2 + 3 + 2 = 7 < 8 = endp2 Logo (2, 2, 8) não pertence a Loc (<1, 7, 11, 2> )
Exemplo A = {1,2,3,4}, S = {s1,s2}. S1 = <1,3,2,3,4,3>, s2 = <2,3,2,4,1,3>, compmin= 3, minsup=2, maxError = 1, minscore = 0 1 4 2 3 <3,2> (1,2,3) (2,2,3) <3,3> (1,2,4) (1,4,6) <3,4> (1,4,5) (2,2,4) <1,2> (1,1,3) <1,3> (1,1,2) (2,4,6) <2,1> (2,3,5) <2,2> (2,1,3) <2,3> (1,3,4) (2,1,2) <2,4> (1,3,5) (2,3,4) <4,3> (1,5,6)(2,4,6) <4,1> (2,4,5) <2,3> <3,2> <1,3> <2,4> <3,4> <3,2>, <3,3> <1,3,2> <1,3,3> <1,3,4> (1,1,4) (1,1,3)
Exemplo (Continuação) (1,3,4) (2,1,2) <2,3> <3,2> <3,4> <3,3> s1 = <1,3,2,3,4,3> s2 = <2,3,2,4,1,3> <2,3,2> (2,1,3) <2,3,3> (1,3,6) <2,3,4> (1,3,5) (2,1,4) <4,3> <2,3,4,3> (1,3,6) Densidade (<2,3,4>) = 0,86 score(<2,3,4>) = 1,36
Exemplo (Continuação) (1,3,5) (2,3,4) <2,4> <4,3> s1 = <1,3,2,3,4,3> s2 = <2,3,2,4,1,3> <2,4,3> (1,3,6) (2,3,6) <3,2> <3,4> <3,3> <2,4,3,2> <2,4,3,4> <2,4,3,3>
Exemplo (Continuação) (1,2,3) (2,2,3) <3,2> <2,4> <2,3> s1 = <1,3,2,3,4,3> s2 = <2,3,2,4,1,3> <3,2,3> (1,2,4) <3,2,4> (1,2,5) (2,2,4) <4,3> <3,2,4,3> (1,2,6)(2,2,6) <3,4> <3,2> <3,3> <3,2,4,3,2> <3,2,4,3,4> <3,2,4,3,3> Densidade(<3,2,4,3>) = 0,80, score(<3,2,4,3>) = 1,60
Pós Mineração Identificação de funcionalidades nos padrões minerados • Ajuste dos critérios de qualificação – novas execuções de IPM2 Quanto mais longos forem os traços de interação e mais estrito o critério de qualificação, maior a possibilidade dos padrões minerados corresponderem a funcionalidades do sistema. • Compactação: remoção de padrões que são subpadrões de outros (minerados) • Necessidade de um usuário com conhecimento do domínio da aplicação para decidir quais dos padrões minerados correspondem efetivamente a cenários de uso, a funcionalidades da interface. • A lista de localização dos padrões dentro dos traços de interação são analisadas a fim de se construir o modelo da funcionalidade correspondente ao padrão minerado.
Estudo de caso realizado Sistema legado : LOCIS (Library of Congress Information System http://www.loc.gov • 4 traços de interação com o mesmo usuário • |s1| = 454, |s2| = 185, |s3| = 369, |s4| = 410 • |A| = 26 (26 identificadores de telas) • Critério de qualificação (6, 9, 1, 7) • Comp-min = 6, minsup = 9 , • maxerror = 1, minscore = 7
Referências • M. El-Ramly, E. Stroulia, P. Sorenson: From Run-time behavior to Usage Scenarios: An Interaction-Pattern Mining Approach ACM SIGKDD 2002. • Cypher, A. : Watch What I do: Programming by Demonstration, MIT Press, Cambridge, MA, 1993. • Kapoor, R. Stroulia, E. : Simultaneous Legacy Interface Migration to Multiple Platforms. Proc. 9th Int. Conf. On Human-Computer Interaction., Vol. 1, 51-55, 2001.