Este documento descreve um estudo sobre encontrar subconjuntos de itens frequentes em grandes conjuntos de dados utilizando o modelo Map-Reduce no Hadoop. O autor implementou funções Map e Reduce em Python para encontrar subconjuntos frequentes em um conjunto de dados sobre incêndios florestais, contendo variáveis meteorológicas e a área queimada. Testes iniciais foram realizados para validar as funções em uma pequena parte do conjunto de dados.
O documento descreve um curso sobre o programa computacional R ministrado por Paulo Justiniano Ribeiro Junior. Ele é professor do Departamento de Estatística da Universidade Federal do Paraná e tem experiência no uso do R desde 1999. O curso apresenta os principais comandos e funcionalidades do R, incluindo operações aritméticas, tipos de objetos, criação e manipulação de vetores, matrizes e dataframes.
1) O documento descreve um projeto que usa uma rede de sensores sem fio para classificar anuros (sapos e pererecas) com base em seus chamados, a fim de monitorar o estresse ecológico.
2) Os sensores detectam os chamados, extraem características de áudio e classificam as espécies usando técnicas de aprendizado de máquina.
3) Os resultados mostram que a fusão dos resultados dos sensores melhora a classificação em comparação com um sensor individual, mas o ganho é pequeno, enquant
Tutoriais para criação e edição de gráficos no rAna Maria Souza
Este documento fornece instruções para criar e editar gráficos no R. Ele ensina como fazer gráficos simples como dispersão, barras e boxplot, e como personalizar esses gráficos alterando parâmetros como títulos, legendas e fontes. Também discute como usar funções como plot(), par() e boxplot() para gerar e editar gráficos de forma flexível no R.
O documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade é medida pelo tempo de execução em função do tamanho do problema e apresenta exemplos de algoritmos com diferentes complexidades como constante, linear, quadrática e cúbica. Também apresenta regras para calcular a complexidade de algoritmos como laços aninhados e instruções consecutivas.
Este documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade de tempo de um algoritmo é expressa como uma função do tamanho do problema e que a notação Big-O é usada para descrever o comportamento assintótico predominante. Também apresenta exemplos como ordenação de vetores e mostra que algoritmos para o mesmo problema podem ter diferentes complexidades de tempo.
Scaling bayesian network parameter learning with HadoopJoão Gabriel Lima
Este documento descreve pesquisas sobre acelerar o aprendizado de parâmetros de redes Bayesianas usando Hadoop e MapReduce. Os autores implementaram algoritmos tradicionais e o algoritmo EM no Hadoop para aprendizagem de parâmetros, testando em várias redes Bayesianas complexas. Os experimentos mostraram que o MapReduce pode reduzir significativamente o tempo de processamento para grandes conjuntos de dados, em comparação com métodos sequenciais. As análises indicaram que o desempenho depende do tamanho e estrutura da rede, além
MapReduce é um modelo de programação para processar grandes volumes de dados em paralelo, dividindo o trabalho em tarefas independentes de mapeamento e redução. O mapeamento gera pares chave-valor a partir dos dados de entrada e a redução combina valores com a mesma chave. Um exemplo simples mostra a utilização de MapReduce para encontrar as temperaturas máximas por cidade a partir de arquivos de dados.
O documento descreve um curso sobre o programa computacional R ministrado por Paulo Justiniano Ribeiro Junior. Ele é professor do Departamento de Estatística da Universidade Federal do Paraná e tem experiência no uso do R desde 1999. O curso apresenta os principais comandos e funcionalidades do R, incluindo operações aritméticas, tipos de objetos, criação e manipulação de vetores, matrizes e dataframes.
1) O documento descreve um projeto que usa uma rede de sensores sem fio para classificar anuros (sapos e pererecas) com base em seus chamados, a fim de monitorar o estresse ecológico.
2) Os sensores detectam os chamados, extraem características de áudio e classificam as espécies usando técnicas de aprendizado de máquina.
3) Os resultados mostram que a fusão dos resultados dos sensores melhora a classificação em comparação com um sensor individual, mas o ganho é pequeno, enquant
Tutoriais para criação e edição de gráficos no rAna Maria Souza
Este documento fornece instruções para criar e editar gráficos no R. Ele ensina como fazer gráficos simples como dispersão, barras e boxplot, e como personalizar esses gráficos alterando parâmetros como títulos, legendas e fontes. Também discute como usar funções como plot(), par() e boxplot() para gerar e editar gráficos de forma flexível no R.
O documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade é medida pelo tempo de execução em função do tamanho do problema e apresenta exemplos de algoritmos com diferentes complexidades como constante, linear, quadrática e cúbica. Também apresenta regras para calcular a complexidade de algoritmos como laços aninhados e instruções consecutivas.
Este documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade de tempo de um algoritmo é expressa como uma função do tamanho do problema e que a notação Big-O é usada para descrever o comportamento assintótico predominante. Também apresenta exemplos como ordenação de vetores e mostra que algoritmos para o mesmo problema podem ter diferentes complexidades de tempo.
Scaling bayesian network parameter learning with HadoopJoão Gabriel Lima
Este documento descreve pesquisas sobre acelerar o aprendizado de parâmetros de redes Bayesianas usando Hadoop e MapReduce. Os autores implementaram algoritmos tradicionais e o algoritmo EM no Hadoop para aprendizagem de parâmetros, testando em várias redes Bayesianas complexas. Os experimentos mostraram que o MapReduce pode reduzir significativamente o tempo de processamento para grandes conjuntos de dados, em comparação com métodos sequenciais. As análises indicaram que o desempenho depende do tamanho e estrutura da rede, além
MapReduce é um modelo de programação para processar grandes volumes de dados em paralelo, dividindo o trabalho em tarefas independentes de mapeamento e redução. O mapeamento gera pares chave-valor a partir dos dados de entrada e a redução combina valores com a mesma chave. Um exemplo simples mostra a utilização de MapReduce para encontrar as temperaturas máximas por cidade a partir de arquivos de dados.
O documento apresenta um programa em C utilizando switch aninhado para realizar operações matemáticas com dois números digitados pelo usuário. O programa permite ao usuário escolher entre soma, subtração, multiplicação e divisão, e oferece a opção de uma nova escolha que utiliza outro switch aninhado.
No processo de aprendizagem de uma linguagem de programação, vamos, certamente, nos deparar com o tratamento de Arrays.
Em Javascript, C# e em outras linguagens de programação, temos três recursos que são muito importantes para trabalharmos com eles: map, filter e reduce.
O documento introduz o conceito de MapReduce, um paradigma de programação para processamento de grandes volumes de dados de forma paralela e distribuída. Explica que MapReduce divide os dados, mapeia-os e reduz-os através de funções Map e Reduce. Descreve as etapas do processo MapReduce, incluindo a separação dos dados, tarefas de mapeamento e redução executadas em paralelo.
1) O documento introduz a linguagem R, abordando sua história, instalação, editores de texto, manipulação de objetos, entrada e saída de dados, e distribuições de probabilidade.
2) São apresentados conceitos sobre modos e atributos de objetos no R, como vetores, matrizes, listas e data frames.
3) O documento também explica a importação e exportação de dados, e como gerar gráficos e saídas em diferentes formatos a partir do R.
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
O documento descreve o modelo MapReduce para processamento de grandes volumes de dados. MapReduce permite distribuir cálculos simples em larga escala através de centenas de máquinas, escondendo detalhes de paralelização e balanceamento de carga. O modelo usa funções Map e Reduce para processar pares de entrada/saída de forma paralela e distribuída. Vários trabalhos aplicam com sucesso MapReduce em tarefas como mineração de dados, aprendizado de máquina e processamento de petabytes de dados.
Este documento relata experimentos computacionais que comparam o desempenho do algoritmo GRASP com uma versão híbrida que incorpora mineração de dados (DM-GRASP) para resolver o problema de expansão de redes de transmissão elétrica. Os resultados mostraram que o DM-GRASP obteve as mesmas soluções do GRASP com redução significativa no tempo computacional de até 73% para algumas instâncias maiores.
Web Data Mining em R: agrupamento de mensagens do twitterFabrício Barth
O documento descreve os principais componentes e etapas para agrupar mensagens do Twitter, incluindo a coleta de dados, pré-processamento, representação dos documentos em vetores, e algoritmos de agrupamento como K-means.
O documento introduz conceitos básicos de análise de algoritmos, discutindo como medir a eficiência de algoritmos e a notação O(f(N)) para classificar algoritmos de acordo com sua complexidade. Exemplos demonstram como algoritmos podem ter tempo de execução constante, linear, logarítmico ou quadrático, dependendo do problema.
1) O documento descreve como usar o programa Winplot para criar gráficos 2D e 3D, incluindo como instalá-lo e suas principais funções. 2) Ele fornece detalhes sobre como criar diferentes tipos de gráficos 2D como explícitas, paramétricas e polares, além de explicar as operações e funções matemáticas suportadas. 3) O documento também aborda a criação de gráficos 3D e os recursos adicionais do Winplot.
Este documento discute duas técnicas de pesquisa em listas ordenadas:
1) Pesquisa sequencial: compara o valor procurado com cada elemento da lista até encontrar uma correspondência. Seu desempenho varia de O(1) a O(n).
2) Pesquisa binária: divide a lista ao meio em cada etapa até isolar o valor, se presente. Seu desempenho é O(log n), mais eficiente que a pesquisa sequencial para listas grandes.
O documento fornece uma introdução sobre programação em Pascal, explicando o que é um algoritmo, como converter um algoritmo para a linguagem Pascal e estruturas básicas como variáveis, condições if-else e laços while.
O documento apresenta 17 exercícios de programação envolvendo estruturas de repetição e cálculos matemáticos. Os exercícios incluem cálculo de séries, fatorial, média, desvios padrão e porcentagens a partir de dados fornecidos pelo usuário.
O documento define matrizes em C e fornece exemplos de sua declaração, atribuição de valores, preenchimento e exibição. Ele também apresenta uma série de exercícios sobre matrizes que envolvem preenchimento, cálculo de soma, média, maior e menor valor.
O documento apresenta vários one-liners em bash para exportar dados de um banco MongoDB com diferentes níveis de compressão e métricas, como taxa de transferência e taxa de compressão.
(1) O documento fornece instruções passo-a-passo para usar a ferramenta Hydrology Tool no ArcGIS para extrair redes de drenagem e microbacias hidrográficas a partir de um DEM. (2) Inclui screenshots ilustrando cada etapa do processo e links para obter DEM gratuitos online. (3) O tutorial está dividido em duas partes: extração de redes de drenagem e extração de microbacias.
1. O documento discute operações com matrizes, incluindo representação de matrizes, tipos de matrizes, e operações como adição e multiplicação.
2. É apresentada uma implementação das operações com matrizes usando C++, incluindo uma estrutura de dados TMatriz e funções para criar, ler, comparar, somar e multiplicar matrizes.
3. A complexidade das funções é analisada, com destaque para a função de leitura que tem complexidade quadrática O(n2).
O documento discute registros e arrays no Pascal, definindo-os como estruturas de dados para armazenar coleções de dados similares. Registros armazenam variáveis sequencialmente na memória, permitindo acesso aos campos por índice. Arrays podem ter múltiplas dimensões e são úteis para repetições. O comando With no Pascal simplifica o acesso aos campos dos registros.
O documento descreve as características e funcionalidades do software OpenProj para gestão de projetos. O OpenProj permite criar tarefas e definir relações de precedência, recursos e custos. Inclui ferramentas como gráficos de Gantt, diagramas de rede e relatórios para acompanhamento do projeto.
O documento discute erros numéricos, representação de números e conversão entre bases numéricas. Aborda 1) as fontes possíveis de erros em simulações numéricas, como imprecisão nos dados e operações; 2) a representação finita de números em computadores, notadamente a necessidade de arredondamento; 3) métodos para conversão entre bases binária e decimal.
O documento apresenta um programa em C utilizando switch aninhado para realizar operações matemáticas com dois números digitados pelo usuário. O programa permite ao usuário escolher entre soma, subtração, multiplicação e divisão, e oferece a opção de uma nova escolha que utiliza outro switch aninhado.
No processo de aprendizagem de uma linguagem de programação, vamos, certamente, nos deparar com o tratamento de Arrays.
Em Javascript, C# e em outras linguagens de programação, temos três recursos que são muito importantes para trabalharmos com eles: map, filter e reduce.
O documento introduz o conceito de MapReduce, um paradigma de programação para processamento de grandes volumes de dados de forma paralela e distribuída. Explica que MapReduce divide os dados, mapeia-os e reduz-os através de funções Map e Reduce. Descreve as etapas do processo MapReduce, incluindo a separação dos dados, tarefas de mapeamento e redução executadas em paralelo.
1) O documento introduz a linguagem R, abordando sua história, instalação, editores de texto, manipulação de objetos, entrada e saída de dados, e distribuições de probabilidade.
2) São apresentados conceitos sobre modos e atributos de objetos no R, como vetores, matrizes, listas e data frames.
3) O documento também explica a importação e exportação de dados, e como gerar gráficos e saídas em diferentes formatos a partir do R.
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
O documento descreve o modelo MapReduce para processamento de grandes volumes de dados. MapReduce permite distribuir cálculos simples em larga escala através de centenas de máquinas, escondendo detalhes de paralelização e balanceamento de carga. O modelo usa funções Map e Reduce para processar pares de entrada/saída de forma paralela e distribuída. Vários trabalhos aplicam com sucesso MapReduce em tarefas como mineração de dados, aprendizado de máquina e processamento de petabytes de dados.
Este documento relata experimentos computacionais que comparam o desempenho do algoritmo GRASP com uma versão híbrida que incorpora mineração de dados (DM-GRASP) para resolver o problema de expansão de redes de transmissão elétrica. Os resultados mostraram que o DM-GRASP obteve as mesmas soluções do GRASP com redução significativa no tempo computacional de até 73% para algumas instâncias maiores.
Web Data Mining em R: agrupamento de mensagens do twitterFabrício Barth
O documento descreve os principais componentes e etapas para agrupar mensagens do Twitter, incluindo a coleta de dados, pré-processamento, representação dos documentos em vetores, e algoritmos de agrupamento como K-means.
O documento introduz conceitos básicos de análise de algoritmos, discutindo como medir a eficiência de algoritmos e a notação O(f(N)) para classificar algoritmos de acordo com sua complexidade. Exemplos demonstram como algoritmos podem ter tempo de execução constante, linear, logarítmico ou quadrático, dependendo do problema.
1) O documento descreve como usar o programa Winplot para criar gráficos 2D e 3D, incluindo como instalá-lo e suas principais funções. 2) Ele fornece detalhes sobre como criar diferentes tipos de gráficos 2D como explícitas, paramétricas e polares, além de explicar as operações e funções matemáticas suportadas. 3) O documento também aborda a criação de gráficos 3D e os recursos adicionais do Winplot.
Este documento discute duas técnicas de pesquisa em listas ordenadas:
1) Pesquisa sequencial: compara o valor procurado com cada elemento da lista até encontrar uma correspondência. Seu desempenho varia de O(1) a O(n).
2) Pesquisa binária: divide a lista ao meio em cada etapa até isolar o valor, se presente. Seu desempenho é O(log n), mais eficiente que a pesquisa sequencial para listas grandes.
O documento fornece uma introdução sobre programação em Pascal, explicando o que é um algoritmo, como converter um algoritmo para a linguagem Pascal e estruturas básicas como variáveis, condições if-else e laços while.
O documento apresenta 17 exercícios de programação envolvendo estruturas de repetição e cálculos matemáticos. Os exercícios incluem cálculo de séries, fatorial, média, desvios padrão e porcentagens a partir de dados fornecidos pelo usuário.
O documento define matrizes em C e fornece exemplos de sua declaração, atribuição de valores, preenchimento e exibição. Ele também apresenta uma série de exercícios sobre matrizes que envolvem preenchimento, cálculo de soma, média, maior e menor valor.
O documento apresenta vários one-liners em bash para exportar dados de um banco MongoDB com diferentes níveis de compressão e métricas, como taxa de transferência e taxa de compressão.
(1) O documento fornece instruções passo-a-passo para usar a ferramenta Hydrology Tool no ArcGIS para extrair redes de drenagem e microbacias hidrográficas a partir de um DEM. (2) Inclui screenshots ilustrando cada etapa do processo e links para obter DEM gratuitos online. (3) O tutorial está dividido em duas partes: extração de redes de drenagem e extração de microbacias.
1. O documento discute operações com matrizes, incluindo representação de matrizes, tipos de matrizes, e operações como adição e multiplicação.
2. É apresentada uma implementação das operações com matrizes usando C++, incluindo uma estrutura de dados TMatriz e funções para criar, ler, comparar, somar e multiplicar matrizes.
3. A complexidade das funções é analisada, com destaque para a função de leitura que tem complexidade quadrática O(n2).
O documento discute registros e arrays no Pascal, definindo-os como estruturas de dados para armazenar coleções de dados similares. Registros armazenam variáveis sequencialmente na memória, permitindo acesso aos campos por índice. Arrays podem ter múltiplas dimensões e são úteis para repetições. O comando With no Pascal simplifica o acesso aos campos dos registros.
O documento descreve as características e funcionalidades do software OpenProj para gestão de projetos. O OpenProj permite criar tarefas e definir relações de precedência, recursos e custos. Inclui ferramentas como gráficos de Gantt, diagramas de rede e relatórios para acompanhamento do projeto.
O documento discute erros numéricos, representação de números e conversão entre bases numéricas. Aborda 1) as fontes possíveis de erros em simulações numéricas, como imprecisão nos dados e operações; 2) a representação finita de números em computadores, notadamente a necessidade de arredondamento; 3) métodos para conversão entre bases binária e decimal.
Semelhante a Uma abordagem BigData para Encontrar Sub-conjuntos de itens frequentes mediante MapReduce no Hadoop (20)
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Biblioteca UCS
A biblioteca abriga, em seu acervo de coleções especiais o terceiro volume da obra editada em Lisboa, em 1843. Sua exibe
detalhes dourados e vermelhos. A obra narra um romance de cavalaria, relatando a
vida e façanhas do cavaleiro Clarimundo,
que se torna Rei da Hungria e Imperador
de Constantinopla.
Atividade letra da música - Espalhe Amor, Anavitória.Mary Alvarenga
A música 'Espalhe Amor', interpretada pela cantora Anavitória é uma celebração do amor e de sua capacidade de transformar e conectar as pessoas. A letra sugere uma reflexão sobre como o amor, quando verdadeiramente compartilhado, pode ultrapassar barreiras alcançando outros corações e provocando mudanças positivas.
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
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