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_labels — Functioninitialize_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.
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_swap — Functionselect_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.
Acceptance rule
NetworkHistogram.accept_reject_update! — Functionaccept_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.
Stopping rule
NetworkHistogram.stopping_rule — Functionstopping_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- kiterations away from the iteration with the best value.