├── models ├── __init__.py ├── __pycache__ │ ├── kgcn.cpython-36.pyc │ ├── __init__.cpython-36.pyc │ ├── kgcn_AVG.cpython-36.pyc │ └── base_model.cpython-36.pyc ├── base_model.py └── kgcn.py ├── Figure1.png ├── layers ├── __pycache__ │ ├── __init__.cpython-36.pyc │ └── aggregator.cpython-36.pyc ├── __init__.py └── aggregator.py ├── log ├── kegg_result.txt └── kgcn_performance.log ├── LICENSE ├── README.md ├── .gitignore ├── config.py └── main.py /models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from .kgcn import KGCN -------------------------------------------------------------------------------- /Figure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/Figure1.png -------------------------------------------------------------------------------- /models/__pycache__/kgcn.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/models/__pycache__/kgcn.cpython-36.pyc -------------------------------------------------------------------------------- /layers/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/layers/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/models/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/kgcn_AVG.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/models/__pycache__/kgcn_AVG.cpython-36.pyc -------------------------------------------------------------------------------- /layers/__pycache__/aggregator.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/layers/__pycache__/aggregator.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/base_model.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XuanLin1991/KGNN/HEAD/models/__pycache__/base_model.cpython-36.pyc -------------------------------------------------------------------------------- /layers/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from .aggregator import SumAggregator, ConcatAggregator, NeighAggregator 4 | 5 | Aggregator = { 6 | 'sum': SumAggregator, 7 | 'concat': ConcatAggregator, 8 | 'neigh': NeighAggregator 9 | } 10 | -------------------------------------------------------------------------------- /log/kegg_result.txt: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "dataset": "kegg", 4 | "aggregator_type": "sum", 5 | "avg_auc": 0.938756966215452, 6 | "avg_acc": 0.8818636483285076, 7 | "avg_f1": 0.8862110780814716, 8 | "avg_aupr": 0.913409249924768 9 | } 10 | { 11 | "dataset": "kegg", 12 | "aggregator_type": "concat", 13 | "avg_auc": 0.9422603382496118, 14 | "avg_acc": 0.8844608230236026, 15 | "avg_f1": 0.8894623337136158, 16 | "avg_aupr": 0.9212097541492508 17 | } 18 | { 19 | "dataset": "kegg", 20 | "aggregator_type": "neigh", 21 | "avg_auc": 0.9295291768137703, 22 | "avg_acc": 0.8681056418355707, 23 | "avg_f1": 0.8726862207220266, 24 | "avg_aupr": 0.905257788202998 25 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 xzenglab 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Knowledge Graph Neural Network 2 | This is our implementation for the paper 3 | > Xuan Lin, Zhe Quan, Zhi-Jie Wang, Tengfei Ma and Xiangxiang Zeng. KGNN: Knowledge Graph Neural Network for Drug-Drug Interaction Prediction. IJCAI' 20 accepted. 4 | 5 | 6 | Figure 1 shows the overview of KGNN. It takes the parsed DDI matrix and knowledge graph obtained from preprocessing of dataset as the input. It outputs the interaction value for the drug-drug pair. 7 | 8 | # Requirement 9 | To run the code, you need the following dependencies: 10 | * Python == 3.6.6 11 | * Keras == 2.3.0 12 | * Tensorflow == 1.13.1 13 | * scikit-learn == 0.22 14 | 15 | # Installation 16 | You can create a virtual environment using [conda](https://github.com/conda/conda). 17 | ```bash 18 | conda create -n kgnn python=3.6.6 19 | source activate kgnn 20 | git clone https://github.com/xzenglab/KGNN.git 21 | cd KGNN 22 | pip install -r requirement.txt 23 | ``` 24 | 25 | # Dataset 26 | We just provide the preprocessed KG from KEGG dataset owing to the size limited. Please feel free contact us if you need the KG from DrugBank dataset (V5.1.4). The construction of KG please refer to [Bio2RDF](https://github.com/bio2rdf/bio2rdf-scripts/wiki) tool in detail. 27 | 28 | # Usage 29 | ```bash 30 | python run.py 31 | ``` 32 | 33 | # Citation 34 | (To appear) 35 | 36 | For any clarification, comments, or suggestions please create an issue or contact [Jacklin](Jack_lin@hnu.edu.cn). 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | @Author: your name 3 | @Date: 2019-12-20 19:02:25 4 | @LastEditTime: 2020-05-26 20:58:12 5 | @LastEditors: Please set LastEditors 6 | @Description: In User Settings Edit 7 | @FilePath: /matengfei/KGCN_Keras-master/config.py 8 | ''' 9 | # -*- coding: utf-8 -*- 10 | 11 | import os 12 | 13 | RAW_DATA_DIR = os.getcwd()+'/raw_data' 14 | PROCESSED_DATA_DIR = os.getcwd()+'/data' 15 | LOG_DIR = os.getcwd()+'/log' 16 | MODEL_SAVED_DIR = os.getcwd()+'/ckpt' 17 | 18 | KG_FILE = { 19 | 'drugbank':os.path.join(RAW_DATA_DIR,'drugbank','train2id.txt'), 20 | 'kegg':os.path.join(RAW_DATA_DIR,'kegg','train2id.txt')} 21 | ENTITY2ID_FILE = { 22 | 'drugbank':os.path.join(RAW_DATA_DIR,'drugbank','entity2id.txt'), 23 | 'kegg':os.path.join(RAW_DATA_DIR,'kegg','entity2id.txt')} 24 | EXAMPLE_FILE = { 25 | 'drugbank':os.path.join(RAW_DATA_DIR,'drugbank','approved_example.txt'), 26 | 'kegg':os.path.join(RAW_DATA_DIR,'kegg','approved_example.txt')} 27 | SEPARATOR = {'drug':'\t','kegg':'\t'} 28 | THRESHOLD = {'drug':4,'kegg':4} #添加drug修改 29 | NEIGHBOR_SIZE = {'drug':4,'kegg':4} 30 | 31 | # 32 | DRUG_VOCAB_TEMPLATE = '{dataset}_drug_vocab.pkl' 33 | ENTITY_VOCAB_TEMPLATE = '{dataset}_entity_vocab.pkl' 34 | RELATION_VOCAB_TEMPLATE = '{dataset}_relation_vocab.pkl' 35 | ADJ_ENTITY_TEMPLATE = '{dataset}_adj_entity.npy' 36 | ADJ_RELATION_TEMPLATE = '{dataset}_adj_relation.npy' 37 | TRAIN_DATA_TEMPLATE = '{dataset}_train.npy' 38 | DEV_DATA_TEMPLATE = '{dataset}_dev.npy' 39 | TEST_DATA_TEMPLATE = '{dataset}_test.npy' 40 | #RESULT_LOG='result.txt' 41 | RESULT_LOG={'drugbank':'drugbank_result.txt','kegg':'kegg_result.txt'} 42 | PERFORMANCE_LOG = 'kgcn_performance.log' 43 | DRUG_EXAMPLE='{dataset}_examples.npy' 44 | 45 | class ModelConfig(object): 46 | def __init__(self): 47 | self.neighbor_sample_size = 4 # neighbor sampling size 48 | self.embed_dim = 32 # dimension of embedding 49 | self.n_depth = 2 # depth of receptive field 50 | self.l2_weight = 1e-7 # l2 regularizer weight 51 | self.lr = 2e-2 # learning rate 52 | self.batch_size = 65536 53 | self.aggregator_type = 'sum' 54 | self.n_epoch = 50 55 | self.optimizer = 'adam' 56 | 57 | self.drug_vocab_size = None 58 | self.entity_vocab_size = None 59 | self.relation_vocab_size = None 60 | self.adj_entity = None 61 | self.adj_relation = None 62 | 63 | self.exp_name = None 64 | self.model_name = None 65 | 66 | # checkpoint configuration 设置检查点 67 | self.checkpoint_dir = MODEL_SAVED_DIR 68 | self.checkpoint_monitor = 'val_auc' 69 | self.checkpoint_save_best_only = True 70 | self.checkpoint_save_weights_only = True 71 | self.checkpoint_save_weights_mode = 'max' 72 | self.checkpoint_verbose = 1 73 | 74 | # early_stoping configuration 75 | self.early_stopping_monitor = 'val_auc' 76 | self.early_stopping_mode = 'max' 77 | self.early_stopping_patience = 5 78 | self.early_stopping_verbose = 1 79 | self.dataset='drug' 80 | self.K_Fold=1 81 | self.callbacks_to_add = None 82 | 83 | # config for learning rating scheduler and ensembler 84 | self.swa_start = 3 85 | -------------------------------------------------------------------------------- /models/base_model.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | from keras.callbacks import * 5 | 6 | from config import ModelConfig 7 | from callbacks import SWA 8 | 9 | 10 | class BaseModel(object): 11 | def __init__(self, config: ModelConfig): 12 | self.config = config 13 | self.callbacks = [] 14 | self.model = self.build() 15 | 16 | def add_model_checkpoint(self): 17 | self.callbacks.append(ModelCheckpoint( 18 | filepath=os.path.join(self.config.checkpoint_dir, 19 | '{}.hdf5'.format(self.config.exp_name)), 20 | monitor=self.config.checkpoint_monitor, 21 | save_best_only=self.config.checkpoint_save_best_only, 22 | save_weights_only=self.config.checkpoint_save_weights_only, 23 | mode=self.config.checkpoint_save_weights_mode, 24 | verbose=self.config.checkpoint_verbose 25 | )) 26 | print('Logging Info - Callback Added: ModelCheckPoint...') 27 | 28 | def add_early_stopping(self): 29 | self.callbacks.append(EarlyStopping( 30 | monitor=self.config.early_stopping_monitor, 31 | mode=self.config.early_stopping_mode, 32 | patience=self.config.early_stopping_patience, 33 | verbose=self.config.early_stopping_verbose 34 | )) 35 | print('Logging Info - Callback Added: EarlyStopping...') 36 | 37 | def add_swa(self, swa_start: int=5): 38 | self.callbacks.append(SWA(self.build(), self.config.checkpoint_dir, self.config.exp_name, 39 | swa_start=swa_start)) 40 | print('Logging Info - Callback Added: SWA with constant lr...') 41 | 42 | def init_callbacks(self): 43 | if 'modelcheckpoint' in self.config.callbacks_to_add: 44 | self.add_model_checkpoint() 45 | if 'earlystopping' in self.config.callbacks_to_add: 46 | self.add_early_stopping() 47 | if 'swa' in self.config.callbacks_to_add: 48 | self.add_swa(swa_start=self.config.swa_start) 49 | 50 | def build(self): 51 | raise NotImplementedError 52 | 53 | def fit(self, x_train, y_train, x_valid, y_valid): 54 | raise NotImplementedError 55 | 56 | def predict(self, x): 57 | raise NotImplementedError 58 | 59 | def score(self, x, y): 60 | raise NotImplementedError 61 | 62 | def load_weights(self, filename: str): 63 | self.model.load_weights(filename) 64 | 65 | def load_model(self, filename: str): 66 | # we only save model's weight instead of the whole model 67 | self.model.load_weights(filename) 68 | 69 | def load_best_model(self): 70 | print('Logging Info - Loading model checkpoint: %s.hdf5' % self.config.exp_name) 71 | self.load_model(os.path.join(self.config.checkpoint_dir, f'{self.config.exp_name}.hdf5')) 72 | print('Logging Info - Model loaded') 73 | 74 | def load_swa_model(self): 75 | print(f'Logging Info - Loading SWA model checkpoint: {self.config.exp_name}_swa.hdf5') 76 | self.load_model(os.path.join(self.config.checkpoint_dir, 77 | f'{self.config.exp_name}_swa.hdf5')) 78 | print('Logging Info - SWA Model loaded') 79 | 80 | def summary(self): 81 | self.model.summary() 82 | -------------------------------------------------------------------------------- /layers/aggregator.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from keras.engine.topology import Layer 4 | from keras import backend as K 5 | 6 | # class AvgAggregator(Layer): 7 | # def __init__(self, activation: str ='relu', initializer='glorot_normal', regularizer=None, 8 | # **kwargs): 9 | # super(AvgAggregator, self).__init__(**kwargs) 10 | # if activation == 'relu': 11 | # self.activation = K.relu 12 | # elif activation == 'tanh': 13 | # self.activation = K.tanh 14 | # else: 15 | # raise ValueError(f'`activation` not understood: {activation}') 16 | # self.initializer = initializer 17 | # self.regularizer = regularizer 18 | # def build(self, input_shape): 19 | # ent_embed_dim = input_shape[0][-1] 20 | # self.w = self.add_weight(name=self.name+'_w', shape=(ent_embed_dim, ent_embed_dim), 21 | # initializer=self.initializer, regularizer=self.regularizer) 22 | # self.b = self.add_weight(name=self.name+'_b', shape=(ent_embed_dim,), initializer='zeros') 23 | # super(SumAggregator, self).build(input_shape) 24 | 25 | 26 | 27 | class SumAggregator(Layer): 28 | def __init__(self, activation: str ='relu', initializer='glorot_normal', regularizer=None, 29 | **kwargs): 30 | super(SumAggregator, self).__init__(**kwargs) 31 | if activation == 'relu': 32 | self.activation = K.relu 33 | elif activation == 'tanh': 34 | self.activation = K.tanh 35 | else: 36 | raise ValueError(f'`activation` not understood: {activation}') 37 | self.initializer = initializer 38 | self.regularizer = regularizer 39 | 40 | def build(self, input_shape): 41 | ent_embed_dim = input_shape[0][-1] 42 | self.w = self.add_weight(name=self.name+'_w', shape=(ent_embed_dim, ent_embed_dim), 43 | initializer=self.initializer, regularizer=self.regularizer) 44 | self.b = self.add_weight(name=self.name+'_b', shape=(ent_embed_dim,), initializer='zeros') 45 | super(SumAggregator, self).build(input_shape) 46 | 47 | def call(self, inputs, **kwargs): 48 | entity, neighbor = inputs 49 | return self.activation(K.dot((entity + neighbor), self.w) + self.b) 50 | 51 | def compute_output_shape(self, input_shape): 52 | return input_shape[0] 53 | 54 | 55 | class ConcatAggregator(Layer): 56 | def __init__(self, activation: str = 'relu', initializer='glorot_normal', regularizer=None, 57 | **kwargs): 58 | super(ConcatAggregator, self).__init__(**kwargs) 59 | if activation == 'relu': 60 | self.activation = K.relu 61 | elif activation == 'tanh': 62 | self.activation = K.tanh 63 | else: 64 | raise ValueError(f'`activation` not understood: {activation}') 65 | self.initializer = initializer 66 | self.regularizer = regularizer 67 | 68 | def build(self, input_shape): 69 | ent_embed_dim = input_shape[0][-1] 70 | neighbor_embed_dim = input_shape[1][-1] 71 | self.w = self.add_weight(name=self.name + '_w', 72 | shape=(ent_embed_dim+neighbor_embed_dim, ent_embed_dim), 73 | initializer=self.initializer, regularizer=self.regularizer) 74 | self.b = self.add_weight(name=self.name + '_b', shape=(ent_embed_dim,), 75 | initializer='zeros') 76 | super(ConcatAggregator, self).build(input_shape) 77 | 78 | def call(self, inputs, **kwargs): 79 | entity, neighbor = inputs 80 | return self.activation(K.dot(K.concatenate([entity, neighbor]), self.w) + self.b) 81 | 82 | def compute_output_shape(self, input_shape): 83 | return input_shape[0] 84 | 85 | 86 | class NeighAggregator(Layer): 87 | def __init__(self, activation: str = 'relu', initializer='glorot_normal', regularizer=None, 88 | **kwargs): 89 | super(NeighAggregator, self).__init__() 90 | if activation == 'relu': 91 | self.activation = K.relu 92 | elif activation == 'tanh': 93 | self.activation = K.tanh 94 | else: 95 | raise ValueError(f'`activation` not understood: {activation}') 96 | self.initializer = initializer 97 | self.regularizer = regularizer 98 | 99 | def build(self, input_shape): 100 | ent_embed_dim = input_shape[0][-1] 101 | neighbor_embed_dim = input_shape[1][-1] 102 | self.w = self.add_weight(name=self.name + '_w', 103 | shape=(neighbor_embed_dim, ent_embed_dim), 104 | initializer=self.initializer, regularizer=self.regularizer) 105 | self.b = self.add_weight(name=self.name + '_b', shape=(ent_embed_dim,), 106 | initializer='zeros') 107 | super(NeighAggregator, self).build(input_shape) 108 | 109 | def call(self, inputs, **kwargs): 110 | entity, neighbor = inputs 111 | return self.activation(K.dot(neighbor, self.w) + self.b) 112 | 113 | def compute_output_shape(self, input_shape): 114 | return input_shape[0] 115 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import gc 5 | import time 6 | 7 | import numpy as np 8 | from collections import defaultdict 9 | from keras import backend as K 10 | from keras import optimizers 11 | 12 | from utils import load_data, pickle_load, format_filename, write_log 13 | from models import KGCN 14 | from config import ModelConfig, PROCESSED_DATA_DIR, ENTITY_VOCAB_TEMPLATE, \ 15 | RELATION_VOCAB_TEMPLATE, ADJ_ENTITY_TEMPLATE, ADJ_RELATION_TEMPLATE, LOG_DIR, PERFORMANCE_LOG, \ 16 | DRUG_VOCAB_TEMPLATE 17 | 18 | 19 | os.environ['CUDA_VISIBLE_DEVICES'] = '1' 20 | 21 | 22 | def get_optimizer(op_type, learning_rate): 23 | if op_type == 'sgd': 24 | return optimizers.SGD(learning_rate) 25 | elif op_type == 'rmsprop': 26 | return optimizers.RMSprop(learning_rate) 27 | elif op_type == 'adagrad': 28 | return optimizers.Adagrad(learning_rate) 29 | elif op_type == 'adadelta': 30 | return optimizers.Adadelta(learning_rate) 31 | elif op_type == 'adam': 32 | return optimizers.Adam(learning_rate, clipnorm=5) 33 | else: 34 | raise ValueError('Optimizer Not Understood: {}'.format(op_type)) 35 | 36 | 37 | def train(train_d,dev_d,test_d,kfold,dataset, neighbor_sample_size, embed_dim, n_depth, l2_weight, lr, optimizer_type, 38 | batch_size, aggregator_type, n_epoch, callbacks_to_add=None, overwrite=True): 39 | config = ModelConfig() 40 | config.neighbor_sample_size = neighbor_sample_size 41 | config.embed_dim = embed_dim 42 | config.n_depth = n_depth 43 | config.l2_weight = l2_weight 44 | config.dataset=dataset 45 | config.K_Fold=kfold 46 | config.lr = lr 47 | config.optimizer = get_optimizer(optimizer_type, lr) 48 | config.batch_size = batch_size 49 | config.aggregator_type = aggregator_type 50 | config.n_epoch = n_epoch 51 | config.callbacks_to_add = callbacks_to_add 52 | 53 | config.drug_vocab_size = len(pickle_load(format_filename(PROCESSED_DATA_DIR, 54 | DRUG_VOCAB_TEMPLATE, 55 | dataset=dataset))) 56 | config.entity_vocab_size = len(pickle_load(format_filename(PROCESSED_DATA_DIR, 57 | ENTITY_VOCAB_TEMPLATE, 58 | dataset=dataset))) 59 | config.relation_vocab_size = len(pickle_load(format_filename(PROCESSED_DATA_DIR, 60 | RELATION_VOCAB_TEMPLATE, 61 | dataset=dataset))) 62 | config.adj_entity = np.load(format_filename(PROCESSED_DATA_DIR, ADJ_ENTITY_TEMPLATE, 63 | dataset=dataset)) 64 | config.adj_relation = np.load(format_filename(PROCESSED_DATA_DIR, ADJ_RELATION_TEMPLATE, 65 | dataset=dataset)) 66 | 67 | config.exp_name = f'kgcn_{dataset}_neigh_{neighbor_sample_size}_embed_{embed_dim}_depth_' \ 68 | f'{n_depth}_agg_{aggregator_type}_optimizer_{optimizer_type}_lr_{lr}_' \ 69 | f'batch_size_{batch_size}_epoch_{n_epoch}' 70 | callback_str = '_' + '_'.join(config.callbacks_to_add) 71 | callback_str = callback_str.replace('_modelcheckpoint', '').replace('_earlystopping', '')#去掉了这两种方式使用swa得方式平均 72 | config.exp_name += callback_str 73 | 74 | train_log = {'exp_name': config.exp_name, 'batch_size': batch_size, 'optimizer': optimizer_type, 75 | 'epoch': n_epoch, 'learning_rate': lr} 76 | print('Logging Info - Experiment: %s' % config.exp_name) 77 | model_save_path = os.path.join(config.checkpoint_dir, '{}.hdf5'.format(config.exp_name)) 78 | model = KGCN(config) 79 | 80 | train_data=np.array(train_d) 81 | valid_data=np.array(dev_d) 82 | test_data=np.array(test_d) 83 | if not os.path.exists(model_save_path) or overwrite: 84 | start_time = time.time() 85 | model.fit(x_train=[train_data[:, :1], train_data[:, 1:2]], y_train=train_data[:, 2:3], 86 | x_valid=[valid_data[:, :1], valid_data[:, 1:2]], y_valid=valid_data[:, 2:3]) 87 | elapsed_time = time.time() - start_time 88 | print('Logging Info - Training time: %s' % time.strftime("%H:%M:%S", 89 | time.gmtime(elapsed_time))) 90 | train_log['train_time'] = time.strftime("%H:%M:%S", time.gmtime(elapsed_time)) 91 | 92 | print('Logging Info - Evaluate over valid data:') 93 | model.load_best_model() 94 | auc, acc, f1,aupr = model.score(x=[valid_data[:, :1], valid_data[:, 1:2]], y=valid_data[:, 2:3]) 95 | 96 | print(f'Logging Info - dev_auc: {auc}, dev_acc: {acc}, dev_f1: {f1}, dev_aupr: {aupr}' 97 | ) 98 | train_log['dev_auc'] = auc 99 | train_log['dev_acc'] = acc 100 | train_log['dev_f1'] = f1 101 | train_log['dev_aupr']=aupr 102 | train_log['k_fold']=kfold 103 | train_log['dataset']=dataset 104 | train_log['aggregate_type']=config.aggregator_type 105 | if 'swa' in config.callbacks_to_add: 106 | model.load_swa_model() 107 | print('Logging Info - Evaluate over valid data based on swa model:') 108 | auc, acc, f1,aupr = model.score(x=[valid_data[:, :1], valid_data[:, 1:2]], y=valid_data[:, 2:3]) 109 | 110 | train_log['swa_dev_auc'] = auc 111 | train_log['swa_dev_acc'] = acc 112 | train_log['swa_dev_f1'] = f1 113 | train_log['swa_dev_aupr']=aupr 114 | print(f'Logging Info - swa_dev_auc: {auc}, swa_dev_acc: {acc}, swa_dev_f1: {f1}, swa_dev_aupr: {aupr}') #修改输出指标 115 | print('Logging Info - Evaluate over test data:') 116 | model.load_best_model() 117 | auc, acc, f1, aupr = model.score(x=[test_data[:, :1], test_data[:, 1:2]], y=test_data[:, 2:3]) 118 | 119 | train_log['test_auc'] = auc 120 | train_log['test_acc'] = acc 121 | train_log['test_f1'] = f1 122 | train_log['test_aupr'] =aupr 123 | print(f'Logging Info - test_auc: {auc}, test_acc: {acc}, test_f1: {f1}, test_aupr: {aupr}') 124 | if 'swa' in config.callbacks_to_add: 125 | model.load_swa_model() 126 | print('Logging Info - Evaluate over test data based on swa model:') 127 | auc, acc, f1,aupr = model.score(x=[test_data[:, :1], test_data[:, 1:2]], y=test_data[:, 2:3]) 128 | train_log['swa_test_auc'] = auc 129 | train_log['swa_test_acc'] = acc 130 | train_log['swa_test_f1'] = f1 131 | train_log['swa_test_aupr'] = aupr 132 | print(f'Logging Info - swa_test_auc: {auc}, swa_test_acc: {acc}, swa_test_f1: {f1}, swa_test_aupr: {aupr}') 133 | train_log['timestamp'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) 134 | write_log(format_filename(LOG_DIR, PERFORMANCE_LOG), log=train_log, mode='a') 135 | del model 136 | gc.collect() 137 | K.clear_session() 138 | return train_log 139 | 140 | -------------------------------------------------------------------------------- /models/kgcn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from keras.layers import * 4 | from keras.regularizers import l2 5 | from keras.models import Model 6 | from keras import backend as K # use computable function 7 | from sklearn.metrics import roc_auc_score, accuracy_score, f1_score, precision_recall_curve 8 | import sklearn.metrics as m 9 | from layers import Aggregator 10 | from callbacks import KGCNMetric 11 | from models.base_model import BaseModel 12 | 13 | 14 | class KGCN(BaseModel): 15 | def __init__(self, config): 16 | super(KGCN, self).__init__(config) 17 | 18 | def build(self): 19 | input_drug_one = Input( 20 | shape=(1, ), name='input_drug_one', dtype='int64') 21 | input_drug_two = Input( 22 | shape=(1, ), name='input_drug_two', dtype='int64') 23 | 24 | drug_one_embedding = Embedding(input_dim=self.config.drug_vocab_size, 25 | output_dim=self.config.embed_dim, 26 | embeddings_initializer='glorot_normal', 27 | embeddings_regularizer=l2( 28 | self.config.l2_weight), 29 | name='user_embedding') 30 | entity_embedding = Embedding(input_dim=self.config.entity_vocab_size, 31 | output_dim=self.config.embed_dim, 32 | embeddings_initializer='glorot_normal', 33 | embeddings_regularizer=l2( 34 | self.config.l2_weight), 35 | name='entity_embedding') 36 | relation_embedding = Embedding(input_dim=self.config.relation_vocab_size, 37 | output_dim=self.config.embed_dim, 38 | embeddings_initializer='glorot_normal', 39 | embeddings_regularizer=l2( 40 | self.config.l2_weight), 41 | name='relation_embedding') 42 | 43 | drug_embed = drug_one_embedding( 44 | input_drug_one) # [batch_size, 1, embed_dim] 45 | 46 | receptive_list_drug_one = Lambda(lambda x: self.get_receptive_field(x), 47 | name='receptive_filed_drug_one')(input_drug_one) 48 | neineigh_ent_list_drug_one = receptive_list_drug_one[:self.config.n_depth+1] 49 | neigh_rel_list_drug_one = receptive_list_drug_one[self.config.n_depth+1:] 50 | 51 | neigh_ent_embed_list_drug_one = [entity_embedding( 52 | neigh_ent) for neigh_ent in neineigh_ent_list_drug_one] 53 | neigh_rel_embed_list_drug_one = [relation_embedding( 54 | neigh_rel) for neigh_rel in neigh_rel_list_drug_one] 55 | 56 | neighbor_embedding = Lambda(lambda x: self.get_neighbor_info(x[0], x[1], x[2]), 57 | name='neighbor_embedding_drug_one') 58 | 59 | for depth in range(self.config.n_depth): 60 | aggregator = Aggregator[self.config.aggregator_type]( 61 | activation='tanh' if depth == self.config.n_depth-1 else 'relu', 62 | regularizer=l2(self.config.l2_weight), 63 | name=f'aggregator_{depth+1}_drug_one' 64 | ) 65 | 66 | next_neigh_ent_embed_list_drug_one = [] 67 | for hop in range(self.config.n_depth-depth): 68 | neighbor_embed = neighbor_embedding([drug_embed, neigh_rel_embed_list_drug_one[hop], 69 | neigh_ent_embed_list_drug_one[hop + 1]]) 70 | next_entity_embed = aggregator( 71 | [neigh_ent_embed_list_drug_one[hop], neighbor_embed]) 72 | next_neigh_ent_embed_list_drug_one.append(next_entity_embed) 73 | neigh_ent_embed_list_drug_one = next_neigh_ent_embed_list_drug_one 74 | 75 | # get receptive field 76 | receptive_list = Lambda(lambda x: self.get_receptive_field(x), 77 | name='receptive_filed')(input_drug_two) 78 | neigh_ent_list = receptive_list[:self.config.n_depth+1] 79 | neigh_rel_list = receptive_list[self.config.n_depth+1:] 80 | 81 | neigh_ent_embed_list = [entity_embedding( 82 | neigh_ent) for neigh_ent in neigh_ent_list] 83 | neigh_rel_embed_list = [relation_embedding( 84 | neigh_rel) for neigh_rel in neigh_rel_list] 85 | 86 | neighbor_embedding = Lambda(lambda x: self.get_neighbor_info(x[0], x[1], x[2]), 87 | name='neighbor_embedding') 88 | 89 | for depth in range(self.config.n_depth): 90 | aggregator = Aggregator[self.config.aggregator_type]( 91 | activation='tanh' if depth == self.config.n_depth-1 else 'relu', 92 | regularizer=l2(self.config.l2_weight), 93 | name=f'aggregator_{depth+1}' 94 | ) 95 | 96 | next_neigh_ent_embed_list = [] 97 | for hop in range(self.config.n_depth-depth): 98 | neighbor_embed = neighbor_embedding([drug_embed, neigh_rel_embed_list[hop], 99 | neigh_ent_embed_list[hop + 1]]) 100 | next_entity_embed = aggregator( 101 | [neigh_ent_embed_list[hop], neighbor_embed]) 102 | next_neigh_ent_embed_list.append(next_entity_embed) 103 | neigh_ent_embed_list = next_neigh_ent_embed_list 104 | 105 | drug1_squeeze_embed = Lambda(lambda x: K.squeeze( 106 | x, axis=1))(neigh_ent_embed_list_drug_one[0]) 107 | drug2_squeeze_embed = Lambda(lambda x: K.squeeze( 108 | x, axis=1))(neigh_ent_embed_list[0]) 109 | drug_drug_score = Lambda( 110 | lambda x: K.sigmoid(K.sum(x[0] * x[1], axis=-1, keepdims=True)) 111 | )([drug1_squeeze_embed, drug2_squeeze_embed]) 112 | 113 | model = Model([input_drug_one, input_drug_two], drug_drug_score) 114 | model.compile(optimizer=self.config.optimizer, 115 | loss='binary_crossentropy', metrics=['acc']) 116 | return model 117 | 118 | def get_receptive_field(self, entity): 119 | """Calculate receptive field for entity using adjacent matrix 120 | 121 | :param entity: a tensor shaped [batch_size, 1] 122 | :return: a list of tensor: [[batch_size, 1], [batch_size, neighbor_sample_size], 123 | [batch_size, neighbor_sample_size**2], ...] 124 | """ 125 | neigh_ent_list = [entity] 126 | neigh_rel_list = [] 127 | adj_entity_matrix = K.variable( 128 | self.config.adj_entity, name='adj_entity', dtype='int64') 129 | adj_relation_matrix = K.variable(self.config.adj_relation, name='adj_relation', 130 | dtype='int64') 131 | n_neighbor = K.shape(adj_entity_matrix)[1] 132 | 133 | for i in range(self.config.n_depth): 134 | new_neigh_ent = K.gather(adj_entity_matrix, K.cast( 135 | neigh_ent_list[-1], dtype='int64')) # cast function used to transform data type 136 | new_neigh_rel = K.gather(adj_relation_matrix, K.cast( 137 | neigh_ent_list[-1], dtype='int64')) 138 | neigh_ent_list.append( 139 | K.reshape(new_neigh_ent, (-1, n_neighbor ** (i + 1)))) 140 | neigh_rel_list.append( 141 | K.reshape(new_neigh_rel, (-1, n_neighbor ** (i + 1)))) 142 | 143 | return neigh_ent_list + neigh_rel_list 144 | 145 | def get_neighbor_info(self, drug, rel, ent): 146 | """Get neighbor representation. 147 | 148 | :param user: a tensor shaped [batch_size, 1, embed_dim] 149 | :param rel: a tensor shaped [batch_size, neighbor_size ** hop, embed_dim] 150 | :param ent: a tensor shaped [batch_size, neighbor_size ** hop, embed_dim] 151 | :return: a tensor shaped [batch_size, neighbor_size ** (hop -1), embed_dim] 152 | """ 153 | # [batch_size, neighbor_size ** hop, 1] drug-entity score 154 | drug_rel_score = K.sum(drug * rel, axis=-1, keepdims=True) 155 | 156 | # [batch_size, neighbor_size ** hop, embed_dim] 157 | weighted_ent = drug_rel_score * ent 158 | 159 | # [batch_size, neighbor_size ** (hop-1), neighbor_size, embed_dim] 160 | weighted_ent = K.reshape(weighted_ent, 161 | (K.shape(weighted_ent)[0], -1, 162 | self.config.neighbor_sample_size, self.config.embed_dim)) 163 | 164 | neighbor_embed = K.sum(weighted_ent, axis=2) 165 | return neighbor_embed 166 | 167 | def add_metrics(self, x_train, y_train, x_valid, y_valid): 168 | self.callbacks.append(KGCNMetric(x_train, y_train, x_valid, y_valid, 169 | self.config.aggregator_type, self.config.dataset, self.config.K_Fold)) 170 | 171 | def fit(self, x_train, y_train, x_valid, y_valid): 172 | self.callbacks = [] 173 | self.add_metrics(x_train, y_train, x_valid, y_valid) 174 | self.init_callbacks() 175 | 176 | print('Logging Info - Start training...') 177 | self.model.fit(x=x_train, y=y_train, batch_size=self.config.batch_size, 178 | epochs=self.config.n_epoch, validation_data=( 179 | x_valid, y_valid), 180 | callbacks=self.callbacks) 181 | print('Logging Info - training end...') 182 | 183 | def predict(self, x): 184 | return self.model.predict(x).flatten() 185 | 186 | def score(self, x, y, threshold=0.5): 187 | y_true = y.flatten() 188 | y_pred = self.model.predict(x).flatten() 189 | auc = roc_auc_score(y_true=y_true, y_score=y_pred) 190 | p, r, t = precision_recall_curve(y_true=y_true, probas_pred=y_pred) 191 | aupr = m.auc(r, p) 192 | y_pred = [1 if prob >= threshold else 0 for prob in y_pred] 193 | acc = accuracy_score(y_true=y_true, y_pred=y_pred) 194 | f1 = f1_score(y_true=y_true, y_pred=y_pred) 195 | 196 | return auc, acc, f1, aupr 197 | -------------------------------------------------------------------------------- /log/kgcn_performance.log: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 4 | "batch_size": 256, 5 | "optimizer": "adam", 6 | "epoch": 50, 7 | "learning_rate": 0.02, 8 | "train_time": "00:01:28", 9 | "dev_auc": 0.9217550280363971, 10 | "dev_acc": 0.8562653562653563, 11 | "dev_f1": 0.8575652173913043, 12 | "dev_aupr": 0.8892836292335344, 13 | "k_fold": 1, 14 | "dataset": "KEGG", 15 | "aggregate_type": "sum", 16 | "swa_dev_auc": 0.5055562766816661, 17 | "swa_dev_acc": 0.5014917514917515, 18 | "swa_dev_f1": 0.5349160867785511, 19 | "swa_dev_aupr": 0.4927481956916821, 20 | "test_auc": 0.9182141355782394, 21 | "test_acc": 0.8578573308765465, 22 | "test_f1": 0.8634754761503455, 23 | "test_aupr": 0.88287391792114, 24 | "swa_test_auc": 0.5057722305288945, 25 | "swa_test_acc": 0.5021496885145214, 26 | "swa_test_f1": 0.541235446313066, 27 | "swa_test_aupr": 0.5085682101367585, 28 | "timestamp": "2020-01-08 19:56:48" 29 | } 30 | { 31 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 32 | "batch_size": 256, 33 | "optimizer": "adam", 34 | "epoch": 50, 35 | "learning_rate": 0.02, 36 | "train_time": "00:01:24", 37 | "dev_auc": 0.9278372369402408, 38 | "dev_acc": 0.8696911196911197, 39 | "dev_f1": 0.876630389631968, 40 | "dev_aupr": 0.8990839706617413, 41 | "k_fold": 2, 42 | "dataset": "KEGG", 43 | "aggregate_type": "sum", 44 | "swa_dev_auc": 0.5129331468271281, 45 | "swa_dev_acc": 0.51009126009126, 46 | "swa_dev_f1": 0.5536099784120891, 47 | "swa_dev_aupr": 0.5148697956016788, 48 | "test_auc": 0.9259677810667634, 49 | "test_acc": 0.8668070544880232, 50 | "test_f1": 0.8719419605196558, 51 | "test_aupr": 0.8914849488802562, 52 | "swa_test_auc": 0.5153896318790889, 53 | "swa_test_acc": 0.5107484425726069, 54 | "swa_test_f1": 0.5537772087067862, 55 | "swa_test_aupr": 0.5134274858153363, 56 | "timestamp": "2020-01-08 19:58:25" 57 | } 58 | { 59 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 60 | "batch_size": 256, 61 | "optimizer": "adam", 62 | "epoch": 50, 63 | "learning_rate": 0.02, 64 | "train_time": "00:01:25", 65 | "dev_auc": 0.919250896944966, 66 | "dev_acc": 0.8612671112671113, 67 | "dev_f1": 0.8682609782518124, 68 | "dev_aupr": 0.8917285349162696, 69 | "k_fold": 3, 70 | "dataset": "KEGG", 71 | "aggregate_type": "sum", 72 | "swa_dev_auc": 0.5074528980686114, 73 | "swa_dev_acc": 0.5047385047385048, 74 | "swa_dev_f1": 0.5540455120101138, 75 | "swa_dev_aupr": 0.5089837044568737, 76 | "test_auc": 0.9196570681942577, 77 | "test_acc": 0.8619812231288936, 78 | "test_f1": 0.8669092139774939, 79 | "test_aupr": 0.8889665141907039, 80 | "swa_test_auc": 0.515955895919199, 81 | "swa_test_acc": 0.5117136088444327, 82 | "swa_test_f1": 0.5584384670316591, 83 | "swa_test_aupr": 0.508858198878039, 84 | "timestamp": "2020-01-08 20:00:02" 85 | } 86 | { 87 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 88 | "batch_size": 256, 89 | "optimizer": "adam", 90 | "epoch": 50, 91 | "learning_rate": 0.02, 92 | "train_time": "00:01:25", 93 | "dev_auc": 0.927736681913389, 94 | "dev_acc": 0.8727623727623728, 95 | "dev_f1": 0.8800066203243959, 96 | "dev_aupr": 0.9041698993203637, 97 | "k_fold": 4, 98 | "dataset": "KEGG", 99 | "aggregate_type": "sum", 100 | "swa_dev_auc": 0.5229468176029023, 101 | "swa_dev_acc": 0.5178132678132679, 102 | "swa_dev_f1": 0.5600128112739211, 103 | "swa_dev_aupr": 0.524736205936515, 104 | "test_auc": 0.9231943887597742, 105 | "test_acc": 0.8667193120996753, 106 | "test_f1": 0.8755020080321285, 107 | "test_aupr": 0.8978440786292186, 108 | "swa_test_auc": 0.5163757908994582, 109 | "swa_test_acc": 0.5141703957181715, 110 | "swa_test_f1": 0.5590507286772318, 111 | "swa_test_aupr": 0.5202822521975904, 112 | "timestamp": "2020-01-08 20:01:40" 113 | } 114 | { 115 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 116 | "batch_size": 256, 117 | "optimizer": "adam", 118 | "epoch": 50, 119 | "learning_rate": 0.02, 120 | "train_time": "00:01:14", 121 | "dev_auc": 0.9226254261988014, 122 | "dev_acc": 0.8612671112671113, 123 | "dev_f1": 0.8667734052414258, 124 | "dev_aupr": 0.8955187389206691, 125 | "k_fold": 5, 126 | "dataset": "KEGG", 127 | "aggregate_type": "sum", 128 | "swa_dev_auc": 0.5296605443609437, 129 | "swa_dev_acc": 0.5214110214110214, 130 | "swa_dev_f1": 0.5511111111111111, 131 | "swa_dev_aupr": 0.5253879423986991, 132 | "test_auc": 0.9219399367131839, 133 | "test_acc": 0.8591734667017636, 134 | "test_f1": 0.8647509901407264, 135 | "test_aupr": 0.8905195765028652, 136 | "swa_test_auc": 0.5210186735956925, 137 | "swa_test_acc": 0.5147845924366061, 138 | "swa_test_f1": 0.5473149967256058, 139 | "swa_test_aupr": 0.5159330974672061, 140 | "timestamp": "2020-01-08 20:03:06" 141 | } 142 | { 143 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 144 | "batch_size": 256, 145 | "optimizer": "adam", 146 | "epoch": 50, 147 | "learning_rate": 0.02, 148 | "train_time": "00:01:15", 149 | "dev_auc": 0.9217078646397023, 150 | "dev_acc": 0.8597753597753598, 151 | "dev_f1": 0.8648054145516075, 152 | "dev_aupr": 0.8905002315139934, 153 | "k_fold": 1, 154 | "dataset": "KEGG", 155 | "aggregate_type": "concat", 156 | "swa_dev_auc": 0.5118439244047935, 157 | "swa_dev_acc": 0.5074587574587575, 158 | "swa_dev_f1": 0.5432500610301895, 159 | "swa_dev_aupr": 0.5095869667460955, 160 | "test_auc": 0.9240630794094122, 161 | "test_acc": 0.8584715275949811, 162 | "test_f1": 0.8635710056669204, 163 | "test_aupr": 0.9004511567243464, 164 | "swa_test_auc": 0.519287167553769, 165 | "swa_test_acc": 0.5112748969026937, 166 | "swa_test_f1": 0.5498626151608211, 167 | "swa_test_aupr": 0.5154118878927603, 168 | "timestamp": "2020-01-08 20:04:34" 169 | } 170 | { 171 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 172 | "batch_size": 256, 173 | "optimizer": "adam", 174 | "epoch": 50, 175 | "learning_rate": 0.02, 176 | "train_time": "00:01:15", 177 | "dev_auc": 0.9194669091761196, 178 | "dev_acc": 0.8603896103896104, 179 | "dev_f1": 0.8690642745453049, 180 | "dev_aupr": 0.8882980397612896, 181 | "k_fold": 2, 182 | "dataset": "KEGG", 183 | "aggregate_type": "concat", 184 | "swa_dev_auc": 0.49727118344834786, 185 | "swa_dev_acc": 0.4975429975429975, 186 | "swa_dev_f1": 0.5465631929046564, 187 | "swa_dev_aupr": 0.49811356077867824, 188 | "test_auc": 0.920785405568213, 189 | "test_acc": 0.8555760287795033, 190 | "test_f1": 0.8624895572263994, 191 | "test_aupr": 0.8911154580933827, 192 | "swa_test_auc": 0.5047080078864848, 193 | "swa_test_acc": 0.5019742037378258, 194 | "swa_test_f1": 0.5457746478873239, 195 | "swa_test_aupr": 0.5050396083516908, 196 | "timestamp": "2020-01-08 20:06:01" 197 | } 198 | { 199 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50_swa", 200 | "batch_size": 256, 201 | "optimizer": "adam", 202 | "epoch": 50, 203 | "learning_rate": 0.02, 204 | "train_time": "00:01:15", 205 | "dev_auc": 0.9192029097665285, 206 | "dev_acc": 0.8584591084591084, 207 | "dev_f1": 0.8619834003593738, 208 | "dev_aupr": 0.8778589709104667, 209 | "k_fold": 3, 210 | "dataset": "KEGG", 211 | "aggregate_type": "concat", 212 | "swa_dev_auc": 0.5220276792511266, 213 | "swa_dev_acc": 0.5128992628992629, 214 | "swa_dev_f1": 0.5468941310913394, 215 | "swa_dev_aupr": 0.5157162945026528, 216 | "test_auc": 0.9221957094592619, 217 | "test_acc": 0.8620689655172413, 218 | "test_f1": 0.8658016049171932, 219 | "test_aupr": 0.8888189761185092, 220 | "swa_test_auc": 0.5142882680690288, 221 | "swa_test_acc": 0.5096077915240853, 222 | "swa_test_f1": 0.540340488527017, 223 | "swa_test_aupr": 0.5123672042010254, 224 | "timestamp": "2020-01-08 20:07:28" 225 | } 226 | { 227 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 228 | "batch_size": 256, 229 | "optimizer": "adam", 230 | "epoch": 50, 231 | "learning_rate": 0.02, 232 | "train_time": "00:01:23", 233 | "dev_auc": 0.9283789051100174, 234 | "dev_acc": 0.8690768690768691, 235 | "dev_f1": 0.8733876442634081, 236 | "dev_aupr": 0.9005955262573015, 237 | "k_fold": 1, 238 | "dataset": "KEGG", 239 | "aggregate_type": "sum", 240 | "test_auc": 0.924017294299837, 241 | "test_acc": 0.8661051153812407, 242 | "test_f1": 0.8705902306648576, 243 | "test_aupr": 0.8909836791895667, 244 | "timestamp": "2020-01-08 20:10:26" 245 | } 246 | { 247 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 248 | "batch_size": 256, 249 | "optimizer": "adam", 250 | "epoch": 50, 251 | "learning_rate": 0.02, 252 | "train_time": "00:01:12", 253 | "dev_auc": 0.9151828614725015, 254 | "dev_acc": 0.8559143559143559, 255 | "dev_f1": 0.863960231980116, 256 | "dev_aupr": 0.8771889973738358, 257 | "k_fold": 2, 258 | "dataset": "KEGG", 259 | "aggregate_type": "sum", 260 | "test_auc": 0.9141633596315256, 261 | "test_acc": 0.8577695884881986, 262 | "test_f1": 0.8659998346697528, 263 | "test_aupr": 0.8787886577806094, 264 | "timestamp": "2020-01-08 20:11:45" 265 | } 266 | { 267 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 268 | "batch_size": 256, 269 | "optimizer": "adam", 270 | "epoch": 50, 271 | "learning_rate": 0.02, 272 | "train_time": "00:01:23", 273 | "dev_auc": 0.9239384472752279, 274 | "dev_acc": 0.8674973674973675, 275 | "dev_f1": 0.8761889143981633, 276 | "dev_aupr": 0.8932641466122934, 277 | "k_fold": 3, 278 | "dataset": "KEGG", 279 | "aggregate_type": "sum", 280 | "test_auc": 0.924592526468332, 281 | "test_acc": 0.8686496446433272, 282 | "test_f1": 0.8757160647571608, 283 | "test_aupr": 0.8873347706390167, 284 | "timestamp": "2020-01-08 20:13:15" 285 | } 286 | { 287 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 288 | "batch_size": 256, 289 | "optimizer": "adam", 290 | "epoch": 50, 291 | "learning_rate": 0.02, 292 | "train_time": "00:01:12", 293 | "dev_auc": 0.9239104140609522, 294 | "dev_acc": 0.8633731133731134, 295 | "dev_f1": 0.8703040399833404, 296 | "dev_aupr": 0.897563642085465, 297 | "k_fold": 4, 298 | "dataset": "KEGG", 299 | "aggregate_type": "sum", 300 | "test_auc": 0.9217775971986181, 301 | "test_acc": 0.8604896025269808, 302 | "test_f1": 0.8677644710578843, 303 | "test_aupr": 0.8959511886727359, 304 | "timestamp": "2020-01-08 20:14:34" 305 | } 306 | { 307 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 308 | "batch_size": 256, 309 | "optimizer": "adam", 310 | "epoch": 50, 311 | "learning_rate": 0.02, 312 | "train_time": "00:01:12", 313 | "dev_auc": 0.9233290035093537, 314 | "dev_acc": 0.863987363987364, 315 | "dev_f1": 0.8671580390812478, 316 | "dev_aupr": 0.8889682728471588, 317 | "k_fold": 5, 318 | "dataset": "KEGG", 319 | "aggregate_type": "sum", 320 | "test_auc": 0.919440158617116, 321 | "test_acc": 0.857594103711503, 322 | "test_f1": 0.8619780593587889, 323 | "test_aupr": 0.8849967528875374, 324 | "timestamp": "2020-01-08 20:15:53" 325 | } 326 | { 327 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 328 | "batch_size": 256, 329 | "optimizer": "adam", 330 | "epoch": 50, 331 | "learning_rate": 0.02, 332 | "train_time": "00:01:13", 333 | "dev_auc": 0.925331840209503, 334 | "dev_acc": 0.8631098631098632, 335 | "dev_f1": 0.8649818244763718, 336 | "dev_aupr": 0.8923309950103537, 337 | "k_fold": 1, 338 | "dataset": "KEGG", 339 | "aggregate_type": "concat", 340 | "test_auc": 0.920984195443895, 341 | "test_acc": 0.8599631481968939, 342 | "test_f1": 0.8642626296989284, 343 | "test_aupr": 0.8904911354074041, 344 | "timestamp": "2020-01-08 20:17:13" 345 | } 346 | { 347 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 348 | "batch_size": 256, 349 | "optimizer": "adam", 350 | "epoch": 50, 351 | "learning_rate": 0.02, 352 | "train_time": "00:01:13", 353 | "dev_auc": 0.914608030306521, 354 | "dev_acc": 0.8498595998595999, 355 | "dev_f1": 0.8540226943093592, 356 | "dev_aupr": 0.8811852843697988, 357 | "k_fold": 2, 358 | "dataset": "KEGG", 359 | "aggregate_type": "concat", 360 | "test_auc": 0.9195654061884738, 361 | "test_acc": 0.8573308765464596, 362 | "test_f1": 0.8617111753699608, 363 | "test_aupr": 0.8898600448000716, 364 | "timestamp": "2020-01-08 20:18:33" 365 | } 366 | { 367 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 368 | "batch_size": 256, 369 | "optimizer": "adam", 370 | "epoch": 50, 371 | "learning_rate": 0.02, 372 | "train_time": "00:01:13", 373 | "dev_auc": 0.9123304962678295, 374 | "dev_acc": 0.8480168480168481, 375 | "dev_f1": 0.8545515619751428, 376 | "dev_aupr": 0.8777093769096468, 377 | "k_fold": 3, 378 | "dataset": "KEGG", 379 | "aggregate_type": "concat", 380 | "test_auc": 0.9156271337222315, 381 | "test_acc": 0.8538211810125471, 382 | "test_f1": 0.8591477849171457, 383 | "test_aupr": 0.8791468565965721, 384 | "timestamp": "2020-01-08 20:19:53" 385 | } 386 | { 387 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 388 | "batch_size": 256, 389 | "optimizer": "adam", 390 | "epoch": 50, 391 | "learning_rate": 0.02, 392 | "train_time": "00:01:13", 393 | "dev_auc": 0.9205579704540611, 394 | "dev_acc": 0.86003861003861, 395 | "dev_f1": 0.8677117027452932, 396 | "dev_aupr": 0.8878070553122246, 397 | "k_fold": 4, 398 | "dataset": "KEGG", 399 | "aggregate_type": "concat", 400 | "test_auc": 0.9159279467617847, 401 | "test_acc": 0.8547863472843731, 402 | "test_f1": 0.8641772671317194, 403 | "test_aupr": 0.8787149296869801, 404 | "timestamp": "2020-01-08 20:21:12" 405 | } 406 | { 407 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 408 | "batch_size": 256, 409 | "optimizer": "adam", 410 | "epoch": 50, 411 | "learning_rate": 0.02, 412 | "train_time": "00:01:13", 413 | "dev_auc": 0.8977291357989328, 414 | "dev_acc": 0.8293260793260794, 415 | "dev_f1": 0.8350156925947918, 416 | "dev_aupr": 0.860226268794964, 417 | "k_fold": 5, 418 | "dataset": "KEGG", 419 | "aggregate_type": "concat", 420 | "test_auc": 0.9030895623874434, 421 | "test_acc": 0.8361849609546372, 422 | "test_f1": 0.8414975804397657, 423 | "test_aupr": 0.8657672573739464, 424 | "timestamp": "2020-01-08 20:22:32" 425 | } 426 | { 427 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 428 | "batch_size": 256, 429 | "optimizer": "adam", 430 | "epoch": 50, 431 | "learning_rate": 0.02, 432 | "train_time": "00:01:07", 433 | "dev_auc": 0.8832362919699315, 434 | "dev_acc": 0.8177430677430677, 435 | "dev_f1": 0.8242957448608408, 436 | "dev_aupr": 0.841431495287904, 437 | "k_fold": 1, 438 | "dataset": "KEGG", 439 | "aggregate_type": "neigh", 440 | "test_auc": 0.8790740167944002, 441 | "test_acc": 0.8140738790909888, 442 | "test_f1": 0.8201646439786133, 443 | "test_aupr": 0.8294149212548729, 444 | "timestamp": "2020-01-08 20:23:46" 445 | } 446 | { 447 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 448 | "batch_size": 256, 449 | "optimizer": "adam", 450 | "epoch": 50, 451 | "learning_rate": 0.02, 452 | "train_time": "00:01:08", 453 | "dev_auc": 0.8902245562906115, 454 | "dev_acc": 0.825991575991576, 455 | "dev_f1": 0.8360208385016125, 456 | "dev_aupr": 0.849632932736803, 457 | "k_fold": 2, 458 | "dataset": "KEGG", 459 | "aggregate_type": "neigh", 460 | "test_auc": 0.8880738908974445, 461 | "test_acc": 0.8222339212073353, 462 | "test_f1": 0.8337163493105711, 463 | "test_aupr": 0.8532904657401961, 464 | "timestamp": "2020-01-08 20:25:00" 465 | } 466 | { 467 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 468 | "batch_size": 256, 469 | "optimizer": "adam", 470 | "epoch": 50, 471 | "learning_rate": 0.02, 472 | "train_time": "00:01:08", 473 | "dev_auc": 0.8865157325694221, 474 | "dev_acc": 0.8178308178308178, 475 | "dev_f1": 0.8246029063872929, 476 | "dev_aupr": 0.8475271680139221, 477 | "k_fold": 3, 478 | "dataset": "KEGG", 479 | "aggregate_type": "neigh", 480 | "test_auc": 0.8847117518951293, 481 | "test_acc": 0.8153022725278583, 482 | "test_f1": 0.824187755783847, 483 | "test_aupr": 0.8503771532775314, 484 | "timestamp": "2020-01-08 20:26:14" 485 | } 486 | { 487 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 488 | "batch_size": 256, 489 | "optimizer": "adam", 490 | "epoch": 50, 491 | "learning_rate": 0.02, 492 | "train_time": "00:01:08", 493 | "dev_auc": 0.8748535867560283, 494 | "dev_acc": 0.8073885573885574, 495 | "dev_f1": 0.8137146736824239, 496 | "dev_aupr": 0.8388041739898635, 497 | "k_fold": 4, 498 | "dataset": "KEGG", 499 | "aggregate_type": "neigh", 500 | "test_auc": 0.8773897224350894, 501 | "test_acc": 0.8102132140036852, 502 | "test_f1": 0.8163681127430171, 503 | "test_aupr": 0.8421900810212165, 504 | "timestamp": "2020-01-08 20:27:29" 505 | } 506 | { 507 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_256_epoch_50", 508 | "batch_size": 256, 509 | "optimizer": "adam", 510 | "epoch": 50, 511 | "learning_rate": 0.02, 512 | "train_time": "00:01:08", 513 | "dev_auc": 0.8872817229327472, 514 | "dev_acc": 0.8168655668655669, 515 | "dev_f1": 0.8210273561444129, 516 | "dev_aupr": 0.8550293283772752, 517 | "k_fold": 5, 518 | "dataset": "KEGG", 519 | "aggregate_type": "neigh", 520 | "test_auc": 0.8912287141674178, 521 | "test_acc": 0.819075195226814, 522 | "test_f1": 0.8244508768942619, 523 | "test_aupr": 0.8587904191810702, 524 | "timestamp": "2020-01-08 20:28:43" 525 | } 526 | { 527 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 528 | "batch_size": 4096, 529 | "optimizer": "adam", 530 | "epoch": 50, 531 | "learning_rate": 0.02, 532 | "train_time": "00:21:40", 533 | "dev_auc": 0.9899106647981716, 534 | "dev_acc": 0.9523257427925244, 535 | "dev_f1": 0.9528394084532069, 536 | "dev_aupr": 0.9888492080511239, 537 | "k_fold": 1, 538 | "dataset": "drug", 539 | "aggregate_type": "sum", 540 | "test_auc": 0.9897782857365993, 541 | "test_acc": 0.9530772873495649, 542 | "test_f1": 0.9534847957523614, 543 | "test_aupr": 0.9883511531666107, 544 | "timestamp": "2020-01-08 21:34:08" 545 | } 546 | { 547 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 548 | "batch_size": 4096, 549 | "optimizer": "adam", 550 | "epoch": 50, 551 | "learning_rate": 0.02, 552 | "train_time": "00:27:18", 553 | "dev_auc": 0.9900218757654853, 554 | "dev_acc": 0.9534198257632045, 555 | "dev_f1": 0.953735615871806, 556 | "dev_aupr": 0.9886603335058781, 557 | "k_fold": 2, 558 | "dataset": "drug", 559 | "aggregate_type": "sum", 560 | "test_auc": 0.9900416424568699, 561 | "test_acc": 0.9527996864743056, 562 | "test_f1": 0.9532693660121737, 563 | "test_aupr": 0.9888172111085249, 564 | "timestamp": "2020-01-08 22:02:29" 565 | } 566 | { 567 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 568 | "batch_size": 4096, 569 | "optimizer": "adam", 570 | "epoch": 50, 571 | "learning_rate": 0.02, 572 | "train_time": "00:18:28", 573 | "dev_auc": 0.9899771742166483, 574 | "dev_acc": 0.9531912114111221, 575 | "dev_f1": 0.953502518309448, 576 | "dev_aupr": 0.9885834127383558, 577 | "k_fold": 3, 578 | "dataset": "drug", 579 | "aggregate_type": "sum", 580 | "test_auc": 0.9901042279413529, 581 | "test_acc": 0.9534365355410768, 582 | "test_f1": 0.9539177581874158, 583 | "test_aupr": 0.9890132689861921, 584 | "timestamp": "2020-01-08 22:22:00" 585 | } 586 | { 587 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 588 | "batch_size": 4096, 589 | "optimizer": "adam", 590 | "epoch": 50, 591 | "learning_rate": 0.02, 592 | "train_time": "00:29:45", 593 | "dev_auc": 0.9900998212016251, 594 | "dev_acc": 0.9535178033426684, 595 | "dev_f1": 0.9538643565078567, 596 | "dev_aupr": 0.9888868215516471, 597 | "k_fold": 4, 598 | "dataset": "drug", 599 | "aggregate_type": "sum", 600 | "test_auc": 0.990798825287549, 601 | "test_acc": 0.9551266349875079, 602 | "test_f1": 0.9558071467627288, 603 | "test_aupr": 0.989919016543207, 604 | "timestamp": "2020-01-08 22:52:49" 605 | } 606 | { 607 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 608 | "batch_size": 4096, 609 | "optimizer": "adam", 610 | "epoch": 50, 611 | "learning_rate": 0.02, 612 | "train_time": "00:19:37", 613 | "dev_auc": 0.9904505702699496, 614 | "dev_acc": 0.9555426733182557, 615 | "dev_f1": 0.9560309116015407, 616 | "dev_aupr": 0.9890920391465187, 617 | "k_fold": 5, 618 | "dataset": "drug", 619 | "aggregate_type": "sum", 620 | "test_auc": 0.990326617235583, 621 | "test_acc": 0.954734727869495, 622 | "test_f1": 0.9553285094999436, 623 | "test_aupr": 0.989101627920875, 624 | "timestamp": "2020-01-08 23:13:30" 625 | } 626 | { 627 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 628 | "batch_size": 4096, 629 | "optimizer": "adam", 630 | "epoch": 50, 631 | "learning_rate": 0.02, 632 | "train_time": "00:15:05", 633 | "dev_auc": 0.9904145858943244, 634 | "dev_acc": 0.9536729345101529, 635 | "dev_f1": 0.9542404593696571, 636 | "dev_aupr": 0.9894366484287004, 637 | "k_fold": 1, 638 | "dataset": "drug", 639 | "aggregate_type": "concat", 640 | "test_auc": 0.9904131736212067, 641 | "test_acc": 0.9546612452848675, 642 | "test_f1": 0.9549697122051298, 643 | "test_aupr": 0.9891430261398289, 644 | "timestamp": "2020-01-08 23:29:39" 645 | } 646 | { 647 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 648 | "batch_size": 4096, 649 | "optimizer": "adam", 650 | "epoch": 50, 651 | "learning_rate": 0.02, 652 | "train_time": "00:16:14", 653 | "dev_auc": 0.9907527040794064, 654 | "dev_acc": 0.9537055937033075, 655 | "dev_f1": 0.9541135911172977, 656 | "dev_aupr": 0.9897507015102062, 657 | "k_fold": 2, 658 | "dataset": "drug", 659 | "aggregate_type": "concat", 660 | "test_auc": 0.9904136496943379, 661 | "test_acc": 0.9516647887783929, 662 | "test_f1": 0.9517561730910278, 663 | "test_aupr": 0.9893388370439655, 664 | "timestamp": "2020-01-08 23:46:58" 665 | } 666 | { 667 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 668 | "batch_size": 4096, 669 | "optimizer": "adam", 670 | "epoch": 50, 671 | "learning_rate": 0.02, 672 | "train_time": "00:20:47", 673 | "dev_auc": 0.9908405029628949, 674 | "dev_acc": 0.954938478244895, 675 | "dev_f1": 0.9554139098260667, 676 | "dev_aupr": 0.989892460010835, 677 | "k_fold": 3, 678 | "dataset": "drug", 679 | "aggregate_type": "concat", 680 | "test_auc": 0.9906262587710633, 681 | "test_acc": 0.9536079949052074, 682 | "test_f1": 0.9540298700668274, 683 | "test_aupr": 0.9896945785709121, 684 | "timestamp": "2020-01-09 00:08:49" 685 | } 686 | { 687 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 688 | "batch_size": 4096, 689 | "optimizer": "adam", 690 | "epoch": 50, 691 | "learning_rate": 0.02, 692 | "train_time": "00:19:44", 693 | "dev_auc": 0.9893940958294646, 694 | "dev_acc": 0.9518603492900708, 695 | "dev_f1": 0.9524324324324325, 696 | "dev_aupr": 0.9882198651218677, 697 | "k_fold": 4, 698 | "dataset": "drug", 699 | "aggregate_type": "concat", 700 | "test_auc": 0.9896417938300376, 701 | "test_acc": 0.9527670275478045, 702 | "test_f1": 0.9529892651372941, 703 | "test_aupr": 0.9882892891322201, 704 | "timestamp": "2020-01-09 00:29:36" 705 | } 706 | { 707 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 708 | "batch_size": 4096, 709 | "optimizer": "adam", 710 | "epoch": 50, 711 | "learning_rate": 0.02, 712 | "train_time": "00:16:15", 713 | "dev_auc": 0.9903983680769879, 714 | "dev_acc": 0.9535096385443798, 715 | "dev_f1": 0.9539878787878787, 716 | "dev_aupr": 0.9892957885262551, 717 | "k_fold": 5, 718 | "dataset": "drug", 719 | "aggregate_type": "concat", 720 | "test_auc": 0.9904220170689658, 721 | "test_acc": 0.954375479677983, 722 | "test_f1": 0.9551164658634539, 723 | "test_aupr": 0.9894550563728632, 724 | "timestamp": "2020-01-09 00:46:55" 725 | } 726 | { 727 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 728 | "batch_size": 4096, 729 | "optimizer": "adam", 730 | "epoch": 50, 731 | "learning_rate": 0.02, 732 | "train_time": "00:09:52", 733 | "dev_auc": 0.9786169745123124, 734 | "dev_acc": 0.9270475272908383, 735 | "dev_f1": 0.9286860189478894, 736 | "dev_aupr": 0.9760305805978817, 737 | "k_fold": 1, 738 | "dataset": "drug", 739 | "aggregate_type": "neigh", 740 | "test_auc": 0.978372955193574, 741 | "test_acc": 0.9263132970819249, 742 | "test_f1": 0.9282277625352897, 743 | "test_aupr": 0.9754201117087021, 744 | "timestamp": "2020-01-09 00:57:44" 745 | } 746 | { 747 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 748 | "batch_size": 4096, 749 | "optimizer": "adam", 750 | "epoch": 50, 751 | "learning_rate": 0.02, 752 | "train_time": "00:13:25", 753 | "dev_auc": 0.9817945006059279, 754 | "dev_acc": 0.9344774937335173, 755 | "dev_f1": 0.9354825742653857, 756 | "dev_aupr": 0.9792155685674931, 757 | "k_fold": 2, 758 | "dataset": "drug", 759 | "aggregate_type": "neigh", 760 | "test_auc": 0.9821674107387607, 761 | "test_acc": 0.934584170218325, 762 | "test_f1": 0.9357868752604751, 763 | "test_aupr": 0.9799042492340253, 764 | "timestamp": "2020-01-09 01:12:09" 765 | } 766 | { 767 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 768 | "batch_size": 4096, 769 | "optimizer": "adam", 770 | "epoch": 50, 771 | "learning_rate": 0.02, 772 | "train_time": "00:16:43", 773 | "dev_auc": 0.9845939136077149, 774 | "dev_acc": 0.9412869355062583, 775 | "dev_f1": 0.9424365409092, 776 | "dev_aupr": 0.9825269482339185, 777 | "k_fold": 3, 778 | "dataset": "drug", 779 | "aggregate_type": "neigh", 780 | "test_auc": 0.9849435688177388, 781 | "test_acc": 0.9418507813648166, 782 | "test_f1": 0.9431431719116731, 783 | "test_aupr": 0.9830797939811845, 784 | "timestamp": "2020-01-09 01:29:52" 785 | } 786 | { 787 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 788 | "batch_size": 4096, 789 | "optimizer": "adam", 790 | "epoch": 50, 791 | "learning_rate": 0.02, 792 | "train_time": "00:16:45", 793 | "dev_auc": 0.984861961970332, 794 | "dev_acc": 0.9404704556773925, 795 | "dev_f1": 0.9409267316464516, 796 | "dev_aupr": 0.9827209183322871, 797 | "k_fold": 4, 798 | "dataset": "drug", 799 | "aggregate_type": "neigh", 800 | "test_auc": 0.9846730822316556, 801 | "test_acc": 0.9405444243047731, 802 | "test_f1": 0.9409245047296091, 803 | "test_aupr": 0.9823981712930173, 804 | "timestamp": "2020-01-09 01:47:37" 805 | } 806 | { 807 | "exp_name": "kgcn_drug_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 808 | "batch_size": 4096, 809 | "optimizer": "adam", 810 | "epoch": 50, 811 | "learning_rate": 0.02, 812 | "train_time": "00:12:22", 813 | "dev_auc": 0.9818849002325098, 814 | "dev_acc": 0.9340365946259298, 815 | "dev_f1": 0.9349354508774332, 816 | "dev_aupr": 0.9795373263774787, 817 | "k_fold": 5, 818 | "dataset": "drug", 819 | "aggregate_type": "neigh", 820 | "test_auc": 0.9819214397031593, 821 | "test_acc": 0.9335717434967913, 822 | "test_f1": 0.9347281945959823, 823 | "test_aupr": 0.9798471838651277, 824 | "timestamp": "2020-01-09 02:00:56" 825 | } 826 | { 827 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 828 | "batch_size": 4096, 829 | "optimizer": "adam", 830 | "epoch": 50, 831 | "learning_rate": 0.02, 832 | "train_time": "00:00:45", 833 | "dev_auc": 0.9345122483840582, 834 | "dev_acc": 0.8789048789048789, 835 | "dev_f1": 0.8831498729889925, 836 | "dev_aupr": 0.9054610102403855, 837 | "k_fold": 1, 838 | "dataset": "KEGG", 839 | "aggregate_type": "sum", 840 | "test_auc": 0.9313373432978858, 841 | "test_acc": 0.8727735368956743, 842 | "test_f1": 0.876721645978575, 843 | "test_aupr": 0.9012000755609533, 844 | "timestamp": "2020-01-09 21:38:28" 845 | } 846 | { 847 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 848 | "batch_size": 4096, 849 | "optimizer": "adam", 850 | "epoch": 50, 851 | "learning_rate": 0.02, 852 | "train_time": "00:00:40", 853 | "dev_auc": 0.9386208852919964, 854 | "dev_acc": 0.883029133029133, 855 | "dev_f1": 0.8875579924082665, 856 | "dev_aupr": 0.9165913387870197, 857 | "k_fold": 2, 858 | "dataset": "KEGG", 859 | "aggregate_type": "sum", 860 | "test_auc": 0.9388957191852433, 861 | "test_acc": 0.8829516539440203, 862 | "test_f1": 0.8867764386352062, 863 | "test_aupr": 0.9121612038397421, 864 | "timestamp": "2020-01-09 21:39:16" 865 | } 866 | { 867 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 868 | "batch_size": 4096, 869 | "optimizer": "adam", 870 | "epoch": 50, 871 | "learning_rate": 0.02, 872 | "train_time": "00:00:39", 873 | "dev_auc": 0.9350125054199805, 874 | "dev_acc": 0.8766233766233766, 875 | "dev_f1": 0.8803811468436278, 876 | "dev_aupr": 0.908976051416357, 877 | "k_fold": 3, 878 | "dataset": "KEGG", 879 | "aggregate_type": "sum", 880 | "test_auc": 0.9357772043052618, 881 | "test_acc": 0.8756690357111521, 882 | "test_f1": 0.8826889643182383, 883 | "test_aupr": 0.9104756675049, 884 | "timestamp": "2020-01-09 21:40:02" 885 | } 886 | { 887 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 888 | "batch_size": 4096, 889 | "optimizer": "adam", 890 | "epoch": 50, 891 | "learning_rate": 0.02, 892 | "train_time": "00:00:48", 893 | "dev_auc": 0.9358827966235667, 894 | "dev_acc": 0.8764478764478765, 895 | "dev_f1": 0.8822348611575778, 896 | "dev_aupr": 0.9085867032090238, 897 | "k_fold": 4, 898 | "dataset": "KEGG", 899 | "aggregate_type": "sum", 900 | "test_auc": 0.9337038823260572, 901 | "test_acc": 0.878476792138282, 902 | "test_f1": 0.8843810000834794, 903 | "test_aupr": 0.908271208098159, 904 | "timestamp": "2020-01-09 21:40:58" 905 | } 906 | { 907 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 908 | "batch_size": 4096, 909 | "optimizer": "adam", 910 | "epoch": 50, 911 | "learning_rate": 0.02, 912 | "train_time": "00:00:38", 913 | "dev_auc": 0.9341877023738255, 914 | "dev_acc": 0.8748683748683749, 915 | "dev_f1": 0.8791525423728813, 916 | "dev_aupr": 0.9062695306671799, 917 | "k_fold": 5, 918 | "dataset": "KEGG", 919 | "aggregate_type": "sum", 920 | "test_auc": 0.9354312770089173, 921 | "test_acc": 0.8764587172062823, 922 | "test_f1": 0.8801294057551506, 923 | "test_aupr": 0.908439841448608, 924 | "timestamp": "2020-01-09 21:41:44" 925 | } 926 | { 927 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 928 | "batch_size": 4096, 929 | "optimizer": "adam", 930 | "epoch": 50, 931 | "learning_rate": 0.02, 932 | "train_time": "00:00:44", 933 | "dev_auc": 0.9399992761413095, 934 | "dev_acc": 0.8848718848718848, 935 | "dev_f1": 0.8890955198647505, 936 | "dev_aupr": 0.9144705405869553, 937 | "k_fold": 1, 938 | "dataset": "KEGG", 939 | "aggregate_type": "concat", 940 | "test_auc": 0.9373492419445832, 941 | "test_acc": 0.8818110028954989, 942 | "test_f1": 0.8877967513536027, 943 | "test_aupr": 0.9127858276006849, 944 | "timestamp": "2020-01-09 21:42:35" 945 | } 946 | { 947 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 948 | "batch_size": 4096, 949 | "optimizer": "adam", 950 | "epoch": 50, 951 | "learning_rate": 0.02, 952 | "train_time": "00:00:40", 953 | "dev_auc": 0.9394784755372433, 954 | "dev_acc": 0.8846086346086346, 955 | "dev_f1": 0.8883227176220807, 956 | "dev_aupr": 0.9130673457211312, 957 | "k_fold": 2, 958 | "dataset": "KEGG", 959 | "aggregate_type": "concat", 960 | "test_auc": 0.9409995296985858, 961 | "test_acc": 0.8828639115556726, 962 | "test_f1": 0.887351278373133, 963 | "test_aupr": 0.918537451608401, 964 | "timestamp": "2020-01-09 21:43:23" 965 | } 966 | { 967 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 968 | "batch_size": 4096, 969 | "optimizer": "adam", 970 | "epoch": 50, 971 | "learning_rate": 0.02, 972 | "train_time": "00:00:45", 973 | "dev_auc": 0.9401178455948891, 974 | "dev_acc": 0.8846963846963847, 975 | "dev_f1": 0.8890015205271161, 976 | "dev_aupr": 0.9136953612654897, 977 | "k_fold": 3, 978 | "dataset": "KEGG", 979 | "aggregate_type": "concat", 980 | "test_auc": 0.9401680252254948, 981 | "test_acc": 0.8857594103711504, 982 | "test_f1": 0.8910824828509286, 983 | "test_aupr": 0.9133062831725551, 984 | "timestamp": "2020-01-09 21:44:15" 985 | } 986 | { 987 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 988 | "batch_size": 4096, 989 | "optimizer": "adam", 990 | "epoch": 50, 991 | "learning_rate": 0.02, 992 | "train_time": "00:00:28", 993 | "dev_auc": 0.9421110917672547, 994 | "dev_acc": 0.8833801333801333, 995 | "dev_f1": 0.88898170578899, 996 | "dev_aupr": 0.9236089064003669, 997 | "k_fold": 1, 998 | "dataset": "KEGG", 999 | "aggregate_type": "sum", 1000 | "test_auc": 0.9379038802625586, 1001 | "test_acc": 0.8760200052645433, 1002 | "test_f1": 0.8823382463152635, 1003 | "test_aupr": 0.9162795362973964, 1004 | "timestamp": "2020-01-09 22:20:35" 1005 | } 1006 | { 1007 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1008 | "batch_size": 4096, 1009 | "optimizer": "adam", 1010 | "epoch": 50, 1011 | "learning_rate": 0.02, 1012 | "train_time": "00:00:28", 1013 | "dev_auc": 0.941179286144947, 1014 | "dev_acc": 0.8814496314496314, 1015 | "dev_f1": 0.8854987710822951, 1016 | "dev_aupr": 0.9209101891629728, 1017 | "k_fold": 2, 1018 | "dataset": "KEGG", 1019 | "aggregate_type": "sum", 1020 | "test_auc": 0.9390481454420392, 1021 | "test_acc": 0.8799684127401948, 1022 | "test_f1": 0.8853118712273642, 1023 | "test_aupr": 0.9142434433886513, 1024 | "timestamp": "2020-01-09 22:21:10" 1025 | } 1026 | { 1027 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1028 | "batch_size": 4096, 1029 | "optimizer": "adam", 1030 | "epoch": 50, 1031 | "learning_rate": 0.02, 1032 | "train_time": "00:00:27", 1033 | "dev_auc": 0.9407800376223141, 1034 | "dev_acc": 0.8838188838188838, 1035 | "dev_f1": 0.8903428855391752, 1036 | "dev_aupr": 0.9201560519441019, 1037 | "k_fold": 3, 1038 | "dataset": "KEGG", 1039 | "aggregate_type": "sum", 1040 | "test_auc": 0.9407746567528881, 1041 | "test_acc": 0.8791787312450645, 1042 | "test_f1": 0.8822976322762629, 1043 | "test_aupr": 0.9185552946940995, 1044 | "timestamp": "2020-01-09 22:21:44" 1045 | } 1046 | { 1047 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1048 | "batch_size": 4096, 1049 | "optimizer": "adam", 1050 | "epoch": 50, 1051 | "learning_rate": 0.02, 1052 | "train_time": "00:00:27", 1053 | "dev_auc": 0.9349729763644024, 1054 | "dev_acc": 0.8810986310986311, 1055 | "dev_f1": 0.8871867454833069, 1056 | "dev_aupr": 0.9083927983345916, 1057 | "k_fold": 4, 1058 | "dataset": "KEGG", 1059 | "aggregate_type": "sum", 1060 | "test_auc": 0.9405316408900007, 1061 | "test_acc": 0.8824251996139335, 1062 | "test_f1": 0.886709502874535, 1063 | "test_aupr": 0.9157681424488154, 1064 | "timestamp": "2020-01-09 22:22:18" 1065 | } 1066 | { 1067 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1068 | "batch_size": 4096, 1069 | "optimizer": "adam", 1070 | "epoch": 50, 1071 | "learning_rate": 0.02, 1072 | "train_time": "00:00:28", 1073 | "dev_auc": 0.9391678144286423, 1074 | "dev_acc": 0.8823271323271323, 1075 | "dev_f1": 0.8874149945428595, 1076 | "dev_aupr": 0.9153633473345955, 1077 | "k_fold": 5, 1078 | "dataset": "KEGG", 1079 | "aggregate_type": "sum", 1080 | "test_auc": 0.9372886375410653, 1081 | "test_acc": 0.8786522769149776, 1082 | "test_f1": 0.8823879581597075, 1083 | "test_aupr": 0.9108487819615848, 1084 | "timestamp": "2020-01-09 22:22:52" 1085 | } 1086 | { 1087 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1088 | "batch_size": 4096, 1089 | "optimizer": "adam", 1090 | "epoch": 50, 1091 | "learning_rate": 0.02, 1092 | "train_time": "00:00:28", 1093 | "dev_auc": 0.9401384415035597, 1094 | "dev_acc": 0.8825903825903826, 1095 | "dev_f1": 0.8880709385979588, 1096 | "dev_aupr": 0.9188568046108327, 1097 | "k_fold": 1, 1098 | "dataset": "KEGG", 1099 | "aggregate_type": "concat", 1100 | "test_auc": 0.9397705886208397, 1101 | "test_acc": 0.8785645345266299, 1102 | "test_f1": 0.8851070894902872, 1103 | "test_aupr": 0.9214555351889429, 1104 | "timestamp": "2020-01-09 22:23:27" 1105 | } 1106 | { 1107 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1108 | "batch_size": 4096, 1109 | "optimizer": "adam", 1110 | "epoch": 50, 1111 | "learning_rate": 0.02, 1112 | "train_time": "00:00:28", 1113 | "dev_auc": 0.9387385966410149, 1114 | "dev_acc": 0.8821516321516322, 1115 | "dev_f1": 0.8876432694720992, 1116 | "dev_aupr": 0.916560862356219, 1117 | "k_fold": 2, 1118 | "dataset": "KEGG", 1119 | "aggregate_type": "concat", 1120 | "test_auc": 0.9371570443749027, 1121 | "test_acc": 0.8776871106431517, 1122 | "test_f1": 0.88283745167255, 1123 | "test_aupr": 0.915977365162904, 1124 | "timestamp": "2020-01-09 22:24:02" 1125 | } 1126 | { 1127 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1128 | "batch_size": 4096, 1129 | "optimizer": "adam", 1130 | "epoch": 50, 1131 | "learning_rate": 0.02, 1132 | "train_time": "00:00:28", 1133 | "dev_auc": 0.9409359852788924, 1134 | "dev_acc": 0.8827658827658827, 1135 | "dev_f1": 0.8895137280846841, 1136 | "dev_aupr": 0.9205297094089875, 1137 | "k_fold": 3, 1138 | "dataset": "KEGG", 1139 | "aggregate_type": "concat", 1140 | "test_auc": 0.9403963356510701, 1141 | "test_acc": 0.8813722909537598, 1142 | "test_f1": 0.8867102396514162, 1143 | "test_aupr": 0.9141536332658722, 1144 | "timestamp": "2020-01-09 22:24:36" 1145 | } 1146 | { 1147 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1148 | "batch_size": 4096, 1149 | "optimizer": "adam", 1150 | "epoch": 50, 1151 | "learning_rate": 0.02, 1152 | "train_time": "00:00:28", 1153 | "dev_auc": 0.9379514098774199, 1154 | "dev_acc": 0.8812741312741312, 1155 | "dev_f1": 0.8860247662370483, 1156 | "dev_aupr": 0.908091980572234, 1157 | "k_fold": 4, 1158 | "dataset": "KEGG", 1159 | "aggregate_type": "concat", 1160 | "test_auc": 0.9399064376641986, 1161 | "test_acc": 0.8818110028954989, 1162 | "test_f1": 0.8867972098495672, 1163 | "test_aupr": 0.9142912707785935, 1164 | "timestamp": "2020-01-09 22:25:11" 1165 | } 1166 | { 1167 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1168 | "batch_size": 4096, 1169 | "optimizer": "adam", 1170 | "epoch": 50, 1171 | "learning_rate": 0.02, 1172 | "train_time": "00:00:28", 1173 | "dev_auc": 0.9371832860830754, 1174 | "dev_acc": 0.8764478764478765, 1175 | "dev_f1": 0.8810207875612642, 1176 | "dev_aupr": 0.9136818855703093, 1177 | "k_fold": 5, 1178 | "dataset": "KEGG", 1179 | "aggregate_type": "concat", 1180 | "test_auc": 0.9377863056189103, 1181 | "test_acc": 0.8788277616916732, 1182 | "test_f1": 0.8826378856123055, 1183 | "test_aupr": 0.9101101543168525, 1184 | "timestamp": "2020-01-09 22:25:46" 1185 | } 1186 | { 1187 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1188 | "batch_size": 4096, 1189 | "optimizer": "adam", 1190 | "epoch": 50, 1191 | "learning_rate": 0.02, 1192 | "train_time": "00:00:32", 1193 | "dev_auc": 0.9287068938565435, 1194 | "dev_acc": 0.8631098631098632, 1195 | "dev_f1": 0.8665754361956893, 1196 | "dev_aupr": 0.9078496785754985, 1197 | "k_fold": 1, 1198 | "dataset": "KEGG", 1199 | "aggregate_type": "neigh", 1200 | "test_auc": 0.9262901285217738, 1201 | "test_acc": 0.8606650873036764, 1202 | "test_f1": 0.8654009154093916, 1203 | "test_aupr": 0.9042590770691219, 1204 | "timestamp": "2020-01-09 22:26:24" 1205 | } 1206 | { 1207 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1208 | "batch_size": 4096, 1209 | "optimizer": "adam", 1210 | "epoch": 50, 1211 | "learning_rate": 0.02, 1212 | "train_time": "00:00:34", 1213 | "dev_auc": 0.9284671650877139, 1214 | "dev_acc": 0.8663566163566163, 1215 | "dev_f1": 0.8730727560630053, 1216 | "dev_aupr": 0.9042077370186405, 1217 | "k_fold": 2, 1218 | "dataset": "KEGG", 1219 | "aggregate_type": "neigh", 1220 | "test_auc": 0.9252001407204073, 1221 | "test_acc": 0.8657541458278495, 1222 | "test_f1": 0.8731132857853707, 1223 | "test_aupr": 0.8942956041928252, 1224 | "timestamp": "2020-01-09 22:27:05" 1225 | } 1226 | { 1227 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1228 | "batch_size": 4096, 1229 | "optimizer": "adam", 1230 | "epoch": 50, 1231 | "learning_rate": 0.02, 1232 | "train_time": "00:00:31", 1233 | "dev_auc": 0.9291333374482798, 1234 | "dev_acc": 0.8638118638118638, 1235 | "dev_f1": 0.8684076649143633, 1236 | "dev_aupr": 0.9092290942168327, 1237 | "k_fold": 3, 1238 | "dataset": "KEGG", 1239 | "aggregate_type": "neigh", 1240 | "test_auc": 0.9299792362436263, 1241 | "test_acc": 0.8653154338861104, 1242 | "test_f1": 0.8681611268573393, 1243 | "test_aupr": 0.9011696505753318, 1244 | "timestamp": "2020-01-09 22:27:42" 1245 | } 1246 | { 1247 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1248 | "batch_size": 4096, 1249 | "optimizer": "adam", 1250 | "epoch": 50, 1251 | "learning_rate": 0.02, 1252 | "train_time": "00:00:31", 1253 | "dev_auc": 0.9256708375992804, 1254 | "dev_acc": 0.8638996138996139, 1255 | "dev_f1": 0.8660506088608688, 1256 | "dev_aupr": 0.8972140361164804, 1257 | "k_fold": 4, 1258 | "dataset": "KEGG", 1259 | "aggregate_type": "neigh", 1260 | "test_auc": 0.9287439289199753, 1261 | "test_acc": 0.8654031762744582, 1262 | "test_f1": 0.8692019099590723, 1263 | "test_aupr": 0.9026842887298978, 1264 | "timestamp": "2020-01-09 22:28:20" 1265 | } 1266 | { 1267 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1268 | "batch_size": 4096, 1269 | "optimizer": "adam", 1270 | "epoch": 50, 1271 | "learning_rate": 0.02, 1272 | "train_time": "00:00:31", 1273 | "dev_auc": 0.9228887293015636, 1274 | "dev_acc": 0.8613548613548614, 1275 | "dev_f1": 0.8651877133105801, 1276 | "dev_aupr": 0.8937602611936792, 1277 | "k_fold": 5, 1278 | "dataset": "KEGG", 1279 | "aggregate_type": "neigh", 1280 | "test_auc": 0.9239998170763252, 1281 | "test_acc": 0.861805738352198, 1282 | "test_f1": 0.8664235433805444, 1283 | "test_aupr": 0.8969002679615616, 1284 | "timestamp": "2020-01-09 22:28:57" 1285 | } 1286 | { 1287 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1288 | "batch_size": 4096, 1289 | "optimizer": "adam", 1290 | "epoch": 50, 1291 | "learning_rate": 0.02, 1292 | "train_time": "00:00:36", 1293 | "dev_auc": 0.9327209659955981, 1294 | "dev_acc": 0.8791681291681291, 1295 | "dev_f1": 0.882698696652185, 1296 | "dev_aupr": 0.9007773592164228, 1297 | "k_fold": 1, 1298 | "dataset": "KEGG", 1299 | "aggregate_type": "sum", 1300 | "test_auc": 0.9332235534941291, 1301 | "test_acc": 0.8778625954198473, 1302 | "test_f1": 0.883864508593359, 1303 | "test_aupr": 0.9078845554431877, 1304 | "timestamp": "2020-01-09 22:30:42" 1305 | } 1306 | { 1307 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1308 | "batch_size": 4096, 1309 | "optimizer": "adam", 1310 | "epoch": 50, 1311 | "learning_rate": 0.02, 1312 | "train_time": "00:00:24", 1313 | "dev_auc": 0.9372496547897247, 1314 | "dev_acc": 0.8801333801333802, 1315 | "dev_f1": 0.8867705570291777, 1316 | "dev_aupr": 0.9116299113073579, 1317 | "k_fold": 1, 1318 | "dataset": "KEGG", 1319 | "aggregate_type": "sum", 1320 | "test_auc": 0.9333317356554451, 1321 | "test_acc": 0.8781258225848908, 1322 | "test_f1": 0.8866029879990204, 1323 | "test_aupr": 0.9069442315781021, 1324 | "timestamp": "2020-05-26 19:55:48" 1325 | } 1326 | { 1327 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1328 | "batch_size": 4096, 1329 | "optimizer": "adam", 1330 | "epoch": 50, 1331 | "learning_rate": 0.02, 1332 | "train_time": "00:00:19", 1333 | "dev_auc": 0.9349932756406991, 1334 | "dev_acc": 0.8775008775008775, 1335 | "dev_f1": 0.8821543136923855, 1336 | "dev_aupr": 0.906079949792427, 1337 | "k_fold": 1, 1338 | "dataset": "KEGG", 1339 | "aggregate_type": "sum", 1340 | "test_auc": 0.9344655422397339, 1341 | "test_acc": 0.8765464595946302, 1342 | "test_f1": 0.8816154816996213, 1343 | "test_aupr": 0.9059810129860738, 1344 | "timestamp": "2020-05-26 20:03:33" 1345 | } 1346 | { 1347 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1348 | "batch_size": 4096, 1349 | "optimizer": "adam", 1350 | "epoch": 50, 1351 | "learning_rate": 0.02, 1352 | "train_time": "00:00:18", 1353 | "dev_auc": 0.9337310965782827, 1354 | "dev_acc": 0.8739031239031239, 1355 | "dev_f1": 0.8774831613948333, 1356 | "dev_aupr": 0.9058041502475507, 1357 | "k_fold": 2, 1358 | "dataset": "KEGG", 1359 | "aggregate_type": "sum", 1360 | "test_auc": 0.9373794016064381, 1361 | "test_acc": 0.8779503378081951, 1362 | "test_f1": 0.884535569021333, 1363 | "test_aupr": 0.9141259287305943, 1364 | "timestamp": "2020-05-26 20:03:55" 1365 | } 1366 | { 1367 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1368 | "batch_size": 4096, 1369 | "optimizer": "adam", 1370 | "epoch": 50, 1371 | "learning_rate": 0.02, 1372 | "train_time": "00:00:19", 1373 | "dev_auc": 0.9341808921844601, 1374 | "dev_acc": 0.8771498771498771, 1375 | "dev_f1": 0.8844693843868624, 1376 | "dev_aupr": 0.9018833795480231, 1377 | "k_fold": 3, 1378 | "dataset": "KEGG", 1379 | "aggregate_type": "sum", 1380 | "test_auc": 0.933604326612079, 1381 | "test_acc": 0.8804948670702817, 1382 | "test_f1": 0.88598694123556, 1383 | "test_aupr": 0.9016788425045226, 1384 | "timestamp": "2020-05-26 20:04:17" 1385 | } 1386 | { 1387 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1388 | "batch_size": 4096, 1389 | "optimizer": "adam", 1390 | "epoch": 50, 1391 | "learning_rate": 0.02, 1392 | "train_time": "00:00:17", 1393 | "dev_auc": 0.938470655434925, 1394 | "dev_acc": 0.8806598806598807, 1395 | "dev_f1": 0.8861543612924829, 1396 | "dev_aupr": 0.9161623737286995, 1397 | "k_fold": 4, 1398 | "dataset": "KEGG", 1399 | "aggregate_type": "sum", 1400 | "test_auc": 0.9367817637039773, 1401 | "test_acc": 0.8769851715363692, 1402 | "test_f1": 0.881787521079258, 1403 | "test_aupr": 0.9125988024261154, 1404 | "timestamp": "2020-05-26 20:04:38" 1405 | } 1406 | { 1407 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1408 | "batch_size": 4096, 1409 | "optimizer": "adam", 1410 | "epoch": 50, 1411 | "learning_rate": 0.02, 1412 | "train_time": "00:00:17", 1413 | "dev_auc": 0.9337785248286333, 1414 | "dev_acc": 0.8724113724113725, 1415 | "dev_f1": 0.8782856186171104, 1416 | "dev_aupr": 0.9087819274026675, 1417 | "k_fold": 5, 1418 | "dataset": "KEGG", 1419 | "aggregate_type": "sum", 1420 | "test_auc": 0.9354907062725314, 1421 | "test_acc": 0.8788277616916732, 1422 | "test_f1": 0.8865894719553257, 1423 | "test_aupr": 0.9099110943654849, 1424 | "timestamp": "2020-05-26 20:04:58" 1425 | } 1426 | { 1427 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1428 | "batch_size": 4096, 1429 | "optimizer": "adam", 1430 | "epoch": 50, 1431 | "learning_rate": 0.02, 1432 | "train_time": "00:00:21", 1433 | "dev_auc": 0.9363597933171816, 1434 | "dev_acc": 0.8804843804843805, 1435 | "dev_f1": 0.8851020752488611, 1436 | "dev_aupr": 0.9098303369991263, 1437 | "k_fold": 1, 1438 | "dataset": "KEGG", 1439 | "aggregate_type": "concat", 1440 | "test_auc": 0.9337014523337865, 1441 | "test_acc": 0.8781258225848908, 1442 | "test_f1": 0.8822182650725008, 1443 | "test_aupr": 0.9070463875143212, 1444 | "timestamp": "2020-05-26 20:05:23" 1445 | } 1446 | { 1447 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1448 | "batch_size": 4096, 1449 | "optimizer": "adam", 1450 | "epoch": 50, 1451 | "learning_rate": 0.02, 1452 | "train_time": "00:00:18", 1453 | "dev_auc": 0.9367508150959889, 1454 | "dev_acc": 0.8818006318006318, 1455 | "dev_f1": 0.8880950402924317, 1456 | "dev_aupr": 0.9103784820233474, 1457 | "k_fold": 2, 1458 | "dataset": "KEGG", 1459 | "aggregate_type": "concat", 1460 | "test_auc": 0.939923526039698, 1461 | "test_acc": 0.878476792138282, 1462 | "test_f1": 0.8848807247942815, 1463 | "test_aupr": 0.919037910850877, 1464 | "timestamp": "2020-05-26 20:05:45" 1465 | } 1466 | { 1467 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1468 | "batch_size": 4096, 1469 | "optimizer": "adam", 1470 | "epoch": 50, 1471 | "learning_rate": 0.02, 1472 | "train_time": "00:00:22", 1473 | "dev_auc": 0.9403246523843624, 1474 | "dev_acc": 0.8798701298701299, 1475 | "dev_f1": 0.8809461692321071, 1476 | "dev_aupr": 0.916075684411385, 1477 | "k_fold": 3, 1478 | "dataset": "KEGG", 1479 | "aggregate_type": "concat", 1480 | "test_auc": 0.9426908408335999, 1481 | "test_acc": 0.8804071246819338, 1482 | "test_f1": 0.8830344117394662, 1483 | "test_aupr": 0.9210341111241089, 1484 | "timestamp": "2020-05-26 20:06:10" 1485 | } 1486 | { 1487 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1488 | "batch_size": 4096, 1489 | "optimizer": "adam", 1490 | "epoch": 50, 1491 | "learning_rate": 0.02, 1492 | "train_time": "00:00:17", 1493 | "dev_auc": 0.941395365455791, 1494 | "dev_acc": 0.8826781326781327, 1495 | "dev_f1": 0.8904008525288958, 1496 | "dev_aupr": 0.917768653720362, 1497 | "k_fold": 4, 1498 | "dataset": "KEGG", 1499 | "aggregate_type": "concat", 1500 | "test_auc": 0.9403942803721579, 1501 | "test_acc": 0.8853206984294113, 1502 | "test_f1": 0.891472224528772, 1503 | "test_aupr": 0.9122293454317391, 1504 | "timestamp": "2020-05-26 20:06:31" 1505 | } 1506 | { 1507 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1508 | "batch_size": 4096, 1509 | "optimizer": "adam", 1510 | "epoch": 50, 1511 | "learning_rate": 0.02, 1512 | "train_time": "00:00:19", 1513 | "dev_auc": 0.9401191489990903, 1514 | "dev_acc": 0.8829413829413829, 1515 | "dev_f1": 0.8897156084656084, 1516 | "dev_aupr": 0.916781536826148, 1517 | "k_fold": 5, 1518 | "dataset": "KEGG", 1519 | "aggregate_type": "concat", 1520 | "test_auc": 0.9383895061882374, 1521 | "test_acc": 0.8809335790120207, 1522 | "test_f1": 0.8855528379859999, 1523 | "test_aupr": 0.9150845135255067, 1524 | "timestamp": "2020-05-26 20:06:54" 1525 | } 1526 | { 1527 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1528 | "batch_size": 4096, 1529 | "optimizer": "adam", 1530 | "epoch": 50, 1531 | "learning_rate": 0.02, 1532 | "train_time": "00:00:21", 1533 | "dev_auc": 0.9138678533358191, 1534 | "dev_acc": 0.8513513513513513, 1535 | "dev_f1": 0.8574074074074075, 1536 | "dev_aupr": 0.8813374082046701, 1537 | "k_fold": 1, 1538 | "dataset": "KEGG", 1539 | "aggregate_type": "neigh", 1540 | "test_auc": 0.9097533444113048, 1541 | "test_acc": 0.8499605159252435, 1542 | "test_f1": 0.8552319674906874, 1543 | "test_aupr": 0.8714326880198554, 1544 | "timestamp": "2020-05-26 20:07:19" 1545 | } 1546 | { 1547 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1548 | "batch_size": 4096, 1549 | "optimizer": "adam", 1550 | "epoch": 50, 1551 | "learning_rate": 0.02, 1552 | "train_time": "00:00:24", 1553 | "dev_auc": 0.9145386356722222, 1554 | "dev_acc": 0.8517901017901018, 1555 | "dev_f1": 0.8579598015305693, 1556 | "dev_aupr": 0.8823262477136931, 1557 | "k_fold": 2, 1558 | "dataset": "KEGG", 1559 | "aggregate_type": "neigh", 1560 | "test_auc": 0.91584601725872, 1561 | "test_acc": 0.8548740896727209, 1562 | "test_f1": 0.8592340425531914, 1563 | "test_aupr": 0.8829204763932661, 1564 | "timestamp": "2020-05-26 20:07:46" 1565 | } 1566 | { 1567 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1568 | "batch_size": 4096, 1569 | "optimizer": "adam", 1570 | "epoch": 50, 1571 | "learning_rate": 0.02, 1572 | "train_time": "00:00:25", 1573 | "dev_auc": 0.9156533403385824, 1574 | "dev_acc": 0.8529308529308529, 1575 | "dev_f1": 0.857700798098149, 1576 | "dev_aupr": 0.8834283395566798, 1577 | "k_fold": 3, 1578 | "dataset": "KEGG", 1579 | "aggregate_type": "neigh", 1580 | "test_auc": 0.9106174126712265, 1581 | "test_acc": 0.8497850311485479, 1582 | "test_f1": 0.8551117129316181, 1583 | "test_aupr": 0.869508708647798, 1584 | "timestamp": "2020-05-26 20:08:14" 1585 | } 1586 | { 1587 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1588 | "batch_size": 4096, 1589 | "optimizer": "adam", 1590 | "epoch": 50, 1591 | "learning_rate": 0.02, 1592 | "train_time": "00:00:23", 1593 | "dev_auc": 0.907524657298813, 1594 | "dev_acc": 0.8376623376623377, 1595 | "dev_f1": 0.8385407575493105, 1596 | "dev_aupr": 0.8742345672871303, 1597 | "k_fold": 4, 1598 | "dataset": "KEGG", 1599 | "aggregate_type": "neigh", 1600 | "test_auc": 0.9051711734661511, 1601 | "test_acc": 0.8359217337895938, 1602 | "test_f1": 0.8374478442280945, 1603 | "test_aupr": 0.8735441816634769, 1604 | "timestamp": "2020-05-26 20:08:41" 1605 | } 1606 | { 1607 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_1024_epoch_50", 1608 | "batch_size": 1024, 1609 | "optimizer": "adam", 1610 | "epoch": 50, 1611 | "learning_rate": 0.02, 1612 | "train_time": "00:00:32", 1613 | "dev_auc": 0.905344423265754, 1614 | "dev_acc": 0.8455598455598455, 1615 | "dev_f1": 0.852571620036857, 1616 | "dev_aupr": 0.8653407644811886, 1617 | "k_fold": 1, 1618 | "dataset": "KEGG", 1619 | "aggregate_type": "sum", 1620 | "test_auc": 0.9063877139767079, 1621 | "test_acc": 0.8461875932262877, 1622 | "test_f1": 0.8543415039468216, 1623 | "test_aupr": 0.86646714512691, 1624 | "timestamp": "2020-05-26 20:29:34" 1625 | } 1626 | { 1627 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_1024_epoch_50", 1628 | "batch_size": 1024, 1629 | "optimizer": "adam", 1630 | "epoch": 50, 1631 | "learning_rate": 0.02, 1632 | "train_time": "00:00:25", 1633 | "dev_auc": 0.9049297545819043, 1634 | "dev_acc": 0.8456475956475956, 1635 | "dev_f1": 0.8550712696712531, 1636 | "dev_aupr": 0.8622139381352977, 1637 | "k_fold": 2, 1638 | "dataset": "KEGG", 1639 | "aggregate_type": "sum", 1640 | "test_auc": 0.906314345040327, 1641 | "test_acc": 0.8500482583135913, 1642 | "test_f1": 0.8562053007993268, 1643 | "test_aupr": 0.8512801709915562, 1644 | "timestamp": "2020-05-26 20:30:03" 1645 | } 1646 | { 1647 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_1024_epoch_50", 1648 | "batch_size": 1024, 1649 | "optimizer": "adam", 1650 | "epoch": 50, 1651 | "learning_rate": 0.02, 1652 | "train_time": "00:00:26", 1653 | "dev_auc": 0.915790870520216, 1654 | "dev_acc": 0.8573183573183574, 1655 | "dev_f1": 0.8602852723835711, 1656 | "dev_aupr": 0.8793478892565634, 1657 | "k_fold": 3, 1658 | "dataset": "KEGG", 1659 | "aggregate_type": "sum", 1660 | "test_auc": 0.9079436523949951, 1661 | "test_acc": 0.8504869702553304, 1662 | "test_f1": 0.8569989929506545, 1663 | "test_aupr": 0.8682895614218398, 1664 | "timestamp": "2020-05-26 20:30:33" 1665 | } 1666 | { 1667 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_1024_epoch_50", 1668 | "batch_size": 1024, 1669 | "optimizer": "adam", 1670 | "epoch": 50, 1671 | "learning_rate": 0.02, 1672 | "train_time": "00:00:26", 1673 | "dev_auc": 0.9146643747542862, 1674 | "dev_acc": 0.8482800982800983, 1675 | "dev_f1": 0.8475174177617074, 1676 | "dev_aupr": 0.8786535633435921, 1677 | "k_fold": 4, 1678 | "dataset": "KEGG", 1679 | "aggregate_type": "sum", 1680 | "test_auc": 0.9110895237602518, 1681 | "test_acc": 0.8472405018864614, 1682 | "test_f1": 0.848093534595585, 1683 | "test_aupr": 0.8801961619726737, 1684 | "timestamp": "2020-05-26 20:31:02" 1685 | } 1686 | { 1687 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1688 | "batch_size": 4096, 1689 | "optimizer": "adam", 1690 | "epoch": 50, 1691 | "learning_rate": 0.02, 1692 | "train_time": "00:00:20", 1693 | "dev_auc": 0.9382988043464198, 1694 | "dev_acc": 0.8811863811863812, 1695 | "dev_f1": 0.8889981964256436, 1696 | "dev_aupr": 0.9133084535189597, 1697 | "k_fold": 1, 1698 | "dataset": "KEGG", 1699 | "aggregate_type": "sum", 1700 | "test_auc": 0.9359600534870358, 1701 | "test_acc": 0.8778625954198473, 1702 | "test_f1": 0.8859577257086679, 1703 | "test_aupr": 0.9074457799755407, 1704 | "timestamp": "2020-05-26 20:32:44" 1705 | } 1706 | { 1707 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1708 | "batch_size": 4096, 1709 | "optimizer": "adam", 1710 | "epoch": 50, 1711 | "learning_rate": 0.02, 1712 | "train_time": "00:00:19", 1713 | "dev_auc": 0.937481417534603, 1714 | "dev_acc": 0.8759213759213759, 1715 | "dev_f1": 0.8815745393634842, 1716 | "dev_aupr": 0.9169939507445823, 1717 | "k_fold": 2, 1718 | "dataset": "KEGG", 1719 | "aggregate_type": "sum", 1720 | "test_auc": 0.9324702767029222, 1721 | "test_acc": 0.878038080196543, 1722 | "test_f1": 0.8827202159973, 1723 | "test_aupr": 0.8999053362875864, 1724 | "timestamp": "2020-05-26 20:33:07" 1725 | } 1726 | { 1727 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1728 | "batch_size": 4096, 1729 | "optimizer": "adam", 1730 | "epoch": 50, 1731 | "learning_rate": 0.02, 1732 | "train_time": "00:00:17", 1733 | "dev_auc": 0.9375179798236654, 1734 | "dev_acc": 0.8764478764478765, 1735 | "dev_f1": 0.8830759010131207, 1736 | "dev_aupr": 0.9164530094045409, 1737 | "k_fold": 3, 1738 | "dataset": "KEGG", 1739 | "aggregate_type": "sum", 1740 | "test_auc": 0.939316159353285, 1741 | "test_acc": 0.8834781082741072, 1742 | "test_f1": 0.8898473788984738, 1743 | "test_aupr": 0.9133727167109033, 1744 | "timestamp": "2020-05-26 20:33:27" 1745 | } 1746 | { 1747 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1748 | "batch_size": 4096, 1749 | "optimizer": "adam", 1750 | "epoch": 50, 1751 | "learning_rate": 0.02, 1752 | "train_time": "00:00:19", 1753 | "dev_auc": 0.9350097514772443, 1754 | "dev_acc": 0.8767111267111267, 1755 | "dev_f1": 0.8799658265698419, 1756 | "dev_aupr": 0.910600426386546, 1757 | "k_fold": 4, 1758 | "dataset": "KEGG", 1759 | "aggregate_type": "sum", 1760 | "test_auc": 0.9297210669505711, 1761 | "test_acc": 0.8680354479248925, 1762 | "test_f1": 0.8716066245518184, 1763 | "test_aupr": 0.9002288842941173, 1764 | "timestamp": "2020-05-26 20:33:50" 1765 | } 1766 | { 1767 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1768 | "batch_size": 4096, 1769 | "optimizer": "adam", 1770 | "epoch": 50, 1771 | "learning_rate": 0.02, 1772 | "train_time": "00:00:17", 1773 | "dev_auc": 0.9356583914459249, 1774 | "dev_acc": 0.8767111267111267, 1775 | "dev_f1": 0.8819228506597193, 1776 | "dev_aupr": 0.911703547743771, 1777 | "k_fold": 5, 1778 | "dataset": "KEGG", 1779 | "aggregate_type": "sum", 1780 | "test_auc": 0.935656835594245, 1781 | "test_acc": 0.8785645345266299, 1782 | "test_f1": 0.8843969261610424, 1783 | "test_aupr": 0.9092605268811228, 1784 | "timestamp": "2020-05-26 20:34:11" 1785 | } 1786 | { 1787 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1788 | "batch_size": 4096, 1789 | "optimizer": "adam", 1790 | "epoch": 50, 1791 | "learning_rate": 0.02, 1792 | "train_time": "00:00:22", 1793 | "dev_auc": 0.9404240351036062, 1794 | "dev_acc": 0.8854861354861355, 1795 | "dev_f1": 0.8913676850079081, 1796 | "dev_aupr": 0.9181262975038348, 1797 | "k_fold": 1, 1798 | "dataset": "KEGG", 1799 | "aggregate_type": "concat", 1800 | "test_auc": 0.936299825128948, 1801 | "test_acc": 0.883127138720716, 1802 | "test_f1": 0.8902439024390244, 1803 | "test_aupr": 0.9122895165717484, 1804 | "timestamp": "2020-05-26 20:34:36" 1805 | } 1806 | { 1807 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1808 | "batch_size": 4096, 1809 | "optimizer": "adam", 1810 | "epoch": 50, 1811 | "learning_rate": 0.02, 1812 | "train_time": "00:00:20", 1813 | "dev_auc": 0.9438384457210902, 1814 | "dev_acc": 0.881010881010881, 1815 | "dev_f1": 0.8828206014517801, 1816 | "dev_aupr": 0.9197879431992393, 1817 | "k_fold": 2, 1818 | "dataset": "KEGG", 1819 | "aggregate_type": "concat", 1820 | "test_auc": 0.9392338928599914, 1821 | "test_acc": 0.8741774151092393, 1822 | "test_f1": 0.8780612244897958, 1823 | "test_aupr": 0.9133043615617507, 1824 | "timestamp": "2020-05-26 20:35:00" 1825 | } 1826 | { 1827 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1828 | "batch_size": 4096, 1829 | "optimizer": "adam", 1830 | "epoch": 50, 1831 | "learning_rate": 0.02, 1832 | "train_time": "00:00:18", 1833 | "dev_auc": 0.9421021537255281, 1834 | "dev_acc": 0.8826781326781327, 1835 | "dev_f1": 0.8894218840459847, 1836 | "dev_aupr": 0.9218038598921732, 1837 | "k_fold": 3, 1838 | "dataset": "KEGG", 1839 | "aggregate_type": "concat", 1840 | "test_auc": 0.9369092793804343, 1841 | "test_acc": 0.8811968061770641, 1842 | "test_f1": 0.88843111404087, 1843 | "test_aupr": 0.9155244484834998, 1844 | "timestamp": "2020-05-26 20:35:21" 1845 | } 1846 | { 1847 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1848 | "batch_size": 4096, 1849 | "optimizer": "adam", 1850 | "epoch": 50, 1851 | "learning_rate": 0.02, 1852 | "train_time": "00:00:19", 1853 | "dev_auc": 0.9338361968122767, 1854 | "dev_acc": 0.8767111267111267, 1855 | "dev_f1": 0.8811437272650368, 1856 | "dev_aupr": 0.9034091163560682, 1857 | "k_fold": 4, 1858 | "dataset": "KEGG", 1859 | "aggregate_type": "concat", 1860 | "test_auc": 0.9365934422689525, 1861 | "test_acc": 0.8813722909537598, 1862 | "test_f1": 0.8863101244534141, 1863 | "test_aupr": 0.9077585184992856, 1864 | "timestamp": "2020-05-26 20:35:44" 1865 | } 1866 | { 1867 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_concat_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1868 | "batch_size": 4096, 1869 | "optimizer": "adam", 1870 | "epoch": 50, 1871 | "learning_rate": 0.02, 1872 | "train_time": "00:00:18", 1873 | "dev_auc": 0.9417129116412645, 1874 | "dev_acc": 0.8776763776763776, 1875 | "dev_f1": 0.879806863252285, 1876 | "dev_aupr": 0.9183996891008535, 1877 | "k_fold": 5, 1878 | "dataset": "KEGG", 1879 | "aggregate_type": "concat", 1880 | "test_auc": 0.9376052305524145, 1881 | "test_acc": 0.8691760989734141, 1882 | "test_f1": 0.8718741943799948, 1883 | "test_aupr": 0.9176838281232929, 1884 | "timestamp": "2020-05-26 20:36:06" 1885 | } 1886 | { 1887 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1888 | "batch_size": 4096, 1889 | "optimizer": "adam", 1890 | "epoch": 50, 1891 | "learning_rate": 0.02, 1892 | "train_time": "00:00:22", 1893 | "dev_auc": 0.9116790153458731, 1894 | "dev_acc": 0.8424885924885925, 1895 | "dev_f1": 0.8452185910149176, 1896 | "dev_aupr": 0.8806630114087824, 1897 | "k_fold": 1, 1898 | "dataset": "KEGG", 1899 | "aggregate_type": "neigh", 1900 | "test_auc": 0.9084761164311659, 1901 | "test_acc": 0.8447837150127226, 1902 | "test_f1": 0.8499957601967267, 1903 | "test_aupr": 0.8804715989147547, 1904 | "timestamp": "2020-05-26 20:36:31" 1905 | } 1906 | { 1907 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1908 | "batch_size": 4096, 1909 | "optimizer": "adam", 1910 | "epoch": 50, 1911 | "learning_rate": 0.02, 1912 | "train_time": "00:00:22", 1913 | "dev_auc": 0.9165675358515671, 1914 | "dev_acc": 0.8502106002106002, 1915 | "dev_f1": 0.8557180289071085, 1916 | "dev_aupr": 0.8885730794163401, 1917 | "k_fold": 2, 1918 | "dataset": "KEGG", 1919 | "aggregate_type": "neigh", 1920 | "test_auc": 0.9127852646188752, 1921 | "test_acc": 0.8514521365271562, 1922 | "test_f1": 0.8556815275765067, 1923 | "test_aupr": 0.877595599699543, 1924 | "timestamp": "2020-05-26 20:36:56" 1925 | } 1926 | { 1927 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1928 | "batch_size": 4096, 1929 | "optimizer": "adam", 1930 | "epoch": 50, 1931 | "learning_rate": 0.02, 1932 | "train_time": "00:00:23", 1933 | "dev_auc": 0.9195538194163707, 1934 | "dev_acc": 0.8569673569673569, 1935 | "dev_f1": 0.8608977641235706, 1936 | "dev_aupr": 0.8919755101286919, 1937 | "k_fold": 3, 1938 | "dataset": "KEGG", 1939 | "aggregate_type": "neigh", 1940 | "test_auc": 0.9188341862243395, 1941 | "test_acc": 0.8575063613231552, 1942 | "test_f1": 0.8621392190152801, 1943 | "test_aupr": 0.8855038517416427, 1944 | "timestamp": "2020-05-26 20:37:23" 1945 | } 1946 | { 1947 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1948 | "batch_size": 4096, 1949 | "optimizer": "adam", 1950 | "epoch": 50, 1951 | "learning_rate": 0.02, 1952 | "train_time": "00:00:26", 1953 | "dev_auc": 0.9151956584598581, 1954 | "dev_acc": 0.8507371007371007, 1955 | "dev_f1": 0.8530707437159887, 1956 | "dev_aupr": 0.8838292051084002, 1957 | "k_fold": 4, 1958 | "dataset": "KEGG", 1959 | "aggregate_type": "neigh", 1960 | "test_auc": 0.911794494412915, 1961 | "test_acc": 0.85250504518733, 1962 | "test_f1": 0.8550487194964215, 1963 | "test_aupr": 0.8701655023499804, 1964 | "timestamp": "2020-05-26 20:37:52" 1965 | } 1966 | { 1967 | "exp_name": "kgcn_KEGG_neigh_4_embed_128_depth_2_agg_neigh_optimizer_adam_lr_0.02_batch_size_4096_epoch_50", 1968 | "batch_size": 4096, 1969 | "optimizer": "adam", 1970 | "epoch": 50, 1971 | "learning_rate": 0.02, 1972 | "train_time": "00:00:22", 1973 | "dev_auc": 0.9137710116422495, 1974 | "dev_acc": 0.8456475956475956, 1975 | "dev_f1": 0.848583971765516, 1976 | "dev_aupr": 0.8851601551885593, 1977 | "k_fold": 5, 1978 | "dataset": "KEGG", 1979 | "aggregate_type": "neigh", 1980 | "test_auc": 0.9109080693114129, 1981 | "test_acc": 0.8432920944108099, 1982 | "test_f1": 0.8459813728872025, 1983 | "test_aupr": 0.8791459167371136, 1984 | "timestamp": "2020-05-26 20:38:17" 1985 | } 1986 | { 1987 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_2048_epoch_50", 1988 | "batch_size": 2048, 1989 | "optimizer": "adam", 1990 | "epoch": 50, 1991 | "learning_rate": 0.02, 1992 | "train_time": "00:00:19", 1993 | "dev_auc": 0.938040500017748, 1994 | "dev_acc": 0.8790803790803791, 1995 | "dev_f1": 0.884201680672269, 1996 | "dev_aupr": 0.9067943919661712, 1997 | "k_fold": 1, 1998 | "dataset": "KEGG", 1999 | "aggregate_type": "sum", 2000 | "test_auc": 0.9352758129175343, 2001 | "test_acc": 0.8787400193033255, 2002 | "test_f1": 0.8861802009553615, 2003 | "test_aupr": 0.9080466529435538, 2004 | "timestamp": "2020-05-26 20:47:30" 2005 | } 2006 | { 2007 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_2048_epoch_50", 2008 | "batch_size": 2048, 2009 | "optimizer": "adam", 2010 | "epoch": 50, 2011 | "learning_rate": 0.02, 2012 | "train_time": "00:00:15", 2013 | "dev_auc": 0.9425206785644556, 2014 | "dev_acc": 0.8862758862758863, 2015 | "dev_f1": 0.8920539730134932, 2016 | "dev_aupr": 0.9242021028931091, 2017 | "k_fold": 2, 2018 | "dataset": "KEGG", 2019 | "aggregate_type": "sum", 2020 | "test_auc": 0.9382955673362859, 2021 | "test_acc": 0.8846187593226288, 2022 | "test_f1": 0.8902245596460472, 2023 | "test_aupr": 0.9154046203657218, 2024 | "timestamp": "2020-05-26 20:47:48" 2025 | } 2026 | { 2027 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_2048_epoch_50", 2028 | "batch_size": 2048, 2029 | "optimizer": "adam", 2030 | "epoch": 50, 2031 | "learning_rate": 0.02, 2032 | "train_time": "00:00:15", 2033 | "dev_auc": 0.9412993434563378, 2034 | "dev_acc": 0.8845208845208845, 2035 | "dev_f1": 0.8910415631727108, 2036 | "dev_aupr": 0.919267247087031, 2037 | "k_fold": 3, 2038 | "dataset": "KEGG", 2039 | "aggregate_type": "sum", 2040 | "test_auc": 0.9426653279089112, 2041 | "test_acc": 0.8861103799245416, 2042 | "test_f1": 0.8924249958561247, 2043 | "test_aupr": 0.9193019025940289, 2044 | "timestamp": "2020-05-26 20:48:06" 2045 | } 2046 | { 2047 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_2048_epoch_50", 2048 | "batch_size": 2048, 2049 | "optimizer": "adam", 2050 | "epoch": 50, 2051 | "learning_rate": 0.02, 2052 | "train_time": "00:00:17", 2053 | "dev_auc": 0.9404461347978087, 2054 | "dev_acc": 0.8815373815373816, 2055 | "dev_f1": 0.8856900931414056, 2056 | "dev_aupr": 0.9157666690398241, 2057 | "k_fold": 4, 2058 | "dataset": "KEGG", 2059 | "aggregate_type": "sum", 2060 | "test_auc": 0.9380360191833939, 2061 | "test_acc": 0.8828639115556726, 2062 | "test_f1": 0.88912880989951, 2063 | "test_aupr": 0.9124709070476064, 2064 | "timestamp": "2020-05-26 20:48:26" 2065 | } 2066 | { 2067 | "exp_name": "kgcn_KEGG_neigh_4_embed_32_depth_2_agg_sum_optimizer_adam_lr_0.02_batch_size_2048_epoch_50", 2068 | "batch_size": 2048, 2069 | "optimizer": "adam", 2070 | "epoch": 50, 2071 | "learning_rate": 0.02, 2072 | "train_time": "00:00:15", 2073 | "dev_auc": 0.9413504154644724, 2074 | "dev_acc": 0.8812741312741312, 2075 | "dev_f1": 0.8882280049566296, 2076 | "dev_aupr": 0.9198419920363596, 2077 | "k_fold": 5, 2078 | "dataset": "KEGG", 2079 | "aggregate_type": "sum", 2080 | "test_auc": 0.9401693945751188, 2081 | "test_acc": 0.881723260507151, 2082 | "test_f1": 0.8878535773710482, 2083 | "test_aupr": 0.9170626928747764, 2084 | "timestamp": "2020-05-26 20:48:45" 2085 | } --------------------------------------------------------------------------------