quinta-feira, 29 de maio de 2014

Big Data ?! A nova buzzword.

E falando em moda, está aí a buzzword do momento: Big Data! Peraí...mas quem falou em moda?...rs...Anyway...

Todo mundo agora quer saber de Big Data. Comprar Big Data e vender Big Data...!
Mas quem sabe de fato o que é Big Data (BD)? Muitos não sabem, mas acham que sim.

Muita gente pensa que só porque tem uma base de 1 milhão de clientes, isso é BD. Se você tem uma base de dados bem grande e estruturada, sobre a qual você conhece a estrutura e conteúdo, isso não é BD. Você poderia ter 54859345843 trilhões de clientes na base, ou um "googleplex" de registros de transações bancárias e isso ainda não seria BD. Isso seria apenas um "montão de dados". =)

Pra ser  BD, há alguns critérios a se considerar, como: a maior parte do que está entre esses dados ser lixo! Mas entre o lixo, há coisas úteis a serem descobertas. É um mar de inutilidades a ser percorrido para achar um tesouro perdido. Outra coisa é que normalmente os dados estão desestruturados. Mesmo que estejam em um banco de dados, o conteúdo pode ser texto, e dentro daquele texto podem haver várias informações diferentes que você não sabe onde começa uma ou termina a outra.

O exemplo mais claro disso são as redes sociais. As informações estão armazenadas em um banco de dados especial, mas os conteúdos são diversos. Num único post você pode ter várias informações sobre uma pessoa. E como você vai descobrir qual parte é qual, e o que é útil?

Na prática, você vai precisar que ter uma boa infra estrutura pra guardar tudo isso e analisar.

Agora...é claro que você não vai analisar manualmente, caso a caso...rsrs...e mesmo se isso fosse feito, dificilmente perceberia algo de genial.

É ai que entram os algoritmos de mineração de dados pra te ajudar a descobrir padrões no BD, e fazer dele algo útil e palpável. Eles possibilitam enxergar algo que antes era invisível.

Os dados que levam a grandes descobertas sobre os padrões de funcionamento do mundo podem estar nos lugares mais inóspitos... ^^...então temos que fuçar!



Abraços miningnoobs!


Público alvo, amostra e período

Nos posts anteriores vimos que para fazer um modelo, precisamos definir antes: qual a pergunta que queremos responder. Ex.: quais as chances de alguém ter um infarto?

Após isto, há mais uma pergunta básica que deve ser feita: de quem ou o que estamos falando? Ou seja, qual o público alvo?

Precisamos definir quais as características dos indivíduos/coisas que vamos analisar.
Por exemplo, podemos definir que nosso público alvo para a pergunta acima é composto por:  mulheres, viúvas, que moram na região central de sp e fumam.
Desta forma, os dados coletados para o estudo devem ser somente de indivíduos que estejam dentro destas características.
É importante ter em mente que o modelo que será criado, deverá ser (idealmente) aplicado a indivíduos do mesmo público. Ou seja, não seria coerente aplicar o modelo em homens, ou ainda em mulheres que não fumam. Isso porque estes não fizeram parte do conjunto de mapeamento do estudo. Eles não participaram da modelagem, de modo que corre-se o risco (não necessariamente, mas não da pra saber a priori) de eles não apresentarem um comportamento similar aos outros.
Isso não significa que vamos aplicar o modelo somente nas pessoas que participaram da modelagem. Afinal de contas, dessa forma o modelo não serviria de nada. Quero dizer que vamos aplicar em outras pessoas, mas sendo estas, pessoas que fazem parte do mesmo perfil definido no público alvo.
É muito importante que fique bem claro logo no começo qual a definição exata desse público alvo, de modo a evitar retrabalhos futuros.

Após definir o público, precisamos avaliar a volumetria de dados que temos disponível, considerando a resposta que foi definida.
Devemos lembrar que podem haver diversas restrições quanto à quantidade de dados a ser considerada no estudo. Não somente por questões de processamento e armazenamento (afinal hoje em dia isso já não é um problema tão grande), mas por questões de viabilidade de coleta também.
Muitas vezes os dados do estudo não estão disponíveis em um sistema, e é necessário coletá-los. Por exemplo: com pesquisa de campo ou em redes sociais.
Dessa forma, é pertinente definir uma amostra a ser coletada da população.
O tamanho ideal da amostra é uma questão um pouco subjetiva. Há alguns cálculos estatísticos que permitem definir o tamanho ideal, mas nem sempre isso é necessário, pois vai depender muito da situação. Não existem números mágicos, mas a partir de 1.000 casos já temos alguma coisa razoável.
Um fator que deve ser considerado com muita cautela é a questão da aleatoriedade.
A amostra deve ser aleatória! A menos que se esteja usando alguma técnica de estratificação ou algo assim, mas isso deve ser feito com cuidado e exige conhecimentos adicionais.
Isso serve para evitar criar vieses na amostra.
Ex.: imagine que você extraia os dados de cadastro de clientes de um sistema transacional pegando os primeiros 10.000 da tabela. Imagine agora que a base estava ordenada por idade. Desta forma o seu modelo terá mais gente nova do que velha para ser modelada (isso se não acabar entrando só gente nova). O problema é que na prática você aplicará o modelo tanto em gente velha quanto em gente nova, mas o seu modelo não conhece o comportamento das pessoas mais velhas. Desta forma, ele tende a errar nas previsões destes indivíduos.

Por último, precisamos ainda definir um período histórico para nossos dados.
Devemos pensar na dinâmica do assunto que estamos tratando em relação ao tempo.
Por exemplo, se estivermos falando do mundo de finanças, devemos pensar que dados muito antigos talvez não reflitam a economia atual, uma vez que esta pode mudar tão rápido.
Entretanto, não podemos também pegar somente dados de ontem, pois é cedo de mais para perceber um padrão! Devemos avaliar bem o histórico que vamos utilizar, até porque isso impacta na volumetria. É preciso ponderar o custo/benefício de um histórico mais longo, e ainda o malefício (por pegar dados que já não refletem a realidade).



Abraços miningnoobs!



segunda-feira, 21 de abril de 2014

A importância dos dados

Até agora temos falado das técnicas para analisar dados e extrair padrões destes. Mas além das técnicas, existe um detalhe muito importante, que deixa até de ser detalhe.
Tão importante quanto as técnicas a serem aplicadas aos dados, são os próprios dados.
Não há modelo ou algoritmo que "salve" dados ruins. Mas o quero dizer com 'dados ruins'? 'Dados ruins' não é uma expressão que se refere a dados que não apresentam o resultado que queremos, mas sim a dados que não representam a realidade como ela é.

Modelos são abstrações da realidade. Isso significa buscar identificar as características macro que definem o alvo analisado através de um conjunto de dados capaz de representar essa realidade. Logo, se o conjunto de dados apresentado for distorcido, a representação que o modelo fará será distorcida, de modo que em relação ao que se deseja analisar de fato, o modelo não terá valor ou significado algum.

Devido a isso, a etapa de entendimento dos dados se mostra como uma etapa bastante decisiva. As conclusões após essa etapa podem levar a desistir de criar um modelo, devido à possível inexistência de dados confiáveis, fidedignos. Isso porque, um modelo feito em dados distorcidos, vai apenas prejudicar o processo de decisão e descoberta, uma vez que levará a conclusões errôneas ou à descoberta de padrões irreais, que não terão efeito no mundo prático. Modelos feitos em dados não íntegros levam-nos a vieses e ao erro.

Vamos ver alguns pontos que valem a pena serem ressaltados a esse respeito:

Metadados

O básico na etapa de entendimento seria verificar se há um metadados disponível para ajudar a entender os dados. Entretanto, sabemos que muitas vezes este não existe, e acabamos tendo que fazer uma investigação mais longa, através de conversas com diversas pessoas envolvidas no processo de geração dos dados, ou analisando documentos que possam conter essas definições. Seja como for, é essencial garantir que não estamos interpretando os dados de forma incorreta, como por exemplo, considerar o campo de 'valor de parcela' como campo de 'valor não pago de parcela'.

Governança de dados

Algo que deve ser questionado é: o quanto podemos confiar no processo que gera os dados? Por exemplo, imagine que você está fazendo um modelo e um dos dados disponíveis é o 'salário'. Será que existe um processo de verificação do salário informado pelo cliente, ou o que é inserido no banco é apenas o que o cliente informa verbalmente? Caso não haja uma verificação, devemos pensar duas vezes antes de considerar esse dado no modelo.

Outros

Alguns campos dificilmente podem ser considerados, dado que a informação é inserida no cadastro manualmente. Um exemplo disso seria o campo 'profissão'. Muitas vezes num processo de cadastro, um atendente não entende ou não encontra a profissão informada pelo cliente e seleciona uma profissão que ele acredita ser similar. Além disso, ele pode definir a profissão como 'outros'. Desta forma duas coisas podem acontecer: pessoas serão classificadas em profissões inadequadas; o campo profissão terá uma grande porcentagem de pessoas em outros, e não será muito informativo.


Abraços miningnoobs!


sexta-feira, 7 de março de 2014

Correlação vs Causalidade

Conforme vimos anteriormente, para fazer previsões sobre um determinado evento é necessário usar um conjunto de variáveis (informações).
Hoje vamos entender como essas variáveis se relacionam e como é possível que elas de fato ajudem nessas previsões.
Pra isso precisamos entender o conceito de correlação. Podemos dizer que duas variáveis estão correlacionadas quando é possível observar que as ocorrências de algum valor de uma delas acontecem com uma frequência parecida com o valor da outra. What ??!!!

Exemplo: em relação a uma determinada pessoa, a variável "gastos mensais" pode aumentar conforme a variável "salário" aumenta. Isso porque normalmente quando se ganha mais gasta-se mais. Então estes eventos estão correlacionados. Neste caso, além de correlação existe ainda a presença da causalidade. Isso porque o motivo de estar se gastando mais é justamente por se ganhar mais.

Neste caso temos correlação e ainda causalidade. Mas existem casos onde temos apenas correlação, sem causalidade.

Um exemplo disso seria:

Imagine uma praia onde conforme aumenta o "número de picolés vendidos" aumenta também o "número de afogamentos". Vamos proibir a venda de picolés, porque pessoas estão morrendo afogadas ?!...claro que não.
Neste caso, existe correlação, porque essas duas variáveis ("número de afogamentos" e "número de picolés") tem frequências de ocorrências similares. Entretanto, não é uma que está causando a outra.
Então porque suas frequências são similares? Bom, normalmente isso ocorre porque existe uma terceira variável por de trás disso causando as duas coisas.
Neste caso, a variável é a "temperatura". Em dias quentes, mais pessoas tomam sorvete, e também mais pessoas entram na água para nadar, aumentando assim a chance de se afogarem.

E como essa informação pode ser útil? Bem, o interessante disso, é que mesmo quando não existe causalidade  (o que ocorre na maioria das vezes) , a variável ainda sera útil para explicar e prever o evento da variável que queremos.
No exemplo acima, mesmo que os afogamentos não causem a venda de picolés ou vice versa, bastaria colocar uma barraquinha de sorvete em praias com um grande número de afogamentos, que as vendas de picolés aumentariam. =)

No processo de modelagem é isso o que ocorre. Olhamos os dados e variáveis disponíveis, e tentamos descobrir quais delas estão correlacionas com o evento que queremos prever (evento final).
No final, não importará se elas são ou não as causadoras do evento final. O que importa é que através delas é possível prever este evento, e isso é tudo que nos interessa.

Por exemplo na área da medicina:

Se um modelo foi criado dizendo que pessoas "com mais de 70 anos, que moram no interior, de sexo feminino, da classe C e sem filhos" tem 95% de chance de ter uma determinada doença, não importa se essa tendência de ter a doença é devida às características citadas, o que importa mesmo é que temos um diagnóstico, e pessoas com esse perfil devem se tratar, pois existe algum fator implícito expresso por de trás dessas características que causa a doença.



Abraços miningnoobs!


quinta-feira, 23 de janeiro de 2014

Tipos clássicos de modelos

Conforme vimos no último post, existem diferentes tipos de aprendizagem e diferentes tipos de variáveis a serem analisadas.

Agora veremos os tipos mais clássicos de modelagem. Ou seja, os formatos de perguntas mais comuns no mundo da modelagem.


Modelos de Propensão


São modelos que buscam predizer uma variável categórica, seja binária ou de múltiplas categorias. É um aprendizado supervisionado.

Exemplos:

binária - classificar uma pessoa como portadora de uma doença: sim/não
múltiplas categorias - classificar um carro como sendo da categoria: A/B/C/D

Modelos assim predizem a qual categoria um indivíduo/objeto pertence, e qual a probabilidade disso ser verdade.

Ex.1:  dadas suas características, João foi classificado pelo modelo como tendo 76% de chance (propensão) de estar doente (sim).

Ex.2:  dadas suas características, o Carro Cherry foi classificado pelo modelo como tendo 85% de chance (propensão) de ser da categoria D.

Alguns algoritmos que fazem isso:
  • Regressão logística - binária
  • Redes Neurais - múltiplas categorias
  • Árvores de decisão - múltiplas categorias

Modelos de Estimação


São modelos que buscam predizer uma variável contínua. Modelos assim estimam o valor de uma variável quantitativa. É um aprendizado supervisionado.

Exemplos: valor de vendas; valor de um imóvel; peso de uma pessoa.

Ex.1: dadas suas características, o valor do imóvel 1 é estimado em R$293.908.

Ex.2: dadas suas características, o peso de Maria é estimado em 65 quilos.

Alguns algoritmos que fazem isso:
  • Regressão Linear
  • Redes Neurais

Modelos de Segmentação


São modelos que buscam encontrar similaridades entre indivíduos/objetos. É um aprendizado não supervisionado.

Exemplos: grupos de pessoas similares; grupos de produtos similares; grupos de cidades similares.

Ex.1: dadas suas características, João, Maria e Paulo foram agrupados como similares no segmento 1; Ana, Cláudia e Mário foram agrupados como similares no segmento 2.

Ex.2: dadas suas características, as cidades de são Paulo, Rio de Janeiro e Porto Alegre foram agrupadas como similares no segmento 1; Natal, Maceió e Fortaleza foram agrupadas como similares no segmento 2.

Alguns algoritmos que fazem isso: 
  • K-means
  • Two-step

Modelos de Regras de Associação


São modelos que buscam encontrar padrões de ocorrência de eventos/fatos. É um aprendizado não supervisionado.

Exemplos: produtos que vendem juntos num carrinho de compras; situações que acontecem juntas;

Ex.1: dadas as ocorrências, em 86% das vezes que uma pessoa coloca macarrão em seu carrinho de compras, ela coloca também frango;

Ex.2: dadas as ocorrências, em 79% das vezes que ocorre uma falha numa rede X de computadores, falta também fornecimento de água no local.


Alguns algoritmos que fazem isso:
  • Apriori
  • Carma


Repare que alguns algoritmos podem ser usados tanto para respostas binárias quanto para respostas de múltiplas categorias e ainda respostas contínuas, como, por exemplo, Redes Neurais.



Abraços miningnoobs!

segunda-feira, 20 de janeiro de 2014

Tipos de aprendizado e variáveis

No contexto de Data Mining, os campos de uma base de dados são chamados de variáveis. Ex.: idade, sexo, estado civil etc. Cada variável representa um tipo de informação que descreve alguma característica de algo ou alguém.
É através destas variáveis que os modelos buscam fazer suas previsões e descobertas. Mais que isso, algumas dessas variáveis são justamente o alvo da previsão.

Conforme já comentamos em outro post, DM nada mais é do que o processo de aprendizagem pelo qual um algoritmo passa, e é importante sabermos que existem dois tipos de aprendizado artificial:


Tipos de aprendizado


  • Aprendizado supervisionado


No aprendizado supervisionado existem dois tipos de papéis que uma variável pode representar.
Temos a variável resposta, ou seja, um alvo que desejamos prever, classificar ou estimar. E temos as variáveis explicativas, que são as variáveis que possibilitam prever/classificar/estimar a variável resposta.

Exemplos: prever se vai ou não chover dadas as variáveis climáticas; classificar a classe social de uma pessoa dadas suas características; estimar o valor de um imóvel dadas suas características etc.

Neste tipo de aprendizado, temos um conjunto de variáveis (características) diversas que explicam o por quê de uma determinada resposta (categoria ou valor).

Exemplo
Um imóvel pode ter:
- seu valor estimado em R$100.000 (variável resposta)
- porque fica na zona leste; tem 3 quartos; fica a 800 metros do metrô; é pintado de azul (variáveis explicativas)

Variável resposta - variável alvo da previsão/classificação/estimação
Variáveis explicativas - variáveis que explicam (preveem/classificam/estimam) e definem o valor da variável resposta



  • Aprendizado não supervisionado


No aprendizado não supervisionado, não temos uma variável resposta. O papel de todas as variáveis é igual. Elas representam fatores ou eventos.
Desta forma, tentamos encontrar similaridades ou padrões entre os dados.

Exemplo: agrupar pessoas dadas suas características; encontrar padrões em carrinhos de compras de super mercados.






Tipos de variáveis

Tanto para variável resposta, variável explicativa ou fator, temos dois tipos de medição de variável:

Variáveis Quantitativas – valores numéricos que representam contagens. Ex.: salário, idade, peso etc.
Variáveis Qualitativas – valores que representam categorias. Ex.: estado civil, sexo, classe social etc.


Para cada tipo de variável podemos aplicar diferentes tipos de modelos (algoritmos), supervisionado ou não, dependendo da pergunta que queremos responder.



Abraços miningnoobs!

sexta-feira, 17 de janeiro de 2014

Data Mining vs BI

BI, ou Business Intelligence significa Inteligência de Negócios, e é uma área da tecnologia da informação (TI) que já existe há um bom tempo e vem sendo utilizada por muitas empresas.

É claro que pode BI também pode ser aplicado fora do mundo dos negócios, seja na medicina, na educação, nas pesquisas acadêmicas ou em qualquer outra coisa.
Isso porque na prática, BI não está focado na conclusão em si, mas nas informações necessárias para chegar a essa conclusão.
Talvez fizesse mais sentido chamar de Business Information (Informações de Negócios).

Então BI dispõe de técnicas e ferramentas como: modelagens especiais de bancos de dados; ferramentas especiais de tratamento de dados; ferramentas especiais de visualização de dados.
Tudo isso para prover um conjunto de informações que sejam relevantes para algum usuário que têm interesse em analisar o assunto em questão (referente a esses dados).
Afinal de contas, os dados dos sistemas transacionais (sistemas da ponta, como por exemplo de uma loja de eletro domésticos) não costumam ficar facilmente acessíveis, integrados e organizados para que os tomadores de decisão possam visualizar seus conteúdos. Então BI está ai para resolver este problema. Ou seja, juntar dados de diferentes fontes, padronizar estes dados, limpar as "sujeiras" de cadastros, formatar os dados de um modo que faça sentido para o negócio e por fim apresentar isso de um modo visual inteligível e inteligente.

Agora, por mais legal que o BI seja, ele nos mostra apenas o passado. Ou seja, a partir dele podemos ver os históricos dos acontecimentos de um modo organizado que faça sentido.
Mas e o futuro?

É nesse ponto que podemos complementar nosso BI com Data Mining. Isso porque conforme vimos em um post anterior, através das técnicas de DM podemos fazer previsões e ainda identificar padrões complexos nos dados; coisa que no BI seria improvável, pois dependeria de um algoritmo mental  muito complicado, que em geral as pessoas não tem em muitas situações.

É claro que muitas vezes o feeling (ou o Blink, como diria o Malcolm Gladwell... ^^) funciona bem, mas quando se trata de muito dinheiro em jogo, ou da vida e saúde das pessoas, acho que é mais recomendável tomar as decisões com o maior respaldo possível!

As informações extraídas e partir dos modelos de DM podem ser, além de aplicadas em sistemas transacionais, carregadas em ferramentas de BI para ajudar na tomada de decisão tática e estratégica.

Uma analogia que a IBM costuma usar é a do retrovisor e o GPS. O retrovisor é o BI, pois mostra por onde já fomos, e o GPS é o DM, pois mostra onde devemos ir.



Abraços miningnoobs!