Melhores maneiras de agregar e analisar dados

13

Tendo recentemente começado a me ensinar Machine Learning e Análise de Dados, estou me deparando com uma parede de tijolos sobre a necessidade de criar e consultar grandes conjuntos de dados. Gostaria de pegar os dados que agreguei na minha vida profissional e pessoal e analisá-los, mas não tenho certeza da melhor maneira de fazer o seguinte:

  1. Como devo armazenar esses dados? Excel? SQL? ??

  2. Qual é uma boa maneira para um iniciante começar a tentar analisar esses dados? Sou um programador profissional de computadores, portanto a complexidade não está nos programas de gravação, mas é mais ou menos específica no domínio da análise de dados.

EDIT: Desculpas pela minha imprecisão, quando você começa a aprender sobre algo, é difícil saber o que você não sabe, sabe? ;)

Dito isto, meu objetivo é aplicar isso a dois tópicos principais:

  1. Métricas da equipe de software (pense na velocidade ágil, na quantificação de riscos, na probabilidade de uma iteração concluída com êxito, considerando o número de pontos da história)

  2. Aprendizado de máquina (ex. Exceções do sistema ocorreram em um determinado conjunto de módulos, qual é a probabilidade de um módulo lançar uma exceção no campo, quanto custará isso, o que os dados podem me dizer sobre os principais módulos a serem aprimorados me o melhor retorno possível, preveja qual parte do sistema o usuário desejará usar a seguir para começar a carregar dados, etc.).

Justin Bozonier
fonte
Isso me parece muito vago. Que tipo de dados e que tipo de análise? Além disso, este deve ser um wiki da comunidade, se for subjetivo.
Shane

Respostas:

19

Se você tiver grandes conjuntos de dados - aqueles que fazem o Excel ou o Bloco de Notas carregar lentamente, um banco de dados é um bom caminho. O Postgres é de código aberto e muito bem feito, e é fácil conectar-se ao JMP, SPSS e outros programas. Você pode querer experimentar neste caso. Você não precisa normalizar os dados no banco de dados. Caso contrário, o CSV é favorável ao compartilhamento.

Considere o Apache Hive se você tiver mais de 100 milhões de linhas.

Em termos de análise, aqui estão alguns pontos de partida:

Descreva uma variável:

  • Histograma
  • Estatísticas resumidas (média, intervalo, desvio padrão, min, max, etc)
  • Existem discrepâncias? (maior que 1,5x intervalo interquartil)
  • Que tipo de distribuição segue? (normal, etc)

Descreva o relacionamento entre variáveis:

  • Gráfico de Dispersão
  • Correlação
  • Outliers? Verifique a distância de Mahalanobis

  • Gráfico em mosaico para categorias

  • Tabela de contingência para categorias

Preveja um número real (como preço): regressão

  • Técnicas de regressão OLS ou regressão de aprendizado de máquina

  • quando a técnica usada para prever é compreensível pelos seres humanos, isso é chamado de modelagem. Por exemplo, uma rede neural pode fazer previsões, mas geralmente não é compreensível. Você pode usar a regressão para encontrar também os principais indicadores de desempenho.

Prever associação à classe ou probabilidade de associação à classe (como aprovada / reprovada): classificação

  • técnicas de regressão logística ou aprendizado de máquina, como SVM

Coloque observações em grupos "naturais": agrupamento

  • Geralmente, encontramos observações "semelhantes" calculando a distância entre elas.

Coloque atributos em grupos "naturais": fatoração

  • E outras operações de matriz como PCA, NMF

Quantificando risco = desvio padrão, ou proporção de vezes que "coisas ruins" acontecem x quão ruins elas são

Probabilidade de uma iteração concluída com êxito, dada o número x de pontos da história = Regressão logística

Boa sorte!

Neil McGuigan
fonte
Isso foi demais. Muito obrigado por esta resposta. Você me deu um ótimo ponto de partida. Todos os livros que você recomenda, já que parece "chegar" aonde estou.
23710 Justin Bozonier
você é muito bem-vindo. books: Estatísticas em inglês simples para começar. Análise de dados multivariada por Hair depois disso. Estes são bons recursos da web: itl.nist.gov/div898/handbook , statsoft.com/textbook
Neil McGuigan
4

Se você estiver olhando para falhas do sistema, poderá estar interessado no seguinte documento, empregando técnicas de aprendizado de máquina para diagnóstico de falhas no eBay. Pode dar uma idéia de que tipo de dados coletar ou como uma equipe abordou um problema específico em um domínio semelhante.

Se você está apenas começando, algo como RapidMiner ou Orange pode ser um bom sistema de software para começar a jogar com seus dados rapidamente. Ambos podem acessar os dados em diversos formatos (arquivo csv, banco de dados, entre outros).

ars
fonte
3

Sua pergunta é tão ampla que a resposta é: depende. Ainda assim, para dar uma resposta mais útil, indicarei o que acho comum em Pesquisa.

O armazenamento de dados geralmente é feito em arquivos de texto. Ao fazer análises estatísticas, você trabalha principalmente com uma coleção de um tipo de vetores. Isso pode ser visto como uma tabela e escrito no formato csv. A razão pela qual essas coisas são frequentemente armazenadas em texto simples é porque simplesmente todas as ferramentas podem lê-las e é fácil transformá-las.

Sobre a análise, isso é um pouco mais difícil de ser específico. Se for bidimensional, faça um gráfico de dispersão. Se for de alta dimensão, faça o PCA e veja onde existem os primeiros componentes principais para descobrir variáveis ​​importantes. Se você tiver dados de tempo, plote-os. Tudo isso é tão geral que, para ser útil, você precisa realmente indicar melhor quais são seus dados.

Peter Smit
fonte
Peter, você me venceu! Concordo plenamente com o armazenamento de dados como texto, embora, dependendo do tamanho (centenas de milhões de obs), possa ser necessário mudar para um banco de dados redutível em mapa (por exemplo, Pig, Cassandra ou uma das opções do NoSQL).
DrewConway
Oh ok, interessante! Então, basta pegar os dados de cada variável e colocá-los no formato de coluna de linha e chegar ao processamento de números, eh? Existem ferramentas para as quais eu deveria estar olhando ou devo apenas programar alguma coisa?
Justin Bozonier 26/07/10
R é um conjunto de ferramentas / linguagem de programação / biblioteca muito extenso (e gratuito) para estatística. O meu favorito para a maioria das coisas é no entanto Python com SciPy / NumPy
Peter Smit
0

A única coisa em que o ROOT é realmente bom é armazenar enormes quantidades de dados. ROOT é uma biblioteca C ++ usada em física de partículas; ele também vem com ligações Ruby e Python, para que você possa usar pacotes nessas linguagens (por exemplo, NumPy ou Scipy) para analisar os dados quando achar que o ROOT oferece poucas possibilidades prontas para uso.

O formato de arquivo ROOT pode armazenar árvores ou tuplas, e as entradas podem ser lidas sequencialmente, para que você não precise manter todos os dados na memória ao mesmo tempo. Isso permite analisar petabytes de dados, algo que você não gostaria de tentar com Excel ou R.

A documentação do ROOT I / O pode ser acessada aqui .

Benjamin Bannier
fonte