Dear all, I found that almost all node classification models require to input node features. However, imagine a network where nodes are just pure points, but the edges connecting them have different weights. Can I complete node classification task based only edge features if I have all nodes’ labels? I think it works in principle, but I don’t know how to do it since all models require to input node features.
Of course you can try, but in the end you must have some node representations for classifiction.
For example, a naive approach is to take the sum of neighboring edge features as node features, which you can write in DGL as:
import dgl import dgl.function as fn ... # construct the graph g.edata['h'] = ... # the edge feature tensor g.apply_edges(fn.copy_e('h', 'm'), fn.sum('m', 'aggr')) # copy the edge feature to destination node and reduce by sum. node_feat = g.ndata['aggr']
Thanks for your advice. In a weighted graph, the node feature calculated by this method is a scalar. Is the dimension too low? By the way, I read a paper which using unit matrix as node feature. Do you think that would work?