Abordagem de Machine Learning para descoberta de regras para performance de guitarra jazz

Um estudo muito interessante de padrões de guitarra Jazz.

A Machine Learning Approach to Discover Rules for Expressive Performance Actions in Jazz Guitar Music

Expert musicians introduce expression in their performances by manipulating sound properties such as timing, energy, pitch, and timbre. Here, we present a data driven computational approach to induce expressive performance rule models for note duration, onset, energy, and ornamentation transformations in jazz guitar music. We extract high-level features from a set of 16 commercial audio recordings (and corresponding music scores) of jazz guitarist Grant Green in order to characterize the expression in the pieces. We apply machine learning techniques to the resulting features to learn expressive performance rule models. We (1) quantitatively evaluate the accuracy of the induced models, (2) analyse the relative importance of the considered musical features, (3) discuss some of the learnt expressive performance rules in the context of previous work, and (4) assess their generailty. The accuracies of the induced predictive models is significantly above base-line levels indicating that the audio performances and the musical features extracted contain sufficient information to automatically learn informative expressive performance patterns. Feature analysis shows that the most important musical features for predicting expressive transformations are note duration, pitch, metrical strength, phrase position, Narmour structure, and tempo and key of the piece. Similarities and differences between the induced expressive rules and the rules reported in the literature were found. Differences may be due to the fact that most previously studied performance data has consisted of classical music recordings. Finally, the rules’ performer specificity/generality is assessed by applying the induced rules to performances of the same pieces performed by two other professional jazz guitar players. Results show a consistency in the ornamentation patterns between Grant Green and the other two musicians, which may be interpreted as a good indicator for generality of the ornamentation rules.

Algumas das regras encontradas

3.1.2. Duration Rules

• D1: IF note is the final note of a phrase AND the note appears in the third position of an IP (Narmour) structure THEN shorten note
• D2: IF note duration is longer than a dotted half note AND tempo is Medium (90–160 BPM) THEN shorten note
• D3: IF note duration is less than an eighth note AND note is in a very strong metrical position THEN lengthen note.
3.1.3. Onset Deviation Rules

• T1: IF the note duration is short AND piece is up-tempo (≥ 180 BPM) THEN advance note
• T2: IF the duration of the previous note is nominal AND the note’s metrical strength is very strong THEN advance note
• T3: IF the duration of the previous note is short AND piece is up-tempo (≥ 180 BPM) THEN advance note
• T4: IF the tempo is medium (90–160 BPM) AND the note is played within a tonic chord AND the next note’s duration is not short nor long THEN delay note
3.1.4. Energy Deviation Rules

• E1: IF the interval with next note is ascending AND the note pitch not high (lower than B3) THEN play piano
• E2: IF the interval with next note is descending AND the note pitch is very high (higher than C5) THEN play forte
• E3: IF the note is an eight note AND note is the initial note of a phrase THEN play forte.

Conclusões do estudo

Concretely, the obtained accuracies (over the base-line) for the ornamentation, duration, onset, and energy models of 70%(67%), 56%(50%), 63%(54%), and 52%(43%), respectively. Both the features selected and model rules showed musical significance. Similarities and differences among the obtained rules and the ones reported in the literature were discussed. Pattern similarities between classical and jazz music expressive rules were identified, as well as expected dissimilarities expected by the inherent particular musical aspects of each tradition. The induced rules specificity/generality was assessed by applying them to performances of the same pieces performed by two other professional jazz guitar players. Results show a consistency in the ornamentation patterns between Grant Green and the other two musicians, which may be interpreted as a good indicator for generality of the ornamentation rules.

 

Abordagem de Machine Learning para descoberta de regras para performance de guitarra jazz

Regras de Associação no Combate ao Crime no Brasil – Por Flávio Clesio

Não é segredo que vivemos em um país que está lamentavelmente listado como um dos mais violentos do mundo, em que temos 21 cidades entre as 50 mais violentas do mundo.

Se levarmos em consideração que em alguns estados do Brasil a taxa de esclarecimento de homicídios é de menos de 15%, temos um problema grave na segurança pública de maneira geral.

Mas se o crime por si só é a externalidade/consequência de diversos fatores como aspectos socioeconômicos, educacionais, e de ambiente (para citar alguns); o policiamento preventivo, isto é, o ataque direto das causas deve ser o norte de qualquer política de segurança pública; e é sobre isso que se trata esse post.

Através de uma base de dados sintética (extremamente desbalanceada) de dados que poderiam se extraídos de qualquer distrito policial ou mesmo de algum departamento de segurança pública vamos fazer a aplicação de uma técnica de Machine Learning chamada Association Rules ou Regras de Associação para formulação de políticas de segurança pública.

Como vamos iniciar a nossa análise sem nenhum tipo de hipótese e o objetivo é ver o conhecimento intrínseco da base de dados, vamos fazer um aprendizado não-supervisionado.

Contexto colocado, vamos para o R Studio.

Antes de mais nada, vamos limpar o nosso console e na sequência importar a biblioteca _arules_ no R.

# Clear the console
cat("\014") 

# Load arules library
library(arules)

Com a nossa lib importada, vamos realizar carregar a nossa base de dados no R.

# Load Dataset - This is a synthetic dataset, some inconsistencies can be found... as in the real world! 😉
crimes <- read.csv("https://raw.githubusercontent.com/fclesio/learning-space/master/Datasets/01%20-%20Association%20Rules/Crimes.csv")

Com a nossa base de dados importada, vamos agora ver as colunas da base de dados:

# See variables types
str(crimes)

Temos uma base de dados com 780 crimes com 16 variáveis que são:

  • Crime_id: Número da ocorrência.
  • Zona: Zona da cidade que a ocorrência foi registrada.
  • Periculosidade: Nível de periculosidade da área de acordo com mapeamentos anteriores.
  • Viaturas_Apoio_Forca_Tatica: Indica se tem reforços da Força Tática disponíveis na região. A grosso modo, Força Tática é um destacamento que ‘flutua’ na circulação e tem como objetivo atender a ocorrência mais próxima que a primeira força de atendimento não conseguir solucionar.
  • Patrulhamento: Indica se há patrulhamento pelas viaturas do batalhão mais próximo.
  • Policiamento_Ostensivo: Informa se há operações acontecendo com mais frequência. Um maior nível de policiamento aumenta também o enfrentamento policial, o que pode acarretar em mais óbitos de ambas as partes.
  • Apoio_GCM: Esse campo indica se a Guarda Civil Metropolitana circula na área da ocorrência. Diferente da PM ou da Civil; a GCM apesar das mesmas prerrogativas policiais tem uma função mais voltada à segurança patrimonial de alguns pontos da cidade e escolas.
  • Arma_Fogo: Houve arma de fogo na ocorrência.
  • Qtde_Vitimas: Número de vitimas da ocorrência.
  • Possui_DP: Tem Distrito Policial nas redondezas.
  • Tipo_Policiamento: O tipo de policiamento local influencia também na prática de crimes, em que áreas menos assistidas pelos batalhões podem ter um maior índice de violência em relação à áreas que não tem esse tipo de atendimento com um maior volume de viaturas e policiais.
  • Area_Residencial: Indica se é área residencial ou não.
  • Ocorrencia_Atendida_15_Minutos: Sabe-se que quanto mais demorado for o atendimento da ocorrência, as chances de resolução do evento criminoso em questão converge para a não solução efetiva. Esse campo indica se a ocorrência foi prontamente atendida.
  • Pericia: Informa se houve a perícia para auxiliar nas investigações.
  • Possui_UPP: Mostra se tem Unidade de Polícia Pacificadora instalada nas redondezas do evento criminoso
  • Iluminacao: Informa se o local do crime tinha iluminação ou não.

Com um pouco mais de trabalho na parte de data wrangling é possível criar mais algumas variáveis, mas como o foco aqui será de fazer uma primeira análise básica vamos seguir com algumas estatísticas básicas em relação a cada uma das variáveis da base de dados.

# See basic stats
summary(crimes)

Uma olhada rápida no sumário podemos tirar as seguintes informações:

  • Em relação ao tipo de policiamento vemos que temos um patrulhamento feito por diversos batalhões na metade dos casos, o que indica que há uma dispersão de batalhões (i.e. nenhum batalhão cuida específicamente de uma área) nessas áreas mais críticas;
  • 69% das localidades tem algum tipo de Distrito Policial nas redondezas do evento criminoso;
  • Apenas 1% dos locais não tem nenhum tipo de viatura da Força Tática;
  • Quase 70% das ocorrências acontecem com 3 ou mais pessoas. Isso nos faz a crer que pode ter dois tipos de vieses que são a) os crimes coletivos (e.g. arrastões, chacinas, etc.) são os mais reportados ou estão acontecendo de fato, ou b) os crimes menores como roubo de celular não estão sendo notificados;
  • Mais de metade das áreas dos eventos aconteceram em áreas consideradas com o nível de periculosidade altíssimo;
  • Pelos dados a Zona Sul está em chamas;
  • Com 88% dos locais com iluminação, pode ser que essa variável não seja mais a responsável pela inibição dos eventos criminosos;
  • Com apenas 49% dos casos periciados, as atividades de investigação podem em algum momento ter problemas de robustez de provas; e
  • Sendo o índice de patrulhamento em 90% e o policiamento ostensivo 83% nas regiões criminosas há indícios de que os criminosos estão indiferentes à presença policial.

São insights interessantes que nos auxiliam em algumas hipóteses como as levantadas. Neste ponto a análise descritiva básica pode ajudar e muito no início de uma política de segurança efetiva, e não pode ser descartada em nenhum momento. No nosso caso vamos avançar para a parte aplicada de machine learning que é o foco desse post.

Vamos criar um objeto utilizando o algoritmo a priori escolhendo um suporte de 55% (isso é, os conjuntos de itens estarão no mínimo em 55% de todas as transações) e com a confiança de 80% (isso é, a grosso modo é como dizer que há a probabilidade de 80% das transações encontradas serão derivadas dos itens contidos na base do suporte).

Não há uma regra única em relação à utilização do suporte e confiança, mas trazendo aqui uma heurística que eu sempre uso é que se o problema tem um volume de transações muito grande, o suporte será a métrica que vai dar mais robustez para descartar muitas regras redundantes, já se o problema tem uma caracterização com um menor volume de instâncias e se há uma necessidade de entrar mais no detalhe das regras e elas precisam de um grau de assertividade naturalmente maior (e.g. uma campanha de cartas em que há um custo operacional envolvido) aí utiliza-se a confiança. Mas lembrando, tudo isso depende do problema em questão.

Nesse caso, como os recursos a serem empregados são caros e escassos (viaturas e pessoal militar), então partiremos para uma confiança de 80%.

# The most important thing it's get a good support and a great confidence (This is a wishful thinking, in real world EVERYTHING can be happen!)
# The main task here is get a set a most meaningful way, so, shity rules will be discarted.
crimes_rulez <- apriori(crimes, parameter = list(minlen=4,maxlen=10, supp=0.55, conf=0.80))

Com o objeto criado, vamos agora reduzir para duas casas decimais as métricas de avaliação dessas regras para fins de simplicidade.

# Reduce the number of digits in measures of quality of the model
quality(crimes_rulez) <- round(quality(crimes_rulez), digits=2)

Apenas para fins de visualização, vamos criar alguns objetos de regras ordenando pela confiança e suporte para que possamos identificar de maneira mais efetiva as regras mais interessantes e acionáveis.

# Sort by Confidence and Support and Lift
model_srt_confidence <- sort(crimes_rulez, by="confidence")

model_srt_support <- sort(crimes_rulez, by="support")

Vamos agora inspecionar as nossas regras, de acordo com a confiança e o suporte:

# Check models (#66 rules)
inspect(model_srt_confidence)

inspect(model_srt_support)

Com esse comando acima, temos algumas regras:

      
   lhs                                     rhs                                  support confidence lift

1  {Apoio_GCM=Nao,                                                                                     
    Area_Residencial=Sim,                                                                              
    Iluminacao=Sim}                     => {Patrulhamento=Sim}                     0.57       0.98 1.09

63 {Area_Residencial=Sim,                                                                              
    Ocorrencia_Atendida_15_Minutos=Sim,                                                                
    Iluminacao=Sim}                     => {Zona=Zona_Sul}                         0.55       0.82 0.96

49 {Patrulhamento=Sim,                                                                                 
    Area_Residencial=Sim,                                                                              
    Ocorrencia_Atendida_15_Minutos=Sim,                                                                
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}            0.58       0.89 1.08
  • A regra 1 indica que o patrulhamento está funcionando nos locais em que a PM não tem o apoio da GCM em áreas iluminadas de bairros residenciais;
  • A regra de número 63 mostra um primeiro padrão em relação a Zona Sul, em que com 82% de confiança essas ocorrências estão ligadas a lugares com malha residencial, iluminadas e a ocorrência foi feita dentro dos primeiros 15 minutos;
  • Já a regra 49 que o policiamento ostensivo está ocorrendo com 89% de confiança em áreas já patrulhadas em uma malha residencial iluminada em que o evento foi atendido em 15 minutos ou menos.

Com essas poucas regras acima podemos observar que o trabalho de primeiro atendimento está sendo feito dado que grande parte dessas ocorrências (dado o nível de suporte e confiança) estão sendo atendidas em um tempo de 15 minutos.

Outro ponto a ser considerado é que nas áreas residenciais estão ocorrendo muitos eventos criminosos. Isso pode ser um indicativo de que nas áreas de comércio e indústrias podem estar com baixa atratividade criminosa ou mesmo o policiamento nessas áreas está mais efetivo.  Uma estratégia aqui seria ver esses dois aspectos, e caso a segunda hipótese estiver correta replicar as ações de combate ao crime.

Já a Zona Sul que concentra grande parte das ocorrências, parece estar em chamas mesmo com um alto nível de patrulhamento, iluminação e policiamento ostensivo. Neste caso há a hipótese de que são o maior patrulhamento e um policiamento mais ostensivo além de ter uma ação mais rápida – que converge como o fato do atendimento de ocorrências demorar menos de 15 minutos –  ela tem o poder de jogar luz em uma demanda reprimida de registros policiais (i.e. crimes que não seriam registrados por ausência do poder público, ou mesmo por descaso do estado nunca entrariam nas estatísticas oficiais).

Em um segundo caso pode ser mesmo que uma facção criminosa esteja disputando controle direto com a polícia através de confrontos armados, ou mesmo atentados e roubos em áreas que são vigiadas pela polícia; o que sugere uma estratégia de inteligência para desarticular de dentro para fora milícias, grupos criminosos ou quadrilhas free lance que estejam levando terror a essas áreas.

Como são muitas regras e o objetivo é encontrar o máximo de regras específicas, vamos minerar algumas dessas regras usando campos específicos. Sendo assim vamos explorar um pouco mais das ocorrências que apresentaram as características de terem ocorrido na Zona Sul, em lugares iluminados, casos que as ocorrências foram atendidas em menos de 15 minutos ou que tiveram policiamento ostensivo.

# See specific rules of zones (I already mined some rules, but feel free to discover)
Zona_Sul <- subset(crimes_rulez, subset = rhs %pin% "Zona=Zona_Sul")

Iluminacao_Sim <- subset(crimes_rulez, subset = rhs %pin% "Iluminacao=Sim")

Ocorrencia_Atendida_15_Minutos_Sim <- subset(crimes_rulez, subset = rhs %pin% "Ocorrencia_Atendida_15_Minutos=Sim")

Policiamento_Ostensivo <- subset(crimes_rulez, subset = rhs %pin% "Policiamento_Ostensivo=Sim")

Esses objetos criados, tem somente as regras em que o RHS (right-hand-side) foram esses campos descritos no parágrafo anterior.

Vamos inspecionar esses objetos.

# Specific Rules
inspect(Zona_Sul)

inspect(Iluminacao_Sim)

inspect(Ocorrencia_Atendida_15_Minutos_Sim)

inspect(Policiamento_Ostensivo)

Seguindo a mesma lógica da análise acima, podemos ter os seguintes conjuntos de regras específicas:

Zona_Sul
8  {Patrulhamento=Sim,                                                            
    Policiamento_Ostensivo=Sim,                                                   
    Iluminacao=Sim}                     => {Zona=Zona_Sul}    0.66       0.88 1.03

9  {Patrulhamento=Sim,                                                            
    Area_Residencial=Sim,                                                         
    Iluminacao=Sim}                     => {Zona=Zona_Sul}    0.66       0.85 0.99


Iluminacao_Sim
   lhs                                     rhs              support confidence lift
12 {Patrulhamento=Sim,                                                             
    Policiamento_Ostensivo=Sim,                                                    
    Area_Residencial=Sim,                                                          
    Ocorrencia_Atendida_15_Minutos=Sim} => {Iluminacao=Sim}    0.58       0.96 1.09

13 {Zona=Zona_Sul,                                                                 
    Patrulhamento=Sim,                                                             
    Policiamento_Ostensivo=Sim,                                                    
    Area_Residencial=Sim}               => {Iluminacao=Sim}    0.61       0.95 1.08    


Ocorrencia_Atendida_15_Minutos_Sim
  lhs                             rhs                                  support confidence lift
5 {Zona=Zona_Sul,                                                                             
   Area_Residencial=Sim,                                                                      
   Iluminacao=Sim}             => {Ocorrencia_Atendida_15_Minutos=Sim}    0.55       0.81 1.08

7 {Patrulhamento=Sim,                                                                         
   Policiamento_Ostensivo=Sim,                                                                
   Area_Residencial=Sim,                                                                      
   Iluminacao=Sim}             => {Ocorrencia_Atendida_15_Minutos=Sim}    0.58       0.83 1.11


Policiamento_Ostensivo
   lhs                                     rhs                          support confidence lift
10 {Patrulhamento=Sim,                                                                         
    Area_Residencial=Sim,                                                                      
    Ocorrencia_Atendida_15_Minutos=Sim,                                                        
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}    0.58       0.89 1.08

11 {Zona=Zona_Sul,                                                                             
    Patrulhamento=Sim,                                                                         
    Area_Residencial=Sim,                                                                      
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}    0.61       0.93 1.12       

No caso dessas regras, tudo indica que mesmo com as ocorrências sendo atendidas em menos de 15 minutos em áreas residenciais iluminadas, a Zona Sul está com um problema grave de segurança.

A estratégia nesse caso seria investir de forma intensa em atividades de inteligência, dado que pelo que vimos pelos dados há uma situação de combate intenso com policia na rua e crimes acontecendo mesmo em situações em que os bandidos supostamente estariam intimidados.

Conclusão
Usando uma base sintética, vimos que é possível com algumas linhas de código e estatística descritiva básica ter insights sobre uma base de dados mesmo sem um conhecimento prévio.

No caso da nossa análise, vimos que pode haver uma situação de confronto clara em áreas residenciais mesmo com patrulhamento da polícia e policiamento ostensivo acontecendo.

Isso leva a crer que esses crimes estejam sendo reportados pelos aspectos acima, ou mesmo por uma maior disposição dos criminosos em agir em áreas controladas pela polícia. Isso pode indicar que o trabalho da polícia nesse caso não está sendo eficiente, e que uma estratégia de investigação através de atividades de inteligência devem ser colocadas em campo.

Regras de Associação no Combate ao Crime no Brasil – Por Flávio Clesio

Reproducible Research with R and RStudio – Livro sobre Pesquisa Reprodutível

Ainda sobre o assunto da reprodução de pesquisas, está em vias de ser lançado um livro sobre o assunto chamado Reproducible Research with R and RStudio escrito por Christopher Gandrud.

No enxerto do livro o autor disponibiliza 5 dicas práticas para criação/reprodução de pesquisas que são:

  1. Document everything!,
  2. Everything is a (text) file,
  3. All files should be human readable,
  4. Explicitly tie your files together,
  5. Have a plan to organize, store, and make your files available.

 

 

Reproducible Research with R and RStudio – Livro sobre Pesquisa Reprodutível

Replicação em Pesquisa Acadêmica em Mineração de Dados

Lendo este post do John Taylor sobre a replicação da pesquisa econômica publicada até em journals de alto impacto lembrei de uma prática bem comum em revistas acadêmicas da área de Engenharia de Produção e Mineração de Dados que é a irreprodutibilidade dos artigos publicados.

Essa irreprodutibilidade se dá na forma em que se conseguem os resultados, em especial, de técnicas como Clustering, Regras de Associação, e principalmente Redes Neurais.

Um trabalho acadêmico/técnico/experimental que não pode ser reproduzido é a priori 1) metodologicamente fraco, e 2) pessimamente revisado. Trabalhos com essas características tem tanto suporte para o conhecimento como a chamada evidência anedótica.

Depois de ler mais de 150 papers em 2012 (e rumo aos 300 em 2013) a estrutura não muda:

  • Introdução;
  • Revisão Bibliográfica;
  • Aplicação da Técnica;
  • Resultados; e
  • Discussão na qual fala que teve  ganho de 90% em redes neurais.

Há um check-list bem interessante para analisar um artigo acadêmico com um péssimo DOE, e mal fundamentado metologicamente:

Artigos de Clustering 

  • Qual foi o tamanho da amostra?;
  • Qual é o tamanho mínimo da amostra dentro da população estimada?
  • Foram realizados testes estatísticos sobre a população como teste-Z ou ANOVA?
  • Qual é o P-Valor?
  • Qual foi a técnica para a determinação da separação dos clusters?
  • Quais os parâmetros foram usados para a clusterização?
  • Porque foi escolhido o algoritmo Z?

Artigos de Regras de Associação

  • Qual foi o suporte mínimo?
  • Qual é o tamanho da amostra e o quanto ela é representativa estatisticamente de acordo com a população?
  • O quanto o SUPORTE representa a POPULAÇÃO dentro do seu estudo?
  • Como foi realizado o prunning as regras acionáveis?
  • A amostra é generalizável? Porque não foi realizado o experimento em TODA a população?

Redes Neurais

  • Qual é a arquitetura da rede?
  • Porque foi utilizada a função de ativação Tangente e não a Hiperbólica (ou vice-versa)?
  • A função de ativação é adequada para os dados que estão sendo estudados? Como foi feito o pré-processamento e a discretização dos dados?
  • Porque foi escolhida o número de camadas internas?
  • Tem taxa de aprendizado? Qual foi e porque foi determinada essa taxa?
  • Tem decaímento (Decay)? Porque?
  • E o momentum? Foi utilizado? Com quais parâmetros?
  • Qual estrutura de custos está vinculada nos resultados? Qual foi a quantidade de erros tipo I e II que foram realizados pela rede?
  • E o número de épocas? Como foi determinada e em qual momento a rede deixou de convergir? Você acha que é um erro mínimo global ou local? Como você explica isso no resultado do artigo

Pode parecer algo como o desconstrucionismo acadêmico fantasiado de exame crítico em um primeiro momento mas para quem vive em um meio no qual estudos mais do que fraudulentos são pintados como revolucionários é um recurso como um escudo contra besteiras (Bullshit Shield).

Em suma, com 50% das respostas das perguntas acima o risco de ser um paper ruim com resultados do tipo “caixa-preta” já caí para 10% e aí entra o verdadeiro trabalho de análise para a reprodução do artigo.

Abaixo um vídeo bem interessante sobre papers que nada mais passam de evidência anedótica.

Replicação em Pesquisa Acadêmica em Mineração de Dados

Pruning Algos

Este paper Russel Reed é um ótimo artigo para quem deseja saber como funcionam os algoritmos de pruning (poda). Merece atenção especial para quem utiliza regras de associação.

http://axon.cs.byu.edu/~martinez/classes/678/Papers/Reed_PruningSurvey.pdf

Pruning Algos

Aplicação de Mineração de Dados no Mercado Financeiro – Application of data mining techniques in stock markets

Ehsan Hajizadeh, Hamed Davari Ardakani e Jamal Shahrabi, todos da Amirkabir University of Technology no Irã trazem nesse paper uma boa abordagem de idéias de aplicações de mineração de dados no mercado financeiro.

Aos moldes do que faz o ótimo livro do Roberto Pontes que já foi resenhado aqui, os autores colocam um leque de possibilidades bem interessantes com as técnicas de mineração de dados, no qual não somente a mineração de dados será uma ferramenta de análise exploratória e reconhecimento de padrões, como colocam as técnicas como forma de se analisar tendências futuras para melhorar a análise de ativos.

Como os autores bem colocam, o paper vem a preencher uma lacuna na literatura sobre a aplicação de mineração de dados, principalmente no que vai além da dupla árvore de decisão e rede neural.

As técnicas elencadas pelos autores foram: Árvore de Decisão (alternativas de decisão), Redes Neurais (avaliação paramétrica), Agrupamento – Clustering – (observação de dinâmicas de características dos ativos financeiros, análise de fator (avaliação de variáveis e a influência de cada um sobre um modelo de predição), regras de associação (relacionamento entre os ativos de acordo com as características da base de dados), Séries Temporais (análise de tendência e predição).

Para quem deseja engajar-se em um projeto sério de análise de dados financeiros, sem dúvidas esse  artigo traz uma luz bem oportuna ao assunto, e pode auxiliar em pesquisas neste aspecto.

Application of data mining techniques in stock markets

Aplicação de Mineração de Dados no Mercado Financeiro – Application of data mining techniques in stock markets

O que são as Inferências Bayesianas e Frequencistas?

Este post do Normal Deviate mostra de forma quase que absoluta:

Here are my definitions. You may have different definitions. But I am confident that my definitions correspond to the traditional definitions used in statistics for decades.

But first, I should say that Bayesian and Frequentist inference are defined by their goals not their methods.

The Goal of Frequentist Inference: Construct procedure with frequency guarantees. (For example, confidence intervals.)

The Goal of Bayesian Inference: Quantify and manipulate your degrees of beliefs. In other words, Bayesian inference is the Analysis of Beliefs.

Para quem conhece mineração de dados, sabe que grande parte dos métodos abordam a inferência frequencista, na qual há intervalos, ranges de suporte e confiança, distribuições. Entretanto, vale a pena ressaltar, que como bem descrito no livro do Daniel Larose há uma abordagem de inferência Bayesiana muito interessante quando falamos de cálculo de probabilidade condicional.

O que são as Inferências Bayesianas e Frequencistas?

Mineração de Dados aplicado à Neurociência Preditiva

Um interessante artigo recém publicado pela Ecole Polytechnique Fédérale de Lausanne no PLoS One de autoria de Georges Khazen, Sean Hill, Felix Schürmann e Henry Markram apresenta um interessante avanço na utilização de mineração de dados para previsão de padrões de estruturas cerebrais. Através dessas previsões é possível chegar a um mapeamento da estrutura anatômica e propriedades elétricas dos tipos de neurônios, os quais os autores podem chegar aos resultados futuros de extração de regras para padrões genéticos e dessa forma prever as características cerebrais do indivíduo.

Esta pesquisa é um importante avanço em relação ao que é praticado e estudado em mineração de dados pois, com a utilização de ‘strats’ e a posteriori extração/descoberta dessas regras, parte do paradigma de estudos relacionados a morfologia cerebral tem sua complexidade reduzida; no qual através de ‘pedaços de dados’ os autores conseguem predizer o complemento dos canais iônicos os quais são presentes nos neurônios e através disso consegue-se saber quais genes que se manifestam de acordo com o comportamento elétrico do neurônio.

Combinatorial Expression Rules of Ion Channel Genes in Juvenile Rat (Rattus norvegicus) Neocortical Neurons

PLoS ONE_ Combinatorial Expression Rules of Ion Channel Genes in Juvenile Rat (Rattus norvegicus) Neocortical Neurons

Mineração de Dados aplicado à Neurociência Preditiva

Livro Discovering Knowledge in Data: An Introduction to Data Mining

É sempre difícil comentar sobre um livro o qual se vê claramente que é um dos textbooks que podem receber a denominação de clássico. O livro do Dr. Daniel Larose Discovering Knowledge in Data: An introduction to Data Mining ( ISBN-10: 0471666572 | ISBN-13: 978-0471666578) é um ótimo livro para quem busca conhecer de forma introdutória a Mineração de Dados; bem como quer fugir do lugar comum no qual dezenas de livros sobre o assunto levam.

O autor inicia o livro realizando uma série de overviews bastante pertinentes em relação a elucidação das tarefas de mineração de dados, até mesmo apresentando o CRISP-DM através de casos de estudos.

Após isso, o livro entra na questão do Pre-processamento de dados, e explica de forma bem concisa o conceito de Análise Exploratória de Dados (Exploratory Data Analysis – EDA) .

Nos capítulos subsequentes o autor desvenda através de abordagens conceituais e práticas as Abordagens Estatísticas para Estimação e Predição, Algoritmo k-Nearest Neighbor , Árvores de Decisão, Redes Neurais, Técnicas de Agrupamento e Regras de Associação.

O mais valioso no livro sem sombra de dúvidas é o capitulo 11-Model Evaluation Techniques (Modelo de Técnicas de Avaliação) no qual mostra alguns dos atributos de um projeto de Mineração de Dados mais negligenciados que são Índice de Erros, Falsos Positivos e Falsos Negativos; que através de exemplos práticos em capitulos anteriores mostram uma forma prática de se avaliar os modelos de mineração.

Este livro é para: Cursos Introdutórios de Mineração de Dados, Interessados em Análise Hands-On em Mineração de Dados, Estudantes de Banco de Dados, Entusiastas de Mineração de Dados, Cursos de Graduação sobre a Disciplina de Banco de Dados/Mineração de Dados.

Este livro NÃO é para: Desenvolvimento de projetos complexos de Mineração de Dados, Aprendizado de Técnicas Avançadas em Mineração de Dados, quem não gosta/entende representações matemáticas.

Pontos Positivos: Facilidade de Leitura, Roteiro de assuntos abordados pelo autor, explicações teóricas sem prolixidade, abordagem prática.

Pontos Negativos: Abordagem matemática do autor em determinadas sessões que pode confundir o leitor menos habituado ao tipo de leitura, Tamanho (pouco mais de 220 páginas).

Livro Discovering Knowledge in Data: An Introduction to Data Mining

A inquestionável necessidade de especialistas de domínio

O artigo do  provavelmente é um dos melhores artigos sobre a questão da Mineração de Dados e a sua aplicação prática; e a suas implicações seja no aspecto técnico, quando no aspecto conceitual.

O motivo do post saiu através de uma análise do debate promovido pela O’Reilly, no qual ‘levantaram a bola’ sobre a necessidade de especialistas de domínio em projetos de mineração de dados. Hoje há diversas competições de mineração de dados, ferramentas, técnicas disponíveis; porém, ainda faltam analistas que consigam mapear o domínio em mineração de dados e conduzir um projeto desde o Business Understanding até o Deployment final.

Um trecho interessante sobre a análise black-box está descrita abaixo:

There’s a limit to the value you can derive from correct but inexplicable results. (Whatever else one may say about the Target case, it looks like they made sure they understood the results.) It takes a subject matter expert to make the leap from correct results to understood results. In an email, Pete Warden said:

“My biggest worry is that we’re making important decisions based on black-box algorithms that may have hidden and problematic biases. If we’re deciding who to give a mortgage based on machine learning, and the system consistently turns down black people, how do we even notice it, let alone fix it, unless we understand what the rules are? A real-world case is trading systems. If you have a mass of tangled and inexplicable logic driving trades, how do you assign blame when something like the Flash Crashhappens?

“For decades, we’ve had computer systems we don’t understand making decisions for us, but at least when something went wrong we could go in afterward and figure out what the causes were. More and more, we’re going to be left shrugging our shoulders when someone asks us for an explanation.”

Veja que não é um raciocínio espúrio, mas sim uma preocupação real e que deve ser olhada com bastante atenção, e é por isso que muitas das vezes há de se bater na tecla sobre combater a análise black-box que muitos vendedores de software e pacotes estatísticos oferecem.

Quando se fala de avaliação, e o impacto econômico (só para ficar nesses aspecto particular) veja um caso bem interessante de associação em bases de dados reais:

Another realistic scenario: Target recently used purchase histories to target pregnant women with ads for baby-related products, with surprising success. I won’t rehash that story. From that starting point, you can go a lot further. Pregnancies frequently lead to new car purchases. New car purchases lead to new insurance premiums, and I expect data will show that women with babies are safer drivers. At each step, you’re compounding data with more data. It would certainly be nice to know you understood what was happening at each step of the way before offering a teenage driver a low insurance premium just because she thought a large black handbag (that happened to be appropriate for storing diapers) looked cool.

Enfim, vale a pena assistir o vídeo pois há algumas considerações bem interessantes e pertinentes.

A inquestionável necessidade de especialistas de domínio

Mineração de Dados Excel 2007/ SQL Server 2008 – Análise de Cenário

Por mais que eu seja um crítico ferrenho da Microsoft quando se trata de suas ferramentas de Mineração de Dados, bem como alguns de seus evangelistas (Escrevi um post aqui sobre isso), há de se reconhecer que para o público de que toma decisões de um nível mais alto sem a necessidade de ter um rigor técnico e mais apurado a ferramenta da Microsoft, em especial o seus plugins para Excel; podem auxiliar na análise de pequenas bases de dados (não mais que 1Mi de registros) o que pode ser bem proveitoso para pequenas empresas; no qual qualquer informação pode ser um diferencial sobre a concorrência.

Esse vídeo foi gravado pelo Mark Tabladillo, que é um dos maiores especialistas em Mineração de Dados na plataforma Microsoft e tras uma análise bem curta sobre uma base de dados utilizando a opção de Scenario Analysis que realiza algumas correlações entre os itens da base de dados.

Mineração de Dados Excel 2007/ SQL Server 2008 – Análise de Cenário