Categorias
Big Data Intercâmbio Pesquisa

Alunos de intercâmbio participam de pesquisa no Insight Lab

O Insight recebe durante os próximos meses os estudantes Taya Mohamed Abderrahman e Mohammad Abboud, vindos da Mauritânia e Itália, respectivamente. Ambos estão contribuindo com suas pesquisas no Laboratório Insight como alunos intercambistas.

Taya é aluno de graduação do curso de Engenharia em Inteligência Artificial da Université Mohammed VI Polytechnique – EMINES, no Marrocos. O estudante estará fazendo um estágio no Insight Lab por um período de dois meses com sua pesquisa na área de Processamento de Linguagem Natural intitulada: Improving named entity recognition using Deep Learning with human in the coops (NERD).

Esse intercâmbio é possível graças à parceria entre a Universidade Federal do Ceará (UFC) e diversas universidades no mundo, assim, alunos das áreas de engenharia vêm desenvolver suas pesquisas nos laboratórios de pesquisa da UFC. 

Já o aluno Mohammad está cursando doutorado na Universidade de Versalhes Saint Quentin en Yvelines – Paris Saclay. Mohammad estará em missão de pesquisa por um período de um mês aqui no Insight, e sua vinda é fruto da parceria entre o laboratório Insight e o projeto Master. O pesquisador tem seu trabalho intitulado em: Learning from a mass of multidimensional Times Series in the context of Internet of things.

O projeto Master é coordenado pela Professora Chiara Renso, Doutora em Ciência da Computação, pesquisadora sênior do Instituto ISTI – CNR e integrante do conselho nacional de pesquisa da Itália.

Projeto Master

O objetivo do projeto Master, sediado na Itália, é formar uma rede internacional e intersetorial de organizações trabalhando em um programa de pesquisa conjunta para definir novos métodos para construir, gerenciar e analisar trajetórias semânticas de múltiplos aspectos.

O projeto propõe métodos para analisar e inferir conhecimento a partir de trajetórias de múltiplos aspectos, considerando como questões vitais as dimensões de privacidade e big data como demonstra a imagem abaixo. O laboratório Insight, por meio da UFC, é um dos três parceiros brasileiros desse projeto.

Imagem: Projeto Master

Categorias
Big Data Cientista-chefe

Big Data de Fortaleza e o Programa Cientista Chefe são debatidos na Semana gLocal 2022

A semana de avaliação gLocal, lançada em 2019, é um evento anual dedicado ao compartilhamento de conhecimento e experiência sobre Monitoramento e Avaliação em todo mundo. Organizações de diversos países já sediaram cerca de 1.000 eventos nos cinco continentes e em diversos idiomas. 

Em 2022, a Prefeitura de Fortaleza, por meio do Instituto de Planejamento – IPLANFOR, realizou a Semana gLocal de Avaliação 2022 Fortaleza, nos dias 30 de maio a 3 de junho, no formato on-line com transmissão ao vivo pelo canal do YouTube do Observatório de Fortaleza. 

O evento trouxe mesas redondas, palestras e o workshop com foco nos projetos desenvolvidos pela gestão municipal para aperfeiçoar o acompanhamento da implementação das políticas públicas locais. Na ocasião, técnicos e gestores públicos, profissionais de avaliação e especialistas se uniram a este movimento global para compartilhar conhecimentos e experiências neste campo com a população da cidade.

Big Data de Fortaleza e o Programa Cientista Chefe

 

Imagem: instagram.com/sglocalfortaleza/

 

O professor José Macêdo, coordenador do Insight Lab, esteve entre os palestrantes da Semana gLocal 2022 integrando a mesa “Big Data de Fortaleza e o Programa Cientista Chefe”, organizada pelo Instituto de Planejamento de Fortaleza.

Essa mesa se estruturou a partir da pergunta: como universidades e governos municipais podem se beneficiar mutuamente por meio de projetos conjuntos? O objetivo do debate foi mostrar a construção do Big Data de Fortaleza. O Programa Cientista Chefe e o Instituto de Planejamento de Fortaleza são responsáveis pela infraestrutura do Big Data, que pretende ser uma plataforma analítica capaz de predizer cenários contextualizados, capaz de oferecer evidências para a tomada de decisão de gestores municipais. Em 2017, o programa Cientista Chefe foi criado pela FAP (Fundação de Amparo à Pesquisa) do Estado do Ceará com o objetivo de auxiliar a gestão pública.

Participantes da mesa:

José Antônio Fernandes de MacêdoCientista-Chefe de Dados e Transformação Digital do Estado do Ceará. É professor do Departamento de Computação da Universidade Federal do Ceará, mestre e Doutor pela PUC-Rio, realizou seu pós-doutorado na École Polytechnique Fédéral de Lausanne. 

Tarcisio PequenoPresidente da Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico. Tarcísio é graduado em Engenharia Civil pela Universidade Federal do Ceará (1970), Mestre em Informática pela Pontifícia Universidade Católica do Rio de Janeiro (1977) e Doutor em Informática pela Pontifícia Universidade Católica do Rio de Janeiro (1981).

Rossana Maria de Castro AndradeCientista-chefe de Planejamento da Prefeitura de Fortaleza. Possui doutorado em Computer Science pela University of Ottawa, mestrado em Ciência da Computação pela Universidade Federal da Paraíba e graduação em Ciência da Computação pela Universidade Estadual do Ceará. É professora da Universidade Federal do Ceará, no Departamento de Computação.

Assista aqui Big Data de Fortaleza e o Programa Cientista Chefe:

Para acompanhar mais apresentações e debates que aconteceram durante a Semana gLocal de Avaliação 2022 Fortaleza, acesse: Observatório de Fortaleza – YouTube.

Categorias
Big Data Ciência de Dados Cientista-chefe

Plataforma Big Data Social é Apresentada no I Encontro de Tecnologia para o Desenvolvimento Social

A Secretaria do Planejamento e Gestão do Ceará (Seplag-CE), por meio da sua secretaria executiva do Planejamento e Orçamento, realizou, no dia 30 de maio, o I Encontro de Ciência e Tecnologia para o Desenvolvimento Social. O evento realizado em  parceria com a Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico (Funcap), vinculada à Secretaria da Ciência, Tecnologia e Educação Superior do Estado do Ceará (Secitece), aconteceu no auditório da Seplag.

Apresentação da Plataforma Big Data Social

Na ocasião, José Macêdo, cientista-chefe da Transformação Digital e coordenador do Insight Lab, apresentou a plataforma Big Data Social do Governo do Ceará e sua equipe de trabalho. Estavam presentes também os cientistas-chefes: Flávio Ataliba (Economia), Márcia Machado (Proteção Social) e Jorge Lira (Educação).

 

Imagem: Apresentação Big Data Social

Imagem: Apresentação Big Data Social

No evento foram apresentados os temas aplicados por meio da gestão pública que causaram impactos e estão contribuindo para o progresso social aliado ao advento da tecnologia e a popularização da ciência, e a formação de cidadãos sociais e culturais no contexto tecnológico.

Segundo Flávio Ataliba, secretário executivo do Planejamento e Orçamento da Seplag, o evento surgiu  para apresentar os resultados das pesquisas realizadas nas áreas citadas, além de servir como um momento rico para o compartilhamento de conhecimentos e de novas ideias.

Assista aqui a apresentação do professor Macêdo sobre a plataforma Big Data Social.

Apoiadores

O encontro também teve o apoio da Escola de Gestão Pública do Estado do Ceará (EGPCE) a Universidade Federal do Ceará (UFC), a Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico (Funcap), o Laboratório de Inovação de Dados (ÍRIS), os Programas Cientistas Chefes, o Instituto de Pesquisa e Estratégia Econômica do Ceará (Ipece), a Secretaria da Proteção Social, Justiça Cidadania, Mulheres e Direitos Humanos, a Secretaria da Educação e a Vice-Governadoria do Ceará.

Fonte: Seplag CE

Categorias
Big Data Ciência de Dados Dados

Conheça as joias do infinito na Ciência de Dados

Quais são as joias do infinito da Ciência de Dados? As seis joias do universo Marvel Comics você já deve conhecer: Espaço, Mente, Alma, Realidade, Tempo e Poder.  Quando usadas em conjunto, dão ao seu portador poderes que o torna capaz de controlar todo o universo!

Mas como seriam estes poderosos artefatos usados na Data Science (DS)? Você pode unir diversos poderes para dominar o universo dos dados e assim se tornar um super Cientista de Dados!

Quer saber quais são essas joias? Então vamos lá!

 

? Pedra da Realidade 

A Pedra da Realidade concede ao usuário o poder de manipular a matéria.

Presumivelmente, para manipular a realidade, temos que entendê-la. Essa parece ser uma analogia boa (o suficiente) para a importância do conhecimento do domínio (uma vez que um bom cientista de dados não manipula a realidade, certo?).

Iniciar um projeto de DS sem uma compreensão do domínio do projeto não é apenas uma má ideia, como resultado final provavelmente não retratará a  realidade. Assim como não permitimos que atletas competentes que nunca aprenderam as regras do beisebol joguem  da mesma forma, não devemos esperar ser capazes de realizar Ciência de Dados de maneira competente em um domínio que não entendemos, independentemente de nossas habilidades estatísticas, analíticas, técnicas e relacionadas.

O que exatamente constitui conhecimento de domínio? É relativo. Você está fazendo uma análise descritiva superficial de algum aplicativo de namoro? Ou você está empreendendo algum projeto de análise preditiva aprofundado em finanças para uma organização que se especializou em alguma estratégia obscura de investimento em títulos? O conhecimento necessário do domínio de “namoro” para realizar o primeiro feito é provavelmente insignificante, mas quaisquer insights úteis sobre o segundo certamente exigirão um conhecimento financeiro sólido.

 

? Pedra do Espaço 

 

A Pedra do Espaço dá ao usuário poder sobre o espaço.

Poder sobre o espaço, hein? Que tal poder sobre o espaço de dados? E como alguém obteria poder sobre seu espaço de dados? Conhecimento íntimo, por meio de análise exploratória de dados.

Mas quanta Análise de Dados e exatamente de que tipo de análise estamos falando? Isso vai te surpreender, mas … é relativo. Se estamos interessados ​​em Análise Descritiva – isto é, nenhuma previsão, ao longo das linhas de uma análise de dados direta – quanto mais intimamente estivermos familiarizados com os dados, melhor. O fim é o meio neste caso, e portanto a qualidade de descrever, visualizar e compartilhar os dados, como um analista de dados, está altamente correlacionada com a intimidade da exploração.

Quando se trata de Análise Preditiva e empreendimentos de Machine Learning, existem opiniões divergentes sobre o quanto a análise exploratória de dados é útil. Existem também opiniões divergentes sobre o nível de análise exploratória de datasets que não estão sendo usados ​​para treinamento (ou seja, conjuntos de validação e teste). Deixando isso de lado, para garantir que o poder máximo sobre seu espaço de dados seja alcançado, certifique-se de se proteger contra as armadilhas potenciais de análises de dados exploratórias deficientes ou visualizações de má qualidade, como a falácia da correlação, o paradoxo de Simpson e a falácia ecológica.

Quando realizada de maneira adequada, a análise exploratória de dados fornecerá uma compreensão de seus dados de uma forma que permita o acompanhamento de uma Ciência de Dados bem-sucedida.

 

? Pedra do Tempo

A Pedra do Tempo concede ao seu proprietário o poder de rebobinar ou avançar o tempo.

Se você estudou a complexidade do algoritmo, sabe que a escolha do algoritmo pode impactar severamente o tempo que leva para completar uma determinada tarefa de computação, mesmo com os mesmos dados, e é por esta razão que a seleção do algoritmo e do método é o nosso equivalente a ser capaz de manipular o tempo.

Isso se aplica tanto à seleção completa de algoritmos quanto à configuração de hiperparâmetros, que também têm impacto no tempo de execução. As arquiteturas de rede neural podem ser incrivelmente complexas, mas um par de redes neurais simples equivalentes pode ter tempos de convergência muito diferentes ao usar taxas de aprendizado muito desiguais.

Você sabe sobre a compensação de viés-variância, mas também há uma compensação de espaço-tempo, bem como uma compensação de complexidade-velocidade que pode ser feita. Um modelo de Regressão Logística pode não funcionar tão bem quanto um de Random Forest de milhares de árvores, mas esse impacto no desempenho pode valer a pena para você em troca de velocidade, para não falar do aumento na aplicabilidade que o modelo de Regressão Logística pode fornecer frente ao Random Forest (se essa for sua escolha).

Isso não quer dizer que você deva escolher um algoritmo mais rápido (ou menos complexo, ou menos intensivo em computação ou mais explicável), mas você precisa ter em mente que é uma das compensações que você está fazendo e uma das melhores maneiras que temos de controlar o fluxo do tempo.

 

? Pedra do Poder 

 

A Pedra do Poder concede ao seu portador uma grande quantidade de energia – o tipo de energia que você poderia usar para destruir um planeta inteiro.

Isso soa como muita energia. Onde encontramos esse tipo de energia no mundo da Ciência de Dados? Poder computacional!

Poder computacional (ou “computação”) são os recursos computacionais coletivos que temos para lançar em um problema particular. A computação ilimitada já foi considerada a essência e o fim de tudo da computação, e por um bom motivo. Considere quão pouca computação havia uma, duas ou três décadas atrás, em comparação com hoje. Imagine cientistas pensando sobre problemas que poderiam resolver, se ao menos tivessem mais do que um punhado de MHz de computação à sua disposição. O céu seria o limite!

Claro, não foi exatamente assim que as coisas aconteceram. Temos muito mais computação à nossa disposição agora do que jamais tivemos no passado na forma de supercomputadores, a nuvem, APIs publicamente disponíveis apoiadas por grandes quantidades de computação e até mesmo nossos próprios notebooks e smartphones. Todos os tipos de problemas que nunca poderíamos imaginar que teriam computação suficiente para resolver agora são tratáveis, e isso é um grande desenvolvimento. Precisamos ter em mente, no entanto, que “inteligente” é um grande contrapeso para computar, e muitos avanços na Ciência de Dados e suas tecnologias de apoio foram possibilitados pelo cérebro em vez da força.

Idealmente, um equilíbrio perfeito de cérebro e força muscular poderia ser usado para atacar todos os problemas existentes, com o uso inteligente para configurar uma abordagem algorítmica perfeita e a computação necessária disponível para apoiá-la. Talvez esta seja uma área que a Ciência de Dados um dia venha a provar ser útil.

Até então, tenha certeza de que há computação disponível até mesmo para as abordagens menos que perfeitas para a solução de problemas.

 

Pedra da alma

Não está claro quais são os poderes da Pedra da Alma no universo cinematográfico. Nos quadrinhos, a joia permite que o portador capture e controle as almas dos outros.

“Capture e controle as almas dos outros” soa ameaçador, e mais do que apenas um pouco tortuoso. Mas se dermos uma visão mais positiva do conceito de Pedra da Alma, poderíamos forçar uma equivalência entre ela e o poder de predição. Estamos treinando modelos para controlar a essência mais íntima dos dados não rotulados – sua alma – fazendo previsões informadas sobre o que realmente contém.

Isso não é um exagero. Certo!?

A Pedra da Alma, então, é análoga ao poder de predição, o que quer dizer que está no cerne absoluto da Data Science. O que os cientistas de dados estão tentando realizar? Eles estão tentando responder a perguntas interessantes com os dados disponíveis, a fim de fazer previsões que se alinham o mais próximo possível com a realidade. Essa parte da previsão parece bastante crucial.

E, por ser tão crucial, deve ficar evidente que os resultados devem ser tratados com o máximo cuidado. A alma do nosso trabalho é o valor que ele pode criar seja para negócios, instituições de caridade, governo ou sociedade em geral.

A Ciência de Dados é uma luta pela alma, juntamente com a próxima batalha pela mente.

 

? Pedra da Mente 

A Pedra da Mente permite ao usuário controlar as mentes dos outros.

E no mundo do Data Science, nada melhor para ajudar a controlar as mentes dos outros do que uma apresentação de dados bem elaborada, incluindo uma história atraente e visualizações eficazes.

A modelagem está completa. As previsões foram feitas. Os insights são perspicazes. Agora é hora de informar as partes interessadas do projeto sobre os resultados. Mas os demais profissionais que trabalham em uma equipe, além dos cientistas de dados, não têm os mesmos entendimentos sobre os dados e seu processo, então precisamos ser claros ao apresentar nossas descobertas a eles de uma forma que entendam.

Lembre-se, se seus insights não estiverem claros, então seu trabalho não está completo. Cabe a você convencer os outros do valor do seu trabalho. Uma vez convencidos, eles podem agir e a mudança por meio da ação é a verdadeira recompensa de qualquer projeto de Ciência de Dados.

 

Este artigo foi traduzido de Matthew Mayo no KDnuggets.

Categorias
Big Data Ciência de Dados Machine Learning

Pesquisadores desenvolvem detector de fake news para notícias sobre o Covid-19

Por tratar-se de uma nova ameaça, sabe-se muito pouco sobre o coronavírus (Sars-CoV-2). Esse fator dá grande abertura para disseminação de fake news (como ficou popularmente conhecido o compartilhamento de informações falsas), que podem ir desde supostos métodos de prevenção, tratamentos caseiros, cura do vírus e até mesmo tratamentos controversos recomendados por médicos, mesmo que não haja comprovação ou evidência científica para tais. Tudo isso pode dificultar o trabalho de órgãos de saúde, prejudicar a adoção de medidas de distanciamento social pela população e acarretar aumentos dos números de infectados e de morte pelo vírus.

Para diminuir os impactos dessa desinformação, diversos sites de checagem de fatos têm ferramentas que identificam e classificam (manualmente) tais notícias. Em geral, essas ferramentas poderiam fazer uso de algoritmos de aprendizagem de máquina para classificação de notícias. Diante dessa problemática, é evidente a necessidade de elaborar mecanismos e ferramentas que possam combater eficientemente o caos das fakes news.

Por isso, durante as disciplinas de Aprendizagem de Máquina e Mineração de Dados (Programa de Pós-graduação em Ciência da Computação da Universidade Federal do Ceará (MDCC-UFC)), nós (Andreza Fernandes, Felipe Marcel, Flávio Carneiro e Marianna Ferreira) propusemos um detector de fake news para analisar notícias sobre o COVID-19 divulgadas em redes sociais. Nosso objetivo é ajudar a população quanto ao esclarecimento da veracidade dessas informações.

Agora, detalharemos o processo de desenvolvimento desse detector de fake news.

 

Objetivos do projeto

  • Formar uma base dados de textos com notícias falsas e verdadeiras acerca do COVID-19;
  • Diminuir enviesamento das notícias;
  • Experimentar diferentes representações textuais;
  • Experimentar diferentes abordagens clássicas de aprendizagem de máquina e deep learning;
  • Construir um BOT no Telegram que ajude na detecção de notícias falsas relacionadas ao COVID-19.

 

Entendendo as terminologias usadas

Para o entendimento dos experimentos realizadas, vamos conceituar alguns pontos chaves e técnicas de Processamento de Linguagem Natural.

Tokenização: Esse processo transforma todas as palavras de um texto, dado como entrada, em elementos (conhecidos como tokens) de um vetor.

Remoção de Stopwords: Consiste na remoção de palavras de parada, como “a”, “de”, “o”, “da”, “que”, “e”, “do”, dentre outras, pois na maioria das vezes não são informações relevantes para a construção do modelo.

Bag of words: É uma representação simplificada e esparsa dos dados textuais. Consiste em gerar uma bolsa de palavras do vocabulário existente no dado, que constituirá as features do dataset. Para cada sentença é assinalado um “1” nas colunas que apresentam as palavras que ocorrem na sentença e “0” nas demais.

Term Frequency – Inverse Document Frequency (TF-IDF): Indica a importância de uma palavra em um documento. Enquanto TF está relacionada à frequência do termo, IDF busca balancear a frequência de termos mais comuns/frequentes que outros.

Word embeddings: É uma forma utilizada para representar textos, onde palavras que possuem o mesmo sentido têm uma representação muito parecida. Essa técnica aprende automaticamente, a partir de um corpus de dados, a correlação entre as palavras e o contexto, possibilitando que palavras que frequentemente ocorrem em contextos similares possuam uma representação vetorial próxima. Essa representação possui a vantagem de ter um grande poder de generalização e apresentar baixo custo computacional, uma vez que utiliza representações densas e com poucas dimensões, em oposição a técnicas esparsas, como Bag of Words. Para gerar o mapeamento entre dados textuais e os vetores densos mencionados, existem diversos algoritmos disponíveis, como Word2Vec e FastText, os quais são utilizados neste trabalho.

Out-of-vocabulary (OOV): Consiste nas palavras presentes no dataset que não estão presentes no vocabulário da word embedding, logo, elas não possuem representação vetorial.

Edit Distance: Métrica que quantifica a diferença entre duas palavras, contando o número mínimo de operações necessárias para transformar uma palavra na outra.

 

Metodologia

Agora iremos descrever os passos necessários para a obtenção dos resultados, geração dos modelos e escolha daquele com melhor performance para a efetivação do nosso objetivo.

 

Obtenção dos Dados

Os dados utilizados para a elaboração dos modelos foram adquiridos das notícias falsas brasileiras sobre o COVID-19, dispostos no Chequeado, e de um web crawler dos links das notícias, utilizadas para comprovar que a notícia é falsa no Chequeado, para formar uma base de notícias verdadeiras. Além disso também foi realizado um web crawler para obtenção de notícias do Fato Ou Fake do G1.

Originalmente, os dados obtidos do Chequeado possuíam as classificações “Falso”, “Enganoso”, “Parcialmente falso”, “Dúbio”, “Distorcido”, “Exagerado” e “Verdadeiro mas”, que foram mapeadas todas para “Falso”. Com isso, transformamos nosso problema em classificação binária.

No final, obtivemos um dataset com 1.753 notícias, sendo 808 fakes, simbolizada como classe 0, e 945 verdadeiras, classe 1, com um vocabulário de tamanho 3.698. Com isso, dividimos o nosso dado em conjunto de treino e teste, com tamanhos de 80% e 20%, respectivamente.

 

Pré-processamento

Diminuição do viés. Ao trabalhar e visualizar os dados, notamos que algumas notícias verdadeiras vinham com palavras e sentenças que enviesavam e deixavam bastante claro para os algoritmos o que é fake e o que é verdadeiro, como: “É falso que”, “#Checamos”, “Verificamos que” e etc. Com isso, removemos essas sentenças e palavras, a fim de diminuir o enviesamento das notícias.

Limpeza textual. Após a etapa anterior, realizamos a limpeza do texto, consistindo em remoção de caracteres estranhos e sinais de pontuação e uso do texto em caixa baixa.

Tokenização. A partir do texto limpo, inicializamos o processo de tokenização das sentenças.

Remoção das Stopwords. A partir das sentenças tokenizadas, removemos as stopwords.

 

Representação textual

Análise exploratória

A partir do pré-processamento dos dados brutos, inicializamos o processo de análise exploratória dos dados. Verificamos o tamanho do vocabulário do nosso dataset, que totaliza 3.698 palavras. 

 

Análise do Out-of-vocabulary. Com isso, verificamos o tamanho do nosso out-of-vocabulary em relação às word embeddings pré-treinadas utilizadas, totalizando 32 palavras. Um fato curioso é que palavras chaves do nosso contexto encontram-se no out-of-vocabulary e acabam sendo mapeadas para palavras que não tem muita conexão com o seu significado. Abaixo é possível ver algumas dessas palavras mais à esquerda, e a palavra a qual foram mapeadas mais à direita.

Mapeamento de palavras

 

Análise da frequência das fake news por rede social. O dado bruto original advindo do Chequeado possui uma coluna que diz sobre a mídia social em que a fake news foi divulgada. Após uma análise visual superficial, apenas plotando a contagem dos valores dessa coluna (que acarreta até na repetição de redes sociais), notamos que os maiores veículos de propagação de fake news são o Facebook e Whatsapp.

 

 

Frequência de fake news por rede social

 

Análise da quantidade de fake news ao longo dos meses. O dado bruto original advindo do Chequeado também possui uma coluna que informava a data de publicação da fake news. Após realizar uma análise visual da distribuição da quantidade de fake news ao longo dos meses, notamos que o maior número de fake news ocorreu em abril, mês em que a doença começou a se espalhar com maior velocidade no território brasileiro. De acordo com o G1, em 28 de abril, o Brasil possuía 73.235 casos do novo coronavírus (Sars-CoV-2), com 5.083 mortes. Além disso, foi nesse mês que começaram a surgir os boatos de combate do Coronavírus via Cloroquina, além de remédios caseiros.

Volume de fake news relacionadas ao COVID-19 ao longo dos meses

 

Análise da Word Cloud. Com as sentenças tokenizadas, também realizamos uma visualização usando a técnica de Word Cloud, que apresenta as palavras do vocabulário em um tamanho proporcional ao seu número de ocorrência no todo. Com essa técnica, realizamos duas visualizações, uma para as notícias verdadeiras e outra para as fake news.

Nuvem de palavras nas notícias falsas

 

Nuvem de palavras nas notícias verdadeiras

 

Divisão treino e teste

A divisão dos conjuntos de dados entre treino e teste foi feita com uma distribuição de 80% e 20% dos dados, respectivamente. Os dados de treino foram ainda divididos em um novo conjunto de treino e um de validação, com uma distribuição de 80% e 20% respectivamente.

 

Aplicação dos modelos

Para gerar os modelos, escolhemos algoritmos e técnicas clássicas  de aprendizagem de máquina, tais como técnicas atuais e bastante utilizadas em competições, sendo eles: 

  • Regressão Logística (*): exemplo de classificador linear;
  • K-NN (*): exemplo de modelo não-paramétrico;
  • Análise Discriminante Gaussiano (*): exemplo de modelo que não possui hiperparâmetros;
  • Árvore de Decisão: exemplo de modelo que utiliza abordagem da heurística gulosa;
  • Random Forest: exemplo de ensemble de bagging de Árvores de Decisão;
  • SVM: exemplo de modelo que encontra um ótimo global;
  • XGBoost: também um ensemble amplamente utilizado em competições do Kaggle;
  • LSTM-Dense: exemplo de arquitetura que utiliza deep learning.

Os algoritmos foram utilizados por meio de implementações próprias (aqueles demarcados com *) e uso da biblioteca scikit-learn e keras.  Para todos os algoritmos, com exceção daqueles que não possuem hiperparâmetros e LSTM-Dense, realizamos Grid Search em busca dos melhores hiperparâmetros e realizamos técnicas de Cross Validation para aqueles utilizados por meio do Scikit-Learn, com k fold igual a 5.

 

Obtenção das métricas

As métricas utilizadas para medir a performance dos modelos foram acurácia, Precision, Recall, F1-score e ROC.

 

                Tabela 1. Resultados das melhores representações por algoritmo

MODELOS PRECISION RECALL F1-SCORE ACCURACY ROC
XGBoost BOW e TF-IDF* 1 1 1 1 1
SVM BOW E TF-IDF* 1 1 1 1 1
Regressão Logística BOW 0.7560 0.7549 0.7539 0.7549 0.7521
LSTM FASTTEXT 0.7496 0.7492 0.7493 0.7492 0.7492
Random Forest TF-IDF 0.7407 0.7407 0.7402 0.7407 0.7388
Árvore de Decisão TF-IDF 0.7120 0.7122 0.7121 0.7122 0.7111
Análise Discriminante Gaussiano Word2Vec 0.7132 0.7122 0.7106 0.7122 0.7089
k-NN FastText 0.6831 0.6809 0.6775 0.6638 0.6550

 

 

                Tabela 2. Resultados das piores representações por algoritmo

MODELOS PRECISION RECALL F1-SCORE ACCURACY ROC
XGBoost Word2Vec  0.7238 0.7236 0.7227 0.7236 0.7211
SVM Word2Vec 0.7211 0.7179 0.7151 0.7179 0.7135
Árvore de Decisão Word2Vec 0.6391 0.6353 0.6351 0.6353 0.6372
Random Forest Word2Vec 0.6231 0.6210 0.6212 0.6210 0.62198
Regressão Logística FastText 0.6158 0.5982 0.5688 0.59829 0.5858
Análise Discriminante Gaussiano TF-IDF 0.5802 0.5811 0.5801 0.5811 0.5786
k-NN BOW 0.5140 0.5099 0.5087 0.5042 0.5127
LSTM WORD2VEC (*) 0.4660 0.4615 0.4367 0.4615 0.4717

 

Resultados

Com os resultados apresentados percebemos que os modelos SVM e XGBoost com as representações TF-IDF e BOW atingiram as métricas igual a 100%. Isso pode ser um grande indicativo de sobreajuste do modelo aos dados. Abaixo podemos visualizar a matriz de confusão e a curva ROC dos mesmos.

Logo após vem a Regressão Logística com métricas em torno de ~75.49%! Abaixo podemos visualizar sua matriz de confusão e a curva ROC.

 

Exemplos de classificações da Regressão Logística

  • True Positive (corretamente classificada)
    • Texto que diz que vitamina C e limão combatem o coronavírus
  • True Negative (corretamente classificada)
    • Notícia divulgada em 2015 pela TV italiana RAI comprova que o novo coronavírus foi criado em laboratório pelo governo chinês.
  • False Positive (erroneamente classificada)
    • Vitamina C com zinco previne e trata a infecção por coronavírus
  • False Negative (erroneamente classificada)
    • Que neurocientista britânico publicou estudo mostrando que 80% da população é imune ao novo coronavírus

Intrigados com os resultados, resolvemos visualizar as diferentes representações de dados em 2 componentes principais (visto a alta dimensionalidade do dado, o que prejudica a análise do que está acontecendo de fato) por meio das técnicas de PCA e T-SNE, separando por cor de acordo com sua classificação. 

É interessante notar que as representações de word embeddings utilizadas possui uma representação bastante confusa e misturada. Já as representações TF-IDF e Bag of Words são facilmente separáveis.

 

 

                            FastText PCA (Semelhante ao Word2Vec)

 

                                       FastText T-SNE

 

 

                                         Word2Vec T-SNE

 

 

                                   BOW PCA (Semelhante ao TF-IDF)

 

 

                                              BOW T-SNE

 

 

                                             TF-IDF T-SNE

 

Conclusão

A base de dados utilizada para obtenção dos modelos foi obtida por meio do site Chequeado, e, posteriormente, houve o enriquecimento dessa base por meio do  web crawler, totalizando 1.383 registros, sendo 701 fake news e 682 notícias verdadeiras. 

Para representação textual foram utilizadas as técnicas Bag of Words, TF-IDF e Word embeddings Word2Vec e FastText de 300 dimensões com pesos pré-treinados obtidas por meio da técnica CBOW com dimensões, disponibilizadas pelo Núcleo Interinstitucional de Linguística Computacional (NILC).  Para gerar os modelos foram utilizados os algoritmos Regressão Logística, kNN, Análise Discriminante Gaussiano, Árvore de Decisão, Random Forest, Gradient Boosting, SVM e LSTM-Dense. Para avaliação dos modelos foi utilizado as métricas Acurácia, Precision, Recall, F1-score, AUC-ROC e matriz de confusão.

Considerando os experimentos e os resultados, conclui-se que o objetivo principal deste trabalho, gerar modelos capazes de classificar notícias extraídas de redes sociais relacionadas ao COVID-19 como falsas e verdadeiras, foi alcançado com êxito. Como resultados, vimos que os modelos SVM e XGBoost com TF-IDF e BOW atingiram 100% nas métricas, com grandes chances de terem se sobreajustado aos dados. Com isso, consideramos como melhor modelo a Regressão Logística com a representação BOW, atingindo as métricas com valores próximos a 75.49%. 

O pior classificador foi o kNN com o BOW e LSTM-Dense com Word2Vec, porém é importante ressaltar que este último não contou com Grid Search e foi treinado com poucas épocas. No geral, as melhores representações foram a TF-IDF e BOW e a pior o Word2Vec.

Para este projeto houveram algumas dificuldades, sendo a principal delas a formação da base de dados, visto que o contexto pandêmico do COVID-19 é algo novo e devido à limitação da API do Twitter em relação ao tempo para extrair os tweets, que era originalmente a ideia da base de dados para esse projeto. Além disso, também houve a dificuldade de remoção do viés dos dados.

 

Como trabalhos futuros, visamos:

  • Ampliar a base de dados;
  • Investigar o que levou ao desempenho do SVM, XGBOOST com as representações TF-IDF e BOW.
  • Analisar performance dos modelos utilizando outras word embeddings pré-treinadas, como o BERT, Glove e Wang2vec.
  • Investigar o uso do modelo pré-treinado do BERT e com fine-tuned.
  • Aplicar PCA Probabilístico
  • Utilizar arquiteturas de deep learning mais difundidas na comunidade científica.

 

                                    

Categorias
Big Data Ciência de Dados Inteligência Artificial

A Ciência de Dados no mercado: 7 casos de sucesso

A ciência de dados tem revolucionado praticamente todas as áreas. Na educação, utilizando modelos para uma melhor avaliação de estudantes, na medicina, identificando e prevendo doenças, no futebol, obtendo o máximo valor das escalações de um time.

Neste artigo, apresentaremos 7 exemplos onde a ciência de dados é utilizada como uma poderosa ferramenta, com modelos e algoritmos que ajudam a analisar, prever e, consequentemente, obter melhores resultados em cada uma dessas áreas.

1- Segurança Pública

Em uma ação criminosa existem diversos elementos envolvidos. Informações colhidas anteriormente sobre os suspeitos (a exemplo, a ficha criminal) e sobre a região na qual um crime foi cometido (como entorno e vias de acesso) são fatores importantes na elucidação de delitos.

No entanto, muitas vezes esses dados coletados em diferentes regiões e por diferentes órgãos não estão integradas em uma mesma base de dados, o que prejudica o trabalho dos agentes policiais.

O Ceará tem sido um exemplo do uso inteligente da ciência de dados na segurança pública. Em 2019, o estado ganhou interesse nacional pela grande redução de seus índices criminais. Entre as diversas ações tomadas para atingir esse resultado, um dos maiores destaques é o uso de soluções tecnológicas baseadas em ciência de dados.

Em parceria com a Secretaria da Segurança Pública e Defesa Social (SSPDS), o Insight Lab desenvolveu ferramentas que têm ajudado a entender e combater práticas criminosas.

Conheça algumas dessas ferramentas:

Sistema Policial Indicativo de Abordagem (SPIA)

O Spia tem sido usado no enfraquecimento da mobilidade de criminosos, pois ajuda na identificação de veículos roubados. É um sistema de inteligência artificial que integra as bases de dados de órgãos federais, estaduais e municipais aos dados captados por mais 3.300 câmeras espalhadas pelo Ceará.

Big Data “Odin”

Como apresentado no portal do Governo do Estado do Ceará, o sistema de big data Odin “armazena e cruza dados obtidos por mais de 50 sistemas dos órgãos de segurança e de entidades parceiras. Todas as informações podem ser vistas em tempo real dentro de um painel que simplifica os processos de investigação e de tomadas de decisão, o Cerebrum.”

Portal do Comando Avançado (PCA)

Exclusivo para profissionais da segurança pública do Ceará, é um aplicativo para celular que reúne informações civil e criminal da população cearense, dados de veículos e motoristas, biometria e o reconhecimento facial.

 

2 – Evasão fiscal e detecção de fraude

Um grande desafio dentro de empresas e organizações é a detecção de fraudes e a evasão fiscal. Uma pequena porcentagem dessas atividades pode representar perdas bilionárias para as instituições.

Entretanto, os avanços na análise de fraudes, com o uso de ciência de dados e o Big Data, são uma perfeita ferramenta para prevenir tais atividades.  Além da redução de informações, com essas ferramentas pode-se diferenciar entre contribuinte legítimo e fraudador, utilizando classificação de dados, clustering e reconhecimento de padrão, por exemplo. Diferentes fontes de dados são usadas para a análise, sejam dados estruturados ou não estruturados.

Diversos estudiosos estão empenhados em desvanecer esse problema. Veja um exemplo disso: a partir de dados reais da Secretaria da Fazenda do Estado do Ceará (Sefaz-CE), sete pesquisadores (entre eles o coordenador do Insight Lab, José Macêdo) aplicaram um novo método,  ALICIA, para detectar potenciais fraudadores fiscais. Esse método de seleção de recursos é baseado em regras de associação e lógica proposicional.

Os autores explicam que ALICIA é estruturado em três fases:

  1. Ele gera um conjunto de regras de associação relevantes a partir de um conjunto de indicadores de fraude (recursos).
  2. A partir de tais regras de associação, ALICIA constrói um gráfico, cuja estrutura é então usada para determinar as características mais relevantes.
  3. Para conseguir isso, ALICIA aplica uma nova medida de centralidade chamada de Importância Topológica do Recurso.

Os teste feitos com ALICIA em quatro diferentes conjuntos de dados do mundo real mostram sua eficiência superior a outros oito métodos de seleção de recursos. Os resultados mostram que Alicia atinge pontuações de medida F de até 76,88% e supera de forma consistente seus concorrentes.

 

3 –  Saúde 

Uma das principais aplicações da ciência de dados é na área da saúde. Esse setor utiliza intensamente data science para descoberta de novas drogas, na prevenção, diagnóstico e tratamento de doenças e no monitoramento da saúde de pacientes.

E durante a pandemia de Covid-19, a ciência de dados foi um dos primeiros auxílios buscados para que se pudesse entender o comportando do vírus na população mundial, criar modelos preditivos sobre seus impactos e divulgar ao público, especialmente através da visualização de dados, estatísticas relacionadas à doença.

Como exemplo de transparência dos dados durante a pandemia, destacamos a plataforma cearense IntegraSUS Analytics.

Como descrito pela Secretaria da Saúde do Ceará, o IntegraSUS Analytics é uma ferramenta com a qual “pesquisadores, profissionais e estudantes de ciência de dados ou de tecnologia da informação poderão ter acesso ao cenário atual da saúde no Estado. Tudo por meio dos códigos e modelos utilizados na construção do IntegraSUS. A plataforma também oferece datasets sobre diferentes áreas da saúde para aprendizado e treinamento.”

Além do IntegraSUS Analytics, o Governo do Estado esteve em parceria com o Insight Lab para desenvolver outras ações de enfrentamento ao Covid-19. Nossos pesquisadores produziram Mapas de Kernel para observar como está acontecendo o espalhamento da doença no Ceará. Junto a isso, a professora Ticiana Linhares comandou o desenvolvimento de um algoritmo de IA para entender a evolução dos sintomas do Covid-19.

Como isso acontece? Através dos textos trocados via chat (Plantão Coronavírus) entre os cidadãos e a Secretaria de Saúde, o algoritmo extrai dessas conversas os sintomas mais frequentes e avalia sua evolução.

 

4 – Games

Uma das indústrias em maior expansão é a de games. Contabiliza-se atualmente mais de 2 bilhões de jogadores no mundo todo, com estimativas para que esse número passe de 3 bilhões até 2023, segundo o site Statista.

Com esse super número de jogadores e a criação diária de novos jogos, uma enorme quantidade de dados são coletados, tais como o tempo de jogo do usuário, pontos de início e parada e pontuação. Essa coletânea de dados representa uma rica fonte para que especialistas estudem, aprendam e possam otimizar e melhorar os jogos.

Com a ciência de dados aplicada no mercado de jogos, é possível realizar o desenvolvimento, a monetização e o design de games, e ainda melhorar efeitos visuais, por exemplo. Com modelos que permitem a identificação de objetos, jogos tornam-se mais realistas tornando possível diferenciar jogadores pertencentes a equipes diferentes e dar comandos ao personagem específico dentro de um grupo.

A King, empresa criadora do famoso Candy Crush, tem, segundo seu diretor de produtos de serviços, Jonathan Palmer, uma cultura baseada em dados. Na King, depois que um jogo é lançado, ele continua sendo monitorado e os ajustes necessários são feitos. Eles analisam, por exemplo, se um jogo é muito difícil, então eles podem perder jogadores, e se muito fácil, os usuários ficam entediados e abandonam o jogo.

Palmer cita o nível 65 do Candy Crush Saga: “É um nível incrivelmente difícil, tinha seu próprio culto em torno dele. Percebemos que isso estava causando a agitação de muitas pessoas. Usando dados, pudemos dizer: ‘precisamos diminuir um pouco a dificuldade desse nível’.”

 

5 – Vida Social

O surgimento das redes sociais alterou completamente a forma como nos relacionamos, sejam relacionamentos amorosos, amizades ou relações de trabalho. Nos conectamos diariamente com inúmeras pessoas que jamais vimos. E todas as relações e ações nessas redes deixam extensos rastros de dados que influenciam, entre outras coisas, em quem você conhecerá a seguir.

Não é impressionante como o Facebook sempre acerta nas recomendações de novas amizades? Em artigo do Washington Post é dito que ele se baseia em “really good math”, mais especificamente, o Facebook utiliza um tipo de ciência de dados conhecido como network science, que basicamente busca prever o crescimento da rede social de um usuário baseado no crescimento das redes de usuários semelhantes.

Um outro exemplo é o Tinder. Ele utiliza um algoritmo que visa aumentar a probabilidade de correspondência. Esse algoritmo  prioriza correspondências entre usuários ativos, usuários em uma mesma região e usuários que parecem os “tipos” uns dos outros com base em seu histórico de deslize.

 

6 – Esportes

A indústria do esporte é uma das mais rentáveis do mundo, gerando lucros bilionários todos os anos e, é claro, cheia de dados e estatísticas. Cada esporte está repleto de variáveis a serem estudadas, que vão desde o clima, a fisiologia de cada jogador, as decisões dos árbitros, até as escolhas feitas pelos jogadores durante uma partida. Assim, a ciência de dados vem para “decifrar” o que fazer com esses dados, revelando insights preditivos para a melhor tomada de decisão dentro de cada modalidade de esporte.

Um caso interessante para analisarmos é o da liga de basquete americana. A NBA usa o sistema de análise de arremesso da RSPCT, no qual uma câmera rastreia quando e onde a bola bate em cada tentativa de cesta. Os dados são canalizados para um dispositivo que exibe detalhes da tomada em tempo real e gera insights preditivos.

Leo Moravtchik, CEO da RSPCT, disse à SGV News que “com base em nossos dados … Podemos dizer [a um jogador]: ‘Se você está prestes a dar o último arremesso para ganhar o jogo, não tente do topo da chave, porque sua melhor localização é, na verdade, o canto direito ”

7 –  Comércio eletrônico (e-commerce) 

O comércio eletrônico (ou e-Commerce) é um tipo de negócio em que empresas e indivíduos compram e vendem coisas pela internet.  Nesse tipo de comércio, a interação com os clientes passa por vários pontos, desde o clique em um anúncio e em produtos de interesse, até a compra e avaliação do produto.

Os dados obtidos nas plataformas de e-commerce ajudam os vendedores a construir uma imagem dos consumidores, seus hábitos de compra, quais as estratégias para “transformá-los” em clientes e ainda o tempo que isso leva.

Nesse sentido, a aplicação da ciência de dados permite a previsão da rotatividade de clientes, a segmentação destes, o impulsionamento das vendas com recomendações inteligentes de produtos, a extração de informações úteis das avaliações dos compradores, a previsão de demanda, a otimização de preços e tantas outras possibilidades.

No caso do Airbnb, a ciência de dados ajudou a renovar completamente sua função de pesquisa, destacando áreas mais requisitadas. O algoritmo do Airbnb hoje, nos rankings de busca, dá prioridade a aluguéis que estiverem em uma área com alta densidade de reservas. Antes, entretanto, os melhores aluguéis estavam localizados a uma certa distância dos centros da cidade. Isso implicava que, apesar de encontrar aluguéis legais, os locais não eram tão bons.

 

 

Referências

How data science and big data analytics leads to better tax fraud prevention

Top 8 Data Science Use Cases in Gaming

Number of active video gamers worldwide from 2015 to 2023 (in billions)

How King is crushing games data

How Facebook knows who all your friends are, even better than you do

Data Science in the Sports Industry

Applying Data Science tools and techniques to eCommerce

 

Categorias
Big Data Ceará Dados

SSPDS inicia banco de dados sobre pichações para mapear grupos criminosos no Ceará

A Secretaria da Segurança Pública e Defesa Social do Estado do Ceará (SSPDS/CE) iniciou o mapeamento da atuação de grupos criminosos do Ceará com a coleta de dados sobre pichações em edificações e muros utilizando inteligência artificial. Baseado na ciência de dados, o aplicativo Portal de Comando Avançado (PCA) agora oferece a função “pichação”, que reunirá dados para estabelecer padrões e comportamentos de integrantes desses grupos no Estado. Essa será mais uma ferramenta para subsidiar o trabalho das agências de inteligência policiais do Estado, reunindo um banco de dados com informações que serão integradas ao Big Data da Segurança Pública.

A primeira coleta da iniciativa aconteceu, nessa segunda-feira (13), durante implantação da 30ª base do Programa de Proteção Territorial e Gestão de Risco (Proteger), a unidade fica no município de Caucaia, na Região Metropolitana de Fortaleza.

Forma de expressão mais utilizada por integrantes de organizações criminosas, as pichações funcionam como instrumento para demarcar territórios, fazer ameaças a rivais e tentar demonstrar poder sobre uma área delimitada. A partir dessa premissa e baseado na análise de comportamentos coletivo e individualizado dos investigados, a SSPDS inicia um levantamento que irá produzir material de inteligência policial para apoiar a investigação criminal e o planejamento de patrulhamento ostensivo realizado pelas agências de segurança pública do Estado. Na prática, os próprios criminosos irão fornecer material para a Polícia alimentar o Big Data; aquilo que pode parecer demonstração de força será empregada para enfraquecer suas ações e fortalecer a segurança pública do Ceará.

 

 

Todas as informações serão alimentadas utilizando o Programa de Comando Avançado (PCA), aplicativo para celulares de uso exclusivo de profissionais da segurança pública do Ceará. Lembrando que pichar é crime conforme a Lei de Crimes Ambientais, com pena detenção que chega até um ano, e multa.

Para o secretário da SSPDS, André Costa, essa é mais uma inovação desenvolvida pela Secretaria na área de ciência policial e tecnologia aplicadas à segurança pública, que vai servir de exemplo para todo o País e América Latina. “Essa nova função que a gente começa a usar hoje (segunda-feira, dia 13) vai permitir que todo policial, a partir de agora, torne-se um agente de inteligência. Ele vai poder, através do smartphone, inserir uma fotografia, que será georreferenciada, ou seja, o próprio celular já vai dar a localização de onde ela (a pichação) está e também marcar o dia e hora dessa fotografia. Ele ainda vai incluir qual o grupo criminoso a que se refere à pichação. Quando esses criminosos picharem o local e os policiais fotografarem e enviarem esses dados, eles entram na base do nosso Big Data da Segurança Pública”, explica.

Os dados compilados na função “Pichação” no aplicativo PCA servirão para construir parâmetros de atuação dos grupos criminosos no Estado e para fomentar estratégias policiais de combate aos crimes nessas áreas. “Os policiais das áreas de investigação e inteligência vão poder ver os dados em um mapa e, assim, a gente vai ter um mapeamento atualizado com dados de determinado grupo criminoso em qual área, bairro ou comunidade ele se encontra. Isso é fundamental para as ações de inteligência tanto para as investigações como também para que o próprio patrulhamento possa organizar seus efetivos e entender quais áreas devem ser priorizadas”, destaca André Costa.

Junto à estratégia de inteligência para coletar dados para uso da segurança pública, os locais onde os policiais encontrarem pichações com marcas de grupos criminosos serão pintados. “Iremos cobrir essas pichações e tirar essas identidades visuais. Isso é muito negativo aqui, especialmente para a juventude, que vê esse exemplo envolvendo facções”, frisou André Costa.

Na palma da mão

O funcionamento da iniciativa é semelhante ao que já acontece com outras ferramentas tecnológicas criadas e desenvolvidas pela SSPDS, em laboratórios cearenses, por meio de pesquisadores financiados pelo Estado do Ceará e com a participação direta de profissionais do Sistema de Segurança do Ceará. O dispositivo utilizado para a função “Pichação” é o Programa de Comando Avançado (PCA), aplicativo para celular que integra bases civil e criminal da população do Estado, dados de veículos e motoristas, biometria e o reconhecimento facial. A nova função já está disponível para atualização nas lojas virtuais para usuários que utilizam os sistemas operacionais iOS e Android. O uso é exclusivo para servidores da segurança pública.

 

 

Como funciona?

Com um smartphone nas mãos e com o aplicativo PCA aberto, o policial vai iniciar o cadastro da pichação inserindo informações relevantes sobre as características encontradas no local. Primeiro, ele vai marcar a qual grupo criminoso pertence aquela pichação, em seguida, incluir uma descrição apontando onde a pichação foi encontrada, como por exemplo, “na parede de uma casa”, “na fachada de um estabelecimento comercial”. O próximo passo é acionar a câmera do celular para fazer o registro fotográfico das inscrições deixadas pelos criminosos. Por fim, o policial vai posicionar no mapa a localização exata da pichação utilizando o GPS do aparelho celular e concluir o cadastro na ferramenta. Em tempo real, as informações são transmitidas para o Big Data para acesso das agências de inteligência policial do Estado.

Tecnologia compartilhada

A função “Pichação” foi desenvolvida numa parceria entre a Secretaria da Segurança Pública e Defesa Social do Estado do Ceará (SSPDS/CE) e o Laboratório de Processamento de Imagem, Sinais e Computação Aplicada (Lapisco), vinculado ao Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE). A colaboração entre as instituições também propiciou a criação e uso do reconhecimento facial, outra ferramenta disponível ao policial que acessa o aplicativo PCA. Juntos, SSPDS e IFCE constroem soluções para aprimorar o uso da tecnologia aplicada à segurança pública a partir da análise de sinais (áudio, voz, imagem, vídeo).

Big Data da Segurança Pública

A criação do Big Data da Segurança Pública, batizado de “Odin”, é fruto da parceria entre a SSPDS e pesquisadores da Universidade Federal do Ceará (UFC). A ferramenta integra mais de 100 sistemas dos órgãos de Segurança Pública do Estado e de instituições parceiras em uma única plataforma. Ela permite a tomada de decisão baseada em dados, feita de forma automática e em tempo real, dando maior celeridade aos processos e economia de tempo. Além disso, o “Odin” facilita o processo de investigação e inteligência policial com o detalhamento de territórios e informações de caráter investigativo, contribuindo para a formulação de estratégias de combate à criminalidade.

 

Fonte: Governo do Estado do Ceará

 

 

Categorias
Big Data Dados Mineração de Processos

O Papel da Mineração de Processos na Ciência de Dados

O interesse pela ciência de dados está crescendo rapidamente. Muitos a consideram como a profissão do futuro. O hype relacionado à Big Data e à análise preditiva ilustra isso. (“Big” e “Small”) Data são essenciais para pessoas e organizações, aumentando sua importância. No entanto, não é suficiente se concentrar no armazenamento e análise de dados. Um cientista de dados também precisa relacionar dados a processos operacionais e ser capaz de fazer as perguntas certas. 

A relevância da Mineração de Processos

Na última década, Process Mining (Mineração de Processos) surgiu como um novo campo de pesquisa que se concentra na análise de processos usando dados de eventos. As técnicas clássicas de mineração de dados, como classificação, clustering, regressão, aprendizado de regras de associação, não se concentram nos modelos de processos de negócios e geralmente são usadas apenas para analisar uma etapa específica do processo geral. 

Mineração de Processos se concentra nos processos fim-a-fim e isso é possível devido à crescente disponibilidade de dados de eventos e novas técnicas de descoberta de processos e verificação de conformidade. A relevância prática da mineração de processos e os interessantes desafios científicos tornaram essa nova área um dos hot topics da ciência de dados. 

O que é a mineração de processos? 

Primeiro precisamos definir formalmente o que essa nova área aborda. O ponto de partida para a mineração de processos é um log de eventos. Cada evento nesse log refere-se a uma atividade (isto é, uma etapa bem definida em algum processo) e está relacionado a um caso específico (isto é, uma instância do processo). 

Os eventos pertencentes a um caso são ordenados e podem ser vistos como uma “execução” do processo. Os logs de eventos podem armazenar informações adicionais sobre eventos. De fato, sempre que possível, as técnicas de mineração de processo usam informações extras, como o recurso (ou seja, pessoa ou dispositivo) que executa ou inicia a atividade, o registro de data e hora do evento ou elementos de dados registrados com o evento (por exemplo, o tamanho de um pedido). 

Assim, a mineração de processos visa descobrir, monitorar e melhorar processos reais extraindo conhecimento dos logs de eventos disponíveis nos sistemas de informações atuais. Ao usar process mining é possível descobrir processos reais, checar sua conformidade, quantificar os desvios, descobrir o que causa a variação dos processos, encontrar gargalos, predizer saídas dos processos, entre outros benefícios. O objetivo dessa área é transformar dados de eventos em insights e ações. Process mining é parte integrante da ciência de dados, estimulada pela disponibilidade de dados e pelo desejo de melhorar os processos. 

As três classificações de Mineração de Processos

A descoberta de processos constrói um modelo a partir de um log de eventos, sem nenhuma informação a priori. Um exemplo disso é o algoritmo alpha

Já as técnicas de conformidade visam analisar a compatibilidade de um log de eventos a um modelo de processo já existente. A verificação de conformidade pode ser usada para verificar se a realidade do modelo condiz com o que foi registrado no log e vice-versa.

Por fim, o aprimoramento melhora automaticamente um modelo de processo de acordo com um log de eventos. Enquanto a conformidade mede o alinhamento entre o modelo e a realidade, esse terceiro tipo de mineração de processo visa alterar ou estender o modelo a priori. 

Em que contexto é aplicado? 

Uma aplicação para mineração de processos é a pesquisa de serviços de saúde. Esse é um campo científico que analisa os workflows e os processos de monitoramento à saúde no que diz respeito à eficiência e eficácia. Um dos seus principais objetivos é o desenvolvimento e implementação de conceitos de assistência médica baseada em evidências. Portanto, esse área busca melhorar a qualidade de atendimentos médicos, considerando que os recursos disponíveis são escassos. Um objetivo importante é a validação de ensaios clínicos na literatura.

No contexto educacional, foi criada uma nova vertente, chamada EPM – Educational Process Mining (Mineração de processos educacionais), que tem como objetivo construir modelos de processos educacionais completos e compactos que sejam capazes de reproduzir todo o comportamento observado. Os resultados da EPM podem ser usados para obter uma melhor compreensão dos processos educacionais subjacentes, gerar recomendações e conselhos para os alunos, fornecer feedback aos alunos, professores e pesquisadores, para detectar precocemente dificuldades de aprendizado. 

Já no contexto de Engenharia de Software, foi definida uma subárea chamada Software Process Mining (Mineração de Processos de Software). Nesta área, as pessoas se concentram na análise de rastreamentos de tempo de execução para melhorar a arquitetura e o desempenho dos sistemas de software, e na análise do comportamento do usuário para melhorar o design e a usabilidade dos sistemas de software. 

Por fim

Em resumo, as técnicas de mineração de processos podem ser aplicadas em qualquer contexto, desde que seja possível transformar os dados de entrada em logs de eventos. Ela se tornou uma ferramenta vital para as organizações modernas que precisam gerenciar seus processos operacionais complexos, e por conta disso, ela se tornou um dos principais pilares da ciência de dados.

 

Referências Bibliográficas 

BOGARÍN, Alejandro et al. Clustering for improving educational process mining. In: Proceedings of the fourth international conference on learning analytics and knowledge. 2014. p. 11-15. 

RUBIN, Vladimir; LOMAZOVA, Irina; AALST, Wil MP van der. Agile development with software process mining. In: Proceedings of the 2014 international conference on software and system process. 2014. p. 70-74. 

VAN DER AALST, Wil. Data science in action. In: Process mining. Springer, Berlin, Heidelberg, 2016. p. 3-23. 

VAN DER AALST, Wil. Process mining: Overview and opportunities. ACM Transactions on Management Information Systems (TMIS), v. 3, n. 2, p. 1-17, 2012. 

VOGELGESANG, Thomas; APPELRATH, H.-Jürgen. Multidimensional process mining: a flexible analysis approach for health services research. In: Proceedings of the Joint EDBT/ICDT 2013 Workshops. 2013. p. 17-22. 

Categorias
Big Data Ciência de Dados Python

Conheça o PyMove: biblioteca Python para identificação de trajetórias padrões, mineração e análise de dados

O Insight Lab é formado por um time multidisciplinar de pesquisadores que vão desde de alunos de graduação a especialistas. Com o propósito de  desenvolver pesquisas na área de Data Science, que possam beneficiar a outros pesquisadores e a sociedade em geral, nossos pesquisadores estão sempre atentos às necessidades que as mudanças e as novas tecnologias proporcionam. 

Observamos com isso, por exemplo, que o crescente uso de sensores GPS e barateamento de tecnologias móveis, nos últimos anos, têm gerado um grande volume de dados de trajetórias. Esses dados podem trazer respostas para facilitar diversas atividades que impactam diretamente na vida das pessoas. Pensando nisso, o quê um Cientista de Dados pode fazer a partir daí?

O que é uma trajetória?

Bem, antes de tudo é muito importante entendermos o que é uma trajetória. Uma trajetória é uma sequência de pontos cronologicamente ordenados, que representam o movimento de um objeto em um espaço geográfico. Cada ponto é formado por uma marcação de tempo e coordenadas geoespaciais (latitude,longitude). As trajetórias podem representar movimentos de diferentes objetos, como:pessoas, veículos e animais.

O que podemos fazer com os dados de trajetória?

Esse tipo de dado é muito valioso não só para a Computação, mas também para áreas como Geografia, Sociologia e Urbanização, sendo bastantes utilizados para aplicações como: sistemas de transporte inteligentes e computação urbana; análise de mobilidade sustentável; no rastreamento de fenômenos naturais e identificação de padrões de migração animal e etc.

Como trabalhar com esse dado?

Para que seja possível extrair informações dos dados e realizar análises consistentes dos mesmos, é preciso que um conjunto de atividades de mineração de dados, que veremos em mais detalhes a seguir, sejam executadas. Embora haja um grande volume de trabalhos e aplicações, nota-se a ausência de softwares e ferramentas que possam auxiliar pesquisadores em todo o processo para lidar e extrair as informações que esses dados possam oferecer.

Com isso, nós do Insight Data Science Lab estamos trabalhando para a elaboração de uma biblioteca open-source para Python que contemple o conjunto de etapas e atividades para lidar com esses dados: o PyMove!

O que é o PyMove?

O PyMove surgiu em meados de 2018 com o objetivo de ser uma biblioteca Python extensível que comporte um grande número de operações dentro das etapas de mineração de dados de trajetória!

O PyMove propõe :

  • Uma sintaxe familiar e semelhante ao Pandas;
  • Documentação clara;
  • Extensibilidade, já que você pode implementar sua estrutura de dados principal manipulando outras estruturas de dados, como o Dask DataFrame, matrizes numpy, etc., além de adicionar novos módulos;
  • Flexibilidade, pois o usuário pode alternar entre diferentes estruturas de dados;
  • Operações para pré-processamento de dados, mineração de padrões e visualização de dados.
Modelagem do Pymove
Estrutura de dados

A atual estrutura do PyMove é fortemente influenciada pelo trabalho de Yu Zheng, o qual propõe um paradigma que serve como um guia para realizar trabalhos de mineração de dados de trajetória. A figura 2.1.1 mostra a versão adaptada desse paradigma adotada no PyMove.

Figura 2.1.1. Um paradigma para mineração de trajetória. Fonte: Adaptado de [4]
A seguir, iremos destrinchar cada etapa citada na figura 2.1.1.
Pré-processamento

O pré-processamento de dados é uma etapa de extrema importância na mineração dos dados. Nela são realizadas atividades com o objetivo de melhorar a qualidade do dados para obtenção de melhores resultados em processamentos e análises futuras. Existem quatro técnicas básicas para esta etapa: filtragem de ruído, detecção de pontos de parada, compressão e segmentação de trajetória.

Filtragem de ruído

Alguns pontos da trajetória podem estar inconsistentes devido a problemas nos dispositivos de coleta de dados, na comunicação, ou em outros fatores externos, tais pontos são denominados ruídos. As técnicas de filtragem de ruído procuram realizar a remoção ou alinhamento desses dados ruidosos com a rede de ruas. Os pontos p5 e p9 na Figura 3.1 são, neste contexto, dados com ruído.

Figura 3.1. Trajetória com pontos lidos incorretamente. Fonte: adaptado de [1]
Detecção de pontos de parada

Pontos onde os objetos ficaram parados ou se movimentando ao redor, por um determinado limite de tempo, são chamados pontos de parada. Estes pontos podem representar: shoppings, atrações turísticas, postos de gasolina, restaurantes, entre outros. Os pontos de parada nos permitem representar uma trajetória como uma sequência de pontos com significado.
A figura 3.2 mostra uma trajetória, após a execução de um algoritmo, para detectar pontos de parada onde são encontrados três pontos de parada: casa, trabalho e supermercado. Esses pontos podem representar essa trajetória, como pontos p1, p2 e p3, respectivamente.

Compressão

Tem como objetivo reduzir o tamanho dos dados de trajetória através de um conjunto de técnicas, com o objetivo de evitar sobrecarga de processamento e minimizar a carga no armazenamento de dados, gerando uma representação mais compactada  que descreve a trajetória de um objeto.

Figura 3.2. Resultado da execução de um algoritmo de detecção de pontos de parada. Fonte: adaptado de [2].

Na Figura 3.3 podemos ver o resultado da compressão de uma trajetória, inicialmente ela é representada por doze pontos, mas após a compressão este número é reduzido para quatro pontos.

Figura 3.3. Demonstração da aplicação de uma técnica de compreensão de dados de trajetórias. Fonte: adaptado de [2].
Segmentação

Nesta etapa, a trajetória é subdividida em segmentos, de tal forma que os dados pertencentes ao mesmo segmento tenham comportamento homogêneo. A segmentação ajuda a descobrir padrões sobre os dados, diminui a complexidade computacional e é um passo obrigatório para processos de análise, como a clusterização e a classificação. A Figura 3.4 apresenta um exemplo de segmentação de trajetória pelo tempo fixo de duas horas, resultando em três novos segmentos.

Figura 3.4. Segmentação de uma trajetória com base no intervalo de tempo igual a duas horas. Fonte: adaptado de [2]
Map-matching

Como foi mencionado acima, os pontos gerados em uma trajetória podem não corresponder precisamente à real localização de onde o objeto em movimento passou, (figura 3.5-a).

Esta falta de precisão não é desejável para alguns tipos de aplicações, entre elas: as que trabalham com análise de fluxo de trânsito ou serviços de navegação (ZHENG,2015). Para resolver esses e outros problemas, são aplicados algoritmos de map-matching, que têm como objetivo alinhar os pontos da trajetória com a rede de ruas, (figura 3.5-b).

Figura 3.5 (a e b). Uma trajetória, antes e depois da aplicação do Map-matching. Fonte: adaptado de [1].
Indexação e recuperação de trajetórias

Durante o processo de mineração de dados de trajetórias, acabamos por precisar acessar frequentemente diferentes segmentos e amostras das trajetórias. Com o grande volume de dados, esses acessos podem demandar tempo e processamento. Por isso, é necessário a adoção de técnicas eficazes para o gerenciamento desses dados, oferecendo a recuperação rápida dos dados.

Os dois principais tipos de consultas, mostrado na Figura 2.1.1 – Um paradigma para mineração de trajetória.
  • KNN: esse tipo de consulta recupera as K, primeiras trajetórias com a distância agregada mínima, para alguns pontos ou uma trajetória específica.

Nas consultas de pontos buscamos por trajetórias que possuam uma boa conexão com os locais/pontos pesquisados, em vez de saber se a trajetória é semelhante à consulta em forma.

Nas consulta por trajetória buscamos encontrar os registros que possuam uma rota ou segmento de trajetória parecida. Essa consulta necessita da definição de uma função que delimite a similaridade e distância entre trajetórias.

  • Intervalo de consultas: recuperam os dados de trajetórias que estão contidos em um espaço ou intervalo. Essa técnica contém três abordagens para consultas de intervalo espaço-temporal.
  1. A primeira abordagem considera o tempo como a terceira dimensão além das informações que delimitam o espaço geográfico.
  2. A segunda abordagem divide um período em vários intervalos de tempo, criando um índice espacial individual.
  3. A terceira abordagem leva em consideração o espaço geográfico, dividindo-o em grades, as chamadas grids, e cria um índice temporal para as trajetórias que caem em cada célula dessa grade. Cada segmento que cai em uma grade é representado por um ponto com as coordenadas iguais ao ponto com horário inicial e o ponto com horário final do segmento.

A Figura 4 mostra as técnicas para melhoria da indexação e recuperação de dados e segmentos de trajetórias. Em (a) é mostrada a técnica de Intervalo de consulta. Nela são recuperados os pontos e segmentos de trajetórias dentro da região retangular tracejada em vermelho. Já em (b) e (c) são mostradas o uso da técnica de consulta via KNN, sendo a primeira consultas por pontos e a segunda consulta por segmentos de trajetórias similares.

Figura 4. Demonstração das abordagens utilizadas para indexação e recuperação de trajetórias. Fonte: adaptado de [4].
Modelos

Muitas aplicações exigem informações instantâneas a partir dos dados de trajetória, como é o caso de aplicações de guia de viagens ou detecção de anomalias de tráfego. Essas informações exigem algoritmos eficazes e muitas vezes são adquiridas por meio de técnicas de mineração de dados. Essas técnicas podem ser enquadradas em áreas, como classificação, detecção de anomalias, mineração de padrões e incertezas da trajetória. Abaixo é explorado o conceito de cada uma dessas técnicas.

Classificação

Trajetórias e segmentos podem ser classificados de diferentes modos e em diferentes categorias, como em: tipo de atividade, modos de transporte e até mesmo o movimento, através do uso de técnicas e algoritmos de aprendizado supervisionado.

Em geral, a classificação da trajetória é composta por três etapas principais:

  1. Utilização de métodos de segmentação da trajetória para prover segmentos;
  2. Extração de características de cada segmento;
  3. Criação de modelos para classificar cada segmento.
Detecção de anomalias

Anomalias, no contexto de dados espaço temporais, consistem em pontos ou até mesmo segmentos de uma trajetória que possuem um comportamento anormal. Não segue o padrão dos dados que representam uma trajetória, como é o caso dos pontos destacados em vermelho na Figura 3.1. Essas anomalias podem ser desencadeados por diversos eventos como: um acidente de trânsito, que obriga os carros a mudarem rapidamente de velocidade, um desvio de uma rota comum por conta de uma obra ou por estar perdido no caminho. A etapa de detecção de anomalias, se preocupa em encontrar esses pontos e/ou segmentos que violem um certo padrão de uma trajetória.

Mineração de padrões

Diferentes padrões de mobilidade podem ser identificados numa trajetória individual ou em um conjunto de trajetórias. Os padrões de mobilidade de trajetória em quatro categorias: Clusterização de trajetórias, Moving Together Patterns, , Padrões Periódicos e Padrões de Frequências Sequenciais.

  1. Clusterização: as técnicas dessa categoria têm como finalidade agrupar trajetórias em busca de algum padrão ou característica que diferenciem grupos.
  2. Moving Together Patterns: essa categoria reúne técnicas que procuram detectar indivíduos e/ou objetos que se movem juntos por determinado período de tempo, sendo bastante útil para detectar padrões. Esses padrões podem ter diversas aplicações, como ajudar a entender fenômenos de migração e tráfego de espécies.
  3. Padrões Periódicos: reúne técnicas que procuram identificar comportamentos e padrões temporais em trajetórias, como a ida a um dentista durante um intervalo de tempo, ou até mesmo os animais, que migram anualmente de um lugar a outro. A análise deste tipo de padrão auxilia na previsão de comportamentos futuros do objeto e na compressão de dados.
  4. Padrões de Frequências Sequenciais: reúne técnicas que possuem a finalidade de encontrar padrões onde objetos partilhem a mesma sequência de localização, num período similar de tempo. Os pontos da sequência não necessariamente precisam ser pontos consecutivos na trajetória original. Essas técnicas são amplamente utilizados em aplicações como recomendação de trajetória, predição de localização, compressão de dados.
Incerteza em trajetórias

Indivíduos e objetos realizam movimentos contínuos em determinados locais em que trafegam. Porém, devido à limitação de algumas aplicações ou por questão de economia de energia dos sensores, os dados que representam essa trajetória são enviados periodicamente. Desse modo, a localização desse indivíduo e/ou objeto será incerta, ou até mesmo desconhecida, entre dois pontos que descrevem sua trajetória.

Na Figura 6 é perceptível que entre dois pontos é possível tomar caminhos diferentes, por exemplo: partindo do ponto p1 é possível chegar ao ponto p2 de diferentes formas. Este contexto ocasiona a incerteza dos caminhos tomados entre pontos de uma trajetória.

Nessa linha de pesquisa, há duas sub-áreas, descritas a seguir:

  • Redução de incertezas: consiste em desenvolver técnicas que visam diminuir a incerteza da trajetória entre dois pontos.
  • Preservação de privacidade: consiste em desenvolver técnicas que visam ampliar a incerteza de trajetórias sem afetar a qualidade de um serviço ou o uso desses dados, visando proteger um usuário do vazamento de privacidade causado pela divulgação de suas trajetórias.
Figura 6. Demonstração de uma trajetória formada por três pontos, p1, p2 e p3. Fonte: adaptado de [4].
Visualização de trajetórias

A aplicação de técnicas de visualização de dados nos grandes volumes de dados de trajetórias podem facilitar a compreensão do comportamento de objetos em movimento, como veículos e descoberta de tráfego, social, geoespacial e até padrões econômicos. Essas visualizações podem ser combinadas com procedimentos de processamento dos dados, visando diminuir, limpar e filtrar os dados.

Para visualizar dados de trajetória são necessárias técnicas que exploram canais visuais como cor, tamanho, forma, orientação aplicadas a diferentes marcas como pontos, linhas, áreas, volumes e superfícies para representar estes dados, transformando-os em representações visuais apropriadas.

Há diferentes técnicas de visualização a serem aplicadas como:
  • Gráfico de Linhas: visualizações orientadas ao tempo enfatiza a exibição de padrões, periodicidade, tendências e anormalidade dos dados de trajetória. Nesse tipo de representação é amplamente utilizado gráfico de linhas, onde o eixo X delimita o tempo e o Y outra característica do dado, como os picos de velocidade de uma trajetória.
  • Mapa estáticos: são abordagens bastante comuns para representar informações de localização geográfica, como a análise de trajetórias de mobilidade ou fluxo de tráfego em uma rede distribuída. Convencionalmente, uma trajetória é representada por uma linha ou uma curva, podendo explorar combinações de variáveis, como cor, tamanho e direção, em relação às suas propriedades.
  • Clusters: Quando há uma grande massa de dados de trajetória, pode haver sobreposição de pontos em uma visualização. Com isso as visualizações com clusters em mapas ajudam bastante em análises, visto que um grupo de pontos que em determinado momento se sobrepunham, tornam-se um só. Essa técnica permite obter uma visão geral rápida de seus conjuntos de clusters.
Visualização dos dados de gorjetas das viagens de táxis fazendo uso do gráfico de linhas para demonstrar a quantidade de gorjetas obtidas pelas viagens de táxi no período de tempo de 1 a 7 de maio de 2011. Cada linha representa a gorjeta por viagem em uma região. Fonte: Wei Chen, Fangzhou Guo, and Fei-Yue Wang. A survey of traffic data visualization. IEEE Transactions on Intelligent Transportation Systems, 16:2970–2984, 12 2015.

 

Exploração do uso de recursos visuais para visualização em mapas estáticos. Fonte: adaptado de [3].
  • Mapas de Calor: Essa visualização é gerada a partir de uma matriz de células, onde cada célula é colorida de forma gradiente com base em valores ou função dos dados, sendo bastante útil quando é necessário gerar visualizações para grande volume de dados, fornecendo uma visão geral dos maiores e menores valores dos dados.

 

Visualização de todos os pontos sob um mapa gerado pelo Folium. Fonte: documentação Folium.

 

Utilização da técnica de cluster para visualizar os pontos sob um mapa gerado pelo Folium. Fonte: documentação Folium.
Tutorial

Depois de explorar mais sobre a arquitetura do PyMove e vislumbrar o mundo dos dados de trajetória, agora vamos botar a mão na massa!

Neste tutorial iremos entender como representar dados de trajetória no PyMove, aplicar funções de pré-processamento e visualização de dados existentes no PyMove!

Para isso, vamos utilizar o conjunto de dados utilizado neste trabalho, o Geolife GPS trajectory dataset, [5]. Ele é resultado da coleta realizada no projeto Geolife, da Microsoft Research Asia, por 178 usuários por mais de quatro anos. Esses dados registram uma grande variedade de movimentos de dos usuários, incluindo não só caminhos rotineiros, como também atividades esportivas e de lazer, amplamente distribuídos em mais de 30 cidades da China e em algumas cidades localizadas nos EUA e na Europa.

Esse conjunto de dados possui 17.621 trajetórias, registradas por GPS, com uma distância total de 1.251.654 quilômetros e duração de 48.203 horas. Os dados estão dispostos em 182 pastas, numeradas de 000 à 181, onde cada uma simbolizava um usuário. Os arquivos que contém os dados de localização possuem os valores separados por vírgula, onde representam, respectivamente, a latitude, longitude, campo sem valor, altitude, número de dias que passaram após a data 30/12/1999, data e tempo.

Por limitações de processamento e em busca de diversidade, nesse trabalho são utilizados os dados dos usuários 000, 010, 011 e 100, totalizando em 1.206.506 pontos de trajetórias.

Instalação do PyMove

Primeiro, vamos clonar o repositório!
COMANDO 1: git clone -b developer https://github.com/InsightLab/PyMove

Segundo, vamos criar um ambiente!
COMANDO 2: conda create -n pymove pip python=3.7

Terceiro, acesse o ambiente recém criado.
COMANDO 3: conda activate pymove

Quarto, vamos instalar as dependências da nossa biblioteca!
COMANDO 4: cd PyMove python setup.py install

Quinto, agora é só usar!
COMANDO 5: import pymove

 

Referências:

[1] G. A. M. Gomes, E. Santos, and C. A. Vidal. VISUALIZAÇÃO INTERATIVA DE DINÂMICAS DE TRÁFEGO ATRAVÉS DE DADOS DE TRAJETÓRIAS. PhD thesis, PD thesis, Universidade Federal do Ceará, 2018.

[2] G. A. M. Gomes, E. Santos, and C. A. Vidal. VISUALIZAÇÃO INTERATIVA DE DINÂMICAS DE TRÁFEGO ATRAVÉS DE DADOS DE TRAJETÓRIAS. PhD thesis, PD thesis, Universidade Federal do Cear´a, 2018.

[3] Tiago Gon¸calves, Ana Afonso, and Bruno Martins. Visualization techniques of trajectory data: Challenges and imitations. CEUR Workshop Proceedings, 1136, 01 2013.

[4] Yu Zheng. Trajectory data mining: An overview. ACM Transaction on Intelligent Systems and Technology, September 2015.

[5] Yu Zheng, Hao Fu, Xing Xie, Wei-Ying Ma, and Quannan Li. GeoLife User Guide 1.2. Microsoft Reasearch Asia, 2(April 2007):31–34, 2011

Categorias
Big Data Ciência de Dados

Entenda como funciona streaming de dados em tempo real

Desde o final do milênio passado, uma palavra relativamente desconhecida começou a ser propagada: “streaming”.  Timidamente no início e geralmente em áreas mais técnicas, foi gradualmente emergindo até se tornar onipresente.

De plataformas de áudio (Spotify, Deezer, Apple Music, YouTube Music, Amazon Music,Tidal, entre outras) e de vídeo (Youtube, Netflix, Vimeo, DailyMotion, Twitch, entre outras) a aplicações mais específicas, o streaming passou a ser uma palavra do cotidiano dos devs.

Geralmente, o termo vem acompanhado de outro já bem conhecido: Big Data, o qual podemos entender como conjuntos de dados (dataset) tão grandes que não podem ser processados e gerenciados utilizando soluções clássicas como sistemas de banco de dados relacionais (SGBD). Podemos ter streaming de dados fora do contexto de Big Data, porém é bem comum essas palavras virem em um mesmo contexto.

Neste instante, o desenvolvedor já quer fazer um “hello world” e já pergunta: “qual o melhor framework de streaming?” (falar no melhor é quase sempre generalista e enviesado, o termo “mais adequado” é mais realista, opinião do autor). Vamos entender o que é streaming de dados e o que podemos entender como “tempo real”.

Streaming de dados

Para uma melhor concepção do que é streaming de dados, primeiro vamos entender o que é processamento de dados em batch (lote em português ou, um termo mais antigo, “batelada”).

As tarefas computacionais geralmente são chamadas de jobs e podem executar em processos ou threads. Os que podem ser executados sem a interação do usuário final ou ser agendados para execução são chamados de batch jobs. Um exemplo é um programa que lê um arquivo grande e gera um relatório.

Frameworks

Na era do Big Data, surgiram vários modelos de programação e frameworks capazes de executar jobs em batch de forma otimizada e distribuída. Um deles é o modelo de programação MapReduce que foi introduzido e utilizado inicialmente pela Google como um framework que possui três componentes principais: uma engine de execução MapReduce, um sistema de arquivo distribuído chamado Google File System (GFS) e um banco de dados NoSQL chamado BigTable.

Podemos citar vários outros frameworks que possuem capacidade de processamento de dados em larga escala, em paralelo e com tolerância a falhas como: Apache Hadoop, Apache Spark, Apache Beam e Apache Flink (falaremos mais dele adiante). Frameworks que executam processamento em batch geralmente são utilizados para ETL (Extract Transform Load).

Processamento de datasets em forma de streaming

Uma outra forma de processar datasets é em forma de streaming. Aqui, já deixamos uma dica importante: streaming não é melhor que batch, são duas formas diferentes de processar dados e cada uma delas possui suas particularidades e aplicações.

Então, sem mais delongas, o que é um processamento de dados em streaming? De acordo com o excelente (e super indicado) livro “Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing”, podemos definir streaming como “um tipo de engine de processamento de dados projetado para tratar datasets infinitos”.

A primeira coisa a se ter em mente é que os dados virão infinitamente (unbounded), diferente do processamento em batch que é finito, e não há como garantir a ordem em que os mesmos chegam. Para isso existe uma série de estratégias (ou heurísticas) que tenta mitigar tais questões e cada uma delas com seus pontos fortes e fracos. Como diz o ditado: “There is no free lunch”!

Quando tratamos de datasets, podemos falar de duas estruturas importantes: tabelas, como uma visão específica do dado em um ponto específico do tempo, como acontece nos SGBDs tradicionais, e streams, como uma visão elemento a elemento durante a evolução de um dataset ao longo do tempo.

Dois eixos de funcionamento: sources e sinks

O dataset no processamento de streams funciona com duas pontas: sources e sinks. O source representa uma conexão de entrada e o sink uma de saída no seu streaming. Para clarear, podemos fazer uma analogia bem simples: pensem em uma caixa d’água que é enchida por meio de uma ligação de canos da companhia de água da sua cidade. Essa caixa d’água dá vazão para as torneiras e chuveiros da casa por meio da ligação hidráulica de sua residência. Nessa abstração, nosso dataset é a água contida na caixa d’água, nosso source é a ligação com a companhia de água e, finalmente, os sinks são as torneiras e chuveiros.

Levando agora para um exemplo real, podemos ter um sistema de streaming codificado em um framework/engine de processamento distribuído que poderia ser Apache Flink, Apache Storm, Apache Flume, Apache Samza, dentre outros, que recebe mensagens por meio da leitura de um sistema de mensageria (source) como Apache Kafka, por exemplo, processa-as em tempo real filtrando apenas aquelas que contiverem determinadas palavras-chave e envia uma saída para o Elasticsearch (sink 1) e outras para um banco de dados relacional PostgreSQL (sink 2).

 

O eixo temporal

Agora que já sabemos o que é um streaming de dados, vamos ao outro eixo: o temporal.

Entendemos o tempo como algo contínuo e que nunca para. Não se assustem! Aqui não iremos tratar questões físicas, como a teoria da relatividade. Nós, enquanto devs, tratamos o tempo como contínuo.

Para uma aplicação que processa streaming, cada dado que entra na nossa engine possui três abstrações de tempo: event time, ingestion time e processing time. O event time representa a hora em que cada evento individual é gerado na fonte de produção, ingestion time o tempo em que os eventos atingem o aplicativo de processamento streaming e processing time o tempo gasto pela máquina para executar uma operação específica no aplicativo de processamento de streaming.

Event time, ingestion time e processing time

Afinal de contas, a minha aplicação de streaming processa dados em tempo real? Aí vem a resposta que ninguém gosta de ouvir: “depende do contexto”, ou se preferir, “isso é relativo”.  Vamos ao exemplo anterior da leitura de mensagens do Kafka e escrita no Elasticsearch e PostgreSQL, detalhando os tempos do processamento:

Event time   2020-01-01 01:45:55.127
Ingestion time   2020-01-01 01:45:57.122
Processing time   2020-01-01 01:45:57.912

 

O Ingestion time é responsável por qualquer atraso no processamento do dado e sua possível flutuação assim que o processamento “consome” a mensagem.

Quanto maior a diferença entre o tempo de geração da mensagem (event time) e o tempo que a mensagem chega a engine de streaming (ingestion time), menos “tempo real” será seu processamento. Por isso costumamos, falar em artigos científicos, em tempo “quase-real”. A diferença entre a hora da geração e a que a mensagem é processada é de 2 segundos e 784 milissegundos. Isso representa o “atraso” de apenas uma mensagem. Agora imaginem um throughput de 100 mil mensagens por segundo! Essa diferença de tempo tende a aumentar se o sistema não conseguir consumir e processar essa quantidade de mensagens à medida que chegam.

Mais uma dica de Big Data e streaming: não menospreze os milissegundos. Em grandes volumes, eles fazem muita diferença.

A ordenação dos dados

Outra questão que precisamos estar preparados é o problema que ocorre quando recebemos os dados de mais de uma fonte (source) ou a fonte de dados está com os event times fora de ordem. Se tivermos uma aplicação onde a ordem desses eventos importe, é necessário que haja uma heurística que trate dessa ordenação ou mesmo deste descarte dos dados fora de ordem. A maioria dos frameworks de streaming implementam alguma  dessas heurísticas.

Um dos frameworks mais utilizados pelos devs, o Apache Flink possui o conceito de watermarks (marcas d’água).  A ideia central é: quando um dado é “carimbado” com uma watermarks, a engine supõe que nenhum dado com tempo inferior (passado) irá chegar.

Como não podemos ter essa certeza, o framework espera que o desenvolvedor escolha como quer tratar esses casos: não toleramos dados com watermarks inferior à última reconhecida (atrasado) ou o framework espera um determinado tempo (10 segundos, por exemplo), ordena as mensagens e envia para processamento. O que chegar fora dessa janela de tempo será descartado. Há a possibilidade ainda de tratar esses dados que seriam descartados, mas fica fora do escopo deste post.

O case Alibaba

Um exemplo real da utilização de streaming de dados em tempo real em um ambiente de Big Data é o case do gigante chinês Alibaba, um grupo de empresas que possui negócios e aplicações focadas em e-commerce, incluindo pagamentos on-line, business-to-business, motor de busca e serviços de computação em nuvem.

Seus dois produtos mais conhecidos são o site de e-commerce (Alibaba.com) e os serviços em nuvem (Alibaba Cloud). O grupo lançou oficialmente em 2016 uma plataforma utilizada para busca e recomendação utilizando Apache Flink. Os mecanismos de recomendação filtram os dados dentro da plataforma de streaming utilizando algoritmos e dados históricos para recomendar os itens mais relevantes ao usuário.

 

Passos fundamentais para o trabalho com streaming de dados

Neste ponto, já entendemos o que é um streaming de dados e o quão tempo-real ele pode ser. Para finalizarmos, deixaremos algumas dicas para quem quer enveredar por essa área tão onipresente no mercado dev:

  1. Entenda os conceitos de streaming de dados antes de escolher um framework e começar a codar (de novo a dica do livro: Streaming Systems). Isso envolve o conceito de sources, sinks, pipeline, agregações de tempo;
  2. Esteja preparado para grande volumes de dados e altos throughput: isso pode parar sua aplicação por falta de recursos como espaço, memória e processamento;
  3. Pense distribuído! A maioria dos frameworks de streaming possuem o conceito de cluster. Dessa forma, sua aplicação conseguirá escalar horizontalmente e estar preparada para grandes volumes;
  4. Escove os bits. Essa é uma expressão bem dev. Entenda bem a linguagem e o framework que você está utilizando. Tire o máximo deles. Uma estrutura de dados inadequada ou ineficiente para o caso, um laço desnecessário, uma serialização/deserialização onde não é preciso podem minar o desempenho da sua aplicação.
  5. Por último e não menos importante: teste de carga! Faça testes levando sua aplicação ao extremo para identificar possíveis gargalos. Isso não substitui os testes unitários e afins. A finalidade é outra: ver o quanto sua aplicação consegue processar de dados.

É isso aí, pessoal. Espero que tenha suscitado uma vontade de aprender mais sobre streaming de dados em tempo real e suas aplicações.

Saudações e até a próxima!

 

Referências: