Escolar Documentos
Profissional Documentos
Cultura Documentos
Este tutorial visa apresentar ao usuário iniciante diversos exemplos da utilização básica da
plataforma. As etapas de utilização da Lemonade abordados neste documento estão
divididos nos seguintes tópicos:
1. Criação de usuários e apresentação do ambiente de trabalho;
2. Importação de bases de dados;
3. Edição de fluxos de trabalhos (workflows) ;
4. Criação de um experimento preditivo;
5. Criação de um painel de visualizações.
1
Lemonade é um acrônimo para Live Ex
ploration and Mining Of a Non-trivial Amount of
Data from Everywhere.
Para criação de um novo usuário, basta clicar em Criar conta. A seguir, você será
redirecionado para a página de registro, na qual é necessário inserir alguns dados para
cadastro de novo usuário.
Insira os dados requeridos (primeiro nome, último nome, e-mail e senha), como mostrado na
imagem abaixo e, assinale a opção “Concordo com os termos de uso Policy”. Clique em
Registrar para finalizar a criação do usuário. Todas as informações solicitadas são
obrigatórias e podem ser modificadas posteriormente.
Após a criação do usuário, você será redirecionado para a página inicial da plataforma e
realizar o seu login. Preencha o e-mail e senha cadastrados, clicando em Entrar para
acessar a plataforma.
No primeiro acesso de um novo usuário, a tela de abertura não apresentará nenhum
registro de atualizações dentro da plataforma. A medida que o usuário explora a plataforma,
a tela de abertura permite o acesso rápido às bases de dados, aos fluxos de trabalho, às
execuções desses fluxos e aos dashboards atualizados recentementes, como mostrado na
imagem abaixo.
No menu de atualizações recentes da tela inicial, o link para Bases de dados mostra as
bases de dados criadas/salvas recentemente na plataforma. Já o link para Fluxos de
trabalho exibe os fluxos criados recentemente pelos usuários. O link para Execuções
contém as execuções dos fluxos de dados feitas pelos diferentes usuários. O link para
Dashboards apresenta os últimos dashboards (agrupamento de visualizações de
resultados de um fluxo de trabalho) criados. Além disso, as abas existentes no menu
superior da tela inicial permitem a importação/criação de novas bases de dados e a
criação/execução de novos fluxos de trabalho.
Para alterar as informações do usuário, clique sobre o seu nome no canto superior direito
da tela e depois em Perfil:
Uma tela de edição de dados do usuário aparecerá, como indicado na imagem a seguir.
Nessa tela é possível ainda escolher o idioma da plataforma (português ou inglês). Clique
em OK para aplicar as alterações feitas.
Para alterar a senha, o usuário deverá clicar em Também altere a minha senha,
estendendo a tela acima para a imagem a seguir. Em seguida, é necessário preencher a
nova senha. Para finalizar a troca, clique em OK.
A tela de importação de bases de dados aparecerá, e é nela que será feito o gerenciamento
das bases de dados que você escolher utilizar. Para carregar uma base de dados clique no
botão Adicionar:
A seguir, clique em Escolha na seção chamada “Sistema de arquivos distribuído (HDFS)”:
Com o arquivo carregado, a base de dados aparece na tela com algumas opções de
gerenciamento e informações básicas, como seu ID de identificação na plataforma, nome,
descrição, formato, data de criação, o nome do usuário responsável pelo carregamento e
suas tags. Além disso, outras opções de gerenciamento são:
Para salvar as mudanças feitas nos atributos, clique em Salvar, e para pré-visualizar a base
formatada, clique em Pré-visualização. A imagem a seguir será mostrada para o usuário,
como pré-visualização da base editada.
3. Edição de fluxos de trabalhos (workflows)
Após a importação da base de dados é possível criar um fluxo de trabalho (ou workflow). A
aba de Fluxos de trabalho apresenta todos os fluxos criados pelo usuário na plataforma
Lemonade.
Para começar com a criação de um fluxo clique na aba superior Fluxos de trabalho. Clique
em Adicionar (canto superior direito da tela).
Em seguida, o usuário será redirecionado a tela de criação de um novo fluxo de trabalho.
Em Para uma plataforma de processamento, escreva o nome do fluxo de trabalho e
selecione Spark como plataforma de processamento, que é uma plataforma para análise e
extração de conhecimento de grandes bases de dados. Por fim, clique no botão Criar um
novo fluxo de trabalho.
A aba A partir de um modelo cria um fluxo de trabalho a partir de um modelo, i.e., um fluxo
de trabalho definido por um tópico elaborado por cientistas de dados do Lemonade (i.e.,
classificação, regressão, agrupamento, mineração de padrões frequentes e deep learning) .
Já a aba A partir de um modelo criado por usuários também cria um fluxo a partir de um
tópico, mas o mesmo é elaborado pelos usuários, não pelos cientistas de dados do
Lemonade. Caso você clique na aba Fluxos de trabalho no menu superior neste momento,
você encontrará o seu fluxo de trabalho criado.
Da mesma forma que na aba base de dados, o fluxo de trabalho aparece na tela com
algumas opções para seu gerenciamento e seus dados básicos - seu ID de identificação na
plataforma, seu nome, sua descrição, seu formato, sua data de criação, o nome do usuário
responsável pelo carregamento e sua versão. Além disso, o botão exclui o fluxo da
plataforma Lemonade.
A seguir criaremos um fluxo que importa a base de dados Iris, adicionada anteriormente na
plataforma. Clique na categoria Entrada e saída e, em seguida, arraste a operação Ler
dados para a área de trabalho desse fluxo de tarefas, que é representado por uma malha
(grid). Para acessar as suas propriedades clique duas vezes sobre o “Leitor de dados 0”. A
descrição para as propriedades da operação Ler dados se encontra em documentação
específica - Ler dados. Clique em Escolha uma opção e selecione “Base de dados Iris”
em Fonte de dados, como mostrado na imagem mais à direita a seguir.
Será exibido à direita da tela o relatório (log) da execução do fluxo de trabalho, indicando
cada passo da execução. O ícone verde ao lado de “Logs” indica o sucesso da execução.
Caso contrário, aparecerá um ícone vermelho ao lado de “Logs”, indicando o erro. O log
também indicará qual tipo de erro ocorreu, como mostrado na imagem abaixo.
Caso tenha sido executado com sucesso, o fluxo de trabalho terá a indicação de um ícone
positivo verde em seu interior. Caso contrário, o fluxo de trabalho terá a indicação de um
ícone negativo vermelho em seu interior.
Com a execução finalizada com sucesso, você pode ir na aba de Resultados após a
execução para poder visualizar os resultados da execução da operação Ler dados:
A aba exibirá os 50 primeiros resultados da leitura da base de dados Iris, como mostrado na
imagem abaixo com os 17 primeiros registros (exemplos ou instâncias) dessa base.
Note que existem outras duas abas que podem ser utilizadas após a execução, Detalhes
(execução) e Código-fonte. Enquanto a primeira define informações relacionadas à
execução (data, usuário e o cluster utilizado para execução), o segunda define o código
fonte da operação.
A base de dados Iris foi utilizada por R.A. Fisher em 1936 no clássico artigo The Use of
Multiple Measurements in Taxonomic Problems. Essa base é modelada como um problema
de classificação. Em um problema de classificação, a ideia é predizer a natureza
desconhecida de uma observação (instância ou exemplo) baseando-se atributos previsores
(características ou variáveis) que a descrevem, ou seja, uma coleção de medidas numéricas
e/ou categóricas. A natureza desconhecida de uma observação é chamada de classe
(rótulo, class ou label) .
Por exemplo, a base de dados Iris é composta por três espécies de flores do gênero Iris: Iris
u Iris Virginica. Essas três espécies são consideradas como
Setosa, Iris Versicolour o
diferentes categorias ou classes. Cada espécie de flor Iris é composta por 50 observações e
por quatro atributos que descrevem cada espécie de flor:
O algoritmo de classificação irá predizer uma nova espécie de Iris, dentre as três possíveis
(ris Setosa, Iris Versicolour ou Iris Virginica) , dado esses quatro atributos.
Antes da definição do modelo de classificação, o objetivo é realizar uma análise inicial dos
dados, através da etapa de análise estatística. A análise estatística dos dados auxilia na
compreensão da relação entre os atributos, além de possibilitar inferir informações mais
completas sobre a base de dados. A plataforma Lemonade permite a criação de um fluxo de
trabalho para geração de um sumário estatístico da base de dados. Vamos criar um fluxo de
trabalho com o nome “Meu primeiro experimento preditivo”.
Para obter a análise estatística básica dos dados, devemos ler os dados utilizando a
operação Ler dados (operação de Entrada e saída). Nesta categoria, encontramos todas
as operações de entrada e saída das bases de dados e dos modelos. Para utilizarmos a
operação de leitura, basta selecioná-la na aba de operações e arrastá-la para o grid. O
mesmo deve ser feito com a operação Sumário estatístico, ligando as duas ao arrastar o
plug de saída da operação Ler dados para o conector de entrada da operação Sumário
estatístico, como indicado na imagem.
Ao clicar na operação Ler dados, a ferramenta disponibiliza uma aba a direita com todos os
parâmetros de configuração. Em Fonte de dados, selecione a base “iris.csv”.
A aba Execução contém os parâmetros de execução descritos a seguir.
● Tratar esse valores como nulos (separe por vírgula): Esta funcionalidade é
utilizada quando se é necessário corrigir/eliminar atributos do fluxo de dados;
● Inferir esquema da fonte de dados: Determina como os atributos serão inferidos
pela operação. É recomendado que os atributos sejam inferidos da base de dados;
● O que fazer em caso de dados inválidos: Convert Invalid data to NULL.
Determina como os atributos inválidos devem ser tratados. Neste caso definimos
que todos os dados inválidos serão convertidos para NULO automaticamente;
A aba Resultados nos permite manipular quais informações serão exibidas após a
execução. Para este caso selecionamos as opções:
● Exibir amostras das saídas: permite visualizar uma prévia dos dados;
● Exibir esquema/dicionário das saídas: exibe o formato dos dado de cada atributo;
● Exibir relatórios textuais (se disponíveis): exibe relatórios de texto caso
disponíveis. Esses relatórios geralmente estão vinculados a resultados de análise de
algoritmos;
● Exibir relatórios e gráficos (se disponíveis): exibe imagens e/ou gráficos quando
disponíveis;
A partir da análise dos atributos de cada registro (linha) podemos predizer a qual espécie de
uma observação em particular, uma vez que o comprimento e a largura da pétala e sépala
são os atributos de uma espécie e a classe o rótulo. Estas informações são fundamentais
para a aplicação de algoritmos de classificação.
Extração de atributos
Para que a classe ou espécie possa ser utilizada como entrada para os algoritmos de
classificação, inicialmente é necessário converter os valores categóricos das 3 classes em
um valor numérico. Os algoritmos de aprendizado de máquina recebem como parâmetros
vetores numéricos. Utilizaremos a operação de Converter categórico para numérico no
grupo de Pré-processamento de dados, para converter o atributo class (class_index).
Podemos utilizar uma operação de transformação nos dados filtrando os valores de label
em cada uma das classes presentes na base. Vale observar que é apenas uma operação
de manipulação e não caracteriza o modelo de treinamento e avaliação que desejamos
criar. Sua finalidade é apenas a visualização dos atributos criados na etapa de extração de
classe “Iris-versicolor”
atributos. A classe “Iris-setosa” recebeu o valor 0 como class_index. A
recebeu o valor 1 como class_index. A classe “Iris-virginica” recebeu o valor 2 como class_index.
Treinamento do Modelo
Nessa parte do workflow, a operação Dividir (na seção de Transformação de Dados), será
ligada à saída da operação Converter categórico para numérico.
O treinamento ocorre a partir de um algoritmo de análise. No nosso exemplo utilizaremos o
algoritmo de classificação Árvore de Decisão.
Além do fluxo completo, segue abaixo cada uma das operações com seus parâmetros
principais.
Divisão Percentual
Divide o fluxo de dados em duas partes que podem ser definidas movendo o indicador de
peso. No nosso exemplo separamos 50% dos dados para treinamento e 50% para testes.
Árvore de Decisão
Selecionamos todos os atributos mencionados na etapa anterior como parâmetros de
entrada. O objetivo da operação é permitir o processo de treinamento, criando o modelo de
classificação. A saída do modelo é o resultado de predição do modelo armazenado na
omo este tutorial é destinado a usuários iniciantes não entraremos em
variável resultado. C
detalhes quanto ao significado dos outros parâmetros utilizados neste classificador.
Utilizamos sua versão padrão, sem modificar os parâmetros iniciais. Informações mais
aprofundadas podem ser encontradas no manual das operações de classificação.
Aplicar modelo
Será que um algoritmo de classificação que use árvore de decisão foi a melhor opção para
este volume de dados? É o que analisaremos na próxima etapa. Para finalizar o nosso
experimento precisamos avaliar o nosso modelo. Para isso basta adicionar a operação
Avaliar Modelo nas saídas das operações Árvore de decisão e Aplicar Modelo. O papel
dessa operação é comparar os resultados do modelo com os valores originais, e apresentar
e aproveitamento. Esta nota varia de acordo com o tipo de métrica usada
uma nota (score) d
na avaliação do modelo. Para o exemplo em questão utilizamos accuracy, aplicada para
atributos multiclasse. Não entraremos em detalhes na especificação dos atributos da
operação. Maiores informações podem ser encontradas nas documentações das
operações.
Avaliar modelo
Após a execução, podemos acessar os resultados da avaliação do modelo na aba
Resultados. Na avaliação da acurácia do algoritmo, encontrando o valor 0.96. A medida de
acurácia geralmente é o ponto de partida para a análise de um modelo. Ela equivale ao
número de predições corretas dividida pelo número total de predições realizadas. Se
calcularmos a porcentagem da acurácia temos 96%.
Para completar a avaliação e evitar qualquer ambiguidade, visto que diferentes algoritmos
podem apresentar valores bem diversos de acurácia, a análise dos resultados por meio da
matriz de confusão é uma alternativa.
Avaliando a matriz de confusão, gerada pela ferramenta, podemos verificar que o algoritmo
que escolhemos para o modelo consegue um excelente resultado em predizer o
comportamento da base teste. A quantidade de verdadeiros positivos foi muito superior em
relação à quantidade de falsos negativos na detecção das espécies, comprovando o valor
encontrado de acurácia na tabela anterior. Deixo com você a tarefa de realizar este mesmo
experimento com outros algoritmos, e avaliando a acurácia dos mesmos em busca de um
modelo ainda mais acertado. Há de se considerar a aleatoriedade em execuções de
Aprendizado de Máquina, em todas as fases, seja na coleta dos dados, nos algoritmos em
si ou nas amostras para o modelo e testes. Isso resulta em números de acurácia diferentes,
mesmo com o mesmo conjunto de dados e modelo, em execuções diferentes.
A utilização de gráficos para análise análise de uma base de dados, permite encontrar
padrões nos dados, reconhecer comportamentos desconhecidos e principalmente
responder nossas dúvidas ou hipóteses. Uma visualização utiliza a comunicação visual para
tornar mais perceptível o significado e o valor dos atributos.
● Gráfico de Área (Area chart): Este tipo de gráfico é baseado no gráfico de linhas, e
a área entre o eixo e a linha é comumente enfatizada com cores, texturas e
hachurados. Normalmente é utilizado para representar resultados acumulados ao
longo do tempo, utilizando de números e porcentagens.
● Gráfico de Barras (Bar chart): Este tipo de gráfico é composto por barras
retangulares proporcionais aos valores que elas representam, e podem ser plotadas
vertical ou horizontalmente. É utilizado para representar dados categóricos, isto é,
um agrupamento de dados dividido em grupos discretos, como meses do ano.
● Gráfico de Dispersão (Scatter plot chart): Este tipo de gráfico utiliza coordenadas
cartesianas para exibir valores de duas variáveis em um conjunto de dados.
● Gráfico de Linha (Line chart): Este tipo de gráfico consiste em uma série de pontos
de dados ligados por linhas retas. É utilizado para visualizar a tendência dos dados
ao longo de intervalos de tempo, e é um dos mais comuns tipos de gráficos.
● Gráfico de Rosca (Donut chart): Este tipo de gráfico é uma variante do gráfico de
pizza com uma lacuna em seu centro, o que possibilita a adição de mais
informações sobre os dados como um todo.
● Publicar como dashboard: Publica as visualizações ligadas a ela em um quadro,
chamado de Dashboard, e acessível no menu principal, à esquerda.
● Sumário Estatístico: É uma tabela que contém análises estatísticas acerca dos
dados trabalhados.
● Visualização em mapa: Retrata os dados em um mapa, quando fornecidos dados
de latitude e longitude, além de dados quantitativos.
● Visualização em tabela: Uma tabela que mostra a base de dados, similar à primeira
caixa da aba Resultados dos parâmetros das operações.
● Box plot: Gráfico utilizado para visualizar quartis, máximo, mínimo e outliers de um
atributo.
Para tornar essa parte da documentação interessante utilizamos nos nossos exemplos a
base Titanic, utilizada em umas das competições do site Kaggle: Kaggle Competition -
Titanic Machine Learning from Disaster (o arquivo que utilizaremos será o de
treinamento, train.csv).
Diz o site:
Uma das razões pelas quais o naufrágio levou a uma perda de vidas era que não havia
botes salva-vidas suficientes para os passageiros e tripulantes. Embora houvesse algum
elemento de sorte envolvido na sobrevivência do naufrágio, alguns grupos de pessoas
eram mais propensos a sobreviver do que outros, como mulheres, crianças e a classe
alta.
Neste desafio, pedimos que você complete a análise de que tipos de pessoas
provavelmente sobrevivem. Em particular, pedimos que você aplique as ferramentas de
aprendizado de máquina para prever quais passageiros sobreviveram à tragédia.
Vamos tentar tirar algumas informações interessantes dos dados e formatá-los por meio de
visualizações. Para tornar o nosso processo mais dinâmico, vou deduzir que você já sabe
carregar a base para o lemonade. Se ainda não sabe, volte duas seções e dê uma lida na
seção de Importação de base de dados. Pode acontecer que os nomes dos atributos
utilizados para o nosso exemplo sejam diferentes dos que você escolher, mas o importante
é o entendimento do processo. Também vou deduzir que você sabe criar um novo workflow
e já entende seu funcionamento. O formato do workflow que construiremos será o seguinte:
Carregamento da base e consistência dos dados
Para gerar os gráficos, precisamos manipular os dados selecionando os atributos que vão
compor os eixos. Para este exemplo, precisaremos do atributos Pclass e Survived. Vamos
dar uma olhada na operação de agregação: Agrupar linhas por função. Precisamos contar
os sobreviventes e mortos por cada uma das classes.
Para contar o número de sobreviventes e mortos por classe precisamos utilizar o atributo
Survived como pivô, isto é os valores de Survived serão sumarizados em uma tabela
agregada por classe. Isto explica porque os valores 0 e 1 foram inseridos na caixa Atributo
usado como pivô. O resultado dessa operação pode ser visto em sequência no preview.
Agora basta selecionar os atributos e criar as visualizações. O gráfico de rosca vai
representar o número mortos por cada classe.
Cada cor do gráfico representa o número de mortos por classe. Deixo a você a tarefa de
analisar quantos tripulantes embarcaram por classe e quais a percentagem de mortos em
relação ao total. Será que os passageiros da terceira classe tiveram um número relativo de
mortos maior que os passageiros da segunda e primeira classe?
Agora vamos para o gráfico de pizza, ele apresenta o número de sobreviventes por classe.
Os nossos dois últimos exemplos vão apresentar gráficos de barras e linhas
respectivamente. O Lemonade permite que várias séries de dados sejam representados
num mesmo gráfico permitindo que o analista seja capaz de apresentar comparações e
comportamentos de mais de um grupo de informação.
Nesse exemplo, vamos construir um gráfico de barras que apresenta o número viajantes
por classe organizados por sexo. Será que nesse desastre o número relativo de mulheres e
homens foram muito diferentes para cada classe? Vamos tentar achar a resposta na análise
do gráfico.
Inicialmente, vamos começar por agregar os dados pelos dois atributos que desejamos
avaliar: Pclasse e Sexo. A ideia é a mesma dos gráficos anteriores, utilizaremos a
operação Agrupar linhas por função: vamos agregar por classe, usar o gênero como pivot
e contar a quantidade de homens e mulheres.
o resultado.
Vamos ver um preview d
Pronto. Agora basta ordenar os resultados por classe e plotar o gráfico de barras. Para
ordenar utilizamos a operação Ordenar.
Em seguida, selecione a operação Gráfico de barras para plotar as duas séries de dados,
outra para female.
uma para male e
Vamos completar o nosso gráfico anterior com a seguinte análise: Quantas pessoas
morreram por idade? As mortes aumentaram com o aumento da idade? Idosos e crianças
foram resgatadas primeiro? É o que vamos tentar responder com nosso gráfico de linhas.
Note que, este fluxo vai ser mais complexo que os exemplos anteriores, vamos definir uma
idade mínima. Isso é importante para tornar a manipulação dos dados mais dinâmica e
diminuir o tempo gasto em operações de tratamento dos dados.
A primeira operação do nosso fluxo vai ser um filtro para idades acima de 1 ano. Para criar
um filtro basta utilizar a operação Filtrar.
Em seguida, vamos agregar o fluxo de dados por idade e fazer o pivot pelos sobreviventes.
Ao final teremos o número de mortos e sobreviventes por idade.
É uma boa prática de desenvolvimento sempre visualizar o resultado de uma operação
complexa.
Podemos observar dois aspectos interessantes: o primeiro é que as idades não são lineares
e o segundo é se o número de sobreviventes para alguma delas foi nulo. Logo precisamos
realizar mais algumas transformações nesses dados antes de desenhar o nosso gráfico.
Vamos começar por substituir os valores nulos por zero. E para isso vamos utilizar a
operação Tratas dados ausentes.
Uma forma de tornar a coluna das idades linear é mudar a escala para desenharmos o eixo
das idades no gráfico. No nosso exemplo, vamos escolher que a idade seja formada por
múltiplos de 5, isto equivale a diminuir o “zoom” de visualização das linhas. Utilizaremos
uma operação nova: Transformar valores por função. Essa operação nos permite utilizar
diretamente as funções da api do spark. (para ter acesso a lista das operações disponíveis,
acesse a documentação completa para cada operação) Neste exemplo, utilizaremos a
função round para arredondar o resultado da operação de divisão do valor absoluto de cada
idade por 5 (lembre-se da nova escala), o que resulta na parte inteira do resultado da
divisão a ser multiplicado por 5. (múltiplos)
Essa parte pode ter ficado um pouco confusa. Por isso, lembre-se que podemos ver um
preview dos dados e esclarecer qualquer dúvida.
Agora basta utilizar a operação Gráfico de linha(s) para gerar o gráfico de linhas. É
importante ressaltar que temos duas séries de dados para o eixo Y que correspondem ao
número de mortos e sobreviventes por idade.
Para finalizar, vamos criar um painel (dashboard) e inserir nossas visualizações. Este painel
vai nos permitir acessar nossas visualizações diretamente, sem a necessidade de
re-executar nosso fluxo de trabalho ou acessar diretamente uma execução. Para criarmos
um painel de visualizações, basta adicionar todas nossas visualizações como entrada da
operação Publicar como dashboard. Seu único parâmetro é o título do painel.