uma abordagem bigdata para encontrar sub-conjuntos de itens frequentes mediante mapreduce no hadoop

10
Encontrando Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop Juan Gabriel Colonna 12/15/13 1 Introdu¸ ao Este trabalho consiste na implementa¸c˜ ao de uma t´ ecnica de minera¸c˜ ao para encontrar subconjuntos de itens frequentes em grandes conjuntos de dados uti- lizando o modelo Map-Reduce. Este modelo foi desenvolvido para processar grandes conjuntos de dados em paralelos sobre arquiteturas de clusters [3]. A Arquitetura Map-Reduce baseia-se no uso de computadores simples, tais como os conectados em rede mediante ethernet, possibilitando o intercambio de in- forma¸c˜ ao entre eles. Para o processamento utiliza duas fun¸c˜ oes principais, a fun¸ ao Map que transforma os dados de entrada em uma palavra chave e um valor da forma < key,value > e a fun¸c˜ ao Reduce que utilizando o value para somar as ocorrˆ encias das palavras chaves (ou keys ). A forma de modelar um problema mediante Map-Reduce pode ser aplicado a arios m´ etodos de aprendizagem de m´ aquina tais como os explicados por Chu et al. [1]. Mas nossa abordagem foi baseado no trabalho pr´ evio de Cortez et al.[5] com duas diferen¸cas. A primeira diferen¸ca ´ e o conjunto de dados utilizados, que no meu caso utilizei a cole¸c˜ ao F orestF ires 1 . Escolhi este dataset por que inclui dados de um problema ambiental amplamente abordado nas aplica¸c˜ oes de monitoramento que utilizam Redes de Sensores. A segunda diferen¸ ca ´ e a forma em que s˜ ao gerados os keys da fun¸ ao Map. Diferente de Cortez et al.[5] eu utilizei subconjuntos frequentes especificando o tamanho m´ aximo poss´ ıvel e n˜ ao pares frequentes. Finalmente o problema estudado neste trabalho foi definido como: dado um conjunto de dados (ou dataset), separado por instancias (linhas), determinar os subconjuntos de itens que aparecem com mas frequˆ encias em todas as instancias. Asfun¸c˜ oes Map e Reduce foram implementadas na linguagem python e os teste foram executados em uma plataforma Hadoop instalada localmente 2 .A ferramenta Hadoop provˆ e a plataforma Map-Reduce permitindo ao usu´ ario criar asfun¸c˜ oes pr´ oprias Map e Reduce [4]. O Hadoop utiliza um sistema de arquivo distribu´ ıdo e implementa, de forma transparente para o usu´ ario, a fun¸ ao que ordena os keys. No arquivo instalando haddop no ubuntu.txt inclui uma guia de instala¸ ao e configura¸ ao do Hadoop no Ubuntu linux 12.04. 1 http://archive.ics.uci.edu/ml/datasets/Forest+Fires 2 http://hadoop.apache.org/ 1

Upload: ufam-universidade-federal-do-amazonas

Post on 13-Jul-2015

358 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

Encontrando Sub-conjuntos de itens frequentes

mediante MapReduce no Hadoop

Juan Gabriel Colonna

12/15/13

1 Introducao

Este trabalho consiste na implementacao de uma tecnica de mineracao paraencontrar subconjuntos de itens frequentes em grandes conjuntos de dados uti-lizando o modelo Map-Reduce. Este modelo foi desenvolvido para processargrandes conjuntos de dados em paralelos sobre arquiteturas de clusters [3]. AArquitetura Map-Reduce baseia-se no uso de computadores simples, tais comonos conectados em rede mediante ethernet, possibilitando o intercambio de in-formacao entre eles. Para o processamento utiliza duas funcoes principais, afuncao Map que transforma os dados de entrada em uma palavra chave e umvalor da forma < key, value > e a funcao Reduce que utilizando o value parasomar as ocorrencias das palavras chaves (ou keys).

A forma de modelar um problema mediante Map-Reduce pode ser aplicado avarios metodos de aprendizagem de maquina tais como os explicados por Chu etal. [1]. Mas nossa abordagem foi baseado no trabalho previo de Cortez et al.[5]com duas diferencas. A primeira diferenca e o conjunto de dados utilizados,que no meu caso utilizei a colecao ForestF ires1. Escolhi este dataset por queinclui dados de um problema ambiental amplamente abordado nas aplicacoes demonitoramento que utilizam Redes de Sensores. A segunda diferenca e a formaem que sao gerados os keys da funcao Map. Diferente de Cortez et al.[5] euutilizei subconjuntos frequentes especificando o tamanho maximo possıvel e naopares frequentes.

Finalmente o problema estudado neste trabalho foi definido como: dado umconjunto de dados (ou dataset), separado por instancias (linhas), determinar ossubconjuntos de itens que aparecem com mas frequencias em todas as instancias.

As funcoes Map e Reduce foram implementadas na linguagem python e osteste foram executados em uma plataforma Hadoop instalada localmente 2. Aferramenta Hadoop prove a plataforma Map-Reduce permitindo ao usuario criaras funcoes proprias Map e Reduce [4]. O Hadoop utiliza um sistema de arquivodistribuıdo e implementa, de forma transparente para o usuario, a funcao queordena os keys. No arquivo instalando haddop no ubuntu.txt inclui umaguia de instalacao e configuracao do Hadoop no Ubuntu linux 12.04.

1http://archive.ics.uci.edu/ml/datasets/Forest+Fires2http://hadoop.apache.org/

1

Page 2: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

2 Testes rapidos

O objetivo desta secao e explicar como executar rapidamente alguns testes comas funcoes Map e Reduce, sem muito detalhe do funcionamento, para poder teruma visualizacao sobre a entrada e a saıda. Nas proximas secoes continuareicom a explicacao detalhada.

Este relatorio e acompanhado de quatro scripts: mapper.py, reducer.py, re-ducer teste.py e menu.sh. Para poder executar todos eles e necessario primeirodar permissao de execucao a cada um, que pode ser feito num terminal exe-cutando dentro da pasta dos arquivos sudo chmod a+x mapper.py re-ducer teste.py reducer.py menu.sh. Para executar tais testes e utilizadauma base menor, com tres linhas, e uma sabe completa, sendo os arquivos fo-rest fires input teste.txt e forestfires.cvs respetivamente.

Como a linguagem utilizada foi python nao incluı um makefile, mas crieium script que permite executar os testes. Este scrit e o arquivo menu.sh. Oprimeiro passo e executar em um terminal ./menu.sh. Serao apresentadas tresopcoes:

1. Testar a funcao Map com forest fires input teste.txt que gera a saıdateste map out.txt;

2. Testar a funcao Map e Reduce com forest fires input teste.txt que gerateste MapReduce out.txt; e

3. Testar a funcao Map/Reduce com a base completa (forestfires.csv) quegera teste completo out.txt.

A opcao 1 mostra o resultado de executar somente a funcao Map gerandoassim os respetivos pares <key,values>. A opcao 2 aplica a funcao Map, or-dena a saıda alfabeticamente e executa a funcao Reduce para fazer a contagem.Com a configuracao por defeito serao mostrados apenas as os subconjuntos comfrequencias maiores ou iguais a 2. A ultima opcao, executa o teste Map-Reduceusando a base completa mostrando na saıda os subconjuntos com frequenciasmaiores ou iguais a 200. Assim esta saıda gera o arquivo teste completo out.txtcom:

rain 0 512area 0 257rain 0 area 0 254Y 4 203Y 4 rain 0 201

Este resultado deve ser interpretado como “nome da variavel, valor da variavele frequencia”. Exemplo: a ultima regra e “subconjunto com as variaveis Y erain com valores 4 e 0 respetivamente ocorreu 201 vezes”.

Finalizando com os teste rapidos continuamos com a descricao detalhada dodataset, das funcoes e dos testes usando o Hadoop.

3 Descricao do dataset

O dataset escolhido e um arquivo csv, isto significa que as variaveis encontram-se separadas por virgulas, correspondendo cada linha da base a uma instancia

2

Page 3: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

de dados e cada coluna a uma variavel. Na teoria de aprendizagem de maquinae comum referirmos ao conjunto variaveis que compoe uma instancia como ”ca-racterısticas”. A base Forest Fires possui 12 caracterısticas e por tratar-se umabase desenvolvida para modelar um problema de regressao a ultima coluna, anumero 13, e um valor real que representa a area total queimada do parque emhectares. Assim o conjuntos de dados foi originalmente usado para entender arelacao entre quantidade de area queimada no parque Montesinho e os dadosmeteorologicos desse momento [2]. O conjunto de caracterısticas utilizadas sao:

1. X = coordenada do parque entre 1 e 9 no exio x;2. Y = coordenada do parque entre 2 e 9 no eixo y;3. month = mes do ano desde janeiro ate dezembro (”jan- ”dec”);4. day = dia da semana (”mon- ”sun”);5. FFMC - valor numerico da umidade contida nos produtos vegetais de

superfıcie e outros combustıveis secos. Mostra a relativa facilidade deignicao e a combustibilidade (18.7 - 96.20);

6. DMC - valor numerico da umidade media contida em camadas organicascompactas de profundidade moderada. Indica a profundidade a que o fogose produzira em materiais vegetais (1.1 - 291.3);

7. DC - valor numerico da umidade contida em materiais compactos e degrande volume. E um indicador util de seca e mostra a probabilidade deo fogo atingir enorme profundidade nos materiais (7.9 - 860.6);

8. ISI - valor da evolucao inicial do fogo, este indica a velocidade de evolucaodo fogo de lento a rapido (0.0 - 56.10);

9. temp - temperatura em graus Celsius (2.2 - 33.30);10. RH - porcentagem de umidade relativa %: 15.0 to 10011. wind - velocidade do vento em km/h: 0.40 to 9.4012. rain - chuva em mm/m2 : 0.0 to 6.413. area - area da floresta queimada em hectares (ha): 0.00 to 1090.84

4 Abordagem

Usar um dataset diferente levou a ter que fazer tres consideracoes praticas: (a)os valores das colunas de nosso dataset estao sempre ordenados, consequente-mente nao e necessario implementar um metodo de ordenacao dentro da funcaoMap como fez [5] na linha 2 da figura 4.6, sem correr o risco de contar conjun-tos com os mesmos elementos como se fossem diferentes (ex: <beer,cracker>e <cracker,beer>), (b) as variaveis que representam numero reais foram arre-dondadas para o inteiro mais proximo devido a que numeros inteiros com doisdecimais podem ser pouco frequentes e (c) o nome de cada coluna e anteposto acada valor para evitar confundir dois numero inteiros que representam variaveisdiferentes.

4.1 Funcao Map

Um exemplo da saıda da funcao Map, como foi explicado, seriam os subconjun-tos:

• <X 7,1> o key e a variavel X, que representa a coordenada do parquesendo um numero inteiro, possui o valor 7 e o value igual a 1;

3

Page 4: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

• <Y 5,1> o key e a variavel Y, que representa a coordenada, possui o valor5 e o value igual a 1;

• <month mar,1> a variavel mes do ano com o valor marco e o value 1;

• <X 7,Y 5,1> a combinacao das variaveis X e Y com valores 7 e 5 respe-tivamente, formando um novo subconjunto de tamanho 2 e o value 1;

• <X 7 month mar,1> a combinacao das variaveis X e mes com valores 7 emarco respetivamente, formando um novo subconjunto de tamanho 2 e ovalue 1;

assim cada key e um novo subconjunto de tamanho maximo definido pelo usuarioe o valor 1 e igual para todos os subconjuntos.

O codigo da funcao Map:

1 #!/ usr /bin /env python2 # −∗− coding : utf−8 −∗−3 ”””4 Created on Wed Dec 4 08 : 42 : 18 20135 @author : juan6 Os comentar ios nao possuem acentos para poder usar o codigo no

r e l a t o r i o em la t ex7 ”””8

9 import sys # importa a b i b l i o t e c a que permite l e r a entrada STDINcompat ive l com o Hadoop

10 import math11

12 de f l i s t p ow e r s e t ( l s t ) : # funcao que gera os subconjuntos13 r e s u l t = [ [ ] ] # de f i no a l i s t a que t e ra os subconjuntos14 f o r x in l s t :15 r e s u l t = r e s u l t + [ subset + [ x ] f o r subset in r e s u l t i f l en (

subset ) < sub max ] # l i s t a com l i s t a s concatenadas16 # nesta l i nha cada vez que a va r a i v e l x e i g ua l a um novo

elemnto , e l a e concatenda com os an t e r i o r e s e com osproximos

17 r e turn r e s u l t [ 1 : ]18

19 sub max = 4 #tamanho maximo do subconjunto , se o dese jado foramtodos os subconjuntos p o s i v e i s sub max deve s e r i g ua l ao numerot o t a l de v a r i v e i s da base Ex : sub max = 13

20 header = 1 # f l a g que i nd i c a o cabeca lho21 f o r l i n e in sys . s td in : # entrada proven inte do STDIN ( standard

input )22 l i n e = l i n e . s t r i p ( ) # removendo a formatacao23 i f header == 1 :24 header = 0 # f l a g que i nd i c a o cabeca lho25 var names = l i n e . s p l i t ( ’ , ’ ) # separa as v a r i a v e i s para f a z e r o

tratamento do nomes das co lunas26 e l s e :27 words = l i n e . s p l i t ( ’ , ’ ) # quebra cada l i nha em pa lavras ( ou

va l o r e s )28 i n s t ance = [ ] # de f i no una nova l i s t a correspondente a cada

i n s t an c i a da base29 f o r i in range (0 , l en ( words ) ) : # concateno o nome de cada coluna

com seu r e s p e t i v o va l o r usando um30 i f i < 4 : # as pr ime i ra s quatro v a r i a v e i s sao s t r i n g31 i n s t ance . append ( var names [ i ] + ’ ’ + words [ i ] )32 e l s e : # o r e s t o das v a r i a v e i s sao numeros r e a i s

4

Page 5: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

33 i n s t ance . append ( var names [ i ] + ’ ’ + s t r ( i n t ( round ( f l o a t (words [ i ] ) ) ) ) ) # arredondamento para o i n t e i r o maisproximo

34

35 a l l s u b s e t = l i s t p ow e r s e t ( i n s t ance ) # chama a funcao que c r i aos sub−conjuntos

36

37 f o r subset in a l l s u b s e t : # cada subset e um elemento da l i s t aa l l s u b s e t

38 key = ’ ’ . j o i n ( subset ) # concatenando os e lementos etransformando em s t r i n g

39 pr in t ’%s \ t%s ’ % ( key , 1) # sa ida para o Hadoop

mapper.py

Nossa funcao Map comeca com a linha 9 importando a biblioteca sys parapoder interagir com o Hadoop usando as entradas e saıdas standar do sistemaoperacional. Isso significa que o Hadoop possui a capacidade de executar asfuncoes Map e Reduce como sendo comandos do proprio sistema.

As linhas 19 e 20 correspondem a definicao de uma constante e uma variavel,a sub max que limita o tamanho maximo do subconjunto e o flag header queindica o tipo de linha de entrada: valor 1 para cabecalho e 0 para linhas dedados.

O laco principal comeca na linha 21 executando as funcoes seguintes paracada linha do dataset. Para cada linha lida sao removidos os caracteres deformatacao do texto (linha 23) e posteriormente e avaliada a variavel header.Assim, na primeira execucao e lido o cabecalho e o nome das variaveis queestavam separadas por virgulas e armazenado em var names. A var names eutilizada nas iteracoes posteriores para identificar cada valor de cada variavelda base e concatena-lo com “ ”como foi explicado no comeco desta secao.

A linha 27 quebra cada instancia do dataset em palavras, assim no lacoprincipal existem dois loops for que para separar cada linha e cada palavra dabase. Entre as linhas 30 e 33 e realizada a concatenacao dos valores com o nomedas variaveis, mas de forma separada para os primeiros 4 valores, porque saostrings, ja os valores subsequentes sao primeiro convertidos no tipo float parapoder ser arredondados.

Todas as linha com seu respetivos valores sao armazenados em instance quesara o argumento de entrada para a funcao mais importante list powerset.Exemplo de instance: [‘X 7’ ‘Y 5’ ‘month mar’ ‘day fri’ ‘FFMC 86’ ‘DMC 26’‘DC 94’ ‘ISI 5’ ‘temp 8’ ‘RH 51’ ‘wind 7’ ‘rain 0’ ‘area 0’]

A funcao list powerset (linha 12) cria todas as possıveis combinacoes desubconjuntos. Para isso e utilizado um loop for (linha 14) que seleciona cadaelemento [x] dentro da lista “instancia”que foi passada como argumento deentrada. A cada iteracao o valor [x] e combinado com os elementos que jaencontram-se na variavel result. Esta forma de criar listas em python e conhe-cida como comprehension list e permite definir os elementos da lista seguindo aregra definida em ela.

E mais simples entender a saıda da funcao list powerset com um exemplo.Supondo a instancia de entrada anterior [‘X 7’ ‘Y 5’ ‘month mar’....] a primeiraexecucao da linha 15 usa o valor x=‘X 7’ e o combina com result retornandodentro de result=[[],[‘X 7’]]. O proximo valor de x=‘Y 5’ e combinado com osanteriores resultando result=[[],[‘X 7’], [‘Y 5’], [‘X 7’ ‘Y 5’]]. Assim o valor deresult durante as tres primeiras iteracoes muda conforme:

5

Page 6: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

1. [[], [X 7]] primeira iteracao do loop for;

2. [[], [X 7], [Y 5], [X 7, Y 5]] segunda iteracao do loop for;

3. [[], [X 7], [Y 5], [X 7, Y 5], [month mar], [X 7,month mar], [Y 5,month mar]]terceira iteracao do loop for.

e preciso destacar que dentro da comprehension list existe uma condicao if paralimitar o tamanho maximo do subconjunto especificado pelo valor da constantesub max, e que a saıda final e uma lista com sub-listas menos a primeira posicaoque possui o valor vazio (linha 17).

Retornando da funcao list powerset as linhas 37 a 39 imprimem na saıdastandar do sistema cada key separado por uma tabulacao com o valor 1 (value).Esta saıda sera ordenada pelo Hadoop e passada para a funcao Reduce.

4.2 Funcao Reduce

O objetivo da funcao Reduce e contar o numero de ocorrencias da cada subcon-junto igual para determinar a frequencia das regras mais repetidas dentro dodataset.

O codigo da funcao Reduce e:

1 #!/ usr /bin /env python2 # −∗− coding : utf−8 −∗−3 ”””4 Created on Wed Dec 4 14 : 45 : 20 20135 @author : juan6 ”””7 import sys8 current word = None9 cur r ent count = 0

10 word = None11 f r equency = 20012

13 f o r l i n e in sys . s td in : # entrada standar14 l i n e = l i n e . s t r i p ( )15 word , count = l i n e . s p l i t ( ’ \ t ’ , 1) # separa as entradas dos keys

e va lue s em word e count16 t ry :17 count = in t ( count ) # converte o va l o r count num i n t e i r o18 except ValueError :19 cont inue20

21 i f current word == word : # v e r i f i c a se do i s keys sao i g u a i s eincrmenta o contador

22 cur r ent count += count23 e l s e :24 i f cu r r ent count >= frequency : # imprime o r e su l t ado da

soma dos va lue s25 pr in t ’%s \ t%s ’ % ( current word , cur r ent count )26 cur r ent count = count27 current word = word28

29 i f ( ( current word == word ) & ( cur r ent count >= frequency ) ) :30 pr in t ’%s \ t%s ’ % ( current word , cur r ent count ) # imprime o

ult imo va lo r de word

reducer.py

6

Page 7: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

Como comentei anteriormente a funcao Reduce aproveita o fato que o Ha-doop ordena alfabeticamente os keys retornados pela funcao Map. Assim o forda linha 13 le cada subconjunto e o compara com o anterior. Diferentementeda funcao Map cada linha de entrada para Reduce e um subconjunto e naouma instancia. Entre as linhas 21 e 30 e realizada a comparacao, atualizadoos valores de contagem para cada ocorrencia repetida e imprimido o resultadofinal.

A constate frequency e usada para imprimir as regras com frequencia maiorao numero definido. Se for usado usado frequency=200, um exemplo de saıdaseria:

rain 0 512area 0 257rain 0 area 0 254Y 4 203Y 4 rain 0 201A proxima secao e brevemente explicado como executar o MapReduce usando

o Hadoop.

5 Usando o Hadoop

Considerando que o Hadoop ja foi instalado e esta funcionando corretamente(ver Apendice A) os passos para a excussao sao:

1. Acessar em um terminal como usuario do Hadoop com os respetivos pri-vilegios e criar uma pasta onde ficara o dataset mkdir forestfires 1;

2. Em um terminal de usuario normal do sistema copiar o dataset para dentrodo diretorio do usuario com privilegios de execucao do Hadoop, por exem-plo: sudo cp facultad/Doutorado/Big data/Amazon/forest firesinput.txt /home/hduser/forestfire 1/;

3. loggar-se como usuario do Hadoop e fazer uma copia do dataset paraa estrutura de arquivos distribuıda com hadoop dfs -copyFromLocal/home/hduser/forestfires 1/ /user/hduser/forestfires 1;

4. copiar a funcao Map sudo cp facultad/Doutorado/Big data/Amazon/mapper.py /home/hduser/;

5. copiar a funcao Reduce sudo cp facultad/Doutorado/Big data/Amazon/reducer.py /home/hduser/;

6. executar a operacao hadoop jar /usr/lib/hadoop/contrib/streaming/hadoop-streaming-1.0.2.jar -file /home/hduser/mapper.py -mapper/home/hduser/mapper.py -file /home/hduser/reducer.py -reducer/home/hduser/reducer.py -input /user/hduser/forestfires 1/* -output /user/hduser/forestfires 1-output;

7. para extrair os resultados primeiro criamos uma pasta com mkdir /ho-me/hduser/forestfires 1-output; e

8. para copiar os resultados desde o sistema de arquivos do Hadoop para apasta de usuario hadoop dfs -getmerge /user/hduser/forestfires 1-output /home/hduser/forestfires 1-output

7

Page 8: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

Neste trabalho o Hadoop executou de forma local mas pode ser simulada umadistribuicao de tarefas em diferentes cluster com a opcao -D mapred.reduce.tasks=16. Enquanto o Hadoop estiver funcionando os processos em anda-mento ou finalizados podem ser monitorados em um browser usando o enderecohttp://localhost:50030/jobtracker .jsp (figura 1).

Figura 1: Estado das tarefas no Hadoop http://localhost:50030/jobtracker.jsp

Apos a execucao no terminal do comando hadoop jar /usr/lib/hadoop/-contrib /streaming/hadoop-streaming-1.0.2.jar -file /home/hduser/-mapper.py -mapper /home/hduser/mapper.py -file /home/hduser/-reducer.py -reducer /home/hduser/reducer.py -input /user/hduser/-forestfires 1/* -output /user/hduser/forestfires 1-output. Um exemploda saıda e apresentado na figura 2.

Figura 2: Estado das tarefas no Hadoop no terminal.

8

Page 9: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

6 Interpretando os resultados

O resultado da execucao anterior mostrando os subconjuntos de tamanho maximo4 e frequencia maior ou igual a 100 sao:

rain 0 512area 0 257rain 0 area 0 254Y 4 203Y 4 rain 0 201month aug 184month aug rain 0 179month sep rain 0 172month sep 172FFMC 92 133FFMC 92 rain 0 132wind 5 130wind 5 rain 0 127Y 5 125Y 5 rain 0 123

Existem algumas informacoes uteis que poder ser extraıdas do resultadoanterior. Um exemplo pode ser encontrar amostras que indiquem um desba-lanceamento na base. Exemplo: existem muitas mais amostras sem valores dechuva que com chuva (<rain 0,512>) o que pode causar uma interpretacao er-rada das outras regras, como por exemplo <rain 0 area 0,254>, induzindo apensar na existencia de uma relacao direta entre nao chuva e nao queimada nafloresta, conclusao que parece estar em contra da logica.

Das regras <month aug rain 0,179> e <month sep rain 0,172> podemos in-terpretar que nos meses de setembro e agosto praticamente nao chove no parque.Tambem podemos ver que o ındice FFMC que indica a umidade nos produtosvegetais e baixo quando no chove (<FFMC 92 rain 0,132>).

Assim, como estas regras outras podem ser obtidas, variando o tamanho dossubconjuntos e a frequencia mınima mostrada.

7 Consideracoes finais

A forma de abordar o problema gerando subconjunto com a funcao Map naoe otima, porque possui custo exponencial que depende do tamanho maximo dosubconjunto desejado e com da quantidade de colunas do dataset. O custo dafuncao list powerset na linha 12 da funcao Map pode ser calculado como:

k∑i=1

(n

k

)=

k∑i=1

n!

k! (n− k)!

na qual n e o numero de colunas da base e k igual a constante sub max.Desta forma podemos calcular a quantidade maxima de subconjuntos que

podem ser obtidos no nosso dataset quando sub max nao for limitado, esteseriam 8191 conjuntos por cada linha da base! Assim a recomendacao final enao use esta abordagem para combinar regras muito grandes!

9

Page 10: Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

Referencias

[1] C. Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary Bradski, An-drew Y Ng, and Kunle Olukotun. Map-reduce for machine learning onmulticore. Advances in neural information processing systems, 19:281, 2007.

[2] P. Cortez and A. Morais. A data mining approach to predict forest fires usingmeteorological data. In New Trends in Artificial Intelligence, Proceedingsof the 13th EPIA 2007 - Portuguese Conference on Artificial Intelligence,pages 512–523, 2007.

[3] Anand Rajaraman and Jeffrey David Ullman. Mining of massive datasets.Cambridge University Press, 2012.

[4] Tom White. Hadoop: the definitive guide. O’Reilly, 2012.

[5] Jongwook Woo and Yuhang Xu. Market basket analysis algorithm withmap/reduce of cloud computing. In proc. of the Intl. Conf. on Paralleland Distributed Processing Techniques and Applications (PDPTA 2011), LasVegas, USA, 2011.

10