Gustavo Teixeira Cagnin
Data Mining em Big Data: Apriori+
com Limiar de Correlação
São José do Rio Preto
2015
Gustavo Teixeira Cagnin
Data Mining em Big Data: Apriori+
com Limiar de Correlação
Monografia apresentada ao Departamento ...
Gustavo Teixeira Cagnin
Data Mining em Big Data: Apriori+
com Limiar de Correlação
Monografia apresentada ao Departamento ...
AGRADECIIMENTOS
A Deus
À família e aos amigos
A todos que contribuíram e ajudaram
Que este trabalho possa lhes ser útil de...
“É melhor tentar e falhar que ocupar-se em ver a vida passar. É melhor tentar, ainda que em
vão, que nada fazer. Eu prefir...
RESUMO
O aumento significativo da quantidade de dados criados por sistemas computacionais
culminou em bases de dados com t...
ABSTRACT
The significant increase of data quantity created by computational systems resulted expressive
sizes of databases...
i
LISTA DE ILUSTRAÇÕES
Figura 1: Processo KDD. Adaptado de (HAN; KAMBER, 2011)...............................................
ii
LISTA DE EQUAÇÕES
Equação 1: Complexidade do Apriori tradicional (CHIANG; LU, 2003) .................................8
...
iii
LISTA DE QUADROS
Quadro 1: Ferramentas utilizadas........................................................................
iv
LISTA DE ABREVIATURAS E SIGLAS
JSON JavaScript Object Notation
KDD Knowledge Discovery in Databases
MVC Model-View-Cont...
v
SUMÁRIO
LISTA DE ILUSTRAÇÕES ..............................................................................................
1
CAPÍTULO 1 - Introdução
1.1 Considerações iniciais
Diante do expressivo crescimento de informações dentro e fora da Inte...
2
análise da estrutura dos dados para a geração dos candidatos a serem mantidos nas iterações
do algoritmo (AGRAWAL; SRIKA...
3
O Capítulo 2 contém os principais conceitos relacionados à mineração de dados, limiar
de correlação e big data; bem como...
4
CAPÍTULO 2 – Extração de Conhecimento
2.1 Considerações iniciais
Neste capítulo são apresentados conceitos relacionados ...
5
vi) verificação das regras de associação (pattern evaluation) - avalia se as regras
geradas pela mineração dos dados pos...
6
A transação é uma pequena porção de dados adquirida a partir de uma consulta
realizada no banco de dados. Na mesma são e...
7
O grau de suporte A  B é definido pelo número de itemsets contendo A e B, dividido
pelo número total de itemset. O grau...
8
Na primeira iteração do algoritmo, cada item presente nas tuplas da base de dados D
pertence ao 1-itemset. Inicialmente,...
9
Sabe-se que a ordem de complexidade de (d2
) é menor ou igual ao tempo de
complexidade de (2d-1
), então a complexidade ...
10
Cada conjunto representa um caminho da raiz até a folha. O processo de classificação
começa no nó raiz e vai até a folh...
11
x′
=
3+8+9+13+3+6+11+21+1+16
10
= 9.1 (a)
y′
=
30+57+64+72+36+43+59+90+20+83
10
= 55.4 (b)
Equação 3: Cálculo de x’ e y...
12
de obter uma considerável melhora no desempenho do algoritmo tradicional. Porém, os
autores não apresentaram aspectos d...
13
mudança da inclinação da linha encontrada no ponto p2 do gráfico, será definido o limiar de
distribuição o qual será to...
14
 volume - selecionar quais dados serão retidos, eliminar redundâncias, compactar
dados pouco acessados, e terceirizar ...
15
Além disso, NoSQL fornece mecanismo de acesso de baixo nível aos dados o que permite a
implementação de tarefas em níve...
16
Do ponto de vista de visualização de dados oriundos de big data, a principal finalidade
é representar o conhecimento ad...
17
CAPÍTULO 3 – Prospecção baseada em regras de
associação: Apriori+
em big data
3.1 Considerações iniciais
Neste capítulo...
18
menos frequentes (CHUI et al., 2007). Tal limiar reduz a quantidades de itemsets gerados para
a segunda iteração do alg...
19
item de cada tupla em um array denominado array_info, cujos valores são strings e é feito
também o armazenamento da exi...
20
tende a O(n) quando o número de itemsets tende ao infinito conforme apresentada na Equação
10.
Equação 8: Complexidade ...
21
3.3.1 Estruturas de dados
Na Figura 8 é apresentada a definição, em formato JSON (JavaScript Object
Notation), das prin...
22
A variável array_regras é também um array usada para definir as regras de
associação e armazenar o cálculo de suporte d...
23
3.3.2 Pseudocódigos
Nesta seção são apresentados os pseudocódigos das funções correspondentes aos
passos do algoritmo A...
24
Algoritmo da função calcularLocalTrimming
Entradas:
array_bool, P_FDA, Pt_x, qntd_linha
Procedimento:
Variáveis auxilia...
25
Algoritmo da função gerarItemSets
Entradas:
array_info_bool, array_info_bool_old, array_bool
Procedimento:
Variáveis au...
26
Algoritmo da função calcularThreshold
Entradas:
array_info_bool, PA, C, qntd_linha
Procedimento:
Variáveis auxiliares: ...
27
Algoritmo da função eliminarElementos
Entradas:
array_info_bool, PA, C, qntd_linha
Procedimento:
Para cada n-elemento d...
28
A função definirRegrasDeAssociação estabelece as regras de associação obtidas
através da extração de conhecimento reali...
29
CAPÍTULO 4 – Teste de Desempenho
4.1 Considerações iniciais
Neste capítulo são descritos os testes executados com o alg...
30
eliminar logo após a varredura na base de dados os itemsets não frequentes. A geração de
regras de associação no Aprior...
31
(a) sete atributos (b)onze atributos
Figura 16: Tempo de execução com variação na quantidade de tuplas
4.2.3 Testes par...
32
4.2.4 Testes para comparação da geração de regras de associação
A terceira etapa de teste tem como objetivo comparar a ...
33
CAPÍTULO 5 - Conclusão
5.1 Considerações iniciais
Neste capítulo são apresentadas as conclusões deste trabalho, descrev...
34
A partir dos resultados obtidos, observa-se que o algoritmo proposto neste trabalho é
aplicável em big data para extrai...
35
Referências
AGRAWAL, R.; SRIKANT, R. Fast algorithms for mining association rules in large
databases. In: INTERNATIONAL...
36
GANTZ, J.; REINSEL, D. The Digital Universe in 2020: Big Data, Bigger Digital Shadows,
and Biggest Growth in the Far Ea...
37
SIMOFF, S.; BÖHLEN, M.; MAZEIKA, A. Visual Data Mining: Theory, Techniques and
Tools for Visual Analytics, Springer, 20...
Próximos SlideShares
Carregando em…5
×

TCC-Gustavo-26JaneiroFinal

172 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
172
No SlideShare
0
A partir de incorporações
0
Número de incorporações
14
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

TCC-Gustavo-26JaneiroFinal

  1. 1. Gustavo Teixeira Cagnin Data Mining em Big Data: Apriori+ com Limiar de Correlação São José do Rio Preto 2015
  2. 2. Gustavo Teixeira Cagnin Data Mining em Big Data: Apriori+ com Limiar de Correlação Monografia apresentada ao Departamento de Ciências de Computação e Estatística do Instituto de Biociências, Letras e Ciências Exatas da Universidade Estadual Paulista “Júlio de Mesquita Filho”, como parte dos requisitos necessários para aprovação na disciplina Projeto Final. Orientador: Prof. Dr. Carlos Roberto Valêncio São José do Rio Preto 2015
  3. 3. Gustavo Teixeira Cagnin Data Mining em Big Data: Apriori+ com Limiar de Correlação Monografia apresentada ao Departamento de Ciências de Computação e Estatística do Instituto de Biociências, Letras e Ciências Exatas da Universidade Estadual Paulista “Júlio de Mesquita Filho”, como parte dos requisitos necessários para aprovação na disciplina Projeto Final. Banca Examinadora Prof. Dr. Carlos Roberto Valêncio UNESP – São José do Rio Preto Orientador Profa. Dra. Inês A. Gasparotto Boaventura UNESP – São José do Rio Preto Prof. Msc. Paulo Scarpelini Neto UNESP – São José do Rio Preto São José do Rio Preto Janeiro de 2015
  4. 4. AGRADECIIMENTOS A Deus À família e aos amigos A todos que contribuíram e ajudaram Que este trabalho possa lhes ser útil de alguma forma
  5. 5. “É melhor tentar e falhar que ocupar-se em ver a vida passar. É melhor tentar, ainda que em vão, que nada fazer. Eu prefiro caminhar na chuva a, em dias tristes, me esconder em casa. Prefiro ser feliz, embora louco, a viver em conformidade. Mesmo as noites totalmente sem estrelas podem anunciar a aurora de uma grande realização. Mesmo se eu soubesse que amanhã o mundo se partiria em pedaços, eu ainda plantaria a minha macieira. O ódio paralisa a vida; o amor a desata. O ódio confunde a vida; o amor a harmoniza. O ódio escurece a vida; o amor a ilumina. O amor é a única força capaz de transformar um inimigo num amigo...” Martin Luther King
  6. 6. RESUMO O aumento significativo da quantidade de dados criados por sistemas computacionais culminou em bases de dados com tamanho significativo de terabytes ou até mesmo hexabytes. Além do grande volume, essas bases de dados podem apresentar variação significativa na semântica dos dados, o que reduz o desempenho na extração do conhecimento. Assim sendo, algoritmos baseados em mineração de dados, como é o caso do Apriori, despendem processamento demasiado para extrair informações relevantes. Devido a isso, é impraticável aplicar esse algoritmo em big data a menos que sejam realizadas adaptações, como é o caso do algoritmo Apriori com limiar de correlação, denominado Apriori-LC. Esse algoritmo é uma proposta da literatura de adaptação do Apriori ao estabelecer um limiar de correlação entre os diferentes conjuntos de itens presentes na base de dados e reduzir a quantidade de iterações. A complexidade apresentada pelo algoritmo Apriori-LC é de O(n), enquanto que o Apriori possui no pior caso O(2d ). O objetivo deste trabalho é apresentar proposta de modificação para o algoritmo Apriori-LC, denominado de Apriori+ , e utilizar um limiar diferente na primeira iteração do algoritmo para eliminar itens menos frequentes. O Apriori+ mostrou-se em média 10% e 2,6% mais eficiente, respectivamente, do que o Apriori-LC em termos de desempenho e utilização de memória durante os testes realizados em uma base de dados com um milhão de tuplas armazenada em base de dados baseada em NoSQL. No entanto, o Apriori+ gerou em média 10% menos regras de associação do que o Apriori-LC. Palavras-chave: Big data. Mineração de dados. Apriori. Limiar de correlação, Regras de associação.
  7. 7. ABSTRACT The significant increase of data quantity created by computational systems resulted expressive sizes of databases from terabytes to exabytes. Besides the large volume, these databases can show significant variation of data semantics, which decrease performance in knowledge discovery. Then, algorithms based on data mining such as Apriori, spend exceeding processing for relevant information extraction. Because of this, it is impractical apply this algorithm into big data unless it is carried out adaptations, such as the Apriori algorithm with correlation threshold, named Apriori-LC. This algorithm is an Apriori adaptation, presented by literature, to establish a correlation threshold between the different sets of items presents in the database and to reduce the amount of interactions. Indeed the complexity of algorithm execution is reduced, which makes practicable in big data. The complexity introduced by Apriori-LC is O(n), differently of original Apriori that has exponential complexity O(en ). This work aims to present a modification for Apriori-LC algorithm, named by Apriori+ , and use a different threshold in the first iteration of the algorithm to prune infrequent items. The Apriori+ is on average 10% and 2.6% more efficient, respectively, than Apriori-LC in terms of performance and memory usage during the tests conducted in a million rows database stored in a database based on NoSQL. Otherwise, the Apriori+ has generated on average of 10% less association rules than the Apriori-LC. Keywords: Big data. Data mining. Apriori. Correlation threshold. Association rules.
  8. 8. i LISTA DE ILUSTRAÇÕES Figura 1: Processo KDD. Adaptado de (HAN; KAMBER, 2011).............................................5 Figura 2: Geração de itemsets candidatos e de itemsets frequentes pelo algoritmo Apriori. Adaptado de (HAN; KAMBER, 2011) ......................................................................................7 Figura 3: Representação de uma árvore de decisão. (Adaptado de (CHA; TAPPERT, 2009)) .9 Figura 4: Exemplo de conjunto de dados e representação 2D (HAN; KAMBER, 2011) ........10 Figura 5: Gráfico do limiar de distribuição (CHUI et al. 2007)...............................................13 Figura 6: Representação do teorema de Brewer em diagrama de Venn...................................15 Figura 7: Fluxograma do Apriori+ ............................................................................................18 Figura 8: Definição das principais estruturas de dados do Apriori-LC e do Apriori+ ..............21 Figura 9: Representação das principais estruturas de dados definidas para o Apriori-LC e Apriori+ .....................................................................................................................................22 Figura 10: Pseudocódigo da função lerBaseDeDados..............................................................23 Figura 11: Pseudocódigo da função calcularLocalTrimming ..................................................24 Figura 12: Pseudocódigo da função gerarItemSets ..................................................................25 Figura 13: Pseudocódigo da função calcularThreshold............................................................26 Figura 14: Pseudocódigo da função eliminarElementos ..........................................................27 Figura 15: Pseudocódigo da função definirRegrasDeAssociação............................................27 Figura 16: Tempo de execução com variação na quantidade de tuplas....................................31 Figura 17: Quantidade de memória utilizada com variação na quantidade de tupla................31 Figura 18: Quantidade de regras de associação geradas com variação na quantidade de tupla32
  9. 9. ii LISTA DE EQUAÇÕES Equação 1: Complexidade do Apriori tradicional (CHIANG; LU, 2003) .................................8 Equação 2: Fórmula para cálculo de regressão linear (HAN; KAMBER, 2011).....................10 Equação 3: Cálculo de x’ e y’ (HAN; KAMBER, 2011)..........................................................11 Equação 4: Fórmula do cálculo dos mínimos quadrados (HAN; KAMBER, 2011)................11 Equação 5: Cálculo dos mínimos quadrados (HAN; KAMBER, 2011) ..................................11 Equação 6: Cálculo do limiar de correlação (ANAND; VINODCHANDRA, 2013)..............12 Equação 7: Cálculo do limiar de distribuição (CHUI et al. 2007). ..........................................12 Equação 8: Complexidade da geração dos itemsets frequentes do Apriori-LC (ANAND; VINODCHANDRA, 2013) ......................................................................................................20 Equação 9: Complexidade da geração das regras de associação do Apriori-LC (ANAND; VINODCHANDRA, 2013) ......................................................................................................20 Equação 10: Complexidade do Apriori-LC (ANAND; VINODCHANDRA, 2013)...............20
  10. 10. iii LISTA DE QUADROS Quadro 1: Ferramentas utilizadas.............................................................................................28
  11. 11. iv LISTA DE ABREVIATURAS E SIGLAS JSON JavaScript Object Notation KDD Knowledge Discovery in Databases MVC Model-View-Controller NoSQL Not Only SQL SGBD Sistema de Gerenciamento de Banco de Dados SQL Structured Query Language TI Tecnologia da Informação XML eXtensible Markup Language
  12. 12. v SUMÁRIO LISTA DE ILUSTRAÇÕES ............................................................................................. i LISTA DE EQUAÇÕES .................................................................................................. ii LISTA DE QUADROS ...................................................................................................iii LISTA DE ABREVIATURAS E SIGLAS ..................................................................... iv SUMÁRIO........................................................................................................................ v CAPÍTULO 1 - Introdução............................................................................................... 1 1.1 Considerações iniciais.........................................................................................1 1.2 Motivação e escopo ............................................................................................1 1.3 Objetivos e metodologia .....................................................................................2 1.4 Organização da monografia................................................................................2 CAPÍTULO 2 – Extração de Conhecimento.................................................................... 4 2.1 Considerações iniciais.........................................................................................4 2.2 KDD e Mineração de Dados...............................................................................4 2.3 Algoritmos de prospecção baseados em regras de associação ...........................5 2.3.1 Algoritmo Apriori ...............................................................................................6 2.3.2 Árvore de Decisão ..............................................................................................9 2.3.3 Regressão Linear ..............................................................................................10 2.4 Limiar de Correlação ........................................................................................11 2.5 Big data.............................................................................................................13 2.6 Considerações finais .........................................................................................16 CAPÍTULO 3 – Prospecção baseada em regras de associação: Apriori+ em big data... 17 3.1 Considerações iniciais.......................................................................................17 3.2 Algoritmo Apriori+ ...........................................................................................17 3.2.1 Complexidade ...................................................................................................19 3.3 Aspectos de implementação do Apriori+ e do Apriori-LC................................20 3.3.1 Estruturas de dados ..........................................................................................21 3.3.2 Pseudocódigos ..................................................................................................23 3.3.3 Tecnologias.......................................................................................................28 3.4 Considerações finais .........................................................................................28 CAPÍTULO 4 – Teste de Desempenho .......................................................................... 29 4.1 Considerações iniciais.......................................................................................29 4.2 Estudo comparativo ..........................................................................................29 4.2.1 Base de dados, parâmetros de testes e configuração do hardware..................30 4.2.2 Testes para comparação do tempo de execução ..............................................30 4.2.3 Testes para comparação da memória utilizada................................................31 4.2.4 Testes para comparação da geração de regras de associação........................32 4.3 Considerações finais .........................................................................................32 CAPÍTULO 5 - Conclusão ............................................................................................. 33 5.1 Considerações iniciais.......................................................................................33 5.2 Contribuições....................................................................................................33 5.3 Limitações e Lições Aprendidas.......................................................................34 5.4 Trabalhos Futuros .............................................................................................34 Referências ..................................................................................................................... 35
  13. 13. 1 CAPÍTULO 1 - Introdução 1.1 Considerações iniciais Diante do expressivo crescimento de informações dentro e fora da Internet, sistemas de armazenamento de banco de dados destacam-se nesse cenário com a finalidade de garantir o suporte e a escalabilidade dos dados de maneira consistente, disponível e tolerante a falhas. Espera-se que haja um crescimento de 130 hexabytes para 40.000 hexabytes no período de 2005 a 2020, sendo mais do que 5.200 gigabytes para cada pessoa em 2020. Para sustentar esse crescimento, o investimento gasto em Tecnologia da Informação (TI) terá um aumento de 40%, sendo que os mesmos cobrem desafios que abrangem computação em nuvem, segurança e armazenamento de dados (GANTZ; REINSEL, 2012). Para obter informações a partir dessa quantidade significativa de dados nas mais diversas áreas do conhecimento, como é o caso de mapeamento genético (CREIGHTON; HANASH, 2003), tendências de mercado (ZHANG; ZHOU, 2004) e padrões nos dados, é imprescindível contar com a aplicabilidade de recursos computacionais, entre estes técnicas de análise de dados como é o caso de algoritmos e técnicas para prospecção e análise de dados, também conhecidas como mineração de dados (data mining) (HAN; KAMBER, 2011). 1.2 Motivação e escopo Existem diversos algoritmos na literatura para extração de conhecimento em bases de dados (HAN; KAMBER, 2011). Todavia, cada um possui a sua particularidade e garante uma maneira diferente de analisar as informações. Os algoritmos comumente utilizados são o Apriori (AGRAWAL; SRIKANT, 1994), o FP-Growth (HAN et al., 2000), o Eclat (ZAKI et al., 1997), Árvore de Decisão (CHA; TAPPERT, 2009) e Regressão Linear (HAN; KAMBER, 2011). No entanto, a aplicabilidade desses algoritmos em grande volume de dados consume muito tempo de processamento, o que torna um trabalho dispendioso para esse cenário. Estratégias que utilizam processamento paralelo ou distribuído podem amenizar esse problema (QAMAR; ADIL, 2009, ZHANG et al., 2013), bem como estratégias baseadas em
  14. 14. 2 análise da estrutura dos dados para a geração dos candidatos a serem mantidos nas iterações do algoritmo (AGRAWAL; SRIKANT, 1994) e estratégias que utilizam agrupamento (clustering) de dados (ZHANG et al., 1997; NG; HANS, 2002). Considerando a extração de conhecimento em bases de dados por meio da geração de regras de associação, algoritmos do tipo market-basket, como é o caso do Apriori, destacam- se na procura de padrões presentes na base de dados. A probabilidade é uma das técnicas que pode ser utilizada para melhorar o desempenho do Apriori, uma vez que a ocorrência de um item pode ser expandida para n itens, assim é possível estabelecer um limiar de correlação estatístico, que visa reduzir o número de iterações do algoritmo (ANAND; VINODCHANDRA, 2013), bem como identificar os itens mais frequentes logo na primeira iteração do algoritmo (CHUI et al., 2007). 1.3 Objetivos e metodologia Este trabalho propõe um algoritmo, denominado Apriori+ , que consiste da adaptação do algoritmo Apriori-LC o qual introduz um fator de correlação no Apriori, cuja principal estratégia é correlacionar a probabilidade de um item para n itens (ANAND; VINODCHANDRA, 2013). A adaptação proposta busca atribuir a essa correlação um novo limiar, baseado em Chui et al. (2007), que visa encontrar os itens mais frequentes na primeira iteração do algoritmo Apriori+ e eliminar os menos frequentes, com o intuito de melhorar o seu desempenho e a quantidade de memória alocada, o que torna-o mais adequado para ser aplicado em bases de dados com grande volume, taxa de crescimento e variação de dados. Em nível de validação deste trabalho, o Apriori+ é submetido a testes de desempenho, uso de memória e quantidade de regras de associação geradas com uma base de dados do Censo Americano do ano de 1990 com um milhão de tuplas (UNIVERSITY OF CALIFORNIA, 1990) armazenada no sistema de armazenamento MongoDB (PLUGGE et al., 2010), o qual utiliza o modelo de armazenamento NoSQL (Not Only SQL) (HAN et al., 2011). Essa mesma base de dados também é submetida ao Apriori-LC a fim de analisar comparativamente os resultados obtidos. 1.4 Organização da monografia A escrita deste trabalho está organizada em outros quatro capítulos.
  15. 15. 3 O Capítulo 2 contém os principais conceitos relacionados à mineração de dados, limiar de correlação e big data; bem como uma descrição sucinta dos principais algoritmos de prospecção de regras de associação tradicionais. O Capítulo 3 apresentada o trabalho desenvolvido, descrevendo o fluxograma, bem como as estruturas de dados definidas e as funções referentes à implementação dos passos do algoritmo Apriori+ . O Capítulo 4 detalha os testes realizados e os resultados obtidos com o uso do Apriori+ e do Apriori-LC em uma base de dados real de grande volume em uma determinada configuração de hardware. Por fim, o Capítulo 5 apresenta as contribuições e as limitações do trabalho, bem como as lições aprendidas e discute algumas sugestões de trabalhos futuros para a continuidade do trabalho.
  16. 16. 4 CAPÍTULO 2 – Extração de Conhecimento 2.1 Considerações iniciais Neste capítulo são apresentados conceitos relacionados ao processo de KDD (Knowledge Discovery in Database), dentre eles a mineração de dados na Seção 2.2, a qual é parte importante do processo de KDD. Os principais algoritmos de mineração de dados para extração de conhecimento são detalhados na Seção 2.3. Em seguida, na Seção 2.4, é descrito o conceito de limiar de correlação, seguido das caracterizações sobre big data na Seção 2.5, bem como seus principais desafios e tecnologias para a manutenção do mesmo. Por fim, na Seção 2.6, são apresentadas as considerações finais deste capítulo. 2.2 KDD e Mineração de Dados O processo KDD tem como finalidade extrair conhecimento a partir de técnicas de prospecção de dados, cujo principal objetivo é obter novas informações relevantes e não explícitas. Tal processo é comumente dividido em várias etapas sequenciais (HAN; KAMBER, 2011), mencionadas a seguir: i) limpeza de dados (data cleaning) - remover ruídos e inconsistências presentes na base de dados; ii) integração dos dados (data integration) - múltiplas fontes de dados são integradas em um grande repositório de dados, também conhecido como data warehouse; iii) seleção dos dados (data selection) - são selecionados dados relevantes para a tarefa de análise; iv) transformação dos dados (data transformation) - os dados são transformados e/ou consolidados em formas apropriadas para a mineração ou agregação, para melhorar a aplicabilidade das iterações do algoritmo de mineração de dados; v) mineração dos dados (data mining) - execução do algoritmo de mineração de dados, que visa identificar os padrões baseados em regras de associação;
  17. 17. 5 vi) verificação das regras de associação (pattern evaluation) - avalia se as regras geradas pela mineração dos dados possuem algum interesse relevante; e vii) apresentação do conhecimento (knowledge presentation) - possibilita a visualização dos dados e deve ser diversificada para melhor entendimento dos padrões encontrados. O pré-processamento de dados é compostos pelas etapas (i) até (iv). A prospecção de dados é formada pela etapa (v) e o pós-processamento consiste nas etapas (vi) e (vii), como é ilustrado na Figura 1. Assim, observa-se que o processo KDD descrito consiste em um arcabouço ferramental multidisciplinar, envolvendo diferentes áreas como inteligência artificial, estatística, computação de alto desempenho e visualização de dados, cujo propósito é extrair informações importantes em bases de dados, desde que a qualidade e o acesso aos dados possam ser previamente garantidos pelas etapas do KDD. Figura 1: Processo KDD. Adaptado de (HAN; KAMBER, 2011) 2.3 Algoritmos de prospecção baseados em regras de associação As regras de associação obtidas por meio de um conjunto de dados constituem-se de elementos presentes em uma transação tal que esses elementos impliquem na presença de outros elementos.
  18. 18. 6 A transação é uma pequena porção de dados adquirida a partir de uma consulta realizada no banco de dados. Na mesma são encontrados itens, que quando agrupados formam os itemsets. Para a geração das regras de associação são necessários dois conceitos matemáticos, o suporte que delimita a ocorrência do item na base de dados e a confiança que define o grau de viabilidade da regra de associação. Nesta seção são apresentados os principais algoritmos de prospecção baseados em regras de associação encontrados na literatura: Apriori (AGRAWAL; SRIKANT, 1994), Árvore de Decisão (CHA; TAPPERT, 2009) e Regressão Linear (HAN; KAMBER, 2011). Variações desses algoritmos também foram encontradas na literatura com o objetivo de maximizar seu desempenho (CHUI et al., 2007; WU et al., 2009; SUNEETHA; KRISHNAMOORTI, 2010; ANAND; VINODCHANDRA, 2013). A obtenção de regras associativas a partir dos dados é comumente dividida em duas etapas sequenciais: i) obter os itemsets frequentes a partir dos dados, e ii) gerar, por meio dos mesmos, regras de associações. A geração de regras possui custo computacional relativamente pequeno, já a obtenção dos k-itemsets frequentes não é trivial e é custoso, normalmente com vários acessos de leitura a bases de dados (HAN; KAMBER, 2011). 2.3.1 Algoritmo Apriori O Apriori, um dos tradicionais algoritmos para extração de regras de associações booleanas, consegue obter regras relevantes e com elevado valor contextual a partir de métodos matemáticos (AGRAWAL; SRIKANT, 1994). Este algoritmo utiliza a estratégia de “geração e teste de candidatos” (GTC) que divide cada iteração em duas etapas. A primeira etapa consiste basicamente na geração sucessiva de conjuntos de itens definidos como k-itemset, já na segunda etapa é realizada a seleção e, a partir do suporte, a remoção dos itemsets não frequentes para que assim seja possível a geração das regras de associação por meio do grau de confiança, ambos descritos adiante. Um k-itemset frequente é definido como um itemset composto de k itens, cujos valores de suporte e confiança atendem aos valores informados pelo usuário. São denominados k- itemsets candidatos todos os itemsets gerados a partir da combinação dos (k-1)-itemsets frequentes. No entanto, os candidatos a itemsets não precisam, necessariamente, atender aos valores de suporte e confiança, todavia os itemsets frequentes precisam.
  19. 19. 7 O grau de suporte A  B é definido pelo número de itemsets contendo A e B, dividido pelo número total de itemset. O grau de confiança é dado pelo conceito de probabilidade condicional onde a probabilidade representa que A e B ocorra dado que A ocorreu. Assim, o grau de confiança é calculado pelo número de itemsets contendo A e B, dividido pelo número de itemsets contendo A. Na segunda etapa ocorre o teste dos k-itemsets candidatos. Nessa etapa, o algoritmo remove os itemsets que não atendem aos valores de suporte e confiança mínimos, restando apenas os k-itemsets frequentes. Essa etapa é baseada na observação de que todos os subsets de um (k+1)-itemsets frequentes também devem ser frequentes. Assim, se um k-itemset não é frequente, então o mesmo não pode gerar um (k+1)-itemset frequente. Esta propriedade é de suma importância, uma vez que limita a quantidade de k-itemsets utilizada na iteração seguinte, o que melhora o desempenho do algoritmo. Na Figura 2 é apresentada a geração dos itemsets frequentes a partir da execução do algoritmo Apriori em uma base de dados D. Figura 2: Geração de itemsets candidatos e de itemsets frequentes pelo algoritmo Apriori. Adaptado de (HAN; KAMBER, 2011)
  20. 20. 8 Na primeira iteração do algoritmo, cada item presente nas tuplas da base de dados D pertence ao 1-itemset. Inicialmente, o algoritmo percorre D e conta a quantidade de ocorrências de cada itemset. Supondo que o suporte mínimo seja dois, o algoritmo definirá o conjunto L1 com os possíveis candidatos. Posteriormente, é realizada a remoção de todos os candidatos a itemsets que não satisfaçam ao grau de suporte, e os candidatos restantes são armazenados em C1. Para descobrir os 2-itemsets frequentes, presentes em L2, o algoritmo realiza uma dupla junção entre C1 e obtém a partir de D a contagem de cada 2-itemset, ou seja a geração do C2. A partir dessa contagem o algoritmo remove todos os itemsets pouco frequentes com uso do suporte. É importante ressaltar a premissa Apriori, onde um sub-itemset de um itemset frequente também será frequente, então o novo conjunto de itemsets obtidos através de C2 certamente será frequente. Em seguida, o conjunto C3 é então obtido por meio de uma dupla junção entre L2 e novamente a base de dados D é consultada para a obtenção da ocorrência de cada itemset. A comparação dos candidatos C3 com suporte mínimo é realizada nessa última etapa desse exemplo e através dela obtém-se o 3-itemset, ou seja, L3 itemsets frequentes. O principal problema do Apriori é a necessidade de executar várias leituras na base de dados, pois os graus de suporte e confiança são calculados através da quantidade de itens, obtidos por meio de consecutivas leituras na base de dados, o que resulta no aumento do tempo de execução do algoritmo. De acordo com Chiang e Lu (2003), a complexidade do algoritmo Apriori é O(2d ), sendo d a quantidade de itemsets gerados no decorrer do algoritmo, n a quantidade de tuplas da base de dados D e k o número de leituras em D. A ordem de complexidade é C, apresentado na Equação 1. 𝐶 = ∑ (𝑘𝜏 ∗ |𝐶k| ∗ 𝑛) 𝑑 𝑘=1 𝐶 = 𝑛 ∗ (1 ∗| 𝐶1 | + 2 ∗ | 𝐶2 | + 3 ∗ |𝐶3 | + ⋯ + 𝑘 ∗ |𝐶k|) ∗ 𝜏 = 𝑛 ∗ 𝑑 ∗ 2d-1 ∗ 𝜏 𝑜𝑛𝑑𝑒 𝐶 = ∑ 𝑘 ( 𝑑 𝑘 ) = 𝑑 ∗ 2d-1 𝑑 𝑘=1 Equação 1: Complexidade do Apriori tradicional (CHIANG; LU, 2003)
  21. 21. 9 Sabe-se que a ordem de complexidade de (d2 ) é menor ou igual ao tempo de complexidade de (2d-1 ), então a complexidade O(2d ) é o pior caso de execução no Apriori tradicional, cujo crescimento é exponencial. 2.3.2 Árvore de Decisão Árvores de decisão são comumente utilizadas em KDD e em sistemas de apoio a decisão, pois o seu algoritmo é baseado em possíveis cenários de interesse a ser alcançado de acordo com a decisão tomada (CHA; TAPPERT, 2009). Algoritmos para construir árvores de decisão usam valores discretos presentes na base de dados para formar um sistema de árvores, cujos nós representam os atributos, as folhas representam os rótulos dos atributos e os arcos representam os possíveis valores dos atributos. Há duas propriedades importantes em árvores de decisão: i) a quantidade de nós de uma árvore de decisão com l folhas é 2l-1; e ii) dado que n é o número de arestas, d é o conjunto de nós e c é o número de classes da árvore, então c ≤ l ≤ n. Seja D um conjunto de dados obtido pelo algoritmo por meio de métodos heurísticos, representado por pares de valor-atributo, onde cada atributo possui um possível valor binário de associação, conforme ilustrado na Figura 3(a), sendo que w é um possível cenário alcançado após a ocorrência de determinadas decisões. Figura 3: Representação de uma árvore de decisão. (Adaptado de (CHA; TAPPERT, 2009)) T1 representa uma árvore de decisão, ilustrada na Figura 3(b), onde w1 e w2 são cenários a serem atingidos de acordo com as decisões definidas respectivamente por: (¬C ∧ ¬A) ∨ (C ∧ ¬D ∧ ¬B ∧ A) ∨ (C ∧ ¬D ∧ B) e (¬C ∧ A) ∨ (C ∧¬ D ∧ ¬B ∧ ¬A) ∨ (C ∧ D)
  22. 22. 10 Cada conjunto representa um caminho da raiz até a folha. O processo de classificação começa no nó raiz e vai até a folha. Tal caminho representa as decisões a serem tomadas. 2.3.3 Regressão Linear Algoritmos de regressão linear envolvem uma variável de resposta esperada y e uma variável indicadora x, cuja forma mais simples de regressão é dada pela fórmula ilustrada na Equação 2, onde a variância de y é assumida como constante e b e w são coeficientes de regressão (HAN; KAMBER, 2011). y = b + wx Equação 2: Fórmula para cálculo de regressão linear (HAN; KAMBER, 2011) Por exemplo, x e y são atributos de um conjunto de dados, conforme apresentado na Figura 4(a), e através do mesmo foi obtido um gráfico 2D de distribuição ilustrado na Figura 4(b). Figura 4: Exemplo de conjunto de dados e representação 2D (HAN; KAMBER, 2011) Dado que x’ representa a média dos valores de x e y’ representa a média dos valores de y, tem-se o cálculo de ambos ilustrados na Equação 3 para o conjunto de dados apresentado na Figura 4(a).
  23. 23. 11 x′ = 3+8+9+13+3+6+11+21+1+16 10 = 9.1 (a) y′ = 30+57+64+72+36+43+59+90+20+83 10 = 55.4 (b) Equação 3: Cálculo de x’ e y’ (HAN; KAMBER, 2011) Através da fórmula apresentada na Equação 4, associada a mínimos quadrados, podem ser obtidos valores dentro do intervalo de amostragem do conjunto de dados mostrados na Figura 4(a), de acordo com o cálculo ilustrado na Equação 5. Equação 4: Fórmula do cálculo dos mínimos quadrados (HAN; KAMBER, 2011) Equação 5: Cálculo dos mínimos quadrados (HAN; KAMBER, 2011) Considerando w1 = 3.5 e w0 = 23.6, tem-se que y = 23.6 + 3.5x. Por meio disso, é possível obter um valor aproximado previsível não presente na base de dados. Assim, dado que se quer saber o salário de um empregado com sete anos de experiência, tem-se que y = $ 48.100. 2.4 Limiar de Correlação Anand e Vinodchandra (2013) propuseram um cálculo probabilístico para encontrar associações entre determinados itens presentes na base de dados. O conceito probabilístico definido pelos autores consiste em encontrar um limiar correlacionado com a probabilidade de ocorrência de um item e propagá-lo para n itens por meio da fórmula apresentada na Equação 6. A partir dessa fórmula, Anand e Vinodchandra (2013) adaptaram o algoritmo Apriori, denominado neste trabalho Apriori-LC, com o intuito
  24. 24. 12 de obter uma considerável melhora no desempenho do algoritmo tradicional. Porém, os autores não apresentaram aspectos de implementação computacional dessa proposta e também não conduziram testes em base de dados reais e de grande volume. A fórmula supramencionada é introduzida para remover os candidatos a itens não frequentes no algoritmo Apriori, o que diminui a quantidade de iterações realizadas pelo mesmo. Equação 6: Cálculo do limiar de correlação (ANAND; VINODCHANDRA, 2013) Sendo Pmin a probabilidade mínima e Pmax a probabilidade máxima, referentes a cada itemsets. Deve-se garantir que α + β = 1 e que α representa a média das probabilidades no itemset, ou seja, a soma das probabilidades dividida pela quantidade das mesmas. Assim, C’ é utilizado para remover os itemsets candidatos não frequentes. Com isso, a quantidade de leituras da base de dados necessárias para a geração das regras de associação é reduzida significativamente (ANAND; VINODCHANDRA, 2013). Chui et al. (2007) definiram um limiar para encontrar os itens frequentes de uma base de dados a partir das probabilidades de ocorrência dos itemsets. O método proposto, denominado por estratégia de remoção local (local trimming strategy), consiste em encontrar esse limiar através da soma acumulativa dessas probabilidades, ordenadas em ordem decrescente, e definir assim o suporte mínimo para a geração dos itemsets frequentes de acordo com a fórmula ilustrada na Equação 7 e o gráfico obtido, ilustrado na Figura 5. Esse limiar de distribuição foi proposto pelos autores para resolver o problema da geração do 2- itemset quando o 1-itemset possui grande quantidade de itens. Devido a isso, é necessário considerável carga de processamento para o cálculo das probabilidades dos próximos itemsets frequentes a serem encontrados nas próximas iterações. Equação 7: Cálculo do limiar de distribuição (CHUI et al. 2007). De acordo com a fórmula de limiar de distribuição de Chui et al. (2007), é encontrada a probabilidade para a geração do 1-itemset por meio de uma distribuição acumulada de probabilidades explícita na gráfico da Figura 5. Tal distribuição indica que, a partir da
  25. 25. 13 mudança da inclinação da linha encontrada no ponto p2 do gráfico, será definido o limiar de distribuição o qual será tomado como base para remover os itens não frequentes. Figura 5: Gráfico do limiar de distribuição (CHUI et al. 2007). 2.5 Big data A intensa utilização de sistemas computacionais baseados ou não na Internet culminou no surgimento de bases de dados com grande volume de dados e rápido crescimento, denominadas big data. De acordo com Laney (2001), a ciência em big data pode ser considerada um paradigma de descoberta de informações relevantes. As oportunidades desse novo paradigma consistem em tomada de decisão, interesses governamentais e interpretação sociológica. Em suma, o termo big data aplica-se a informação que não pode ser processada ou analisada por meio de métodos ou ferramentas tradicionais. Soluções obtidas através de big data são ideais quando a necessidade da análise não se restrinja somente a dados isolados. Todavia a análise exploratória do big data consegue alcançar este propósito (EATON et al., 2011). O termo big data pode ser descrito por meio da importância de três escopos, que são volume, velocidade e variedade (LANEY, 2001), denominados 3Vs. De maneira complementar, pode-se também incluir nesse cenário os atributos veracidade e valor (SCHROECK et al., 2012). Laney (2001) propõe soluções para o gerenciamento de dados em cada conceito que constitui a base do big data, conforme descritas a seguir:
  26. 26. 14  volume - selecionar quais dados serão retidos, eliminar redundâncias, compactar dados pouco acessados, e terceirizar o armazenamento dos dados em outros servidores;  velocidade - distribuir os dados em diferentes servidores espalhados geograficamente, estabelecer políticas de caching para os dados, e efetuar balanceamento da latência dos dados por meio de novas rotas para acesso aos mesmos;  variedade - resolver inconsistências de dados, criar um arquivo XML (eXtensible Markup Language) no qual seja definida a semântica dos dados, efetuar gerenciamento de metadados, e propiciar o gerenciamento distribuído de consultas SQL (Structured Query Language). O uso efetivo do big data traz benefícios para as empresas que visam o crescimento no cenário atual de competição e ganho de mercado. Com isso, os executivos das empresas reconhecem o potencial do big data para atender as demandas de crescimento nas suas respectivas áreas de atuação. Por exemplo, o setor público europeu reduziu drasticamente, em 15-20%, os custos administrativos com o apoio de big data. Isso permitiu um ganho de produtividade de 0,5% para a próxima década (MANYIKA et al., 2011). Para tratar os conceitos e dificuldades encontradas em big data, surgiram novos métodos de armazenamento, como é o caso do NoSQL (HAN et al., 2011), que é uma abordagem para gerenciamento de grandes bases de dados distribuídas. Alguns sistemas NoSQL implementam o conceito de entidade-relacionamento e outros não (CHEN; ZHANG, 2014). De acordo com Chen e Zhang (2014), a razão para as plataformas em big data adotarem NoSQL é porque essa abordagem flexibiliza a rigidez das formas normais presentes no modelo entidade-relacionamento. Para armazenar e gerenciar dados não estruturados ou dados não relacionais, o NoSQL emprega diversas abordagens específicas. Inicialmente, o gerenciamento e o armazenamento de dados são separados em duas partes independentes, diferentemente do que ocorre em Sistemas de Gerenciamento de Banco de Dados (SGBDs) relacionais, os quais gerenciam ambas as partes simultaneamente. O modelo da base de dados do NoSQL traz várias vantagens em relação ao modelo relacional. Na parte de armazenamento, também chamada de armazenamento key-value, o NoSQL foca na escalabilidade dos dados com alto desempenho.
  27. 27. 15 Além disso, NoSQL fornece mecanismo de acesso de baixo nível aos dados o que permite a implementação de tarefas em nível de aplicação, ao invés de realizar o tratamento dos dados em procedimentos armazenados em linguagens de alto nível (CHANG et al., 2008). Para tanto, o NoSQL possui uma alta flexibilidade na modelagem dos dados o que torna mais fácil a evolução das aplicações quando há necessidade de mudança no modelo de dados (HAN et al., 2011). Existem diversos sistemas de armazenamento baseados em NoSQL, como o Cassandra (CAPRIOLO, 2011), o MongoDB (PLUGGE et al., 2010) e o CouchDB (ANDERSON et al., 2010); que consistem em sistemas de armazenamento cujo núcleo implementa políticas para lidar com a escalabilidade de grande quantidade de dados. Devido a isso, eles são comumente classificados como horizontalmente escaláveis. Teoricamente, o teorema de Brewer (2012) determina que é, em geral, impraticável para um sistema de computação distribuída oferecer todas as três seguintes características em SGBDs:  consistência - garantir que o dado continue presente mesmo quando um ou mais de seus nós são perdidos;  disponibilidade - garantir acessibilidade dos dados armazenados, juntamente com ao resultado de sucesso ou fracasso na obtenção do mesmo; e  tolerância a falha - garantir que o sistema continue operacional mesmo após uma falha parcial do mesmo. Assim, para a escolha do SGBD mais adequado para big data, sendo esse escalável, é importante que o mesmo atenda pelo menos duas das características supracitadas, conforme exemplificado no diagrama de Venn apresentado na Figura 6. Figura 6: Representação do teorema de Brewer em diagrama de Venn.
  28. 28. 16 Do ponto de vista de visualização de dados oriundos de big data, a principal finalidade é representar o conhecimento adquirido intuitivamente por diferentes tipos de gráficos e garantir que a informação de larga escala com alta complexidade seja facilmente entendida por diversos interessados. As informações que são abstraídas de um conjunto de dados, no qual incluem variáveis de unidade e variáveis de dados analisados, podem ser visualmente agrupadas para gerar gráficos mais sofisticados com diferentes níveis de abstração (SIMOFF et al., 2008). Um exemplo de ferramenta utilizada para apoiar a visualização de big data é a Polaris (STOLTE et al., 2002). O MongoDB é um SGBD escalável que proporciona um ambiente de consulta e inserção de dados eficiente, dando mais ênfase a inserção pois em big data as inserções dos dados devem ser mais rápidas para que o sistema garanta a responsividade almejada. Contudo, a visualização dos dados oriundos de big data não é trivial, pois requer uma quantidade expressiva de consultas nos dados armazenados. Para tanto, é necessário discutir novas estratégias para realizar a visualização de big data, conforme proposto por Heer et al. (2008). Normalmente, na apresentação visual associa-se um texto com uma determinar cor, que representa um determinado padrão de ação encontrado a partir da extração de conhecimento do big data. Pode-se utilizar também pequenos ícones para tornar a visualização mais intuitiva e relevante. A organização espacial dos dados a serem visualizados também depende de um modelo histórico, de uma sequência linear de ícones, denominada linha do tempo, que facilita a navegação entre os elementos formados pela mesma (HEER et al., 2008). 2.6 Considerações finais Neste capítulo foram apresentados os principais conceitos sobre mineração de dados e sobre big data. Foram também apresentados alguns dos principais algoritmos de prospecção de regras de associação, que são Apriori, Árvore de Decisão e Regressão Linear. Adicionalmente, foi apresentado o algoritmo Apriori-LC que adiciona um limiar de correlação ao algoritmo Apriori com o propósito de melhorar o desempenho na obtenção das regras de associação por meio de um conjunto de dados; bem como um limiar de distribuição cujo intuito é encontrar os itens mais frequentes presentes em um conjunto de dados
  29. 29. 17 CAPÍTULO 3 – Prospecção baseada em regras de associação: Apriori+ em big data 3.1 Considerações iniciais Neste capítulo é apresentado o algoritmo Apriori+ , proposto neste trabalho, que propõe adaptar o Apriori-LC (ANAND; VINODCHANDRA, 2013) ao adicionar o limiar de CHUI et al. (2007) para remover na primeira iteração do algoritmo os itens menos frequentes. Tal estratégia torna o Apriori+ otimizado e adequado para ser aplicado a big data, visto que tais limiares possibilitam menos iterações e, consequentemente, menos leituras na base de dados para minimizar os problemas relacionados a desempenho, uso de memória e tempo para a obtenção dos resultados. Na Seção 3.2 é apresentado o algoritmo Apriori+ , ressaltando as semelhanças e diferenças em relação ao algoritmo Apriori-LC. Para facilitar o entendimento, é apresentado o fluxograma de funcionamento do algoritmo Apriori+ . Além disso, nessa seção é realizada uma análise da complexidade do mesmo. Na Seção 3.3 são discutidos os aspectos de implementação dos algoritmos Apriori+ e Apriori-LC, implementados neste trabalho, contendo a definição das estruturas de dados, as técnicas de programação utilizadas, o pseudocódigo das funções mais relevantes e a citação das tecnologias de código-fonte aberto utilizadas. Por fim, na Seção 3.4, são apresentadas as considerações finais deste capítulo. 3.2 Algoritmo Apriori+ O algoritmo proposto Apriori+ tem como objetivo possibilitar a prospecção de dados, em big data. Para isso, consiste de uma adaptação do algoritmo Apriori-LC, cujas semelhanças baseiam-se em encontrar padrões entre os dados da base de dados, ou seja, definir regras de associação às quais são obtidas por meio dos itens frequentes gerados a partir do limiar de correlação (ANAND; VINODCHANDRA, 2013). O Apriori+ adiciona ao Apriori-LC um limiar obtido por meio da estratégia de remoção local (local trimming strategy), que encontra a distribuição acumulada das probabilidades de ocorrências dos itens presentes na base de dados e remove na primeira iteração os itemsets
  30. 30. 18 menos frequentes (CHUI et al., 2007). Tal limiar reduz a quantidades de itemsets gerados para a segunda iteração do algoritmo, o que difere o Apriori+ do Apriori-LC. Ambos algoritmos armazenam de maneira eficaz na memória os dados relevantes que foram encontrados na base de dados armazenada em MongoDB para então realizar cálculos probabilísticos em cada itemset, por meio das estruturas de dados propostas neste trabalho e técnicas de programação utilizadas as quais estão descritas na Seção 3.3. Posteriormente, os itemsets não frequentes são removidos da memória e só então os algoritmos definem as regras de associação entre os itemsets restantes (ANAND; VINODCHANDRA, 2013). Na Figura 7 é apresentado o fluxograma do algoritmo Apriori+ para facilitar o entendimento do mesmo. Salienta-se que apenas o passo 3 do Apriori+ o difere do Apriori-LC. Devido a isso, no Apriori-LC o limiar de correlação do passo 5 é aplicado também no começo da execução do algoritmo, logo após a leitura da base, com a finalidade de encontrar os itens frequentes na base sem gerar os itemsets. Figura 7: Fluxograma do Apriori+ No passo 1 do algoritmo é realizada uma varredura na base de dados armazenada no MongoDB. Durante esse processo, no passo 2, é feito o armazenamento de um determinado
  31. 31. 19 item de cada tupla em um array denominado array_info, cujos valores são strings e é feito também o armazenamento da existência do item de cada tupla em uma matriz de valores booleanos denominada array_bool. Além disso, no passo 2, é armazenada a relação entre cada itemset em um array denominado array_info_bool. Após a leitura da base de dados, no passo 3, são obtidas as probabilidades de ocorrência dos itens da base de dados armazenados na memória. Essas probabilidades são armazenadas em ordem decrescente no array P_FDA e, em seguida, é encontrada a distribuição acumulada das probabilidades. A partir disso, é realizada uma análise nessa distribuição com o intuito de encontrar o ponto no qual a variação entre duas probabilidades é significativa. Esse ponto é atribuído à variável Pt_x do tipo float e representa o limiar que será tomado como base na primeira iteração do algoritmo para eliminar os itens não frequentes. Ao final da eliminação dos itens não frequentes é definido o array_bool. Em seguida, no passo 4, é definido o novo array_info_bool, o qual contém k- itemset a partir do array_bool, obtido no passo 3. Posteriormente, no passo 5, é calculada a probabilidade de um determinado k-itemset, preenchendo o vetor PA[k][n], onde k é a iteração corrente, n é a quantidade de itemsets e o valor de PA varia entre 0 e 1. Nesse passo, também é calculado o limiar de correlação C[k] com base no vetor PA e é usado no passo 6 para remover os itemsets não frequentes. É de fundamental importância que todos os itemsets sejam contados corretamente, devido a isso uma variável do tipo long int é utilizada para tal finalidade. No passo 6 é realizada a remoção dos itemsets não frequentes para todo PA[k][n] < C[k]. Por fim, no passo 8, as regras de associação entre k-itemsets e (k-1) itemsets são estabelecidas tomando como base o limiar de correlação. Salienta-se que o escopo definido pelo fluxograma inicia-se com k=1, sendo que o mesmo representa a quantidade de itens frequentes presentes dentro do itemset, gerados a partir do limiar de Chui et al. (2007) – passo 3. 3.2.1 Complexidade De acordo com Anand e Vinodchandra (2013), a complexidade da geração dos itemsets frequentes é O(n) e a complexidade da geração das regras de associação é O(2n-m+1), representadas respectivamente na Equação 8 e na Equação 9. Então, tem-se que a complexidade geral do algoritmo Apriori-LC e, consequentemente, do algoritmo Apriori+
  32. 32. 20 tende a O(n) quando o número de itemsets tende ao infinito conforme apresentada na Equação 10. Equação 8: Complexidade da geração dos itemsets frequentes do Apriori-LC (ANAND; VINODCHANDRA, 2013) Equação 9: Complexidade da geração das regras de associação do Apriori-LC (ANAND; VINODCHANDRA, 2013) Equação 10: Complexidade do Apriori-LC (ANAND; VINODCHANDRA, 2013) 3.3 Aspectos de implementação do Apriori+ e do Apriori-LC Nesta seção são apresentadas as estruturas de dados definidas neste trabalho para a implementação dos algoritmos Apriori+ e Apriori-LC, bem como as técnicas de programação e as tecnologias utilizadas, e o pseudocódigo das principais funções do algoritmo proposto Apriori+ . A implementação de ambos algoritmos é utilizada nos testes comparativos apresentados no Capítulo 4.
  33. 33. 21 3.3.1 Estruturas de dados Na Figura 8 é apresentada a definição, em formato JSON (JavaScript Object Notation), das principais estruturas de dados definidas neste trabalho para a implementação dos algoritmos Apriori+ e Apriori-LC. var array_info = new Array();// onde cada elemento do array é uma string var array_bool = new Array(); // onde cada elemento do array é um outro array booleano que representa a tupla var array_info_bool = new Array();// onde cada elemento do array é um objeto contendo informações sobre quantidade e itemset var P_FDA = new Array();//onde cada element do array é um objeto contendo a probabilidade de ocorrência de cada item da base de dados var PA = new Array();// onde cada elemento do array é um float que representa a probabilidade de ocorrência dos itemsets em cada iteração do algoritmo e é armazenado no array_info_bool após a execução do passo 5 var array_regras = new Array();// onde cada elemento do array é um float que representa o histórico obtido durante o decorrer do algoritmo e cujo valor é o limiar de correlação dos itemsets Figura 8: Definição das principais estruturas de dados do Apriori-LC e do Apriori+ A variável array_info armazena um array de strings correspondente a informação contida nas tuplas da base de dados. Esse array é preenchido em cada iteração por meio de Busca Binária (CORMEN et al., 2009) com o intuito de inserir o novo elemento de maneira ordenada. A variável array_bool armazena uma matriz booleana que representa a existência ou não de uma informação nas tuplas do banco de dados, devido a isso há uma significativa melhoria de espaço de memória alocado. A variável array_info_bool armazena um array de objetos com informações relacionadas a quantidade de ocorrência do itemset e o itemset propriamente dito, sendo que cada elemento desse array está relacionado ao array_bool, conforme ilustrado na Figura 9. Foi definida também uma variável array_info_bool_old usado para definir as regras de associação. Ela possui a mesma estrutura da variável array_info_bool e armazena um array de objetos da iteração k-1 do algoritmo, bem como a probabilidade associada ao mesmo.
  34. 34. 22 A variável array_regras é também um array usada para definir as regras de associação e armazenar o cálculo de suporte da mesma. A variável PA[k] armazena dados do tipo float correspondentes a uma lista de probabilidades referentes a iteração k do algoritmo e a variável C representa o fator de correlação utilizado para a seleção dos itemsets mais frequentes. A variável qntd_linha armazena a quantidade de tuplas presentes na iteração k do algoritmo, sendo útil para o cálculo das probabilidades armazenadas nas variáveis PA e C. Por fim, a variável P_FDA armazena um array contendo as probabilidades ordenadas referentes a cada itemset, que é tomado como base para obter o limiar de distribuição de Chui et al. (2007). Tal variável é ordenada por meio do método QuickSort (CORMEN et al., 2009). Figura 9: Representação das principais estruturas de dados definidas para o Apriori-LC e Apriori+ Salienta-se que uma vez definido o array_info, o mesmo permanece estático. Diferentemente do array_info_bool e do array_info_bool_old que são atualizados a cada k-iteração do algoritmo. A variável PA também tem seu valor atualizado e é armazenada dentro de array_info_bool.
  35. 35. 23 3.3.2 Pseudocódigos Nesta seção são apresentados os pseudocódigos das funções correspondentes aos passos do algoritmo Apriori+ , representados no fluxograma da Figura 7, bem como uma breve explicação de cada uma delas. Na Figura 10 é apresentado o pseudocódigo da função lerBaseDeDados, correspondente aos passos 1 e 2 do Apriori+ . Essa função realiza a leitura da base de dados armazenada em MongoDB e registra as informações necessárias no array_bool, no array_info e no array_info_bool. Algoritmo da função lerBaseDeDados Entrada array_info, array_bool, array_info_bool, qntd_linha = 0 Procedimento: Para cada tupla do banco de dados Para cada item Armazena o item no array_info caso seja distinto dos já armazenados Define os itemsets no array_info_bool Fim Armazena a existência ou não dos itens da tupla no array_bool qntd_linha++ Fim Saída: Tuplas do banco de dados presentes na memória Figura 10: Pseudocódigo da função lerBaseDeDados Na Figura 11 é apresentado o pseudocódigo da função calcularLocalTrimming correspondente ao passo 3 do Apriori+ . Essa função realiza o cálculo do limiar por meio da distribuição acumulada das probabilidades de ocorrência dos itens encontrados na base de dados, armazenadas no array P_FDA, e através desse é obtido o Pt_x.
  36. 36. 24 Algoritmo da função calcularLocalTrimming Entradas: array_bool, P_FDA, Pt_x, qntd_linha Procedimento: Variáveis auxiliares: prob = new Array() Para cada i elemento do array_bool prob[i] = quantidade de ocorrência do item / qntd_linha Fim Ordena prob pelo método QuickSort de maneira decrescente P_FDA[0] = prob[0] Para cada i elemento de prob, sendo i inicializado com 1 P_FDA[i] = P_FDA[i-1] + prob[i] Fim Para i = (tamanho de P_FDA) – 1 até 1 Se variação de P_FDA[i] com P_FDA[i-1] for relevante Pt_x = P_FDA[i-1] Fim Fim Para cada i elemento de prob Se prob[i] < Pt_x Remove elemento referente a prob Fim Fim Saída: Itens frequentes encontrados na base de dados Figura 11: Pseudocódigo da função calcularLocalTrimming Na Figura 12 é apresentado o pseudocódigo da função gerarItemSets correspondente ao passo 4 do Apriori+ . Essa função tem como objetivo encontrar os itemsets candidatos, gerar o array_bool de cada um deles e atualizar o array_info_bool e o array_info_bool_old.
  37. 37. 25 Algoritmo da função gerarItemSets Entradas: array_info_bool, array_info_bool_old, array_bool Procedimento: Variáveis auxiliares: array_bool_aux Desaloca array_info_bool_old Copie array_info_bool em array_info_bool_old Para cada elemento do array_info_bool Encontre os k-itemsets frequentes Se o k-itemset já está presente no array_info_bool Incremente qntd Senão Adicione o k-itemset em array_info_bool Fim Insere elemento do array_bool em array_bool_aux Desaloca elemento do array_bool Fim Atribui array_bool_aux em array_bool Saída: array_info_bool e array_info_bool_old são atualizados para k-itemset Figura 12: Pseudocódigo da função gerarItemSets Na Figura 13 é apresentado o pseudocódigo da função calcularThreshold correspondente ao passo 5 do Apriori+ . Essa função realiza o cálculo do limiar de correlação bem como as probabilidades associadas a cada itemset e atualiza o array_info_bool, o PA e incrementa o C[k].
  38. 38. 26 Algoritmo da função calcularThreshold Entradas: array_info_bool, PA, C, qntd_linha Procedimento: Variáveis auxiliares: Pmin=1, Pmax=0, totalItens=0, alfa = 0, totalItemset=0 Para cada elemento do array_info_bool Adicione qntd ao totalItens totalItemset++ Fim Para cada elemento do array_info_bool PA[element] = qntd / qntd_linha Se PA[element] > Pmax Pmax = PA[element] Fim Se PA[element] < Pmin Pmin = PA[element] Fim Fim Se cálculo de threshold alfa = totalItemset/ qntd_linha C = (alfa * Pmin) + ((1 - alfa) * Pmin * Pmax) Fim Saída: Probabilidades dos itemsets e limiar de correlação calculados Figura 13: Pseudocódigo da função calcularThreshold Na Figura 14 é apresentado o pseudocódigo da função eliminarElementos correspondente ao passo 6 do Apriori+ . Basicamente, essa função elimina os itemsets não frequentes a partir do limiar de correlação definido no passo anterior e atualiza o array_info_bool.
  39. 39. 27 Algoritmo da função eliminarElementos Entradas: array_info_bool, PA, C, qntd_linha Procedimento: Para cada n-elemento do array_info_bool e do PA Se PA < C Marque elemento do array_info_bool como eliminado Fim Fim Saída: Elementos não frequentes eliminados do k-1-itemset Figura 14: Pseudocódigo da função eliminarElementos Na Figura 15 é apresentado o pseudocódigo da função definirRegrasDeAssociação correspondente ao passo 7 do Apriori+ . Algoritmo da função definirRegrasDeAssociação Entradas: array_info_bool, array_info_bool_old, PA, C Procedimento: Variáveis auxiliares: totalElements = 0 Para cada elemento do array_info_bool totalElements += array_info_bool.qntd Fim Para cada i elemento do array_info_bool Para cada j elemento do array_info_bool_old Se (((array_info_bool[i].qntd / totalElements) / PA[k-1][j]) > C[k-1]) array_info_bool_old[j].itemset  array_info_bool[i].itemset Fim Fim Fim Saída: Regras de associação dos elementos k-1 itemsets com k-itemsets frequentes Figura 15: Pseudocódigo da função definirRegrasDeAssociação
  40. 40. 28 A função definirRegrasDeAssociação estabelece as regras de associação obtidas através da extração de conhecimento realizada pelo Apriori+ e atualiza o array_regras. Essas regras acompanham um coeficiente de confiança aproximado que define o quanto a regra é aplicável. 3.3.3 Tecnologias Para a implementação do algoritmo proposto Apriori+ e do Apriori-LC foram selecionadas ferramentas cuja licença de uso é de código-fonte aberto, conforme mencionadas no Quadro 1. Em especial, a plataforma de programação NodeJS (TEIXEIRA, 2013), baseada na linguagem JavaScript, é escolhida por ser uma linguagem Web com desempenho superior a outras principais linguagens de programação Web existentes (McCUNE, 2011) e o MongoDB é escolhido por ser um sistema específico para armazenamento em big data. Quadro 1: Ferramentas utilizadas Ferramenta Propósito URL da ferramenta JSON (JavaScript Object Notation) Formato de dados de fácil entendimento, interpretado pelo JavaScript http://www.json.org MongoDB Sistema de gerenciamento de banco de dados http://www.mongodb.org MongoDB para NodeJS Framework para conexão com o MongoDB http://mongodb.github.io/node-mongodb-native/ NodeJS Interpretador de código JavaScript que funcionada no servidor http://www.nodejs.org Sublime Text Editor de código-fonte http://www.sublimetext.com 3.4 Considerações finais Neste capítulo foram descritas as principais semelhanças e diferenças do Apriori+ em relação ao Apriori-LC. Adicionalmente, para facilitar o entendimento do algoritmo proposto, foi apresentado o fluxograma de seu funcionamento, bem como foi apresentada uma análise de sua complexidade. Também foram apresentados neste capítulo aspectos de implementação do Apriori+ e do Apriori-LC, em especial, as estruturas de dados definidas, e ferramentas de código-aberto utilizadas e o pseudocódigo de cada função correspondente aos passos do algoritmo proposto. Salienta-se que para viabilizar a manipulação das estruturas de dados para o armazenamento de base de dados com grande volume nos algoritmos Apriori+ e Apriori-LC, neste trabalho são utilizados a técnica Busca Binária e o método QuickSort.
  41. 41. 29 CAPÍTULO 4 – Teste de Desempenho 4.1 Considerações iniciais Neste capítulo são descritos os testes executados com o algoritmo Apriori+ , proposto neste trabalho, com o objetivo de exibir o desempenho obtido em relação a sua escalabilidade, bem como a sua utilização de memória e geração de regras de associação. O estudo realizado é composto por testes comparativos entre os algoritmos Apriori+ e Apriori-LC, com o propósito de explicitar a contribuição deste trabalho. Na Seção 4.2 é apresentado o estudo comparativo realizado, contendo a descrição da base de dados, dos parâmetros de testes e da configuração do hardware utilizados. Além disso, são elencados os resultados dos testes e uma discussão dos resultados obtidos. Por fim, na Seção 4.3, são descritas as considerações finais do capítulo. 4.2 Estudo comparativo Conforme descrito na Seção 2.3 do Capítulo 2, a prospecção de regras de associação pode ser dividida em duas etapas: (i) obtenção dos itemsets frequentes baseada no valor de suporte mínimo; e (ii) geração das regras de associação por meio dos itemsets frequentes obtidos anteriormente. A primeira etapa apresenta o maior tempo computacional, sendo alvo das melhorias propostas pelos algoritmos. Na segunda etapa o tempo computacional depende da quantidade de itemsets frequentes gerados pelos algoritmos. No Apriori-LC, a geração dos itemsets frequentes é baseada por meio de um limiar de correlação, que correlaciona as probabilidades de um item para n-itens presentes na base de dados. Nesse algoritmo, a geração de regras de associação é fundamentada considerando a probabilidade de ocorrência de determinado itemset dividido pelo suporte do mesmo. A regra é definida caso esse valor seja maior que o limiar de correlação obtido através da iteração anterior do algoritmo. No Apriori+ , proposto neste trabalho, a geração dos itemsets frequentes é fundamentada inicialmente por meio de um limiar diferente do Apriori-LC, cujo objetivo é
  42. 42. 30 eliminar logo após a varredura na base de dados os itemsets não frequentes. A geração de regras de associação no Apriori+ é feita da mesma maneira que o Apriori-LC. Assim sendo, os algoritmos Apriori+ e Apriori-LC são avaliados neste trabalho durante todo o seu processo de execução, englobando consulta ao banco de dados no MongoDB, a alocação de memória, a obtenção dos itemsets frequentes e a geração das regras de associação. Os testes são conduzidos neste trabalho em três etapas. A primeira compara o tempo de execução, a segunda compara o uso de memória e a terceira compara a quantidade de regras de associação dos algoritmos Apriori+ e Apriori-LC. Ambos algoritmos levam em consideração o armazenamento da base de dados na memória com o objetivo de melhorar o desempenho dos mesmos, minimizando divergências durante a análise dos resultados obtidos uma vez que o acesso ao dado é realizado diretamente na memória. 4.2.1 Base de dados, parâmetros de testes e configuração do hardware Para a execução das etapas de teste foi utilizada uma base de dados do Censo Americano de 1990 (UNIVERSITY OF CALIFORNIA, 1990) armazenada no MongoDB, com um milhão de tuplas, onze atributos e 81 itens. Adicionalmente, foi considerado suporte maior ou igual a 15% para a geração dos itemsets frequentes e confiança maior ou igual a 60% para a geração das regras de associação. A hospedagem dos algoritmos e a execução dos testes foram realizadas em um microcomputador com um processador Intel Core I5 M 450 (2,4 GHz), 3 gigabytes de memória principal DDR2 e com sistema operacional Linux Debian Wheezy. 4.2.2 Testes para comparação do tempo de execução A primeira etapa de teste tem como objetivo comparar o desempenho dos algoritmos Apriori+ e Apriori-LC quanto a quantidade de tuplas e de atributos na tabela. Na Figura 16(a) e na Figura 16(b) são apresentados os tempos de processamento dos algoritmos com sete e onze atributos na tabela, respectivamente, com variação na quantidade de tuplas. Como pode ser observado na Figura 16(a) e na Figura 16(b), o tempo de execução do Apriori+ e o do Apriori-LC é linear para grandes bases de dados. Ressalta-se que o tempo de execução do Apriori+ apresentou um pouco melhor em relação ao do Apriori-LC, principalmente para bases de dados maiores, representando em média 10,8% mais rápido.
  43. 43. 31 (a) sete atributos (b)onze atributos Figura 16: Tempo de execução com variação na quantidade de tuplas 4.2.3 Testes para comparação da memória utilizada A segunda etapa de teste tem como objetivo comparar o uso da memória do Apriori+ e do Apriori-LC, o que propicia uma análise da escalabilidade de ambos algoritmos. Os testes nesta etapa são análogos aos testes da etapa anterior, ou seja, são utilizados a mesma base de dados e os mesmos parâmetros de configuração. Na Figura 17(a) e na Figura 17(b) é apresentada a quantidade de memória utilizada durante a execução dos algoritmos com sete e onze atributos na tabela, respectivamente, e com variação na quantidade de tuplas. (a) sete atributos (b) onze atributos Figura 17: Quantidade de memória utilizada com variação na quantidade de tupla De maneira similar ao tempo de execução, o uso de memória do Apriori+ e do Apriori- LC é próximo para bases de dados menores para o cenário de teste considerado neste trabalho. Observa-se que o uso de memória pelo Apriori+ apresentou, em média, 2,6% menor a que o Apriori-LC.
  44. 44. 32 4.2.4 Testes para comparação da geração de regras de associação A terceira etapa de teste tem como objetivo comparar a quantidade de regras de associação geradas pelos algoritmos Apriori+ e Apriori-LC. Os testes nesta etapa são análogos aos testes das etapas anteriores, ou seja, são utilizados a mesma base de dados e os mesmos parâmetros de configuração. Na Figura 18(a) e na Figura 18(b) é apresentada a quantidade de regras de associação geradas pelos algoritmos com sete e onze atributos na tabela, respectivamente, e com variação na quantidade de tuplas. (a) sete atributos (b) onze atributos Figura 18: Quantidade de regras de associação geradas com variação na quantidade de tupla A quantidade de regras de associação encontradas pelo algoritmo Apriori+ é, em média, 10% menor do que a quantidade de regras de associação geradas pelo Apriori-LC. A razão disso é que o Apriori+ gera essas regras por meio de uma probabilidade de referência encontrada no conjunto de itemset (CHUI et al., 2007) e, a partir desta, os itens não frequentes são removidos e junto a eles algumas regras, fato esse observado pelos testes conduzidos. 4.3 Considerações finais Nesta seção foram descritos os testes comparativos realizados com os algoritmos Apriori e Apriori+ , com o objetivo de avaliar o desempenho, a utilização de memória e a geração de regras de associação em big data.
  45. 45. 33 CAPÍTULO 5 - Conclusão 5.1 Considerações iniciais Neste capítulo são apresentadas as conclusões deste trabalho, descrevendo as principais contribuições obtidas, bem como as limitações e lições aprendidas observadas. Além disso, são sugeridas propostas de trabalhos futuros para dar continuidade ao trabalho realizado. 5.2 Contribuições A prospecção de dados com a finalidade de extrair regras e conhecimento de base de dados pode ser considerado como a essência do big data, cujo objetivo é auxiliar os interessados na tomada de decisão e interpretação global do funcionamento de determinado negócio ou sistema. Diante disso, algoritmos confiáveis de geração de regras de associação, cuja escalabilidade é viável destacam-se nesse cenário. A principal contribuição deste trabalho é a proposta de um algoritmo aplicável em uma base de dados escalável, denominado Apriori+ , baseado no Apriori-LC (ANAND; VINODCHANDRA, 2013) e no trabalho de Chui et al. (2007), cuja complexidade aproxima- se da linear para bases de dados com grande volume armazenadas em MongoDB. Os testes realizados com Apriori+ e com o Apriori-LC indicaram uma significativa alocação de memória para a execução dos algoritmos. No entanto, a execução do Apriori+ foi aproximadamente 10% mais rápida do que a execução do Apriori-LC em uma base de um milhão de tuplas armazenada no MongoDB. Em relação a quantidade de regras de associação geradas, o algoritmo Apriori-LC obteve maior número do que o Apriori+ , devido ao fato do seu limiar utilizado para encontrar os itens frequentes ser calculado de maneira diferente na primeira iteração. Apesar disso, ressalta-se a redução do uso de memória e do tempo de execução pelo Apriori+ nos testes realizados, embora ambos algoritmos utilizam as mesmas estruturas de dados, as quais foram definidas neste trabalho. Técnicas aprimoradas de inserção e busca também foram escolhidas neste trabalho, no caso, QuickSort e Busca Binária, para melhorar o desempenho dos algoritmos.
  46. 46. 34 A partir dos resultados obtidos, observa-se que o algoritmo proposto neste trabalho é aplicável em big data para extrair regras de associação entre ocorrências dos itens mais frequentes. 5.3 Limitações e Lições Aprendidas As principais limitações do trabalho estão relacionadas a alocação de memória para o armazenamento da matriz boolena, referente ao itemset, bem como o limite de tuplas que podem ser alocadas, restrito ao máximo de 490 milhões devido ao tamanho máximo de bits sequenciais que podem ser alocados no NodeJS. Outra limitação do trabalho está relacionada ao processamento realizado para a contagem de ocorrências de um determinado itemset, pois para cada itemset é realizada uma passagem em um array booleano. Além disso, tanto o Apriori+ quanto ao Apriori-LC geram as regras de associação apenas por meio dos itens mais frequentes encontrados na base de dados. Em relação às lições aprendidas, observou-se que para a prospecção de regras de associação em big data é essencial que se realize a menor quantidade possível de leituras na base de dados e sejam construídas regras de associação com alto valor semântico, todavia itens pouco frequentes podem ser perdidos na geração dos itemsets e com isso reduzir a quantidade de regras de associação extraídas da base de dados alvo. 5.4 Trabalhos Futuros Com base nas lições aprendidas e nas limitações observadas, são elencadas abaixo sugestões de trabalhos futuros para aprimorar o trabalho desenvolvido:  aplicar o MapReduce (DEAN; GHEMAWAT, 2008) que consiste na redução e agrupamento de bases de dados distribuídas para maximizar o desempenho do algoritmo;  clusterizar o algoritmo delegando o trabalho de geração de itemsets frequentes para máquinas posicionadas na mesma rede, utilizando assim computação em nuvem; e  identificar e utilizar estratégias para não remover itens pouco frequentes da base de dados e que possuem alta relação com itens frequentes.
  47. 47. 35 Referências AGRAWAL, R.; SRIKANT, R. Fast algorithms for mining association rules in large databases. In: INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES, 20., 1994, Santiago de Chile. Proceedings... Santiago de Chile: Morgan Kaufmann, 1994. p. 487–499. ANAND, H. S.; VINODCHANDRA, S. S. Applying correlation threshold on Apriori algorithm. In: IEEE INTERNATIONAL CONFERENCE ON EMERGING TRENDS IN COMPUTING, COMMUNICATION AND NANOTECHNOLOGY (ICECCN), 2013, Tirunelveli. Proceedings... IEEE Publisher, 2013, p. 432–435. ANDERSON, C.; LEHNARDT, J.; SLATER, N. CouchDB: The Definitive Guide. First edition, O’Reilly, 2010. BREWER, E. CAP twelve years later: How the “rules” have changed. Computer, v. 45, n. 2, p. 23-29, feb. 2012. CAPRIOLO, E. Cassandra High Performance Cookbook (Quick Answers to Common Problems). Packt Publishing, 2011. CHA, S.; TAPPERT, C. A Genetic Algorithm for Constructing Compact Binary Decision Trees. Journal of Pattern Recognition Research, v. 4, n.1, p. 1–13, feb. 2009. CHANG, F.; DEAN, J.; GHEMAWAT, S.; HSIEH, W.; WALLACH, D.; BURROWS, M.; CHANDRA, T.; FIKES, A.; GRUBER, R. Bigtable: a distributed storage system for structured data, ACM Transactions on Computer Systems, v. 26, n. 2, 2008. CHEN, P.; ZHANG, C. Data-intensive applications, challenges, techniques and technologies: A survey on Big Data. Information Sciences, v. 275, p. 314–347, ago. 2014. CHIANG, C.; LU, S. Distributed Association Mining on Message Passing Systems. In: INTERNATIONAL SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING WITH APPLICATIONS (ISPA), 2010, Taipei. Proceedings... IEEE Publisher, 2010, p. 208 – 214. CHUI, C.; KAO, B.; HUNG, E. Mining Frequent Itemsets from Uncertain Data. In: PACIFIC-ASIA CONFERENCE ON ADVANCES IN KNOWLEDGE DISCOVERY AND DATA MINING (PAKDD), 11, Nanjing. Proceedings… Springer Publisher, 2007, p. 47–58. CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Introduction to Algorithms. Third edition, The MIT Press, 2009. CREIGHTON, C.; HANASH, S. Mining gene expression databases for association rules. Bioinformatics, Oxford, UK, v. 19, n. 1, p. 79-86, jan. 2003. DEAN, J.; GHEMAWAT, S. MapReduce: simplified data processing on large clusters. Communications of the ACM, v. 51, n. 1, p. 107-113, 2008. EATON, C.; DEUTSCH, T.; DEROOS, D.; LAPIS, G.; ZIKOPOULOS, P. Understanding Big Data: Analytics for Enterprise Class Hadoop and Streaming Data. McGraw Hill Professional, 2011.
  48. 48. 36 GANTZ, J.; REINSEL, D. The Digital Universe in 2020: Big Data, Bigger Digital Shadows, and Biggest Growth in the Far East. IDC Publication, December, 2012. Disponível em: <http://www.emc.com/collateral/analyst-reports/idc-digital-universe-united-states.pdf>. Acesso em: dezembro/2014. HAN, J.; HAIHONG, E.; LE, G; DU, J. Survey on NoSQL Database. In: INTERNATIONAL CONFERENCE ON PERVASIVE COMPUTING AND APPLICATIONS (ICPCA), 6, 2011, Port Elizabeth, Proceedings... IEEE Publisher, 2011, p. 363-366. HAN, J.; KAMBER, M. Data mining: concepts and techniques. Third edition, San Francisco: Elsevier, 2011. HAN, J.; PEI, J.; YIN, Y. Mining frequent patterns without candidate generation. In: ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA, 2000, Dallas. Proceedings... Dallas: SIGMOD/PODS, 2000, p. 1–12. HEER, J.; MACKINLAY, J.; STOLTE, C.; AGRAWALA, M. Graphical Histories for Visualization: Supporting Analysis, Communication, and Evaluation. IEEE Transactions on Visualization and Computer Graphics, v. 14, n. 6, p. 1189-1196, dec. 2008. LANEY, D. 3D Data Management: Controlling Data Volume, Velocity, and Variety. Technical report, META Group, February, 2001. Disponível em: <http://blogs.gartner.com/doug-laney/files/2012/01/ad949-3D-Data-Management- Controlling-Data-Volume-Velocity-and-Variety.pdf >. Acesso em: dezembro/2014. MANYIKA, J.; CHUI, M.; BROWN, B.; BUGHIN, J.; DOBBS, R.; Roxburgh, C.; Byers, A. Big data: The next frontier for innovation, competition, and productivity. Technical report, McKinsey Global Institute, May, 2011. Disponível em: <http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_ innovation>. Acesso em: dezembro/2014. McCUNE, R. Node.Js paradigms and benchmarks. Technical Report. University of Notre Dame, 2011. Disponível em: <http://netscale.cse.nd.edu/cms/pub/Edu/ GradOSF11FinalProjects/final.pdf>. Acesso em: dezembro/2014. NG, R. T.; HAN, J.; SOCIETY, I. C. CLARANS: A Method for Clustering Objects for Spatial Data Mining. IEEE Transactions on Knowledge and Data Engineering, v. 14, n. 5, p. 1003–1016, 2002. PLUGGE, E.; HAWKINS, T.; MEMBREY, P. The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing, First edition, Apress, 2010. QAMAR, S.; ADIL, S. H. Comparative analysis of data mining techniques for financial data using parallel processing. In: INTERNATIONAL CONFERENCE ON FRONTIERS OF INFORMATION TECHNOLOGY, 7, 2009, Abbottabad. Proceedings... New York: ACM, 2009. n. 25. SCHROECK, M.; SHOCKLEY, R.; SMART, J.; ROMERO-MORALES, D.; TUFANO, P. Analytics: The real-world use of big data. Executive Report. IBM Institute for Business Value and University of Oxford, 2012. Disponível em: <http://www- 03.ibm.com/systems/hu/resources/the_real_word_use_of_big_data.pdf>. Acesso em: dezembro/2014.
  49. 49. 37 SIMOFF, S.; BÖHLEN, M.; MAZEIKA, A. Visual Data Mining: Theory, Techniques and Tools for Visual Analytics, Springer, 2008. STOLTE, C.; TANG, D.; HANRAHAN, P. Polaris: A System for Query, Analysis , and Visualization of Multidimensional Relational Databases. IEEE Transactions on Visualization and Computer Graphics, v. 8, n.1, p. 52-65, mar. 2002. SUNEETHA, K. R.; KRISHNAMOORTI, R. Advanced Version of Apriori Algorithm. In: INTERNATIONAL CONFERENCE ON INTEGRATED INTELLIGENT COMPUTING (ICIIC), 1, 2010, Bangalore, Proceedings... IEEE Publisher, 2010, p. 238–245. TEIXEIRA, P. Professional Node.js: Building JavaScript-Based Scalable Software. John Wiley & Sons, 2012. UNIVERSITY OF CALIFORNIA. US Census Data (1990) Data Set. UCI Machine Learning Repository, University of California, Irvine, USA, 1990. Disponível em: <http://archive.ics.uci.edu/ml/machine-learning-databases/census1990-mld/>. Acesso em: dezembro/2014. WU, H.; LU, Z; PAN; L.; XU, R.; JIANG, W. An Improved Apriori-based Algorithm for Association Rules Mining. In: INTERNATIONAL CONFERENCE ON FUZZY SYSTEMS AND KNOWLEDGE DISCOVERY (FSKD), 9, 2009, Tianjin, Proceedings... IEEE Publisher, 2009, v. 2, p. 51-55. ZAKI, M.; PARTHASARATHY, S.; OGIHARA, M.; LI, W. New algorithms for fast discovery of association rules. In: INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING, 1997, Newport Beach. Proceedings... Newport Beach: AAAI Press, 1997, p. 283–286. ZHANG, D.; ZHOU, L. Discovering golden nuggets: data mining in financial application. IEEE Transactions on Systems, Man and Cybernetics. New York, v. 34, n. 4, p. 513– 522, nov. 2004. ZHANG, F.; ZHANG, Y.; BAKOS, J. Accelerating frequent itemset mining on graphics processing units. The Journal of Supercomputing, New York, v. 66, n. 1, p. 94-117, oct. 2013. ZHANG, T.; RAMAKRISHNAN, R.; LIVNY, M. BIRCH: A New Data Clustering Algorithm and Its Applications. Data Mining and Knowledge Discovery, v. 1, n. 2, p. 141–182, 1997.

×