From 6fbafab3534f17ad569ad9a2b4260f73350cf9b3 Mon Sep 17 00:00:00 2001 From: Chengbin Hou Date: Sun, 2 Dec 2018 19:10:33 +0000 Subject: [PATCH] update readme and remove redundancy the last update before making public --- .gitignore | 17 +++++++---------- README.md | 54 ++++++++++++++++++++++++++++-------------------------- bash/init | 0 3 files changed, 35 insertions(+), 36 deletions(-) delete mode 100644 bash/init diff --git a/.gitignore b/.gitignore index 4121346..e6b07a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,10 @@ -#chengbin-------------------------- +# My configurations: +db.ini +deploy_key_rsa +log +bash +emb + # Windows: Thumbs.db ehthumbs.db @@ -13,15 +19,6 @@ dist build __pycache__ -# My configurations: -db.ini -deploy_key_rsa -log -bash -emb - - -#zeyu-------------------------------- # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/README.md b/README.md index f6fd339..983ae1a 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # OpenANE: The first Open source framework specialized in Attributed Network Embedding (ANE) -We reproduce several ANE (Attributed Network Embedding) as well as PNE (Pure Network Embedding) methods in one unified framework, where they all share the same I/O and downstream tasks. We start this project based on [OpenNE](https://github.com/thunlp/OpenNE) that mainly integrates PNE methods under one unified framework. +We reproduce several ANE (Attributed Network Embedding) methods as well as PNE (Pure Network Embedding) methods in **one unified framework**, where they all share the same I/O, downstream tasks, etc. We start this project based on [OpenNE](https://github.com/thunlp/OpenNE) which mainly integrates PNE methods in one unified framework.
OpenANE not only integrates those PNE methods that consider pure structural information, but also provides the state-of-the-art ANE methods that consider both structural and attribute information during embedding. -Authors: Chengbin HOU chengbin.hou10@foxmail.com & Zeyu DONG 2018 +Authors: Chengbin HOU chengbin.hou10@foxmail.com & Zeyu DONG 11611716@mail.sustc.edu.cn 2018 ## Motivation In many real-world scenarios, a network often comes with node attributes such as paper metadata in a citation network, user profiles in a social network, and even node degrees in any pure networks. Unfortunately, PNE methods cannot make use of attribute information that may further improve the quality of node embeddings. -
From engineering perspective, by offering more APIs to handle attribute information in graph.py and utils.py, OpenANE shall be very easy to use for embedding an attributed network. Except attributed networks, OpenANE can also deal with pure networks by calling PNE methods, or by assigning node degrees as node attributes and then calling ANE methods. Therefore, to some extent, ANE methods can be regarded as a generalization of PNE methods. +
From engineering perspective, by offering more APIs to handle attribute information in graph.py and utils.py, OpenANE shall be easy to use for embedding an attributed network. Except attributed networks, OpenANE can also deal with pure networks by calling PNE methods, or by assigning node degrees as node attributes and then calling ANE methods. Therefore, to some extent, ANE methods can be regarded as the generalization of PNE methods. ## Methods [ABRW](https://github.com/houchengbin/ABRW), @@ -22,7 +22,7 @@ In many real-world scenarios, a network often comes with node attributes such as [GraRep](https://github.com/thunlp/OpenNE), AttrPure, AttrComb -
Note: all NE methods in this framework are unsupervised, and so does not require any label during embedding phase. +
Note: all methods in this framework are unsupervised, and so do not require any label during embedding phase. **For more details of each method, please have a look at our paper https://arxiv.org/abs/1811.11728**
And if you find ABRW or this framework is useful for your research, please consider citing it. @@ -36,7 +36,7 @@ pip install -r requirements.txt Python 3.6.6 or above is required due to the new [*print(f' ')*](https://docs.python.org/3.6/reference/lexical_analysis.html#f-strings) feature #### To obtain node embeddings as well as evaluate the quality ```bash -python src/main.py --method abrw --emb-file emb/cora_abrw_emb --save-emb --task lp_and_nc +python src/main.py --method abrw --task lp_and_nc --emb-file emb/cora_abrw_emb --save-emb ``` #### To have an intuitive feeling in node embeddings ```bash @@ -46,33 +46,36 @@ python src/vis.py --emb-file emb/cora_abrw_emb --label-file data/cora/cora_label ## Testing (Cora) ### Parameter Settings -In this testing, we use the default parameters +The default parameters for SAGE-GCN and SAGE-Mean are in *src/libnrl/graphsage/\__init\__.py*. And for other parameters: | AANE_lamb | AANE_maxiter | AANE_rho | ABRW_alpha | ABRW_topk | ASNE_lamb | AttrComb_mode | GraRep_kstep | LINE_negative_ratio | LINE_order | Node2Vec_p | Node2Vec_q | TADW_lamb | TADW_maxiter | batch_size | dim | dropout | epochs | label_reserved | learning_rate | link_remove | number_walks | walk_length | weight_decay | window_size | workers | |-----------|--------------|----------|------------|-----------|-----------|---------------|--------------|---------------------|------------|------------|------------|-----------|--------------|------------|-----|---------|--------|----------------|---------------|-------------|--------------|-------------|--------------|-------------|---------| | 0.05 | 10 | 5 | 0.8 | 30 | 1 | concat | 4 | 5 | 3 | 0.5 | 0.5 | 0.2 | 10 | 128 | 128 | 0.5 | 100 | 0.7 | 0.001 | 0.1 | 10 | 80 | 0.0001 | 10 | 24 | + ### Testing Results -#### Link Prediction and Node Classification tasks: +#### Link Prediction (LP) and Node Classification (NC) tasks: +STEPS: Cora -> NE method -> node embeddings -> (downstream) LP/NC -> scores -| method | AUC | Micro-F1 | Macro-F1 | Time | -|----------|--------|----------|----------|----------| -| aane | 0.8158 | 0.7263 | 0.6904 | 26.48 | -| abrw | 0.9290 | 0.8721 | 0.8603 | 48.94 | -| asne | 0.7842 | 0.6076 | 0.5649 | 69.67 | -| attrcomb | 0.9111 | 0.8444 | 0.8284 | 60.32 | -| attrpure | 0.7857 | 0.7349 | 0.7039 | 0.49 | -| deepwalk | 0.8499 | 0.8100 | 0.8021 | 75.15 | -| grarep | 0.8936 | 0.7669 | 0.7607 | 10.31 | -| line | 0.6945 | 0.5873 | 0.5645 | 259.02 | -| node2vec | 0.7938 | 0.7977 | 0.7858 | 29.42 | -| sagegcn | 0.8929 | 0.7780 | 0.7622 | 207.49 | -| sagemean | 0.8882 | 0.8057 | 0.7902 | 183.65 | -| tadw | 0.9005 | 0.8383 | 0.8255 | 10.73 | +| Method | AUC (LP) | Micro-F1 (NC) | Macro-F1 (NC) | +|----------|--------|----------|----------| +| aane | 0.8158 | 0.7263 | 0.6904 | +| abrw | 0.9290 | 0.8721 | 0.8603 | +| asne | 0.7842 | 0.6076 | 0.5649 | +| attrcomb | 0.9111 | 0.8444 | 0.8284 | +| attrpure | 0.7857 | 0.7349 | 0.7039 | +| deepwalk | 0.8499 | 0.8100 | 0.8021 | +| grarep | 0.8936 | 0.7669 | 0.7607 | +| line | 0.6945 | 0.5873 | 0.5645 | +| node2vec | 0.7938 | 0.7977 | 0.7858 | +| sagegcn | 0.8929 | 0.7780 | 0.7622 | +| sagemean | 0.8882 | 0.8057 | 0.7902 | +| tadw | 0.9005 | 0.8383 | 0.8255 | + +#### 2D Visualization task: +STEPS: Cora -> NE method -> node embeddings -> (downstream) PCA to 2D -> vis -#### 2D Visualization task
![Cora vis](https://github.com/houchengbin/OpenANE/blob/master/log/vis.jpg)
-
Steps: Cora -> NE method -> node embeddings -> PCA -> 2D vis
The different colors indicate different ground truth labels. ## Other Datasets @@ -93,8 +96,7 @@ For the meaning and suggestion of each parameter, please see main.py. ## Contribution -We highly welcome and appreciate your contribution on fixing bugs, reproducing new ANE methods, etc. And we hope this OpenANE framework would become influential on both academic research and industrial usage. - +We highly welcome and appreciate your contribution in fixing bugs, reproducing new ANE methods, etc. Please use the *pull request* and your contribution will automatically appear in this project once accepted. We will add you to authors list, if your contribution is significant to this project. ## References -todo... +To do... diff --git a/bash/init b/bash/init deleted file mode 100644 index e69de29..0000000