Skip to Content

Structural Priors Learning

Context

Learning menu with Structural Priors Learning highlighted

Structural Priors Learning is a Meta-Learning algorithm that can be compared to Bagging. It is based on Data Perturbation (Smoothed Bootstrapping) for learning a bag of networks and gathering statistics about the relationships that have been found. These statistics are then used for automatically defining Structural Priors.

Once defined, the Structural Priors are used for learning a network on the original unperturbed data set.

Diagram of the method: the data set is perturbed into many variants, a network is learned from each, arc statistics are pooled into structural priors, and a final network is learned with those priors

Example

Let’s use a small data set that contains only 91 particles. Each particle is a physically active individual (several hours of exercise a week), described with body girth measurements and skeletal diameter measurements, as well as age, weight, height, and gender.

All the variables are continuous, except Gender\mathit{Gender}. We discretized all continuous variables with R2GenOpt* 3.

The body-measurement data set as imported, 25 unconnected nodes

We define Temporal Indices to specify that Age and Gender\mathit{Gender} have to be root nodes.

Edit Temporal Indices with Age and Gender set to 0 and every other node to 1

The same result can be obtained by associating these two nodes in a class and then forbidding incoming arcs to this class.

Add Forbidden Arc window forbidding arcs from all nodes into the Root class

Below is the network learned with EQ.

The network learned with EQ, leaving Age, Ankle girth, Ankle diameter, and Knee diameter unconnected
Click to Zoom
Console output for the EQ run: initial MDL score 3,196.318, final 2,937.507

Let’s use Data Perturbation in order to try to escape from the local optima found with EQ.

Data Perturbation window: EQ, 100 tests, final standard deviation 0 Console output for the Data Perturbation run, final MDL score 2,920.626

The obtained network has a better score than the one obtained with EQ. It also makes more sense, as we can see that it captures the relationship between Weight, Height and BMI.

However, we still have four “orphan” nodes: Ankle diameter, Ankle girth, Age and Knee diameter. There are two scenarios: either these nodes are really marginally independent of all the other nodes, or their relationships with the other nodes are above the “significance threshold” implicitly defined by the MDL score.

Keeping in mind that we just have 91 particles, and given that the MDL score is conservative, we can try decreasing the Structural Coefficient.

Instead of manually testing the structural coefficient, we use the Structural Coefficient Analysis tool.

Structural Coefficient Analysis settings: coefficients from 0.2 to 1 over 25 iterations Structural Coefficient Curve with arrows pointing at the two metrics where they cross near 0.6

The analysis of these curves suggests the utilization of a Structural Coefficient = 0.6.

The network below has been learned with Data Perturbation - EQ.

The network learned with Data Perturbation and EQ, leaving Ankle diameter as the only orphan
Click to Zoom

As we can see, there is now only one orphan: Ankle diameter. Reducing the value of the Structural Coefficient was indeed efficient for connecting the orphans. However, this coefficient has a global impact on the MDL score. It reduces the cost of adding arcs for all the nodes. We can see for example that Biacromial diameter (highlighted in red) has now three parents, which is probably too much given the amount of data available. There are also now five nodes with two parents (highlighted in pink), instead of one with the Structural Coefficient = 1.0.

Instead of reducing the Structural Coefficient globally, we now use Structural Priors Learning for exploring a range of coefficients [0.2 ; 1.0] and automatically get Structural Priors.

Structural Priors Learning window: 100 tests, coefficients from 0.2 to 1, Remove Current Structural Priors checked
The network learned with Structural Priors, in which Biacromial diameter is now connected
Click to Zoom
Console output for the Structural Priors run: final MDL score 2,740.733 and applied priors from 0.217 to 0.99

In addition to the MDL score, the Console returns the Min, Max, and Mean of the arcs’ Priors that are represented in the learned network.

As we can see, there is also only one orphan. However, the complexity of the obtained network is lower than the one learned with a Structural Coefficient = 0.6. The Biacromial diameter has only one parent, which makes much more sense given the amount of data available, and there are only three nodes with two parents (highlighted in pink).

Clicking in the lower right corner of the graph window opens the editor of the Structural Priors.

Edit Structural Priors listing each arc with its prior, sorted from 0.99 downward

The Preview returns a graph with all the connections that have been learned on the perturbed data sets.

Preview graph showing every connection learned across the perturbed data sets, line weight by frequency

Store Priors on Arcs associates the priors with the arcs of the network. It is also a way to get in the Console the Min, Max, and Mean of the arcs’ Priors that are represented in the current network.

The network with the priors stored on its arcs, each arc labeled with its value
Click to Zoom