|
def | __init__ (self, states_df, score_type, max_num_mtries, alpha=0, tabu_len=10, ess=1.0, verbose=False, vtx_to_states=None) |
|
def | move_approved (self, move) |
|
def | __init__ (self, states_df, score_type, max_num_mtries, tabu_len=10, ess=1.0, verbose=False, vtx_to_states=None) |
|
def | move_approved (self, move) |
|
def | finish_do_move (self, move) |
|
def | restart (self, mtry_num) |
|
def | __init__ (self, states_df, score_type, max_num_mtries, ess=1.0, verbose=False, vtx_to_states=None) |
|
def | climb (self) |
|
def | do_move (self, move, score_change, do_finish=True) |
|
def | refresh_nx_graph (self) |
|
def | would_create_cycle (self, move) |
|
def | move_approved (self, move) |
|
def | finish_do_move (self, move) |
|
def | restart (self, mtry_num) |
|
def | cache_this (self, move, score_change) |
|
def | empty_cache (self) |
|
def | __init__ (self, is_quantum, states_df, vtx_to_states=None) |
|
def | fill_bnet_with_parents (self, vtx_to_parents) |
|
The class HC_MMHC_tabu_Lner (Hill Climbing Min-Max Hill Climbing Tabu
Learner) is a child of HC_TabuLner. It adds to the latter a search at
the beginning of the learning process of the PC (parents children,
aka neighbors) set of each node. This knowledge is then used in the
move_allowed() function to forbid any 'add' moves unless they add arrows
compatible with the PC list of each node.
References
----------
1. Tsamardinos I, Brown LE, Aliferis CF (2006). "The Max-Min
Hill-Climbing Bayesian Network Structure Learning Algorithm". Machine
Learning, 65(1), 31-78.
Attributes
----------
is_quantum : bool
True for quantum bnets amd False for classical bnets
bnet : BayesNet
a BayesNet in which we store what is learned
states_df : pandas.DataFrame
a Pandas DataFrame with training data. column = node and row =
sample. Each row/sample gives the state of the col/node.
ord_nodes : list[DirectedNode]
a list of DirectedNode's named and in the same order as the column
labels of self.states_df.
max_num_mtries : int
maximum number of move tries
nx_graph : networkx.DiGraph
a networkx directed graph used to store arrows
score_type : str
score type, either 'LL', 'BIC, 'AIC', 'BDEU' or 'K2'
scorer : NetStrucScorer
object of NetStrucScorer class that keeps a running record of scores
verbose : bool
True for this prints a running commentary to console
vertices : list[str]
list of vertices (node names). Same as states_df.columns
vtx_to_parents : dict[str, list[str]]
dictionary mapping each vertex to a list of its parents's names
tabu_list : list[tuple[str, str, str]]
a list of the previous moves. The list's length is specified in the
constructor by means of tabu_len parameter. Every time a new move is
added to end of the tabu list, the first item of the list is removed.
best_loc_max_graph : networkx.DiGraph
best_loc_max_score : float
Every time the restart() function is called because a try yields no
moves with positive score change, we infer that a new local max has
been reached. If total score of the current loc max is higher than
best_loc_mac_score, we replace both best_loc_max_score and
best_loc_max_graph by those of the better local max.
loc_max_ctr : int
local maximum counter, counts the number of local maxs encountered.
vtx_to_nbors : dict[str, list[str]]
a dictionary mapping each vertex to a list of its neighbors. The
literature also calls the set of neighbors of a vertex its PC (
parents-children) set.
alpha : float
threshold used for deciding whether a conditional or unconditional
mutual info is said to be close to zero (independence) or not (
dependence). The error in a data entropy is on the order of ln(n+1)
- ln(n) \approx 1/n where n is the number of samples so 5/n is a
good default value for alpha.