DESlib
DESlib copied to clipboard
Is DES applicable for Graph convolutional Networks (GCNs)
Hi, Thank you for your great contribution to science. I have a question and wondering if DESlib can be applied for GCNs or is there any other library similar to DESlib algorithms that they have extended DESlib for dynamic selection of GCNs?
Hello,
So in your case, your data is represented by graphs (training/testing data) instead of just a tabular matrix correct? Unfortunately, all inputs to DESlib follow the scikit-learn standard, always having real-valued feature vectors as input in a 2d matrix where each row represents a new instance: https://scikit-learn.org/stable/faq.html#will-you-add-graphical-models-or-sequence-prediction-to-scikit-learn
However, I do believe some techniques could be easily modified for allowing GCN as base models. In particular, the methods that are based on decision space for selecting the best model (KNOP) rather than the original representation as it wouldn't affect how the techniques estimate the similarity between different inputs.
Is it possible to provide an example your code? With that I could see if there are ways of applying it to your need and check what would be needed to change in the method's implementation.
@Menelau Dear Dr. Cruz, thanks for responding to my question.
So in your case, your data is represented by graphs (training/testing data) instead of just a tabular matrix correct?
yes, these are few samples from the training set that I have listed here with their dimension. For example, the first graph has 104
nodes and each node has 79
features, edge_index
is the adjacency matrix, which means there is 108
connection (edges) between nodes. Each edge can have attributes or not, then edge_attr
represents the edge features (10 features
). The last one y
represents the graph-level label that can be classification discrete labels (0,1,2, or 4 for example).
Data(x=[104, 79], edge_index=[2, 208], edge_attr=[208, 10], y=[1]),
Data(x=[100, 79], edge_index=[2, 208], edge_attr=[208, 10], y=[1]),
Data(x=[212, 79], edge_index=[2, 434], edge_attr=[434, 10], y=[1]),
Data(x=[216, 79], edge_index=[2, 440], edge_attr=[440, 10], y=[1]),
Data(x=[203, 79], edge_index=[2, 420], edge_attr=[420, 10], y=[1]),
Data(x=[110, 79], edge_index=[2, 222], edge_attr=[222, 10], y=[1]),
Data(x=[210, 79], edge_index=[2, 426], edge_attr=[426, 10], y=[1]),
Data(x=[150, 79], edge_index=[2, 302], edge_attr=[302, 10], y=[1]),
Data(x=[106, 79], edge_index=[2, 214], edge_attr=[214, 10], y=[1]),
.
.
.
Data(x=[80, 79], edge_index=[2, 162], edge_attr=[162, 10], y=[1]),
Data(x=[193, 79], edge_index=[2, 416], edge_attr=[416, 10], y=[1]),
Data(x=[103, 79], edge_index=[2, 208], edge_attr=[208, 10], y=[1]),
Data(x=[343, 79], edge_index=[2, 688], edge_attr=[688, 10], y=[1]),
Is it possible to provide an example of your code? With that, I could see if there are ways of applying it to your need and check what would be needed to change in the method's implementation.
I do not have any code currently to share with you, but I am thinking of an idea, and I would like to have your opinion on that (either through email or here). If we can measure the similarity between the test sample graph and validation set of each GNN model, can we extend the concept of DES to GNN models?
Thank you in advance