SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
Encontrando Sub-conjuntos de itens frequentes
mediante MapReduce no Hadoop
Juan Gabriel Colonna
12/15/13

1

Introdu¸˜o
ca

Este trabalho consiste na implementa¸˜o de uma t´cnica de minera¸˜o para
ca
e
ca
encontrar subconjuntos de itens frequentes em grandes conjuntos de dados utilizando 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
n´s conectados em rede mediante ethernet, possibilitando o intercambio de ino
forma¸˜o entre eles. Para o processamento utiliza duas fun¸˜es principais, a
ca
co
fun¸˜o Map que transforma os dados de entrada em uma palavra chave e um
ca
valor da forma < key, value > e a fun¸˜o Reduce que utilizando o value para
ca
somar as ocorrˆncias das palavras chaves (ou keys).
e
A forma de modelar um problema mediante Map-Reduce pode ser aplicado a
v´rios m´todos de aprendizagem de m´quina tais como os explicados por Chu et
a
e
a
al. [1]. Mas nossa abordagem foi baseado no trabalho pr´vio de Cortez et al.[5]
e
com duas diferen¸as. A primeira diferen¸a ´ o conjunto de dados utilizados,
c
c e
que no meu caso utilizei a cole¸˜o F orestF ires1 . Escolhi este dataset por que
ca
inclui dados de um problema ambiental amplamente abordado nas aplica¸˜es de
co
monitoramento que utilizam Redes de Sensores. A segunda diferen¸a ´ a forma
c e
em que s˜o gerados os keys da fun¸˜o Map. Diferente de Cortez et al.[5] eu
a
ca
utilizei subconjuntos frequentes especificando o tamanho m´ximo poss´ e n˜o
a
ıvel
a
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ˆncias em todas as instancias.
e
As fun¸˜es Map e Reduce foram implementadas na linguagem python e os
co
teste foram executados em uma plataforma Hadoop instalada localmente 2 . A
ferramenta Hadoop provˆ a plataforma Map-Reduce permitindo ao usu´rio criar
e
a
as fun¸˜es pr´prias Map e Reduce [4]. O Hadoop utiliza um sistema de arquivo
co
o
distribu´ e implementa, de forma transparente para o usu´rio, a fun¸˜o que
ıdo
a
ca
ordena os keys. No arquivo instalando haddop no ubuntu.txt inclui uma
guia de instala¸˜o e configura¸˜o do Hadoop no Ubuntu linux 12.04.
ca
ca
1 http://archive.ics.uci.edu/ml/datasets/Forest+Fires
2 http://hadoop.apache.org/

1
2

Testes r´pidos
a

O objetivo desta se¸˜o ´ explicar como executar rapidamente alguns testes com
ca e
as fun¸˜es Map e Reduce, sem muito detalhe do funcionamento, para poder ter
co
uma visualiza¸˜o sobre a entrada e a sa´
ca
ıda. Nas pr´ximas se¸˜es continuarei
o
co
com a explica¸˜o detalhada.
ca
Este relat´rio ´ acompanhado de quatro scripts: mapper.py, reducer.py, reo
e
e
a
ducer teste.py e menu.sh. Para poder executar todos eles ´ necess´rio primeiro
dar permiss˜o de execu¸˜o a cada um, que pode ser feito num terminal exea
ca
cutando dentro da pasta dos arquivos sudo chmod a+x mapper.py ree
ducer teste.py reducer.py menu.sh. Para executar tais testes ´ utilizada
uma base menor, com trˆs linhas, e uma sabe completa, sendo os arquivos foe
rest fires input teste.txt e forestfires.cvs respetivamente.
Como a linguagem utilizada foi python n˜o inclu´ um makefile, mas criei
a
ı
um script que permite executar os testes. Este scrit ´ o arquivo menu.sh. O
e
primeiro passo ´ executar em um terminal ./menu.sh. Ser˜o apresentadas trˆs
e
a
e
op¸˜es:
co
ıda
1. Testar a fun¸˜o Map com forest fires input teste.txt que gera a sa´
ca
teste map out.txt;
2. Testar a fun¸˜o Map e Reduce com forest fires input teste.txt que gera
ca
teste MapReduce out.txt; e
3. Testar a fun¸˜o Map/Reduce com a base completa (forestfires.csv) que
ca
gera teste completo out.txt.
A op¸˜o 1 mostra o resultado de executar somente a fun¸˜o Map gerando
ca
ca
assim os respetivos pares <key,values>. A op¸˜o 2 aplica a fun¸˜o Map, orca
ca
dena a sa´ alfabeticamente e executa a fun¸˜o Reduce para fazer a contagem.
ıda
ca
Com a configura¸˜o por defeito ser˜o mostrados apenas as os subconjuntos com
ca
a
frequˆncias maiores ou iguais a 2. A ultima op¸˜o, executa o teste Map-Reduce
e
ca
usando a base completa mostrando na sa´ os subconjuntos com frequˆncias
ıda
e
maiores ou iguais a 200. Assim esta sa´ gera o arquivo teste completo out.txt
ıda
com:
rain 0 512
area 0 257
rain 0 area 0 254
Y 4 203
Y 4 rain 0
201
Este resultado deve ser interpretado como “nome da vari´vel, valor da vari´vel
a
a
e frequˆncia”. Exemplo: a ultima regra ´ “subconjunto com as vari´veis Y e
e
´
e
a
rain com valores 4 e 0 respetivamente ocorreu 201 vezes”.
Finalizando com os teste r´pidos continuamos com a descri¸˜o detalhada do
a
ca
dataset, das fun¸˜es e dos testes usando o Hadoop.
co

3

Descri¸˜o do dataset
ca

O dataset escolhido ´ um arquivo csv, isto significa que as vari´veis encontrame
a
se separadas por virgulas, correspondendo cada linha da base a uma instancia
2
de dados e cada coluna a uma vari´vel. Na teoria de aprendizagem de m´quina
a
a
´ comum referirmos ao conjunto vari´veis que comp˜e uma instancia como ”cae
a
o
racter´
ısticas”. A base Forest Fires possui 12 caracter´
ısticas e por tratar-se uma
base desenvolvida para modelar um problema de regress˜o a ultima coluna, a
a
n´mero 13, ´ um valor real que representa a ´rea total queimada do parque em
u
e
a
hectares. Assim o conjuntos de dados foi originalmente usado para entender a
rela¸˜o entre quantidade de ´rea queimada no parque Montesinho e os dados
ca
a
meteorol´gicos desse momento [2]. O conjunto de caracter´
o
ısticas utilizadas s˜o:
a
1.
2.
3.
4.
5.

6.

7.

8.
9.
10.
11.
12.
13.

4

X = coordenada do parque entre 1 e 9 no exio x;
Y = coordenada do parque entre 2 e 9 no eixo y;
month = mes do ano desde janeiro at´ dezembro (”jan- ”dec”);
e
day = dia da semana (”mon- ”sun”);
FFMC - valor num´rico da umidade contida nos produtos vegetais de
e
superf´
ıcie e outros combust´
ıveis secos. Mostra a relativa facilidade de
igni¸˜o e a combustibilidade (18.7 - 96.20);
ca
DMC - valor num´rico da umidade m´dia contida em camadas orgˆnicas
e
e
a
compactas de profundidade moderada. Indica a profundidade a que o fogo
se produzir´ em materiais vegetais (1.1 - 291.3);
a
DC - valor num´rico da umidade contida em materiais compactos e de
e
´
grande volume. E um indicador util de seca e mostra a probabilidade de
´
o fogo atingir enorme profundidade nos materiais (7.9 - 860.6);
ISI - valor da evolu¸˜o inicial do fogo, este indica a velocidade de evolu¸˜o
ca
ca
do fogo de lento a r´pido (0.0 - 56.10);
a
temp - temperatura em graus Celsius (2.2 - 33.30);
RH - porcentagem de umidade relativa %: 15.0 to 100
wind - velocidade do vento em km/h: 0.40 to 9.40
rain - chuva em mm/m2 : 0.0 to 6.4
area - ´rea da floresta queimada em hectares (ha): 0.00 to 1090.84
a

Abordagem

Usar um dataset diferente levou a ter que fazer trˆs considera¸˜es pr´ticas: (a)
e
co
a
os valores das colunas de nosso dataset est˜o sempre ordenados, consequentea
mente n˜o ´ necess´rio implementar um m´todo de ordena¸˜o dentro da fun¸˜o
a e
a
e
ca
ca
Map como fez [5] na linha 2 da figura 4.6, sem correr o risco de contar conjuntos com os mesmos elementos como se fossem diferentes (ex: <beer,cracker>
e <cracker,beer>), (b) as vari´veis que representam n´mero reais foram arrea
u
dondadas para o inteiro mais pr´ximo devido a que n´meros inteiros com dois
o
u
decimais podem ser pouco frequentes e (c) o nome de cada coluna ´ anteposto a
e
cada valor para evitar confundir dois n´mero inteiros que representam vari´veis
u
a
diferentes.

4.1

Fun¸˜o Map
ca

Um exemplo da sa´ da fun¸˜o Map, como foi explicado, seriam os subconjunıda
ca
tos:
e
a
• <X 7,1> o key ´ a vari´vel X, que representa a coordenada do parque
sendo um n´mero inteiro, possui o valor 7 e o value igual a 1;
u
3
• <Y 5,1> o key ´ a vari´vel Y, que representa a coordenada, possui o valor
e
a
5 e o value igual a 1;
• <month mar,1> a vari´vel mˆs do ano com o valor mar¸o e o value 1;
a
e
c
• <X 7,Y 5,1> a combina¸˜o das vari´veis X e Y com valores 7 e 5 respeca
a
tivamente, formando um novo subconjunto de tamanho 2 e o value 1;
ca
a
e
• <X 7 month mar,1> a combina¸˜o das vari´veis X e mˆs com valores 7 e
mar¸o respetivamente, formando um novo subconjunto de tamanho 2 e o
c
value 1;
assim cada key ´ um novo subconjunto de tamanho m´ximo definido pelo usu´rio
e
a
a
e o valor 1 ´ igual para todos os subconjuntos.
e
O c´digo da fun¸˜o Map:
o
ca
1
2
3
4
5
6

7

#! / u s r / b i n / env python
# −∗− c o d i n g : u t f −8 −∗−
”””
C r e a t e d on Wed Dec 4 0 8 : 4 2 : 1 8 2013
@author : j u a n
Os c o m e n t a r i o s nao possuem a c e n t o s para poder u s a r o c o d i g o no
r e l a t o r i o em l a t e x
”””

8
9

10

im po rt s y s # i m p o r t a a b i b l i o t e c a que p e r m i t e l e r a e n t r a d a STDIN
c o m p a t i v e l com o Hadoop
im po rt math

11
12
13
14
15

16

17

d e f l i s t p o w e r s e t ( l s t ) : # f u n c a o que g e r a o s s u b c o n j u n t o s
r e s u l t = [ [ ] ] # d e f i n o a l i s t a que t e r a o s s u b c o n j u n t o s
for x in l s t :
r e s u l t = r e s u l t + [ subset + [ x ] for subset in r e s u l t i f len (
s u b s e t ) < sub max ] # l i s t a com l i s t a s c o n c a t e n a d a s
# n e s t a l i n h a cada v e z que a v a r a i v e l x e i g u a l a um novo
elemnto , e l a e c o n c a t e n d a com o s a n t e r i o r e s e com o s
proximos
return r e s u l t [ 1 : ]

18
19

20
21

22
23
24
25

26
27

28

29

30
31
32

sub max = 4 #tamanho maximo do s u b c o n j u n t o , s e o d e s e j a d o foram
t o d o s o s s u b c o n j u n t o s p o s i v e i s sub max deve s e r i g u a l ao numero
t o t a l de v a r i v e i s da b a s e Ex : sub max = 13
h e a d e r = 1 # f l a g que i n d i c a o c a b e c a l h o
f o r l i n e i n s y s . s t d i n : # e n t r a d a p r o v e n i n t e do STDIN ( s t a n d a r d
input )
l i n e = l i n e . s t r i p ( ) # removendo a f o r m a t a c a o
i f h e a d e r == 1 :
h e a d e r = 0 # f l a g que i n d i c a o c a b e c a l h o
var names = l i n e . s p l i t ( ’ , ’ ) # s e p a r a a s v a r i a v e i s para f a z e r o
t r a t a m e n t o do nomes das c o l u n a s
else :
words = l i n e . s p l i t ( ’ , ’ ) # quebra cada l i n h a em p a l a v r a s ( ou
valores )
i n s t a n c e = [ ] # d e f i n o una nova l i s t a c o r r e s p o n d e n t e a cada
i n s t a n c i a da b a s e
f o r i i n r a n g e ( 0 , l e n ( words ) ) : # c o n c a t e n o o nome de cada c o l u n a
com s e u r e s p e t i v o v a l o r usando um
i f i < 4 : # as p r i m e i r a s quatro v a r i a v e i s sao s t r i n g
i n s t a n c e . append ( var names [ i ] + ’ ’ + words [ i ] )
e l s e : # o r e s t o das v a r i a v e i s s a o numeros r e a i s

4
33

i n s t a n c e . 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 mais
proximo

34
35

a l l s u b s e t = l i s t p o w e r s e t ( i n s t a n c e ) # chama a f u n c a o que c r i a
o s sub−c o n j u n t o s

36
37

38

39

f o r s u b s e t i n a l l s u b s e t : # cada s u b s e t e um e l e m e n t o da l i s t a
all subset
key = ’ ’ . j o i n ( s u b s e t ) # c o n c a t e n a n d o o s e l e m e n t o s e
t r a n s f o r m a n d o em s t r i n g
p r i n t ’%s  t%s ’ % ( key , 1 ) # s a i d a para o Hadoop

mapper.py
Nossa fun¸˜o Map come¸a com a linha 9 importando a biblioteca sys para
ca
c
poder interagir com o Hadoop usando as entradas e sa´
ıdas standar do sistema
operacional. Isso significa que o Hadoop possui a capacidade de executar as
fun¸˜es Map e Reduce como sendo comandos do pr´prio sistema.
co
o
As linhas 19 e 20 correspondem ` defini¸˜o de uma constante e uma vari´vel,
a
ca
a
a
a sub max que limita o tamanho m´ximo do subconjunto e o flag header que
indica o tipo de linha de entrada: valor 1 para cabe¸alho e 0 para linhas de
c
dados.
O la¸o principal come¸a na linha 21 executando as fun¸˜es seguintes para
c
c
co
cada linha do dataset. Para cada linha lida s˜o removidos os caracteres de
a
formata¸˜o do texto (linha 23) e posteriormente ´ avaliada a vari´vel header.
ca
e
a
Assim, na primeira execu¸˜o ´ lido o cabe¸alho e o nome das vari´veis que
ca e
c
a
estavam separadas por virgulas ´ armazenado em var names. A var names ´
e
e
utilizada nas itera¸˜es posteriores para identificar cada valor de cada vari´vel
co
a
da base e concatena-lo com “ ”como foi explicado no come¸o desta se¸˜o.
c
ca
A linha 27 quebra cada instˆncia do dataset em palavras, assim no la¸o
a
c
principal existem dois loops for que para separar cada linha e cada palavra da
base. Entre as linhas 30 e 33 ´ realizada a concatena¸˜o dos valores com o nome
e
ca
das vari´veis, mas de forma separada para os primeiros 4 valores, porque s˜o
a
a
strings, j´ os valores subsequentes s˜o primeiro convertidos no tipo float para
a
a
poder ser arredondados.
Todas as linha com seu respetivos valores s˜o armazenados em instance que
a
sar´ o argumento de entrada para a fun¸˜o mais importante list powerset.
a
ca
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 fun¸˜o list powerset (linha 12) cria todas as poss´
ca
ıveis combina¸˜es de
co
subconjuntos. Para isso ´ utilizado um loop f or (linha 14) que seleciona cada
e
elemento [x] dentro da lista “instˆncia”que foi passada como argumento de
a
entrada. A cada itera¸˜o o valor [x] ´ combinado com os elementos que j´
ca
e
a
encontram-se na vari´vel result. Esta forma de criar listas em python e conhea
cida como comprehension list e permite definir os elementos da lista seguindo a
regra definida em ela.
´
E mais simples entender a sa´ da fun¸˜o list powerset com um exemplo.
ıda
ca
Supondo a instˆncia de entrada anterior [‘X 7’ ‘Y 5’ ‘month mar’....] a primeira
a
execu¸˜o da linha 15 usa o valor x=‘X 7’ e o combina com result retornando
ca
dentro de result=[[],[‘X 7’]]. O pr´ximo valor de x=‘Y 5’ ´ combinado com os
o
e
anteriores resultando result=[[],[‘X 7’], [‘Y 5’], [‘X 7’ ‘Y 5’]]. Assim o valor de
result durante as trˆs primeiras itera¸˜es muda conforme:
e
co
5
1. [[], [X 7]] primeira itera¸˜o do loop f or;
ca
2. [[], [X 7], [Y 5], [X 7, Y 5]] segunda itera¸˜o do loop f or;
ca
3. [[], [X 7], [Y 5], [X 7, Y 5], [month mar], [X 7, month mar], [Y 5, month mar]]
terceira itera¸˜o do loop f or.
ca
´ preciso destacar que dentro da comprehension list existe uma condi¸˜o if para
e
ca
limitar o tamanho m´ximo do subconjunto especificado pelo valor da constante
a
sub max, e que a sa´ final ´ uma lista com sub-listas menos a primeira posi¸˜o
ıda
e
ca
que possui o valor vazio (linha 17).
ıda
Retornando da fun¸˜o list powerset as linhas 37 a 39 imprimem na sa´
ca
standar do sistema cada key separado por uma tabula¸˜o com o valor 1 (value).
ca
Esta sa´ ser´ ordenada pelo Hadoop e passada para a fun¸˜o Reduce.
ıda
a
ca

4.2

Fun¸˜o Reduce
ca

O objetivo da fun¸˜o Reduce ´ contar o numero de ocorrˆncias da cada subconca
e
e
junto igual para determinar a frequˆncia das regras mais repetidas dentro do
e
dataset.
O c´digo da fun¸˜o Reduce ´:
o
ca
e
1
2
3
4
5
6
7
8
9
10
11

#! / u s r / b i n / env python
# −∗− c o d i n g : u t f −8 −∗−
”””
C r e a t e d on Wed Dec 4 1 4 : 4 5 : 2 0 2013
@author : j u a n
”””
im po rt s y s
c u r r e n t w o r d = None
current count = 0
word = None
f r e q u e n c y = 200

12
13
14
15

16
17
18
19

f o r l i n e in sys . stdin : # entrada standar
line = line . strip ()
word , count = l i n e . s p l i t ( ’  t ’ , 1 ) # s e p a r a a s e n t r a d a s dos k e y s
e v a l u e s em word e count
try :
count = i n t ( count ) # c o n v e r t e o v a l o r count num i n t e i r o
except ValueError :
continue

20

i f c u r r e n t w o r d == word : # v e r i f i c a s e d o i s k e y s s a o i g u a i s e
incrmenta o contador
c u r r e n t c o u n t += count
else :
i f c u r r e n t c o u n t >= f r e q u e n c y : # imprime o r e s u l t a d o da
soma dos v a l u e s
p r i n t ’%s  t%s ’ % ( c u r r e n t w o r d , c u r r e n t c o u n t )
c u r r e n t c o u n t = count
c u r r e n t w o r d = word

21

22
23
24

25
26
27
28
29
30

if

( ( c u r r e n t w o r d == word ) & ( c u r r e n t c o u n t >= f r e q u e n c y ) ) :
p r i n t ’%s  t%s ’ % ( c u r r e n t w o r d , c u r r e n t c o u n t ) # imprime o
u l t i m o v a l o r de word

reducer.py

6
Como comentei anteriormente a fun¸˜o Reduce aproveita o fato que o Haca
doop ordena alfabeticamente os keys retornados pela fun¸˜o Map. Assim o for
ca
da linha 13 lˆ cada subconjunto e o compara com o anterior. Diferentemente
e
da fun¸˜o Map cada linha de entrada para Reduce ´ um subconjunto e n˜o
ca
e
a
uma instˆncia. Entre as linhas 21 e 30 ´ realizada a compara¸˜o, atualizado
a
e
ca
os valores de contagem para cada ocorrˆncia repetida ´ imprimido o resultado
e
e
final.
A constate frequency ´ usada para imprimir as regras com frequˆncia maior
e
e
ao n´mero definido. Se for usado usado frequency=200, um exemplo de sa´
u
ıda
seria:
rain 0 512
area 0 257
rain 0 area 0 254
Y 4 203
Y 4 rain 0 201
A pr´xima se¸˜o ´ brevemente explicado como executar o MapReduce usando
o
ca e
o Hadoop.

5

Usando o Hadoop

Considerando que o Hadoop j´ foi instalado e esta funcionando corretamente
a
(ver Apˆndice A) os passos para a excuss˜o s˜o:
e
a a
1. Acessar em um terminal como usu´rio do Hadoop com os respetivos pria
vil´gios e criar uma pasta onde ficar´ o dataset mkdir forestfires 1;
e
a
2. Em um terminal de usu´rio normal do sistema copiar o dataset para dentro
a
do diret´rio do usu´rio com privil´gios de execu¸˜o do Hadoop, por exemo
a
e
ca
plo: sudo cp facultad/Doutorado/Big data/Amazon/forest fires
input.txt /home/hduser/forestfire 1/;
3. loggar-se como usu´rio do Hadoop e fazer uma copia do dataset para
a
a estrutura de arquivos distribu´ com hadoop dfs -copyFromLocal
ıda
/home/hduser/forestfires 1/ /user/hduser/forestfires 1;
4. copiar a fun¸˜o Map sudo cp facultad/Doutorado/Big data/Amazon
ca
/mapper.py /home/hduser/;
5. copiar a fun¸˜o Reduce sudo cp facultad/Doutorado/Big data/Amazon
ca
/reducer.py /home/hduser/;
6. executar a opera¸˜o hadoop jar /usr/lib/hadoop/contrib/streaming
ca
/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 /home/hduser/forestfires 1-output; e
8. para copiar os resultados desde o sistema de arquivos do Hadoop para a
pasta de usu´rio hadoop dfs -getmerge /user/hduser/forestfires 1a
output /home/hduser/forestfires 1-output
7
Neste trabalho o Hadoop executou de forma local mas pode ser simulada uma
distribui¸˜o de tarefas em diferentes cluster com a op¸˜o -D mapred.reduce.
ca
ca
tasks=16. Enquanto o Hadoop estiver funcionando os processos em andamento ou finalizados podem ser monitorados em um browser usando o endere¸o
c
http://localhost:50030/jobtracker .jsp (figura 1).

Figura 1: Estado das tarefas no Hadoop http://localhost:50030/jobtracker.jsp
Ap´s a execu¸˜o no terminal do comando hadoop jar /usr/lib/hadoop/o
ca
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 exemplo
da sa´ ´ apresentado na figura 2.
ıda e

Figura 2: Estado das tarefas no Hadoop no terminal.

8
6

Interpretando os resultados

O resultado da execu¸˜o anterior mostrando os subconjuntos de tamanho m´ximo
ca
a
4 e frequˆncia maior ou igual a 100 s˜o:
e
a
rain 0 512
area 0 257
rain 0 area 0 254
Y 4 203
Y 4 rain 0 201
month aug 184
month aug rain 0 179
month sep rain 0 172
month sep 172
FFMC 92 133
FFMC 92 rain 0 132
wind 5 130
wind 5 rain 0 127
Y 5 125
Y 5 rain 0 123
Existem algumas informa¸˜es uteis que poder ser extra´
co
ıdas do resultado
anterior. Um exemplo pode ser encontrar amostras que indiquem um desbalanceamento na base. Exemplo: existem muitas mais amostras sem valores de
chuva que com chuva (<rain 0,512>) o que pode causar uma interpreta¸˜o erca
rada das outras regras, como por exemplo <rain 0 area 0,254>, induzindo a
pensar na existˆncia de uma rela¸˜o direta entre n˜o chuva e n˜o queimada na
e
ca
a
a
floresta, conclus˜o que parece estar em contra da l´gica.
a
o
Das regras <month aug rain 0,179> e <month sep rain 0,172> podemos interpretar que nos meses de setembro e agosto praticamente n˜o chove no parque.
a
Tamb´m podemos ver que o ´
e
ındice FFMC que indica a umidade nos produtos
vegetais ´ baixo quando no chove (<FFMC 92 rain 0,132>).
e
Assim, como estas regras outras podem ser obtidas, variando o tamanho dos
subconjuntos e a frequˆncia m´
e
ınima mostrada.

7

Considera¸oes finais
c˜

A forma de abordar o problema gerando subconjunto com a fun¸˜o Map n˜o
ca
a
´ ´tima, porque possui custo exponencial que depende do tamanho m´ximo do
eo
a
subconjunto desejado e com da quantidade de colunas do dataset. O custo da
fun¸˜o list powerset na linha 12 da fun¸˜o Map pode ser calculado como:
ca
ca
k

i=1

n
k

k

=
i=1

n!
k! (n − k)!

na qual n ´ o n´mero de colunas da base e k igual ` constante sub max.
e
u
a
Desta forma podemos calcular a quantidade m´xima de subconjuntos que
a
podem ser obtidos no nosso dataset quando sub max n˜o for limitado, este
a
seriam 8191 conjuntos por cada linha da base! Assim a recomenda¸˜o final ´
ca
e
n˜o use esta abordagem para combinar regras muito grandes!
a
9
Referˆncias
e
[1] C. Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary Bradski, Andrew Y Ng, and Kunle Olukotun. Map-reduce for machine learning on
multicore. Advances in neural information processing systems, 19:281, 2007.
[2] P. Cortez and A. Morais. A data mining approach to predict forest fires using
meteorological data. In New Trends in Artificial Intelligence, Proceedings
of 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 with
map/reduce of cloud computing. In proc. of the Intl. Conf. on Parallel
and Distributed Processing Techniques and Applications (PDPTA 2011), Las
Vegas, USA, 2011.

10

Weitere ähnliche Inhalte

Ähnlich wie Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop

Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5engenhariadecomputacao
 
Mapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e AplicaçõesMapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e AplicaçõesGuilherme Araújo
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
 
Web Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterWeb Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterFabrício Barth
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em Crodolfoeyalana
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlex Camargo
 
Bash tricks (notes)
Bash tricks (notes)Bash tricks (notes)
Bash tricks (notes)Carlo Caputo
 
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLESTUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLESRodrigo Salles
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesRADILSON RIPARDO DE FRETIAS
 

Ähnlich wie Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop (20)

Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5
 
Map, filter e reduce
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
 
Mapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e AplicaçõesMapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e Aplicações
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
 
Importante
ImportanteImportante
Importante
 
TUTORIAL_GRÁFICO DE CONTROLE.pdf
TUTORIAL_GRÁFICO DE CONTROLE.pdfTUTORIAL_GRÁFICO DE CONTROLE.pdf
TUTORIAL_GRÁFICO DE CONTROLE.pdf
 
Web Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterWeb Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitter
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em C
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Cea030.lista.03
Cea030.lista.03Cea030.lista.03
Cea030.lista.03
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: Matrizes
 
Bash tricks (notes)
Bash tricks (notes)Bash tricks (notes)
Bash tricks (notes)
 
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLESTUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Gestão de projectos a prática
Gestão de projectos   a práticaGestão de projectos   a prática
Gestão de projectos a prática
 
Calculo numerico
Calculo numerico Calculo numerico
Calculo numerico
 

Kürzlich hochgeladen

Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 

Kürzlich hochgeladen (20)

Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 

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

  • 1. Encontrando Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop Juan Gabriel Colonna 12/15/13 1 Introdu¸˜o ca Este trabalho consiste na implementa¸˜o de uma t´cnica de minera¸˜o para ca e ca encontrar subconjuntos de itens frequentes em grandes conjuntos de dados utilizando 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 n´s conectados em rede mediante ethernet, possibilitando o intercambio de ino forma¸˜o entre eles. Para o processamento utiliza duas fun¸˜es principais, a ca co fun¸˜o Map que transforma os dados de entrada em uma palavra chave e um ca valor da forma < key, value > e a fun¸˜o Reduce que utilizando o value para ca somar as ocorrˆncias das palavras chaves (ou keys). e A forma de modelar um problema mediante Map-Reduce pode ser aplicado a v´rios m´todos de aprendizagem de m´quina tais como os explicados por Chu et a e a al. [1]. Mas nossa abordagem foi baseado no trabalho pr´vio de Cortez et al.[5] e com duas diferen¸as. A primeira diferen¸a ´ o conjunto de dados utilizados, c c e que no meu caso utilizei a cole¸˜o F orestF ires1 . Escolhi este dataset por que ca inclui dados de um problema ambiental amplamente abordado nas aplica¸˜es de co monitoramento que utilizam Redes de Sensores. A segunda diferen¸a ´ a forma c e em que s˜o gerados os keys da fun¸˜o Map. Diferente de Cortez et al.[5] eu a ca utilizei subconjuntos frequentes especificando o tamanho m´ximo poss´ e n˜o a ıvel a 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ˆncias em todas as instancias. e As fun¸˜es Map e Reduce foram implementadas na linguagem python e os co teste foram executados em uma plataforma Hadoop instalada localmente 2 . A ferramenta Hadoop provˆ a plataforma Map-Reduce permitindo ao usu´rio criar e a as fun¸˜es pr´prias Map e Reduce [4]. O Hadoop utiliza um sistema de arquivo co o distribu´ e implementa, de forma transparente para o usu´rio, a fun¸˜o que ıdo a ca ordena os keys. No arquivo instalando haddop no ubuntu.txt inclui uma guia de instala¸˜o e configura¸˜o do Hadoop no Ubuntu linux 12.04. ca ca 1 http://archive.ics.uci.edu/ml/datasets/Forest+Fires 2 http://hadoop.apache.org/ 1
  • 2. 2 Testes r´pidos a O objetivo desta se¸˜o ´ explicar como executar rapidamente alguns testes com ca e as fun¸˜es Map e Reduce, sem muito detalhe do funcionamento, para poder ter co uma visualiza¸˜o sobre a entrada e a sa´ ca ıda. Nas pr´ximas se¸˜es continuarei o co com a explica¸˜o detalhada. ca Este relat´rio ´ acompanhado de quatro scripts: mapper.py, reducer.py, reo e e a ducer teste.py e menu.sh. Para poder executar todos eles ´ necess´rio primeiro dar permiss˜o de execu¸˜o a cada um, que pode ser feito num terminal exea ca cutando dentro da pasta dos arquivos sudo chmod a+x mapper.py ree ducer teste.py reducer.py menu.sh. Para executar tais testes ´ utilizada uma base menor, com trˆs linhas, e uma sabe completa, sendo os arquivos foe rest fires input teste.txt e forestfires.cvs respetivamente. Como a linguagem utilizada foi python n˜o inclu´ um makefile, mas criei a ı um script que permite executar os testes. Este scrit ´ o arquivo menu.sh. O e primeiro passo ´ executar em um terminal ./menu.sh. Ser˜o apresentadas trˆs e a e op¸˜es: co ıda 1. Testar a fun¸˜o Map com forest fires input teste.txt que gera a sa´ ca teste map out.txt; 2. Testar a fun¸˜o Map e Reduce com forest fires input teste.txt que gera ca teste MapReduce out.txt; e 3. Testar a fun¸˜o Map/Reduce com a base completa (forestfires.csv) que ca gera teste completo out.txt. A op¸˜o 1 mostra o resultado de executar somente a fun¸˜o Map gerando ca ca assim os respetivos pares <key,values>. A op¸˜o 2 aplica a fun¸˜o Map, orca ca dena a sa´ alfabeticamente e executa a fun¸˜o Reduce para fazer a contagem. ıda ca Com a configura¸˜o por defeito ser˜o mostrados apenas as os subconjuntos com ca a frequˆncias maiores ou iguais a 2. A ultima op¸˜o, executa o teste Map-Reduce e ca usando a base completa mostrando na sa´ os subconjuntos com frequˆncias ıda e maiores ou iguais a 200. Assim esta sa´ gera o arquivo teste completo out.txt ıda com: rain 0 512 area 0 257 rain 0 area 0 254 Y 4 203 Y 4 rain 0 201 Este resultado deve ser interpretado como “nome da vari´vel, valor da vari´vel a a e frequˆncia”. Exemplo: a ultima regra ´ “subconjunto com as vari´veis Y e e ´ e a rain com valores 4 e 0 respetivamente ocorreu 201 vezes”. Finalizando com os teste r´pidos continuamos com a descri¸˜o detalhada do a ca dataset, das fun¸˜es e dos testes usando o Hadoop. co 3 Descri¸˜o do dataset ca O dataset escolhido ´ um arquivo csv, isto significa que as vari´veis encontrame a se separadas por virgulas, correspondendo cada linha da base a uma instancia 2
  • 3. de dados e cada coluna a uma vari´vel. Na teoria de aprendizagem de m´quina a a ´ comum referirmos ao conjunto vari´veis que comp˜e uma instancia como ”cae a o racter´ ısticas”. A base Forest Fires possui 12 caracter´ ısticas e por tratar-se uma base desenvolvida para modelar um problema de regress˜o a ultima coluna, a a n´mero 13, ´ um valor real que representa a ´rea total queimada do parque em u e a hectares. Assim o conjuntos de dados foi originalmente usado para entender a rela¸˜o entre quantidade de ´rea queimada no parque Montesinho e os dados ca a meteorol´gicos desse momento [2]. O conjunto de caracter´ o ısticas utilizadas s˜o: a 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 4 X = coordenada do parque entre 1 e 9 no exio x; Y = coordenada do parque entre 2 e 9 no eixo y; month = mes do ano desde janeiro at´ dezembro (”jan- ”dec”); e day = dia da semana (”mon- ”sun”); FFMC - valor num´rico da umidade contida nos produtos vegetais de e superf´ ıcie e outros combust´ ıveis secos. Mostra a relativa facilidade de igni¸˜o e a combustibilidade (18.7 - 96.20); ca DMC - valor num´rico da umidade m´dia contida em camadas orgˆnicas e e a compactas de profundidade moderada. Indica a profundidade a que o fogo se produzir´ em materiais vegetais (1.1 - 291.3); a DC - valor num´rico da umidade contida em materiais compactos e de e ´ grande volume. E um indicador util de seca e mostra a probabilidade de ´ o fogo atingir enorme profundidade nos materiais (7.9 - 860.6); ISI - valor da evolu¸˜o inicial do fogo, este indica a velocidade de evolu¸˜o ca ca do fogo de lento a r´pido (0.0 - 56.10); a temp - temperatura em graus Celsius (2.2 - 33.30); RH - porcentagem de umidade relativa %: 15.0 to 100 wind - velocidade do vento em km/h: 0.40 to 9.40 rain - chuva em mm/m2 : 0.0 to 6.4 area - ´rea da floresta queimada em hectares (ha): 0.00 to 1090.84 a Abordagem Usar um dataset diferente levou a ter que fazer trˆs considera¸˜es pr´ticas: (a) e co a os valores das colunas de nosso dataset est˜o sempre ordenados, consequentea mente n˜o ´ necess´rio implementar um m´todo de ordena¸˜o dentro da fun¸˜o a e a e ca ca Map como fez [5] na linha 2 da figura 4.6, sem correr o risco de contar conjuntos com os mesmos elementos como se fossem diferentes (ex: <beer,cracker> e <cracker,beer>), (b) as vari´veis que representam n´mero reais foram arrea u dondadas para o inteiro mais pr´ximo devido a que n´meros inteiros com dois o u decimais podem ser pouco frequentes e (c) o nome de cada coluna ´ anteposto a e cada valor para evitar confundir dois n´mero inteiros que representam vari´veis u a diferentes. 4.1 Fun¸˜o Map ca Um exemplo da sa´ da fun¸˜o Map, como foi explicado, seriam os subconjunıda ca tos: e a • <X 7,1> o key ´ a vari´vel X, que representa a coordenada do parque sendo um n´mero inteiro, possui o valor 7 e o value igual a 1; u 3
  • 4. • <Y 5,1> o key ´ a vari´vel Y, que representa a coordenada, possui o valor e a 5 e o value igual a 1; • <month mar,1> a vari´vel mˆs do ano com o valor mar¸o e o value 1; a e c • <X 7,Y 5,1> a combina¸˜o das vari´veis X e Y com valores 7 e 5 respeca a tivamente, formando um novo subconjunto de tamanho 2 e o value 1; ca a e • <X 7 month mar,1> a combina¸˜o das vari´veis X e mˆs com valores 7 e mar¸o respetivamente, formando um novo subconjunto de tamanho 2 e o c value 1; assim cada key ´ um novo subconjunto de tamanho m´ximo definido pelo usu´rio e a a e o valor 1 ´ igual para todos os subconjuntos. e O c´digo da fun¸˜o Map: o ca 1 2 3 4 5 6 7 #! / u s r / b i n / env python # −∗− c o d i n g : u t f −8 −∗− ””” C r e a t e d on Wed Dec 4 0 8 : 4 2 : 1 8 2013 @author : j u a n Os c o m e n t a r i o s nao possuem a c e n t o s para poder u s a r o c o d i g o no r e l a t o r i o em l a t e x ””” 8 9 10 im po rt s y s # i m p o r t a a b i b l i o t e c a que p e r m i t e l e r a e n t r a d a STDIN c o m p a t i v e l com o Hadoop im po rt math 11 12 13 14 15 16 17 d e f l i s t p o w e r s e t ( l s t ) : # f u n c a o que g e r a o s s u b c o n j u n t o s r e s u l t = [ [ ] ] # d e f i n o a l i s t a que t e r a o s s u b c o n j u n t o s for x in l s t : r e s u l t = r e s u l t + [ subset + [ x ] for subset in r e s u l t i f len ( s u b s e t ) < sub max ] # l i s t a com l i s t a s c o n c a t e n a d a s # n e s t a l i n h a cada v e z que a v a r a i v e l x e i g u a l a um novo elemnto , e l a e c o n c a t e n d a com o s a n t e r i o r e s e com o s proximos return r e s u l t [ 1 : ] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 sub max = 4 #tamanho maximo do s u b c o n j u n t o , s e o d e s e j a d o foram t o d o s o s s u b c o n j u n t o s p o s i v e i s sub max deve s e r i g u a l ao numero t o t a l de v a r i v e i s da b a s e Ex : sub max = 13 h e a d e r = 1 # f l a g que i n d i c a o c a b e c a l h o f o r l i n e i n s y s . s t d i n : # e n t r a d a p r o v e n i n t e do STDIN ( s t a n d a r d input ) l i n e = l i n e . s t r i p ( ) # removendo a f o r m a t a c a o i f h e a d e r == 1 : h e a d e r = 0 # f l a g que i n d i c a o c a b e c a l h o var names = l i n e . s p l i t ( ’ , ’ ) # s e p a r a a s v a r i a v e i s para f a z e r o t r a t a m e n t o do nomes das c o l u n a s else : words = l i n e . s p l i t ( ’ , ’ ) # quebra cada l i n h a em p a l a v r a s ( ou valores ) i n s t a n c e = [ ] # d e f i n o una nova l i s t a c o r r e s p o n d e n t e a cada i n s t a n c i a da b a s e f o r i i n r a n g e ( 0 , l e n ( words ) ) : # c o n c a t e n o o nome de cada c o l u n a com s e u r e s p e t i v o v a l o r usando um i f i < 4 : # as p r i m e i r a s quatro v a r i a v e i s sao s t r i n g i n s t a n c e . append ( var names [ i ] + ’ ’ + words [ i ] ) e l s e : # o r e s t o das v a r i a v e i s s a o numeros r e a i s 4
  • 5. 33 i n s t a n c e . 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 mais proximo 34 35 a l l s u b s e t = l i s t p o w e r s e t ( i n s t a n c e ) # chama a f u n c a o que c r i a o s sub−c o n j u n t o s 36 37 38 39 f o r s u b s e t i n a l l s u b s e t : # cada s u b s e t e um e l e m e n t o da l i s t a all subset key = ’ ’ . j o i n ( s u b s e t ) # c o n c a t e n a n d o o s e l e m e n t o s e t r a n s f o r m a n d o em s t r i n g p r i n t ’%s t%s ’ % ( key , 1 ) # s a i d a para o Hadoop mapper.py Nossa fun¸˜o Map come¸a com a linha 9 importando a biblioteca sys para ca c poder interagir com o Hadoop usando as entradas e sa´ ıdas standar do sistema operacional. Isso significa que o Hadoop possui a capacidade de executar as fun¸˜es Map e Reduce como sendo comandos do pr´prio sistema. co o As linhas 19 e 20 correspondem ` defini¸˜o de uma constante e uma vari´vel, a ca a a a sub max que limita o tamanho m´ximo do subconjunto e o flag header que indica o tipo de linha de entrada: valor 1 para cabe¸alho e 0 para linhas de c dados. O la¸o principal come¸a na linha 21 executando as fun¸˜es seguintes para c c co cada linha do dataset. Para cada linha lida s˜o removidos os caracteres de a formata¸˜o do texto (linha 23) e posteriormente ´ avaliada a vari´vel header. ca e a Assim, na primeira execu¸˜o ´ lido o cabe¸alho e o nome das vari´veis que ca e c a estavam separadas por virgulas ´ armazenado em var names. A var names ´ e e utilizada nas itera¸˜es posteriores para identificar cada valor de cada vari´vel co a da base e concatena-lo com “ ”como foi explicado no come¸o desta se¸˜o. c ca A linha 27 quebra cada instˆncia do dataset em palavras, assim no la¸o a c principal existem dois loops for que para separar cada linha e cada palavra da base. Entre as linhas 30 e 33 ´ realizada a concatena¸˜o dos valores com o nome e ca das vari´veis, mas de forma separada para os primeiros 4 valores, porque s˜o a a strings, j´ os valores subsequentes s˜o primeiro convertidos no tipo float para a a poder ser arredondados. Todas as linha com seu respetivos valores s˜o armazenados em instance que a sar´ o argumento de entrada para a fun¸˜o mais importante list powerset. a ca 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 fun¸˜o list powerset (linha 12) cria todas as poss´ ca ıveis combina¸˜es de co subconjuntos. Para isso ´ utilizado um loop f or (linha 14) que seleciona cada e elemento [x] dentro da lista “instˆncia”que foi passada como argumento de a entrada. A cada itera¸˜o o valor [x] ´ combinado com os elementos que j´ ca e a encontram-se na vari´vel result. Esta forma de criar listas em python e conhea cida como comprehension list e permite definir os elementos da lista seguindo a regra definida em ela. ´ E mais simples entender a sa´ da fun¸˜o list powerset com um exemplo. ıda ca Supondo a instˆncia de entrada anterior [‘X 7’ ‘Y 5’ ‘month mar’....] a primeira a execu¸˜o da linha 15 usa o valor x=‘X 7’ e o combina com result retornando ca dentro de result=[[],[‘X 7’]]. O pr´ximo valor de x=‘Y 5’ ´ combinado com os o e anteriores resultando result=[[],[‘X 7’], [‘Y 5’], [‘X 7’ ‘Y 5’]]. Assim o valor de result durante as trˆs primeiras itera¸˜es muda conforme: e co 5
  • 6. 1. [[], [X 7]] primeira itera¸˜o do loop f or; ca 2. [[], [X 7], [Y 5], [X 7, Y 5]] segunda itera¸˜o do loop f or; ca 3. [[], [X 7], [Y 5], [X 7, Y 5], [month mar], [X 7, month mar], [Y 5, month mar]] terceira itera¸˜o do loop f or. ca ´ preciso destacar que dentro da comprehension list existe uma condi¸˜o if para e ca limitar o tamanho m´ximo do subconjunto especificado pelo valor da constante a sub max, e que a sa´ final ´ uma lista com sub-listas menos a primeira posi¸˜o ıda e ca que possui o valor vazio (linha 17). ıda Retornando da fun¸˜o list powerset as linhas 37 a 39 imprimem na sa´ ca standar do sistema cada key separado por uma tabula¸˜o com o valor 1 (value). ca Esta sa´ ser´ ordenada pelo Hadoop e passada para a fun¸˜o Reduce. ıda a ca 4.2 Fun¸˜o Reduce ca O objetivo da fun¸˜o Reduce ´ contar o numero de ocorrˆncias da cada subconca e e junto igual para determinar a frequˆncia das regras mais repetidas dentro do e dataset. O c´digo da fun¸˜o Reduce ´: o ca e 1 2 3 4 5 6 7 8 9 10 11 #! / u s r / b i n / env python # −∗− c o d i n g : u t f −8 −∗− ””” C r e a t e d on Wed Dec 4 1 4 : 4 5 : 2 0 2013 @author : j u a n ””” im po rt s y s c u r r e n t w o r d = None current count = 0 word = None f r e q u e n c y = 200 12 13 14 15 16 17 18 19 f o r l i n e in sys . stdin : # entrada standar line = line . strip () word , count = l i n e . s p l i t ( ’ t ’ , 1 ) # s e p a r a a s e n t r a d a s dos k e y s e v a l u e s em word e count try : count = i n t ( count ) # c o n v e r t e o v a l o r count num i n t e i r o except ValueError : continue 20 i f c u r r e n t w o r d == word : # v e r i f i c a s e d o i s k e y s s a o i g u a i s e incrmenta o contador c u r r e n t c o u n t += count else : i f c u r r e n t c o u n t >= f r e q u e n c y : # imprime o r e s u l t a d o da soma dos v a l u e s p r i n t ’%s t%s ’ % ( c u r r e n t w o r d , c u r r e n t c o u n t ) c u r r e n t c o u n t = count c u r r e n t w o r d = word 21 22 23 24 25 26 27 28 29 30 if ( ( c u r r e n t w o r d == word ) & ( c u r r e n t c o u n t >= f r e q u e n c y ) ) : p r i n t ’%s t%s ’ % ( c u r r e n t w o r d , c u r r e n t c o u n t ) # imprime o u l t i m o v a l o r de word reducer.py 6
  • 7. Como comentei anteriormente a fun¸˜o Reduce aproveita o fato que o Haca doop ordena alfabeticamente os keys retornados pela fun¸˜o Map. Assim o for ca da linha 13 lˆ cada subconjunto e o compara com o anterior. Diferentemente e da fun¸˜o Map cada linha de entrada para Reduce ´ um subconjunto e n˜o ca e a uma instˆncia. Entre as linhas 21 e 30 ´ realizada a compara¸˜o, atualizado a e ca os valores de contagem para cada ocorrˆncia repetida ´ imprimido o resultado e e final. A constate frequency ´ usada para imprimir as regras com frequˆncia maior e e ao n´mero definido. Se for usado usado frequency=200, um exemplo de sa´ u ıda seria: rain 0 512 area 0 257 rain 0 area 0 254 Y 4 203 Y 4 rain 0 201 A pr´xima se¸˜o ´ brevemente explicado como executar o MapReduce usando o ca e o Hadoop. 5 Usando o Hadoop Considerando que o Hadoop j´ foi instalado e esta funcionando corretamente a (ver Apˆndice A) os passos para a excuss˜o s˜o: e a a 1. Acessar em um terminal como usu´rio do Hadoop com os respetivos pria vil´gios e criar uma pasta onde ficar´ o dataset mkdir forestfires 1; e a 2. Em um terminal de usu´rio normal do sistema copiar o dataset para dentro a do diret´rio do usu´rio com privil´gios de execu¸˜o do Hadoop, por exemo a e ca plo: sudo cp facultad/Doutorado/Big data/Amazon/forest fires input.txt /home/hduser/forestfire 1/; 3. loggar-se como usu´rio do Hadoop e fazer uma copia do dataset para a a estrutura de arquivos distribu´ com hadoop dfs -copyFromLocal ıda /home/hduser/forestfires 1/ /user/hduser/forestfires 1; 4. copiar a fun¸˜o Map sudo cp facultad/Doutorado/Big data/Amazon ca /mapper.py /home/hduser/; 5. copiar a fun¸˜o Reduce sudo cp facultad/Doutorado/Big data/Amazon ca /reducer.py /home/hduser/; 6. executar a opera¸˜o hadoop jar /usr/lib/hadoop/contrib/streaming ca /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 /home/hduser/forestfires 1-output; e 8. para copiar os resultados desde o sistema de arquivos do Hadoop para a pasta de usu´rio hadoop dfs -getmerge /user/hduser/forestfires 1a output /home/hduser/forestfires 1-output 7
  • 8. Neste trabalho o Hadoop executou de forma local mas pode ser simulada uma distribui¸˜o de tarefas em diferentes cluster com a op¸˜o -D mapred.reduce. ca ca tasks=16. Enquanto o Hadoop estiver funcionando os processos em andamento ou finalizados podem ser monitorados em um browser usando o endere¸o c http://localhost:50030/jobtracker .jsp (figura 1). Figura 1: Estado das tarefas no Hadoop http://localhost:50030/jobtracker.jsp Ap´s a execu¸˜o no terminal do comando hadoop jar /usr/lib/hadoop/o ca 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 exemplo da sa´ ´ apresentado na figura 2. ıda e Figura 2: Estado das tarefas no Hadoop no terminal. 8
  • 9. 6 Interpretando os resultados O resultado da execu¸˜o anterior mostrando os subconjuntos de tamanho m´ximo ca a 4 e frequˆncia maior ou igual a 100 s˜o: e a rain 0 512 area 0 257 rain 0 area 0 254 Y 4 203 Y 4 rain 0 201 month aug 184 month aug rain 0 179 month sep rain 0 172 month sep 172 FFMC 92 133 FFMC 92 rain 0 132 wind 5 130 wind 5 rain 0 127 Y 5 125 Y 5 rain 0 123 Existem algumas informa¸˜es uteis que poder ser extra´ co ıdas do resultado anterior. Um exemplo pode ser encontrar amostras que indiquem um desbalanceamento na base. Exemplo: existem muitas mais amostras sem valores de chuva que com chuva (<rain 0,512>) o que pode causar uma interpreta¸˜o erca rada das outras regras, como por exemplo <rain 0 area 0,254>, induzindo a pensar na existˆncia de uma rela¸˜o direta entre n˜o chuva e n˜o queimada na e ca a a floresta, conclus˜o que parece estar em contra da l´gica. a o Das regras <month aug rain 0,179> e <month sep rain 0,172> podemos interpretar que nos meses de setembro e agosto praticamente n˜o chove no parque. a Tamb´m podemos ver que o ´ e ındice FFMC que indica a umidade nos produtos vegetais ´ baixo quando no chove (<FFMC 92 rain 0,132>). e Assim, como estas regras outras podem ser obtidas, variando o tamanho dos subconjuntos e a frequˆncia m´ e ınima mostrada. 7 Considera¸oes finais c˜ A forma de abordar o problema gerando subconjunto com a fun¸˜o Map n˜o ca a ´ ´tima, porque possui custo exponencial que depende do tamanho m´ximo do eo a subconjunto desejado e com da quantidade de colunas do dataset. O custo da fun¸˜o list powerset na linha 12 da fun¸˜o Map pode ser calculado como: ca ca k i=1 n k k = i=1 n! k! (n − k)! na qual n ´ o n´mero de colunas da base e k igual ` constante sub max. e u a Desta forma podemos calcular a quantidade m´xima de subconjuntos que a podem ser obtidos no nosso dataset quando sub max n˜o for limitado, este a seriam 8191 conjuntos por cada linha da base! Assim a recomenda¸˜o final ´ ca e n˜o use esta abordagem para combinar regras muito grandes! a 9
  • 10. Referˆncias e [1] C. Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary Bradski, Andrew Y Ng, and Kunle Olukotun. Map-reduce for machine learning on multicore. Advances in neural information processing systems, 19:281, 2007. [2] P. Cortez and A. Morais. A data mining approach to predict forest fires using meteorological data. In New Trends in Artificial Intelligence, Proceedings of 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 with map/reduce of cloud computing. In proc. of the Intl. Conf. on Parallel and Distributed Processing Techniques and Applications (PDPTA 2011), Las Vegas, USA, 2011. 10