A F AIR C OMPARISON OF G RAPH N EURAL N ETWORKS FOR G RAPH C LASSIFICATION
Anonymous authors
Paper under double-blind review
A BSTRACT
Experimental reproducibility and replicability is a critical topic in machine learning.
Authors have often raised concerns about such scholarship issues, which are aimed at improving the quality of the ﬁeld.
Recently, the graph representation learning ﬁeld has attracted the attention of a wide research community, which resulted in a large stream of works.
As such, several Graph Neural Network models have been developed to effectively tackle graph classiﬁcation.
However, experimental procedures often lack rigorousness and are hardly reproducible.
Motivated by this, we provide an overview of common practices that should be avoided to fairly compare with the state of the art.
To counter this troubling trend, we ran more than 47000 experiments in a controlled and uniform framework to reevaluate ﬁve popular models across nine common benchmarks.
Moreover, by comparing GNNs with structure-agnostic baselines we provide convincing evidence that, on some datasets, structural information has not been exploited yet.
We believe that this work can contribute to the development of the graph learning ﬁeld, by providing a much needed grounding for rigorous evaluations of graph classiﬁcation models.
I NTRODUCTION
Over the years, researchers have raised concerns about several ﬂaws in scholarship, such as experimental reproducibility and replicability in machine learning (McDermott, 1976; Lipton & Steinhardt, 2018) and science in general (National Academies of Sciences & Medicine, 2019).
These issues are not easy to address, as a collective effort is required to avoid bad practices.
Examples include the ambiguity of experimental procedures, the impossibility of reproducing results and the improper comparison of machine learning models.
As a result, it can be difﬁcult to uniformly assess the effectiveness of one method against another.
This work investigates these issues for the graph representation learning ﬁeld, by providing a uniform and rigorous benchmarking of state-of-the-art models.
Graph Neural Networks (GNNs) (Micheli, 2009; Scarselli et al., 2009) have recently become the standard tool for machine learning on graphs.
These architectures effectively combine node features and graph topology to build distributed node representations.
GNNs can be used to solve node classiﬁcation (Kipf & Welling, 2017) and link prediction (Zhang & Chen, 2018) tasks, or they can be applied to downstream graph classiﬁcation (Bacciu et al., 2018).
In literature, such models are usually evaluated on chemical and social domains (Xu et al., 2019).
Given their appeal, an ever increasing number of GNNs is being developed (Gilmer et al., 2017).
However, despite the theoretical advancements reached by the latest contributions in the ﬁeld, we ﬁnd that the experimental settings are in many cases ambiguous or not reproducible.
Some of the most common reproducibility problems we encouter in this ﬁeld concern hyperparameters selection and the correct usage of data splits for model selection versus model assessment.
Moreover, evaluation code is sometimes missing or incomplete, and experiments are not standardized across different works in terms of feature used.
These issues easily generate doubts and confusion among practitioners that need a fully transparent and reproducible experimental setting.
As a matter of fact, the evaluation of a model goes through two different phases, namely model selection on the validation set and model assessment on the test set.
Clearly, to fail in keeping these phases well separated could lead to over-optimistic and biased estimates of the true performance of a model, and it makes hard for other researchers to present competitive results without following the same ambiguous evaluation procedures.
With this premise, our primary contribution is to provide the graph learning community with a fair performance comparison among GNN architectures, using a standardized and reproducible experimental environment.
More in detail, we performed a large number of experiments within a rigorous model selection and assessment framework, in which all models were compared using the same features and the same data splits.
Secondly, we investigate if and to what extent current GNN models can effectively exploit graph structure.
To this end, we add two domain-speciﬁc and structure-agnostic baselines, whose purpose is to disentangle the contribution of structural information from node features.
Much to our surprise, we found out that these baselines can even perform better than GNNs on some datasets; this calls for moderation when reporting improvements that do not clearly outperform the baselines.
Our last contribution is a study on the effect of node degrees as features in social datasets.
Indeed, we show that providing the degree can be beneﬁcial in terms of performances, and it has also implications in the number of GNN layers needed to reach good results.
We publicly release code and dataset splits to reproduce our results, in order to allow other researchers to carry out rigorous evaluations with minimum additional effort 1 .
Disclaimer Before delving into the work, we would like to clarify that this work does not aim at pinpointing the best (or worst) performing GNN, nor it disavows the effort researchers have put in the development of these models.
Rather, it is intended to be an attempt to set up a standardized and uniform evaluation framework for GNNs, such that future contributions can be compared fairly and objectively with existing architectures.
R ELATED W ORK
Graph Neural Networks At the core of GNNs is the idea to compute a state for each node in a graph, which is iteratively updated according to the state of neighboring nodes.
Thanks to layering (Micheli, 2009) or recursive (Scarselli et al., 2009) schemes, these models propagate information and construct node representations that can be “aware” of the broader graph structure.
GNNs have recently gained popularity because they can efﬁciently and automatically extract relevant features from a graph; in the past, the most popular way to deal with complex structures was to use kernel functions (Shervashidze et al., 2011) to compute task-agnostic features.
However, such kernels are non-adaptive and typically computationally expensive, another aspect that makes GNNs even more appealing.
Even though in this work we speciﬁcally focus on architectures designed for graph classiﬁcation, all GNNs share the notion of “convolution” over node neighborhoods, as a generalization of convolution on grids.
For example, GraphSAGE (Hamilton et al., 2017) ﬁrst performs sum, mean or max-pooling neighborhood aggregation, and then it updates the node representation applying a linear projection on top of the convolution.
It also relies on a neighborhood sampling scheme to keep computational complexity constant.
Instead, Graph Isomorphism Network (GIN)
(Xu et al., 2019) builds upon the limitations of GraphSAGE, extending it with arbitrary aggregation functions on multi-sets.
The model is proven to be as theoretically powerful as the Weisfeiler-Lehman test of graph isomorphism.
Very recently, Wagstaff et al.
(2019) gave an upper bound to the number of hidden units needed to learn permutation-invariant functions over sets and multi-sets.
Differently from the above methods, Edge-Conditioned Convolution (ECC) (Simonovsky & Komodakis, 2017) learns a different parameter for each edge label.
Therefore, neighbors aggregation is weighted according to speciﬁc edge parameters.
Finally, Deep Graph Convolutional Neural Network (DGCNN)
(Zhang et al., 2018) proposes a convolutional layer similar to the formulation of Kipf & Welling (2017).
Some models also exploit a pooling scheme, which is applied after convolutional layers in order to reduce the size of a graph.
For example, the pooling scheme of ECC coarsens graphs through a differentiable pooling map that can be pre-computed.
Similarly, DiffPool (Ying et al., 2018) proposes an adaptive pooling mechanism that collapses nodes on the basis of a supervised criterion.
In practice, DiffPool combines a differentiable graph encoder with its pooling strategy, so that the architecture is end-to-end trainable.
Lastly, DGCNN differs by other works in that nodes are sorted and aligned by a speciﬁc algorithm called SortPool (Zhang et al., 2018).
Model evaluation
The work of Shchur et al.
(2018) shares a similar purpose with our contribution.
In particular, the authors compare different GNNs on node classiﬁcation tasks, showing that results are highly dependent on the particular train/validation/test split of choice, up to the point where changing splits leads to dramatically different performance rankings.
Thus, they recommend to evaluate GNNs on multiple test splits to achieve a fair comparison.
Even though we operate in a different setting (graph instead of node classiﬁcation), we follow the authors’ suggestions by evaluating models under a controlled and rigorous assessment framework.
Finally, the work of Dacrema et al.
(2019) criticizes a large number of neural recommender systems, most of which are not reproducible, showing that only one of them truly improves against a simple baseline.
R ISK ASSESSMENT AND MODEL SELECTION
Here, we recap the risk assessment (also called model evaluation or model assessment) and model selection procedures, to clearly layout the experimental procedure followed in this paper.
For space reasons, the overall procedure is visually summarized in Appendix A.1.
3. R ISK ASSESSMENT
The goal of risk assessment is to provide an estimate of the performance of a class of models.
When a test set is not explicitly given, a common way to proceed is to use k-fold Cross Validation (CV) (Stone, 1974; Varma & Simon, 2006; Cawley & Talbot, 2010).
k -fold CV uses k different training/test splits to estimate the generalization performance of a model; for each partition, an internal model selection procedure selects the hyper-parameters using the training data only.
This way, test data is never used for model selection.
As model selection is performed independently for each training/test split, we obtain different “best” hyper-parameter conﬁgurations; this is why we refer to the performance of a class of models.
3. M ODEL S ELECTION
The goal of model selection, or hyper-parameter tuning, is to choose among a set of candidate hyperparameter conﬁgurations the one that works best on a speciﬁc validation set.
If a validation set is not given, one can rely on a holdout training/validation split or an inner k -fold.
Nevertheless, the key point to remember is that validation performances are a biased estimates of the true generalization capabilities.
Consequently, model selection results are generally over-optimistic; this issue is thoroughly documented in Cawley & Talbot (2010).
This is why the main contribution of this work is to clearly separate model selection and model assessment estimates, something that is lacking or ambiguous in the literature under consideration.
O VERVIEW OF R EPRODUCIBILITY I SSUES
To motivate our contribution, we follow the approach of Dacrema et al.
and brieﬂy review recent papers describing ﬁve different GNN models, highlighting problems in the experimental setups as well as reproducibility of results.
We emphasize that our observations are based solely on the contents of their paper and the available code 2 .
Suitable GNN works were selected according to the following criteria: i) performances obtained with 10-fold CV; ii) peer reviewed; iii) strong architectural differences; iv) popularity.
In particular, we selected DGCNN (Zhang et al., 2018), DiffPool (Ying et al., 2018), ECC (Simonovsky & Komodakis, 2017),
GIN (Xu et al., 2019) and GraphSAGE (Hamilton et al., 2017).
For a detailed description of each model we refer to their respective papers.
Our criteria to assess quality of evaluation and reproducibility are: i ) code for data preprocessing, model selection and assessment is provided; ii ) data splits are provided; iii ) data is split by means of a stratiﬁcation technique, to preserve class proportions across all partitions; iv ) results of the 10-fold
CV are reported correctly using standard deviations, and they refer to model evaluation (test sets) rather than model selection (validation sets).
Table 1 summarizes our ﬁndings. [Table]
DGCNN The authors evaluate the model on 10-fold CV.
While the architecture is ﬁxed for all dataset, learning rate and epochs are tuned using only one random CV fold, and then reused on all the other folds.
While this practice is still acceptable, it may lead to sub-optimal performances.
Nonetheless, the code to reproduce model selection is not available.
Moreover, the authors run CV 10 times, and they report the average of the 10 ﬁnal scores.
As a result, the variance of the provided estimates is reduced.
However, the same procedure was not applied to the other competitors as well.
Finally, CV data splits are correctly stratiﬁed and publicly available, making it possible to reproduce at least the evaluation experiments.
DiffPool From both the paper and the provided code, it is unclear if reported results are obtained on a test set rather than a validation set.
Although the authors state that 10-fold CV is used, standard deviations of DiffPool and its competitors are not reported.
Moreover, the authors afﬁrm to have applied early stopping on the validation set to prevent overﬁtting; unfortunately, neither model selection code nor validation splits are available.
Furthermore, according to the code, data is randomly split (without stratiﬁcation) and no random seed is set, hence splits are different each time the code is executed.
ECC The paper reports that ECC is evaluated on 10-fold CV, but results do not include standard deviations.
Similarly to DGCNN, hyper-parameters are ﬁxed in advance, hence it is not clear if and how model selection has been performed.
Importantly, there are no references in the code repository to data pre-processing, data stratiﬁcation, data splitting, and model selection.
GIN The authors correctly list all the hyper-parameters tuned.
However, as stated explicitly in the paper and in the public review discussion, they report the validation accuracy of 10-fold CV.
In other words, reported results refer to model selection and not to model evaluation.
The code for model selection is not provided.
GraphSAGE The original paper does not test this model on graph classiﬁcation datasets, but
GraphSAGE is often used in other papers as a strong baseline.
It follows that GraphSAGE results on graph classiﬁcation should be accompanied by the code to reproduce the experiments.
Despite that, the two works which report results of GraphSAGE (DiffPool and GIN) fail to do so.
Summary Our analysis reveals that GNN works rarely comply to good machine learning practices as regards quality of evaluation and reproducibility of results.
This motivates the need to re-evaluate all models within a rigorous, reproducible and fair environment.
E XPERIMENTS
In this section we detail our main experiment, in which we re-evaluate the above-mentioned models on 9 datasets (4 chemical, 5 social), using a model selection and assessment framework that closely follows the rigorous practices described in Section 3.
In addition, we implement two baselines whose purpose is to understand the extent to which GNNs are able to exploit structural information.
All models have been implemented by means of the Pytorch Geometrics library (Fey & Lenssen, 2019), which provides graph pre-processing routines and makes the deﬁnition of graph convolution easier to implement.
We sometimes found discrepancies between papers and related code; in such cases, we complied with the speciﬁcations in the paper.
Because GraphSAGE was not applied to graph classiﬁcation in the original work, we opted for a max-pooling global aggregation function to classify graph instances; further, we do not use the sampled neighborhood aggregation scheme deﬁned in Hamilton et al.
(2017), in order to allow nodes to have access to their whole neighborhood.
Datasets All graph datasets are publicly available (Kersting et al., 2016) and represent a relevant subset of those most frequently used in literature to compare GNNs.
Some collect molecular graphs, while others contain social graphs.
In particular, we used D&D (Dobson & Doig, 2003),
PROTEINS (Borgwardt et al., 2005), NCI1 (Wale et al., 2008) and ENZYMES (Schomburg et al., 2004) for binary and multi-class classiﬁcation of chemical compounds, whereas IMDB-BINARY,
IMDB-MULTI, REDDIT-BINARY, REDDIT-5K and COLLAB (Yanardag & Vishwanathan, 2015) are social datasets.
Dataset statistics are reported in table A.2.
Features In GNN literature, it is common practice to augment node descriptors by adding structural features.
For example, DiffPool augments the input with both node degree and clustering coefﬁcient, whereas GIN adds a one-hot representation of node degrees.
The latter choice trades off an improvement in performances (due to injectivity of the ﬁrst sum) with the inability to generalize to graphs with arbitrary node degree.
In general, good experimental practices suggest that all models should be consistently compared on the same input representations. This is why we re-evaluate all models using the same node features.
In particular, we use one common setting for the chemical domain and two alternative settings as regards the social domain.
As regards the chemical domain, nodes are labelled with a one-hot encoding of their atom type, though on ENZYMES we follow the literature and use 18 additional features available.
As regards social graphs, whose nodes do not have features, we use either an uninformative feature for all nodes or the node degree.
As such, we are able to reason about the effectiveness of the structural inductive bias imposed by the model; that is, if the model is able to implicitly learn structural features or not.
The effect of adding structural features to general machine learning models for graphs has been investigated in Gallagher &
Eliassi-Rad (2010)
; here, we investigate on the impact of node degrees on performances for social datasets.
Baselines We adopt two distinct baselines, one for chemical and one for social datasets.
On all chemical datasets but for ENZYMES, we follow Ralaivola et al. ; Luzhnica et al.
and implement the Molecular Fingerprint technique, which ﬁrst applies global sum pooling (i.e., counts the occurrences of atom types in the graph by summing the features of all nodes in the graph together) and then applies a single-layer MLP with ReLU activations.
On social domains and ENZYMES (due to the presence of additional features), we take inspiration from the work of Zaheer et al.
(2017) to learn permutation-invariant functions over sets of nodes: ﬁrst, we apply a single-layer MLP on top of node features, followed by global sum pooling and another singlelayer MLP for classiﬁcation.
Note that both baselines do not leverage graph topology.
Using these baselines as a reference is of fundamental importance for future works, as they can provide feedback on the effectiveness of GNNs on a speciﬁc dataset.
As a matter of fact, if GNN performances are close to the ones of a structure-agnostic baseline, one can draw two possible conclusions: the task does not need topological information to be effectively solved; or the GNN is not exploiting graph structure adequately.
While the former can be veriﬁed through domain-speciﬁc human expertise, the second is more difﬁcult to assess, as multiple factors come into play such as the amount of training data, the structural inductive bias imposed by the architecture and the hyper-parameters used for model selection.
Nevertheless, signiﬁcant improvements with respect to these baselines are a strong indicator that graph topology has been exploited.
Therefore, structure-agnostic baselines become vital to understand if and how a model can be improved.
Experimental Setting Our experimental approach is to use a 10 -fold CV for model assessment and an inner holdout technique with a 90%/10% training/validation split for model selection.
After each model selection, we train three times on the whole training fold, holding out a random fraction 1: Input: Dataset D , set of conﬁgurations Θ 2: Split D into k folds F 1 , . . , F k 3: for i ← 1 , . . . , k do 4: train k , test k ← (cid:0) (cid:83)
j (cid:54) = i F j (cid:1) , F i 5: best k ← Select(train k , Θ ) 6: for r ← 1 , . . . , R do 7: model r ← Train(train k , best k ) 8: p r ← Eval(model k , test k ) 9: end for 10: perf k ← (cid:80) Rr =1 p r /R 11: end for 12: return (cid:80)
ki =1 perf i /k
1: Input: train k , Θ 2: Split train k into train and valid 3: p θ = ∅ 4: for each θ ∈ Θ do 5: model ← Train(train k , θ ) 6: p θ ← p θ ∪ Eval(model, valid ) 7: end for 8: best θ ← argmax θ p θ 9: return best θ (10%) of the data to perform early stopping.
These three separate runs are needed to smooth the effect of unfavourable random weight initialization on test performances.
The ﬁnal test fold score is obtained as the mean of these three runs; Table 2 reports the pseudo-code of the entire evaluation process.
To be consistent with literature, we implement early stopping with patience parameter n , where training stops if n epochs have passed without improvement on the validation set.
A high value of n can favor model selection by making it less sensitive to ﬂuctuations in the validation score at the cost of additional computation.
Importantly, all data partitions have been pre-computed, so that models are selected and evaluated on the same data splits.
Moreover, all data splits are stratiﬁed, i.e., class proportions are preserved inside each k -fold split as well as in the holdout splits used for model selection.
Hyper-parameters Hyper-parameter tuning is performed via grid search.
For the sake of conciseness, we list all hyper-parameters in Section A.4.
Notice that we always include those used by other authors in their respective papers.
We select the number of convolutional layers, the embedding space dimension, the learning rate, and the criterion for early stopping (either based on the validation accuracy or validation loss) for all models.
Depending on the model, we also selected regularization terms, dropout, and other model-speciﬁc parameters.
Computational considerations Our experiments involve a large number of training runs.
For all models, grid sizes range from 32 to 72 possible conﬁgurations, depending on the number of hyper-parameters to choose from.
However, we tried to keep the upper bound on the number of parameters as similar as possible across models.
The total effort required, in terms of number of single trainings, to complete model assessment procedures exceeded 47000.
Such a large number required an extensive use of parallelism, both in CPU and GPU, to conduct the experiments in a reasonable amount of time.
We emphasize that in some cases (e.g. ECC in social datasets), training on a single hyper-parameter conﬁguration required more than 72 hours, which would have made the sequential exploration of one single grid last months.
Therefore, due to the large amount of experiments to conduct and to the computational resources available, we limited the time to complete a single training to 72 hours.
R ESULTS AND D ISCUSSION
Tables 3 and 4 show the results of our experiments.
Overall, GIN seems to be effective on social datasets.
Importantly, we discover that on D&D, PROTEINS and ENZYMES none of the GNNs are able to improve over the baseline.
On the contrary, on NCI1 the baseline is clearly outperformed: this result suggest that the GNNs we analyzed can actually exploit the topological information of [Table] the graphs in this dataset. Moreover, we observe that an overly-parameterized baseline is not able to overﬁt the NCI1 training data completely.
To see this
[Table] consider that a baseline with 10000 hidden units and no regularization reaches around 67% training accuracy, while GIN can easily overﬁt ( ≈ 100% ) the training data. This indicates that structural information hugely affects the ability to ﬁt the training set. On social datasets, we observe that adding node degrees as features is beneﬁcial, but such effect is more noticeable for REDDIT-BINARY, REDDIT-5K and COLLAB.
6. T HE I MPORTANCE OF B ASELINES
Our results also show that structure-agnostic baselines are an essential tool to understand the effectiveness of GNNs and extract useful insights.
As an example, since none of the GNNs surpasses the baseline on D&D, PROTEINS and ENZYMES, we argue that the state-of-the-art GNN models we analyzed are not able to fully exploit the structure on such datasets yet; indeed, in chemistry, structural features are known to correlate with molecular properties (van Rossum, 1963).
For all these reasons, we suggest to put small performance gains on these datasets into the right perspective, at least until the baseline will clearly be outperformed.
Currently, small average ﬂuctuations on these datasets are likely to be caused by other factors, such as random initializations, rather than a successful exploitation of the structure.
In conclusion, we warmly recommend GNN practitioners to include baseline comparisons in future works, in order to better characterize the extent of their contributions.
6. T HE E FFECT OF NODE DEGREE
Based on our results, using node degrees as input features is almost always beneﬁcial to increase performances on social datasets, sometimes by a large amount.
As an example, degree information is sufﬁcient for our baseline to improve performances of ≈ 15 %, hence being competitive on many datasets; in particular, the baseline achieves the best performance on IMDB-BINARY.
In contrast, adding node degrees is less relevant for most GNNs, since they can automatically infer such information from the structure.
One notable exception is DGCNN, which explicitly needs node degree to perform well on all datasets.
Moreover, we observe that the ranking of all models, after the addition of degree structural feature, drastically changes; this raises the question about the impact of other structural features on performances, which we leave to future works.
However, one may also wonder whether the addition of the degree has an inﬂuence on the number of layers that are necessary to solve the task or not.
We therefore investigated the matter by computing the median number of layers across the 10 different folds.
We observed a general trend across models, with GraphSAGE being the only exception, where the addition of the degree reduces the number of layers needed by ≈ 1 , which is shown in Table A.3.
This may be due to the fact that most architectures ﬁnd useful to compute the degree at the very ﬁrst layer, as such information seems useful to the overall performances.
6. C OMPARISON WITH PUBLISHED RESULTS
Figure 1 compares the average values of our test results with those reported in literature.
In addition, we plot the average of our validation results across the 10 different model selections.
The plots show how our test accuracies are in most cases different with what reported in the literature, and the gap between the two estimates is usually consistent.
In contrast, our average validation accuracies are always higher or equal to our test results; this is expected, as discussed in Section 3.2.
Finally, we emphasize once again that our results are i ) obtained within the framework of a rigorous model [Table] 5 ± 3 .89 . 9 ± 1 .56 .
1 ± 1 .75 .
6 ± 2 .
3 GraphSAGE 68 . 8 ± 4 .47 . 6 ± 3 .84 . 3 ± 1 .50 .
0 ± 1 .73 .
9 ± 1 .70.
A cc u r a c y
DD 67.
NCI 70.
PROTEINS 20.
[Figure]
[Figure] [Figure] [Figure] [Figure]
[Figure]
ENZYMES 65.
IMDB-BINARY 40.
IMDB-MULTI 80.
[Figure]
REDDIT-BINARY 48.
REDDIT-MULTI-5K 68.
COLLAB
Baseline
DGCNN
DiffPool
ECC
GIN
GraphSAGE
Published
Validation
Test selection and assessment protocol; ii ) fair with respect of data splits and input features assigned to all competitors; iii ) reproducible. In contrast, we saw in Section 4 how published results rely on unclear or poorly documented experimental settings.
C ONCLUSIONS
In this paper we wanted to show how a rigorous empirical evaluation of GNNs can help design future experiments and better reason about the effectiveness of different architectural choices.
To this aim, we highlighted ambiguities in the experimental settings of different papers and we proposed a clear and reproducible procedure for future comparisons.
We then provided a complete re-evaluation of ﬁve GNNs on nine datasets, which required a signiﬁcant amount of time and computational resources.
This uniformed environment helped us reason about the role of structure, as we found that structure-agnostic baselines outperform GNNs on some chemical datasets, thus suggesting that structural properties have not been exploited yet.
Moreover, we objectively analyzed the effect of the degree feature on performances and model selection in social datasets, unveiling an effect on the depth of GNNs.
Finally, we provide the graph learning community with reliable and reproducible results to which GNN practitioners can compare their architectures.
We hope that this work, along with the library we release, will prove useful to researchers and practitioners that want to compare
GNNs in a more rigorous way A
V ISUALIZATION OF THE E VALUATION F RAMEWORK
A. D ATASET S TATISTICS
[Table]
A. E FFECT OF N ODE D EGREE ON L AYERING
[Table]
[Table]
[Table]
[Table]
[Table]
A
H Y P
E R - P
A R A
M
ETE
R S
T A B
LE
T a b l e 7 :
H yp e r- p a r a m e t e r s u s e d f o r m od e l s e l ec ti on .
[Table]
s
C onv
[Table]
ze
[Table]
on
[Table]
s e li n e
E N Z
Y M
E S - - 1 e - 1 1 e - 3 1 e -
[Table]
1 e
[Table]
1 e
[Table]
1 e
[Table] [Table]
DG C
NN
[Table]
1 e
[Table]
4 1 e
[Table] [Table]
D i
[Table]
1 e
[Table] [Table]
[Table]
E
[Table] [Table]
pu
[Table] [Table]
1 e
[Table]
1 1 e
[Table] [Table]
G I N s
[Table]
h i dd e n un
[Table]
s  1 e
[Table]
[Table] [Table]
a
[Table]
e r
[Table]
a
[Table]
e
[Table]
a
[Table]
e
[Table]
a
[Table]
e
[Table]
G r a ph
[Table]
AG E
[Table]
c pu )
[Table]
ud a ) 1 e - 2 1 e - 3 1 e -
[Table]
, l o ss 500 , acc
A d a m - - - m ea n m [Table] s u m