.. index:: OOBN EM Learning

.. _OOBN_EM_learning:

OOBN EM Learning
================

Instead of estimating parameters for a class in isolation from the context of an object oriented model where the class may have numerous instances, OOBN EM estimates the class parameters using evidence on all instances and the entire object oriented model.

The initial contents of the experience tables of nodes in the object-oriented model form the basis for the computation of "prior counts". However, in the current implementation, prior experience is not supported for continuous nodes in objectoriented models (that is, the experience tables for such nodes must not contain positive values).

The contents of the updated experience tables reflect the fact that many instance nodes contribute to the learning of the same node in a class (i.e., the experience counts will be higher than the number of cases in the data set). Otherwise, everything specified in :ref:`EM Learning<EM_learning>` also apply for OOBN EM.

OOBN EM is an integrated part of EM learning in HUGIN, either press the :ref:`EM Learning Button<EM_learning_button>` or select the :ref:`EM Learning Wizard<EM_wizard>` item of the Wizards Menu.




Notes on OOBN data file format: Dot notation for class instances
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When specifying a data file for an object oriented model, the instance nodes must be prefixed by a class instance name and a dot.

**Example:** How would a data file for EM in the Disease object oriented model (from the :ref:`How to build OOBNs tutorial<How_To_Build_An_Object_Oriented_Bayesian_Network>`) look like?

The class for which we are estimating parameters is displayed in Figure 1.

.. figure:: images/Disease.png

	Figure 1: BN for a single time slice of the Diseases problem.

The object oriented model using instances of the class is displayed in figure 2.

.. figure:: images/disease_prog_exp.png

	Figure 2: Object-oriented network representing the Diseases problem.

The data file header must be structured like this:

DiseaseSlice_3.\ **S2**, DiseaseSlice_3.\ **S1**, DiseaseSlice_3.\ **D2**, DiseaseSlice_3.\ **D1**, DiseaseSlice_2.\ **S2**, DiseaseSlice_2.\ **S1**, DiseaseSlice_2.\ **D2**, DiseaseSlice_2.\ **D1**, DiseaseSlice_1.\ **S2**, DiseaseSlice_1.\ **S1**, DiseaseSlice_1.\ **D2**, DiseaseSlice_1.\ **D1**, DiseaseSlice_1.\ **D2_prev**, DiseaseSlice_1.\ **D1_prev** 

Notice how the the class nodes **D1**, **D2**, **S1**, **S2**, **D1_prev** and **D2_prev** have been prefixed by the class instance names *DiseaseSlice_3*, *DiseaseSlice_2* and *DiseaseSlice_1*.

See also description of :ref:`data files<data_files>`.