DESlib icon indicating copy to clipboard operation
DESlib copied to clipboard

Is DES applicable for Graph convolutional Networks (GCNs)

Open qm-intel opened this issue 1 year ago • 2 comments

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?

qm-intel avatar Aug 04 '22 14:08 qm-intel

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 avatar Aug 05 '22 17:08 Menelau

@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

qm-intel avatar Nov 22 '22 09:11 qm-intel