Preditivo vs exploratório
Dado uma quantidade de dados “rotulados” isto é com o valor a ser previsto correto.
Há um atributo especial de saída, este que esta corretamente rotulado
O atributo de saída pode ser uma classe: se o paciente esta doente ou não, o tipo de animal numa foto, se o cliente vai trocar de companhia telefonica no próximo mes ou não, etc
ou pode ser um número: semanas para completar o projeto, preço de uma ação no dia seguinte, quantidade de revistas a serem vendidas numa banca, etc
Previsão: prever corretamente o valor desse atributo para dados novos, que virão no futuro.
Se o atributo de saída é uma classe, o problema é chamado de classificação
se o atributo de saída é um número, o problema é chamado de regressão
Num problema preditivo normal, temos vários dados já rotulados. Este é chamado de conjunto de aprendizado ou de treino
no futuro, novos dados (não rotulados) chegarão e queremos fazer a previsão correta do atributo de saída para esses dados ainda desconhecidos.
Modelos explanatório usam os dados conhecidos (já disponíveis) para extrair conhecimento sobre o problema.
Não existe coisas como um atributo de saída. Há um conjunto de dados e quer-se aprender (“knowledge discover”) algo sobre os dados.
Por exemplo:
existem padrões nos valores dos atributos que são mais frequentes do que seria de se esperar?
os dados podem ser vistos/aproximados como uma composição de (poucos) padrões? Que padrões são esses?
os dados podem ser divididos em grupos? Que grupos são esses?
os dados podem ser separados em um ou mais grandes grupos de dados “normais” e um pequeno grupo de “anomalias”?
Não muito diferente de estatística tradicional quando se trata dos atributos individualmente ou em pares.
estudar e sumarizar as distribuições de valores para diferentes atributos,
estudar as correlações entre diferentes atributos
encontrar regiões onde há maior concentração de dados (mode finding ou bump hunting) http://techlog.gurucat.net/146 (exemplo de mean shift)
Também conhecido como redução de dimensionalidade.
redução de dimensionalidade linear http://www.joyofdata.de/public/pca-3d/
redução nao linear https://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction
padrões em imagens http://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html (para várias definições do que significa “fazer a composição”)
fatoração de matrizes.
agrupar pontos no espaço https://en.wikipedia.org/wiki/Cluster_analysis
agrupar nós em grafos http://francescopochetti.com/community-detection-social-networks/
agrupar series temporais
anomalias em pontos no espaço http://stats.stackexchange.com/questions/160260/anomaly-detection-based-on-clustering
anomalias dentro de series temporais https://blog.twitter.com/2015/introducing-practical-and-robust-anomaly-detection-in-a-time-series
alguns atributos de alguns dados podem não terem sido medidos/coletados.
imputação de dados faltantes (missing data)
relacionado tanto com os tópicos anteriores de modelos descritivos: descrição de atributos, agrupamento, redução de dimensionalidade.
Dados vetoriais são apenas numéricos e cada dado pode ser pensado como pontos num espaço de várias dimensões. Exemplos
notas nas várias questões de uma prova - cada questão é uma dimensão - cada aluno um dado
revistas X vendidas em cada uma das bancas de Campinas nas semanas anteriores - cada banca é um dado , cada semana uma dimensão, ou cada banca é uma dimensão e cada semana um dado. Por que escolher uma ou outra interpretação?
Usualmente representados como matrizes (ou data.frames) com as colunas como dimensão e as linhas como dados
Nos dados relacionais ou grafos cada dado não tem estrutura interna - são apenas nomes ou identificadores - e há informação sobre similaridade ou distancia entre os dados. Medida de distancia ou similaridade pode ser direcionada. Exemplos:
pessoas no Facebook (dados) e se são amigas ou não (medida de proximidade ou similaridade - uma medida binária)
pessoas e objetos no Amazon (dados) - e se a pessoa comprou ou não o objeto (medida de proximidade). Ou pessoas e objetos no Amazon (dados) e o número de estrelas que a pessoa deu para o objeto na sua avaliação (proximidade).
pessoas numa empresa (dados) e emails enviados de A para B (similaridade direcionada - número de emails de A pra B podem ser diferentes dos de B para A).
similaridade - quanto maior mais parecidos/perto sao os nós (numero de mensagens trocadas, numero de palavras em comum dos textos, etc). Similaridade = 0 nenhuma similaridade entre os nós. Similaridade negativa pode fazer algum sentido.
distancia - quanto maior mais diferentes/distantes são os nós. Nada similar indica distancia infinita - distancia negativa não faz muito sentido.
Usualmente, para poucos dados, dados relacionais são representados como uma matriz quadrada (se há apenas um tipo de dado - pessoas numa empresa) ou matriz retangular (se há 2 tipos de dados: pessoas e objetos na Amazon). Para muitos dados usa-se outras representações.
Os dados da matriz sao 0/1 se a relação é binaria (é ou não amigo no Facebook), ou números (número de estrelas na avaliação).
A matriz pode ser simétrica M[i,j]=M[j,i] se a proximidade é não direcionada (ou simétrica) ou assimétrica M[i,j] \not= M[j,i] se direcionada.
Dados vetoriais e grafos são extremos. As técnicas de aprendizado de máquina são muito diferentes para um tipo ou outro tipo de dados.
Para dados vetoriais pode-se falar em coisas como
plano ou reta que separa os dados,
bolas que incluem os dados
sub-espaços onde a maioria dos dados estão
média de um conjunto de pontos/dados
Para dados relacionais nenhum dos termos faz sentido. Conceitos mais complicados de grafos devem ser usados (cortes em grafo, caminhos, autovetores de grafos, etc)
Mas pode-se converter aproximadamente um tipo de dado para o outro.
Mas dados em grafos podem ser convertidos/aproximados para dados vetoriais através da técnica de “Multi dimensional scailing (MDS)” https://en.wikipedia.org/wiki/Multidimensional_scaling
MDS define pontos em um espaço de k dimensões ( k definido pelo usuário) de tal forma que as distancias entre os pontos do espaço seja similar a distancia dos nós correspondentes no grafo.
Versão simples: converte os dados para um grafo completo, com a distancia entre os vertices = distancia entre os pontos no espaço.
Existe um técnica mais elaborada para converter dados vetoriais em relacionais. https://en.wikipedia.org/wiki/Nearest_neighbor_graph
Dados vetoriais puros são apenas numéricos, mas em problemas típicos há atributos dos dados que não são apenas numéricos, os atributos categóricos.
Usualmente converte-se o atributo categórico em múltiplos atributos numéricos, usando a “one hot encoding”. Vamos assumir que o atributo classe
pode assumir 3 valores A,B
e C
.
Cria-se tres novos atributos classe.A
, classe.B
e classe.C
. classe.A
será 1 para dados cuja classe
é A
e 0 para dados onde classe
tem outro valor. E assim por diante.
Texto não é nem vetorial nem relacional!. Normalmente (pré 2018) converte-se o texto em um dado vetorial de alta dimensão. Cada palavra no conjunto do texto passa a ser uma dimensão.
Vamos supor que os textos são:
agriao cenoura agriao cenoura
brocolis cenoura agriao agriao
agriao agriao brocolis
Assim, há 3palavras diferentes “agriao” “brocolis” “cenoura” (abreviados para a, b, c. Os dados terão 3 dimensões, a,b e c.
Uma alternativa é codificar os dados como:
1 0 1
1 1 1
1 1 0
note que mantemos apenas a informação da presença ou não de palavras. Nenhuma informação sobre a ordem das palavras no texto
isso é conhecido como “vector space model”
alem da codificação 0/1 (ausencia/presença) há outras:
term frequence- tf
em vez de 1, o número de vezes que a palavra aparece no texto.
2 0 2
2 1 1
2 1 0
há ainda o term frequency inverse document frequency - tfidf
onde o term frequency é multiplicado por um valor relacionado com o inverso da quantidade documentos/textos onde a palavra aparece (n_p). Normalmente log(N_{doc}/n_p).
0 0 3.4
0 1.7 1.7
0 1.7 0
note que o idf para “agriao” é 0 (ele aparece nos 3 documentos)
o idf para as outras palavras é 1.7 = 1/log_2(3/2)
Normalmente remove-se palavras muito frequentes na lingua (stop words como artigos (o/a/um), conjunções (e/que/mas), pronomes (eu/ele/este), verbos de ligação (é, esta, são), etc.
normalmente processa-se cada palavra para unificar as diferentes declinações. Assim cenoura e cenouras são a mesma palavra; comprei e compraríamos também. (stemming)
O pacote tm
http://www.rdocumentation.org/packages/tm do R faz de forma eficiente as transformações e armazenamento dos dados.
O pacote snowballC
http://www.rdocumentation.org/packages/SnowballC faz o stemming inclusive de portugues.
os pacotes NLTK https://www.nltk.org/ and spaCy https://spacy.io/ são muito usados em Python
Imagens pode ser consideradas como dados vetoriais. Uma imagem 200x200 pixels é um vetor de 40.000 dimensões.
Uma das alternativas (pré 2015) é descrever partes da imagens usando descritores. Num exemplo simplificado, podemos usar o histograma de cores da imagem como um todo, e o histograma de cores dos 4 quadrantes, e de cada um dos 4x4 16-antes e assim por diante. A concatenação desses vários histogramas é o que é usado como representação da imagem - que continua sendo um dado vetorial.
Há vários tipos de descritores (para diferentes aplicações) e várias outras técnicas que podem ser usadas em imagens.
Series temporais - os vários valores que uma certa medida assume com o tempo (consumo de energia a cada minuto em Campinas, vendas mensais de um produto, número de visitantes semanais a um site)
o valor da medida ( e quando ele foi coletado) pode ser pensado como um dado. Neste caso normalmente quer-se fazer uma previsão do valor da medida num período do futuro - modelo preditivo. http://www.rdatamining.com/examples/time-series-forecasting
há várias técnicas tradicionais para fazer previsão em series temporais (ARIMA)
Usando aprendizado de máquina, normalmente, considera-se um intervalo fixo de medidas (por exemplo 10 medidas consecutivas) como um dado vetorial (de 10 dimensões).
Mas pode-se ter várias series temporais (por exemplo de várias ações). Neste caso pode ser interessante agrupar subconjuntos de series (ações que estão se comportando de forma similar), ou determinar que algumas series são “anomalas”.
Neste caso normalmente considera-se cada serie temporal como um nó de um grafo, e define-se uma medida de similaridade entre diferentes séries. Os dados são em grafo!
Por exemplo, pode-se pensar em deteção de anomalia dentro de uma serie temporal https://neptune.ai/blog/anomaly-detection-in-time-series ou selecionar series temporais que são diferentes das outras (qual cripto moeda não esta se comportando como a maioria das outras?).
aprendizado supervisionado corresponde de forma geral a modelos preditivos - a “supervisão” é o atributo (classe ou valor) correto e que será previsto para cada dado
aprendizado não supervisionado corresponde de forma geral aos modelos explicativos.
mas há um problema intermediario, mas preditivo: dado apenas alguns dados rotulados e muitos dados nao rotulados, prever o rotulo certo dos dados não rotulados “velhos” e de dados novos.
A maioria dos métodos de mineração dos dados assume que “todos os dados já estão lá” ou seja que se tem um conjunto (talvez bem grande) de dados.
mas há técnicas que assumem que os dados vão chegando (normalmente em grandes quantidades). Assim os algoritmos precisam se adaptar a novos dados chegando e não podem re-usar um dado velho (ou porque o volume é muito grande, ou porque os conceitos mudaram),
dependendo das restrições, essas técnicas são chamadas de online learning, ou stream learning
exemplos: acompanhar padrões de uso que evolvem, detectar um nova noticia no Google News https://news.google.com/ https://ieeexplore.ieee.org/document/8974204
Uma das razões para modelos exploratórios é para obter conhecimentos sobre os dados/problema (knowledge discovery from data - KDD)
para este objetivo o resultado do modelo deve ser algo que pessoas podem entender, e podem julgar
os especialistas no problema deve ser capazes de dizer se o resultado do modelo faz sentido, se eles “aprenderam” algo, e se isso é útil para alguma decisão.
utilidade e inteligibilidade dos resultados não é algo que o algoritmo pode julgar
visualização dos resultados é uma parte fundamental do processo
assim como o feedback dos especialistas
Mas alguns aspectos dos modelos exploratórios pode ser usado como passos automáticos de outros processos
por exemplo, processamento de texto quase sempre inclue redução da dimensionalidade dos dados originais.
pode-se comprimir imagens coloridas reduzindo o número de cores. As cores remanescentes são os centros do resultado de agrupar todas as cores da imagens em poucos grupos. http://scikit-learn.org/stable/auto_examples/cluster/plot_color_quantization.html e http://spin.atomicobject.com/2015/05/26/mean-shift-clustering/
livro muito interessante e não técnico sobre modelos preditivos http://www.amazon.com/The-Signal-Noise-Predictions-Fail-but/dp/0143125087
livro muito interessante e não técnico sobre modelos explanatório http://www.amazon.com/Dataclysm-When-Think-Ones-Looking/dp/0385347375