5.1 Métodos de discretização

O uso de redes bayesianas discretas é bastante comum, porém os métodos de discretização são altamente utilizados e preferidos à utilização de dados contínuos, como sugerido na Figura 5.1, em uma revisão sistemática feita por Aguilera et al. (2011) envolvendo 128 artigos.

Figura 5.1 Frequência dos tipos de dados em redes bayesianas. (Aguilera et al. 2011)

A discretização de uma variável contínua é o processo de modificação de seus valores para que ela se transforme em uma variável discreta.

Tal processo é importante pois o desempenho da classificação tende a ser melhor quando as variáveis contínuas de entrada são discretizadas, do que quando suas probabilidades são estimadas através de suposições duvidosas sobre a distribuição de probabilidade da população de onde os dados são extraído (Yang e Webb 2009).

Existem várias metodologias que podem ser utilizadas neste sentido: métodos supervisionados e não supervisionados (Fayyad e Irani 1993). Alguns destes métodos são listados abaixo:

Dougherty, Kohavi, e Sahami (1995) mostram que o desempenho do classificador Naive-Bayes aumenta significativamente quando as variáveis de entrada são discretizadas utilizando métodos baseados em entropia.

Nojavan, Qian, e Stow (2017) realizam uma comparação entre diferentes métodos de discretização para redes bayesianas e recomendam cautela na utilização de métodos de discretização. Além disso, sugerem a utilização de um avaliativo no sentido de garantir que as conclusões não sejam meramente baseadas no processo de discretização.

5.2 Estimação via Bootstrap

O método de bootstrap não paramétrico (Efron 1981) é basicamente uma técnica de reamostragem que permite aproximar a função de distribuição de probabilidade através da distribuição empírica dos dados.

O procedimento de bootstrap não paramétrico é exibido sucintamente a seguir.

Seja \(x=(x_{1},x_{2},\ldots,x_{n})\) uma amostra independente e identicamente distribuída contendo \(n\) observações:

  1. Retire \(B\) amostras \(x=(x^{(1)},x^{(2)},\ldots,x^{(B)})\) de tamanho \(n\) e com reposição;

  2. Calcule as estimativas da estatística \(F\) de interesse: \[ \hat{\theta}_{(b)}=F\left[x^{(b)}\right] \text{, } b=1,\ldots,B \]

  3. Calcule a estimativa boostrap, \(\hat{\theta}_{boot}\), dada por:

\[\hat{\theta}_{boot}=\sum^B_{b=1}\frac{\hat{\theta}_{(b)}}{B}\]

  1. Calcule o erro padrão , \(\hat{S}_{boot}\), dado por:

\[ \hat{S}_{boot}=\left\{ \frac{1}{B-1}\left[\sum_{b=1}^{B}\left(\hat{\theta}_{(b)}-\hat{\theta}_{boot}\right)\right]^{2}\right\} ^{1/2} \]

As estimativas bootstrap são prudentes e confiáveis, pois raramente geram falsos positivos no estabelecimento de arcos (Friedman, Goldszmidt, e Wyner 1999).

As relações entre as variáveis podem ser estabelecidas com maior confiança e são satisfatórias mesmo nos casos em que os conjuntos de dados são pequenos para o modelo para o espaço paramétrico e de estrutura (Friedman, Goldszmidt, e Wyner 1999)(Scutari e Nagarajan 2011).

5.3 Escolha de Direcionamento de Arco

A propriedade de equivalência de Markov, ou classe equivalente, abordada no Capítulo 1, possui grande relevância no processo de estimação de estrutura de uma rede bayesiana. Estruturas Markov equivalentes são, também, score equivalentes para a maioria das pontuações utilizadas. Este fato tem impacto direto nos métodos de estimação por pontuação. Além disso, dificulta a orientação de arcos pelo métodos baseados em restrição, que são focados nas propriedades de d-separação e nas orientações de arcos para a conexão head-to-head, o que gera como estimativa de estrutura um grafo acíclico parcialmente direcionado.

Neste sentido, as orientações de arco em conexões do tipo (\(A \rightarrow B\)) ou (\(B \rightarrow C\)) que não geram uma estrutura head-to-head, quando estimadas, devem ser interpretadas com cautela e a escolha deste tipo de orientação no processo de estimação deve adotar algum procedimento baseado em conhecimento sobre o problema ou até mesmo a opinião de especialistas da área.

A estimação via amostras bootstrap pode auxiliar na escolha da orientação de arco (Scutari e Nagarajan 2011).

5.4 Métodos de Validação

Entre os vários procedimentos de validação, destacamos:

Hold-out: Este método de validação envolve uma partição aleatória do conjunto de dados em dois subconjuntos: o primeiro, denominado conjunto de treinamento, é projetado para ser usado na fase de estimativa do modelo. O segundo, denominado conjunto de testes, é utilizado para realizar a avaliação do respectivo modelo. Portanto, o modelo é ajustado com base no conjunto de treinamento destinado a prever os casos no conjunto de teste. Um bom desempenho no segundo conjunto de dados indica que o modelo é capaz de generalizar os dados, ou seja, não há overfitting no conjunto de treinamento.

k-fold. Este método é uma generalização do método hold out, enquanto o conjunto de dados é particionado aleatoriamente em K subconjuntos. Cada subconjunto é usado como um conjunto de teste para o ajuste do modelo, considerando os outros subconjuntos k-1 como conjunto de treinamento. Sendo, k = 10 o mais comum na literatura (Witten e Frank 2002). Marcot e Hanea (2020) recomendam o uso de k=5 para redes bayesianas discretas com cerca de 5 mil observações.

Leave one Out: Este método é uma instância de K-fold onde K é igual ao tamanho do conjunto de dados. Cada caso é usado como um conjunto de teste para o ajuste do modelo, considerando os outros casos como um conjunto de treinamento. Nesta abordagem, todo o conjunto de dados é usado para modelos de treinamento e teste. Vale a pena mencionar que em grandes conjuntos de dados pode surgir uma dificuldade computacional.

Treino / validação / teste: Esta abordagem de validação é uma alternativa ao caso de validação para grandes conjuntos de dados, o objetivo é evitar algum sobreajuste no conjunto de validação. As amostras de treinamento são usadas para desenvolver modelos, as amostras de validação são usadas para estimar o erro de predição para a seleção do modelo, o conjunto de teste é usado para avaliar o erro de generalização do modelo final escolhido. Para isso, o desempenho do modelo selecionado deve ser confirmado através da medição do desempenho em um terceiro conjunto de dados independente denominado conjunto de teste (Bishop 1995). Uma divisão comum é 50% para treinamento, 25% cada para validação e teste.

5.5 Inferência por Evidências

No contexto de Redes Bayesianas, o termo “inferência”, também conhecido como atualização de crença (belief updating), é comumente utilizado para referenciar a atualização de probabilidades por toda a estrutura da rede dada um conjunto de evidências. Ou seja, segundo Korb e Nicholson (2004), trata-se de um mecanismo para cálculo da distribuição posteriori de probabilidade para um conjunto de variáveis, dado um conjunto de evidências, ou seja, variáveis aleatórias com valores instanciados.

O termo evidência refere-se a uma variável observada ou suposta conhecida. Ou seja, uma variável aleatória com valor conhecido e acoplado à Rede Bayesiana com estrutura já conhecida. Basicamente, podemos definir uma evidência com uma observação. A Figura 5.3 exibe um exemplo de inferência por evidências referente a uma rede bayesiana para problemas de trânsito na região de Adelaide no sul da Austrália, a rede foi estimada pelos autores
integrando o algoritmo K2 com o conhecimento de especialistas e exibida na Figura 5.2 (Zou e Yue 2017).

Figura 5.2 Rede bayesiana estimada por Zou e Yue (2017).

Figura 5.3 Exemplo de inferência por evidência (Zou e Yue 2017).

(Marques e Dutra 2002) consideram que existe maior dificuldade quando o problema é modelado de uma forma complexa, ou seja, quando a estrutura considerada para a inferência possui relações complexas entre as variáveis. Assim, em algumas situações, uma rede com apenas uma dezena de variáveis podem necessitar de um tempo computacional muito grande para término da inferência (às vezes inviável), enquanto uma rede contendo milhares de variáveis e uma estrutura simplista pode levar apenas alguns instantes de processamento.

Neste sentido, existem métodos exatos e aproximados para o cálculo de probabilidades propagadas pela rede bayesiana após a evidência. Os métodos aproximados são uma forma de extrair amostras de uma distribuição difícil de amostrar, com base em uma distribuição fácil de amostrar (Koller e Friedman 2009)(Russell e Norvig 2010).

O processo de inferência por evidências é uma das maiores vantagens práticas para tomada de decisão nas mais diversas áreas (Korb e Nicholson 2010)(Scutari e Denis 2014).

5.6 Utilizando a linguagem R

require(bnlearn)
require(qgraph)
# geração de dados gaussianos
N=1000
set.seed(1)
data = data.frame(A = rnorm(N, 1, 1),
                  B = rnorm(N, 4, 3),
                  C = 0,
                  D = rnorm(N, 2, 3),
                  E = 0)

data$C = 2*data$A-data$B +rnorm(N,1,2)
data$E = 3*(data$D) + data$C + rnorm(N, 1, 0.5)

# rede real.
dag = model2network("[A][B][C|A:B][D][E|D:C]")

plot(data)

graphviz.plot(dag)

data_d <- discretize(data,breaks=2)
mod_pc <- pc.stable(data_d)
mod_pc_con <- pc.stable(data)

par(mfrow=c(1,2))
graphviz.compare(dag,mod_pc_con)

par(mfrow=c(1,2))
graphviz.compare(dag,mod_pc)

par(mfrow=c(1,2))
mod_tabu <- tabu(data_d,score='bic')
graphviz.compare(dag,mod_tabu)


mod_boot=boot.strength(data_d,R=500,
                       algorithm="tabu",
                       algorithm.args = list(score='bde'))


par(mfrow=c(1,1))
qgraph::qgraph(mod_boot,asize=5,
               legend.cex=0.5,
               edge.color="black",
               color="tomato",edge.labels=T)

mod_dis <- averaged.network(mod_boot)
graphviz.plot(mod_dis)

#rede real discretizada
param <- bn.fit(mod_dis,data_d)
graphviz.chart(param, layout = "dot",type="barprob",
               draw.levels =TRUE,bar.col='tomato',grid=TRUE)

#validação
bn.cv(data_d,mod_dis,
      method = "k-fold",k=5,fit="bayes")
## 
##   k-fold cross-validation for Bayesian networks
## 
##   target network structure:
##    [A][B][D][C|A:B][E|C:D] 
##   number of folds:                       5 
##   loss function:                         Log-Likelihood Loss (disc.) 
##   expected loss:                         2.861782
#evidencias
cpquery(param,(A=="(1.11391,3.40162]"),
        (C == "(-0.642299,9.48421]"))
## [1] 0
table(cpdist(param, "A", 
             (C == "(-0.642299,9.48421]")))
## 
## [-2.00805,0.964676]  (0.964676,4.81028] 
##                   0                   0
i=1


evidencia <- paste("(", names(data_d)[-1], "=='",
                   sapply(data_d[i,-1], as.character), "')",
                   sep = "", collapse = " & ")
cpquery(param,(A=="(1.11391,3.40162]"),
        eval(parse(text=evidencia)))
## [1] 0
table(
cpdist(param,nodes="A",
        eval(parse(text=evidencia))) 
)
## 
## [-2.00805,0.964676]  (0.964676,4.81028] 
##                 534                 367

Referências

Aguilera, Pedro Aguilera, Antonio Fernández, Rosa Fernández, Rafael Rumı́, e Antonio Salmerón. 2011. «Bayesian networks in environmental modelling». Environmental Modelling & Software 26 (12): 1376–88.

Bishop, Christopher M. 1995. Neural networks for pattern recognition. Oxford university press.

Dougherty, James, Ron Kohavi, e Mehran Sahami. 1995. «Supervised and unsupervised discretization of continuous features». Em Machine learning proceedings 1995, 194–202. Elsevier.

Efron, Bradley. 1981. «Nonparametric estimates of standard error: the jackknife, the bootstrap and other methods». Biometrika 68 (3): 589–99.

Fayyad, Usama, e Keki Irani. 1993. «Multi-interval discretization of continuous-valued attributes for classification learning».

Friedman, Nir, Moises Goldszmidt, e Abraham Wyner. 1999. «Data analysis with Bayesian networks: A bootstrap approach». Proceedings of the 15th Annual Conference on Uncertainty in Artificial Intelligence.

Hartemink, Alexander John. 2001. «Principled computational methods for the validation discovery of genetic regulatory networks». Tese de doutoramento, Massachusetts Institute of Technology.

Koller, Daphne, e Nir Friedman. 2009. Probabilistic graphical models: principles and techniques. MIT press.

Korb, Kevin B, e Ann E Nicholson. 2010. Bayesian artificial intelligence. CRC press.

Marcot, Bruce G, e Anca M Hanea. 2020. «What is an optimal value of k in k-fold cross-validation in discrete Bayesian network analysis?» Computational Statistics, 1–23.

Marques, Roberto Ligeiro, e INÊS Dutra. 2002. «Redes Bayesianas: o que são, para que servem, algoritmos e exemplos de aplicações». Coppe Sistemas–Universidade Federal do Rio de Janeiro, Rio de Janeiro, Brasil.

Nojavan, Farnaz, Song S Qian, e Craig A Stow. 2017. «Comparative analysis of discretization methods in Bayesian networks». Environmental Modelling & Software 87: 64–71.

Russell, Stuart, e Peter Norvig. 2010. «Artificial intelligence: a modern approach».

Scutari, Marco, e Jean-Baptiste Denis. 2014. Bayesian networks: with examples in R. CRC press.

Scutari, Marco, e Radhakrishnan Nagarajan. 2011. «On identifying significant edges in graphical models». Em Proceedings of workshop on probabilistic problem solving in biomedicine, 15–27. Springer-Verlag Bled, Slovenia.

Witten, Ian H, e Eibe Frank. 2002. «Data mining: practical machine learning tools and techniques with Java implementations». Acm Sigmod Record 31 (1): 76–77.

Yang, Ying, e Geoffrey I Webb. 2009. «Discretization for naive-Bayes learning: managing discretization bias and variance». Machine learning 74 (1): 39–74.

Zou, Xin, e Wen Long Yue. 2017. «A bayesian network approach to causation analysis of road accidents using netica». Journal of advanced transportation 2017.