Descoberta de Conhecimento em Dados – Análise de produção | Blog do Instituto Stela
TOPICS:Análise de produçãocaso tese Vivianeciencia de dados
Posted By: Instituto Stela 21 de agosto de 2019
Não é novidade que o montante de dados que geramos diariamente é expressivo. Esse dados podem ser utilizados para criar estratégias de negócio, descobrir novas possibilidades de cura para doenças, apoiar o desenvolvimento de políticas públicas, analisar negócios e oportunidades. Além disso, alguns dados podem apoiar o desenvolvimento de estratégias de marketing político que são capazes de influenciar resultados eleitorais. Estima-se que a Cambridge Analytics possuia mais de 5.000 variáveis de 50 milhões de pessoas. Todo esse montante de dados ajudou a empresa na criação de estratégias que fortaleceram a imagem do atual Presidente americano Donald Trump, e provavelmente essa estratégia ajudou a elegê-lo.
Hoje podemos afirmar que os dados são a commodity mais valiosa do planeta, pois em certos casos, os dados valem mais que o petróleo. Há portanto, uma questão crucial: como extrair conhecimento dos dados?
Existem diversas técnicas para extrair conhecimento a partir de dados. A escolha de uma técnica depende tanto do propósito de análise quanto do tipo de dados disponível. Há basicamente três tipos de dados: (i) os dados estruturados, proveniente de base de dados; (ii) os dados semi estruturados, provenientes de APIs e descritos em linguagens de marcação como XML, JSON, etc., ou mesmo dados provenientes de base de dados que ainda precisam ser organizados; e (iii) os dados não estruturados, provenientes de textos de sites e documentos.
Vamos começar falando dos dados estruturados e semi-estruturados. Há várias etapas para se analisar esse tipo de dados. A primeira etapa chama-se a fase exploratória dos dados. A exploração de dados é a arte de analisar dados e gerar rapidamente hipóteses, para que sejam testadas repetidamente. O objetivo da exploração de dados é gerar muitos leads promissores que você poderá explorar mais tarde, com mais profundidade.
Uma das metodologias mais utilizadas para exploração de dados foi descrita por Hadley Wickham em seu livro que descreve a Ciência de Dados, segundo sua visão.
Basicamente Hadley explica que a visualização de dados é um ótimo lugar para começar a exploração de dados, pois os gráficos informativos nos ajudam a entender os dados. Normalmente, a visualização não é suficiente, mas na transformação de dados, é possível selecionar variáveis, filtrar observações importantes, criar novas variáveis ​​e calcular resumos.
Na análise exploratória de dados, é possível combinar visualização e transformação, com a nossa curiosidade e ceticismo para fazer e responder perguntas interessantes sobre dados. Por isso, a modelagem também é uma parte importante do processo exploratório, pois nos ajuda a desenvolver modelos matemáticos que são capazes de responder problemas reais. A figura 1 abaixo descreve as etapas de exploração de dados, segundo a visão de Hadley Wickham.
Figura 1 – Etapas de exploração de dados. Retirado do livro R for Data Science
Para esclarecer como podemos extrair conhecimento dos dados, nós elaboramos um exemplo, o qual foi parte da análise da minha tese de doutorado. Eu não vou entrar em detalhes sobre a tese, mas uma parte da análise de dados que realizei consistia em descobrir quais os grupos informais de agentes de uma comunidade de código aberto, em um ambiente distribuído de produção de software. O Objetivo era descobrir os grupos de agentes que eu chamei de ativos, os medianos, e os alheios, ou menos ativos.
Em um ambiente produtivo é importante estabelecer esses três grupos de agentes, para direcionar recursos de treinamento ou estratégias que aumentam a produtividade dos grupos medianos e alheios.
Então primeiramente era preciso compreender os dados. Isso foi feito fazendo-se uma análise exploratória, començando com uma análise descritiva univariável. A análise univariável consiste em uma descrição de cada coluna de um conjunto de dados (conjunto de observações), onde cada coluna representa uma variável e cada linha representa uma observação. Toda análise que descrevi na tese, foi realizada com uma ferramenta gratuita, desenvolvida para fins científicos. Todo o código fonte da análise está disponível nesse link – Análise Univariada. Para verificar cada variável foi criada uma função específica, cujo o código em Linguagem R está descrito abaixo. A Linguagem R é uma linguagem de programação desenvolvida para estatísticos e cientistas de dados.
Código Fonte 1 – Função .Unialysis que permite fazer uma tabela de cada variável de um conjunto de observações.
O código fonte 1 recebe uma coluna de um conjunto de variáveis e retorna uma tabela com o detalhe da coluna (variável). Isso faz parte do processo de organização de dados (tiny), mostrado na figura 1. Após examinar cada coluna da tabela de dados (cada variável), foi possível apresentar dados e modelar um script que me permitiu extrair os três grupos de agentes produtivos, a partir dos dois grupos formais de agentes, os "Reporters" e os "Owners".
Os "Reporters" são pessoas que analisam o software que está sendo produzido, e reportam os problemas encontrados. Os "Owners" são pessoas que irão resolver um problema reportado por algum agente "Reporter". Como a mesma modelagem computacional (funções) que permitiu descobrir esses três grupos informais de agentes produtivos "Reporters", foi possível descobrir os três grupos de ativos, medianos e alheios dos agentes "Owners". O código das três funções está descrito abaixo. Se você tiver interesse em ver todo o código utilizado, acesse este link – Análise Univariada.
Código Fonte 2 – Funções .Group permite agrupar agentes de produção em ativos, medianos e alheios.
As funções ".Group" recebem como entrada uma coluna com a variável "Reporter" ou "Owner" e agrupam os membros segundo a contagem de atividades (tickets) que estão registradas para cada membro. Por exemplo, com a aplicação da função ".GroupActive", recebendo a coluna "Reporters", o script gera a seguinte saída descrita abaixo.
Output 1 – Saída da Função ".GroupActive" aplicada a variável "Reporters".
A lista que surge da aplicação da função ".GroupActive" aplicada a variável "Reporter", apresenta na primeira coluna (##) o código de cada agente "Reporter". A segunda coluna (x) apresenta os nomes de usuários de cada agente "Reporter". A Terceira coluna (Freq) apresenta a frequência de atividades (tickets) atribuídas a cada agente "Reporter". Essa lista portanto, ilustra os agentes que mais reportaram problemas ocorridos no software em desenvolvimento. Aplicando-se as demais funções, desenvolvidas durante a tese, ".GroupMedian" e ".GroupAlien", obtivemos listas com os demais colaboradores que desenvolvem o sistema de código aberto. Filtrando-se os 5 primeiros nomes de cada grupo, e aplicando o script para gráfico de barras agrupados, obtivemos os seis gráficos abaixo, referentes aos agentes "Reporters", na primeira linha, e "Owners", na segunda linha, descritos na Figura 2.
Figura 2 – Grupos ativos, medianos e alheios de agentes "Owners" e "Reporters.
Na tese o objetivo era verificar a coerência de senso de unidade desses agentes, ao verificar se essa era uma dinâmica de trabalho do ambiente produtivo. Para verificar se os padrões de quantidade de agentes se repetiam em cada grupo formal (Owners e Reporters) foi então feita uma comparação da distribuição de pessoas nos três grupos. Essa comparação é apresentada na Figura 3.
Figura 3 – Comparativos dos Grupos ativos, medianos e alheios de agentes "Owners"e "Reporters".
A primeira barra vermelha, dos dois grupos representa o total de pessoas de cada grupo. É possível perceber que há mais agentes "Reporters" do que agentes "Owners", o que nos leva a uma filosofia de vida bem comum: "Muitas pessoas conseguem perceber os problemas, mas há poucas pessoas dispostas a a encontrar uma solução. Há mais de mil (1.000) "agentes "Reporters" (pessoas que reportam problemas), e há somente um pouco mais de cem (100) agentes "Owners" (pessoas que resolvem os problemas), nesse ambiente de produção. Importante lembrar que um agente "Reporter" pode fazer o papel de um agente "Owner", e vice-versa. E frequentemente isso ocorre. Se avaliarmos as listas de "Owners" e "Reporters", percebemos que alguns top "Owners" são também top "Reporters".
Esquecendo um pouco a filosofia, e voltando ao objetivo da análise da tese, no gráfico da Figura 3 é possível perceber que tanto o grupo formal de agentes "Owners", quanto "Reporters" possuem uma dinâmica de trabalho semelhante: há poucos agentes ativos, poucos agentes medianos e muitos agentes alheios.
Agora, se eu fosse gerenciar esses grupos, tendo obtido esses nomes, eu poderia buscar o perfil de cada pessoa dos grupos Alheios ou Medianos, por meio das redes sociais como LinkedIn e Facebook, para verificar quais os conhecimentos que eles não possuem, e então elaborar algum treinamento ou estratégia, de modo que eles se tornem mais ativos. Mas isso é assunto para um outro post.
Se você ou sua organização possuem um grande volume de dados e desejam extrair conhecimento deles, entre em contato conosco. Até a próxima postagem!