Before we compute another set of features, the edge features, we need to first specify which edges we would like to take for that. So we need to select a set of candidate edges, and then we will train a model on them for predicting whether an edge should belong to the graph or not. In other words, we first need to prepare a dataset where existent edges are treated as positive examples, and nonexistent ones as negative.
Getting positive examples is simple: we just take all the edges and assign them the label 1.
For negative examples, it is more complex: in any real-life graph, the number of positive examples is a lot smaller than the number of negative examples. So we need to find a way to sample the negative examples so ...