Optimization hyper-parameters

Here we discuss the different parameters that can be used to control the optimization process. The optimization greedily tries to find a good partition of the network. You can control the optimization process by setting the following parameters:

Starting node labels

NetworkHistogram.initialize_node_labelsFunction
initialize_node_labels(A, h, starting_assignment_rule::StartingAssignment)

initialize node labels based on the starting_assignment_rule, and return a vector of node labels and a GroupSize object.

Implemenented rules

  • OrderedStart(): Sequentially assign nodes to groups based on the ordering of A.
  • RandomStart(): Randomly assign nodes to groups.
  • EigenStart(): Assign nodes to groups based on the second eigenvector of the normalized Laplacian.
  • DistStart(): Assign nodes to groups based on the Hamming distance between rows of A.
source
Note

The groups will be of size floor(h * n) where n is the number of nodes if h is a float. If h is an integer, the groups will be of size h. The last group may be smaller if n is not exactly divisible by the group size.

Swapping rule

NetworkHistogram.select_swapFunction
select_swap(node_assignment::Assignment, A, ::NodeSwapRule)

Selects two nodes to swap based on the NodeSwapRule, the adjacency matrix A and the current assignment node_assignment.

Implemented rules

  • RandomNodeSwap(): Select two nodes at random.
source

Acceptance rule

NetworkHistogram.accept_reject_update!Function
accept_reject_update!(history::GraphOptimizationHistory, iteration::Int,
                      proposal::Assignment,
                      current::Assignment, accept_rule::AcceptRule)

Return the updated current assignment based on the accept_rule.

Implemented rules

  • Strict(): Accept the proposal if it has a higher likelihood than the current assignment.
source

Stopping rule

NetworkHistogram.stopping_ruleFunction
stopping_rule(history, stop_rule::StopRule)

Returns a Bool with true if we should stop the optimization based on the stop_rule.

Implemented rules

  • PreviousBestValue(k): Stop if the current iteration is k iterations away from the iteration with the best value.
source