Для обучения структуры байесовской сети использовался подход, основанный на жадных эвристиках. Псевдокод используемого алгоритма выглядит следующим образом:
В результате выполнения алгоритма находится такая структура сети, которая имела бы наибольшее значение оптимизируемой метрики. В качестве такой метрики реализовано две score-функции:
-Mutual information
где G – структура графа байесовской сети, D – данные, Xi – текущая вершина, 〖Pa〗_Xi^G – родители вершины Xi согласно структуре графа, M – количество строк в данных.
-K2
где α_(i,j,s) – параметры распределения Дирихле (для K2 α_(i,j,s)=1), i – номер вершины, n – количество вершин, j – номер значения родителей вершины, q_i – количество возможных значений родителей, r_i – количество значений переменной i, N_(i,j,s) – число строк в данных, для которых i переменная принимает значение k, а ее родители j.