{"id":50775939,"url":"https://github.com/microsoft/ppgnn","last_synced_at":"2026-06-12T00:00:53.818Z","repository":{"id":229665978,"uuid":"647702750","full_name":"microsoft/ppgnn","owner":"microsoft","description":"[ICLR GTRL Spotlight 2022, ECML PKDD 2022] Contains code for the paper titled 'PPGNN: A Piece-Wise Polynomial Filtering Approach for Graph Neural Networks'","archived":false,"fork":false,"pushed_at":"2026-06-11T17:11:38.000Z","size":82,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-06-11T19:06:58.716Z","etag":null,"topics":["ecmlpkdd","graph-neural-networks","iclr2022","representation-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-31T10:47:42.000Z","updated_at":"2026-06-11T17:11:35.000Z","dependencies_parsed_at":"2024-03-25T18:30:09.119Z","dependency_job_id":"6ec9917c-db27-4173-98c0-277a313fa610","html_url":"https://github.com/microsoft/ppgnn","commit_stats":null,"previous_names":["microsoft/ppgnn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/microsoft/ppgnn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fppgnn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fppgnn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fppgnn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fppgnn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/ppgnn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fppgnn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34222709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecmlpkdd","graph-neural-networks","iclr2022","representation-learning"],"created_at":"2026-06-12T00:00:28.470Z","updated_at":"2026-06-12T00:00:53.802Z","avatar_url":"https://github.com/microsoft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PPGNN: A Piece-Wise Polynomial Filtering Approach for Graph Neural Networks\n\nThis repo contains the code for the paper published at `ECML PKDD 2022: Machine\nLearning and Knowledge Discovery in Databases`. The link to our ECML publication\ncan be found [here](https://link.springer.com/chapter/10.1007/978-3-031-26390-3_25)\nand the link to the paper on arXiv can be found\n[here](https://arxiv.org/abs/2112.03499).\n\n## Citation\n\nIf you find this work useful, please cite our paper. Note that the first three authors contributed equally to this work.\n\n```bibtex\n@InProceedings{10.1007/978-3-031-26390-3_25,\nauthor=\"Lingam, Vijay\nand Sharma, Manan\nand Ekbote, Chanakya\nand Ragesh, Rahul\nand Iyer, Arun\nand Sellamanickam, Sundararajan\",\neditor=\"Amini, Massih-Reza\nand Canu, St{\\'e}phane\nand Fischer, Asja\nand Guns, Tias\nand Kralj Novak, Petra\nand Tsoumakas, Grigorios\",\ntitle=\"A Piece-Wise Polynomial Filtering Approach for Graph Neural Networks\",\nbooktitle=\"Machine Learning and Knowledge Discovery in Databases\",\nyear=\"2023\",\npublisher=\"Springer International Publishing\",\naddress=\"Cham\",\npages=\"412--452\",\nabstract=\"Graph Neural Networks (GNNs) exploit signals from node features and the input graph topology to improve node classification task performance. Recently proposed GNNs work across a variety of homophilic and heterophilic graphs. Among these, models relying on polynomial graph filters have shown promise. We observe that polynomial filter models need to learn a reasonably high degree polynomials without facing any over-smoothing effects. We find that existing methods, due to their designs, either have limited efficacy or can be enhanced further. We present a spectral method to learn a bank of filters using a piece-wise polynomial approach, where each filter acts on a different subsets of the eigen spectrum. The approach requires eigendecomposition only for a few eigenvalues at extremes (i.e., low and high ends of the spectrum) and offers flexibility to learn sharper and complex shaped frequency responses with low-degree polynomials. We theoretically and empirically show that our proposed model learns a better filter, thereby improving classification accuracy. Our model achieves performance gains of up to {\\$}{\\$}{\\backslash}sim {\\$}{\\$}∼6{\\%} over the state-of-the-art (SOTA) models while being only {\\$}{\\$}{\\backslash}sim {\\$}{\\$}∼2x slower than the recent spectral approaches on graphs of sizes up to {\\$}{\\$}{\\backslash}sim {\\$}{\\$}∼169K nodes.\",\nisbn=\"978-3-031-26390-3\"\n}\n```\n\n## Abstract\n\nGraph Neural Networks (GNNs) exploit signals from node features and the input\ngraph topology to improve node classification task performance. However, these\nmodels tend to perform poorly on heterophilic graphs, where connected nodes have\ndifferent labels. Recently proposed GNNs work across graphs having varying levels\nof homophily. Among these, models relying on polynomial graph filters have shown\npromise. We observe that solutions to these polynomial graph filter models are\nalso solutions to an overdetermined system of equations. It suggests that in\nsome instances, the model needs to learn a reasonably high order polynomial.\nOn investigation, we find the proposed models ineffective at learning such\npolynomials due to their designs. To mitigate this issue, we perform an\neigendecomposition of the graph and propose to learn multiple adaptive\npolynomial filters acting on different subsets of the spectrum. We theoretically\nand empirically show that our proposed model learns a better filter, thereby\nimproving classification accuracy. We study various aspects of our proposed\nmodel including, dependency on the number of eigencomponents utilized, latent\npolynomial filters learned, and performance of the individual polynomials on\nthe node classification task. We further show that our model is scalable by\nevaluating over large graphs. Our model achieves performance gains of up to 5%\nover the state-of-the-art models and outperforms existing polynomial\nfilter-based approaches in general.\n\n\n## Steps To Run\n\n1. Install Anaconda basis this [link](https://www.anaconda.com).\n\n2. Create and activate a conda environment (Note that we use Python 3.10.11):\n\n```bash\nconda create -n ppgnn python=3.10.11\n\nconda activate ppgnn\n```\n\n3. Install the requirements basis the OS you are using:\n\n```bash\npip install -r \u003cos\u003e_requirements.txt\n\n#For example:\n\npip install -r linux_requirements.txt\n```\n\n4. Download the public datasets present in a drive link:\n\n```python\npython src/download_datasets.py\n```\n\n5. Run the commands for a particular dataset given in scripts/all_commands.txt:\n\n```bash\n#For example:\n\n$ cd ppgnn/src\n$ python main.py --lr 0.005 --weight_decay 0.001 --hidden 64 --dropout 0.5 --K 2 --dprate 0.5 --Init Random --dataset Cora --split 2 --beta 0.293714046388829 --total_buckets 4 --evd_dims 256 --net PPGNN\n```\n\n## People Involved\n\n- Chanakya Ekbote [📧](mailto:chanakyekbote@gmail.com)\n- Vijay Lingam [📧](mailto:vijaylingam0810@gmail.com)\n- Manan Sharma [📧](mailto:manan2908@gmail.com)\n- Rahul Ragesh [📧](mailto:rahulragesh@microsoft.com)\n- Arun Iyer [📧](mailto:ariy@microsoft.com)\n- Sundararajan Sellamanickam [📧](mailto:ssrajan@microsoft.com)\n- B. Ashok (BASH) [📧](mailto:bash@microsoft.com)\n\n## Contributing\n\nThis project welcomes contributions and suggestions.  Most contributions require you to agree to a\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\nthe rights to use your contribution. For details, visit \u003chttps://cla.opensource.microsoft.com\u003e.\n\nWhen you submit a pull request, a CLA bot will automatically determine whether you need to provide\na CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions\nprovided by the bot. You will only need to do this once across all repos using our CLA.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft\ntrademarks or logos is subject to and must follow\n[Microsoft's Trademark \u0026 Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fppgnn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrosoft%2Fppgnn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fppgnn/lists"}