{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/enhancing-graph-neural-network-based-fraud","title":"Enhancing Graph Neural Network-based Fraud Detectors against Camouflaged Fraudsters","arxiv_id":"2008.08692","date":"2020-08-19","proceeding":null,"authors":["Yingtong Dou","Zhiwei Liu","Li Sun","Yutong Deng","Hao Peng","Philip S. Yu"],"abstract":"Graph Neural Networks (GNNs) have been widely applied to fraud detection problems in recent years, revealing the suspiciousness of nodes by aggregating their neighborhood information via different relations. However, few prior works have noticed the camouflage behavior of fraudsters, which could hamper the performance of GNN-based fraud detectors during the aggregation process. In this paper, we introduce two types of camouflages based on recent empirical studies, i.e., the feature camouflage and the relation camouflage. Existing GNNs have not addressed these two camouflages, which results in their poor performance in fraud detection problems. Alternatively, we propose a new model named CAmouflage-REsistant GNN (CARE-GNN), to enhance the GNN aggregation process with three unique modules against camouflages. Concretely, we first devise a label-aware similarity measure to find informative neighboring nodes. Then, we leverage reinforcement learning (RL) to find the optimal amounts of neighbors to be selected. Finally, the selected neighbors across different relations are aggregated together. Comprehensive experiments on two real-world fraud datasets demonstrate the effectiveness of the RL algorithm. The proposed CARE-GNN also outperforms state-of-the-art GNNs and GNN-based fraud detectors. We integrate all GNN-based fraud detectors as an opensource toolbox: https://github.com/safe-graph/DGFraud. The CARE-GNN code and datasets are available at https://github.com/YingtongDou/CARE-GNN.","url_abs":"https://arxiv.org/abs/2008.08692v1","url_pdf":"https://arxiv.org/pdf/2008.08692v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/YingtongDou/CARE-GNN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/safe-graph/DGFraud","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/safe-graph/dgfraud-tf2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/thudm/graphcad","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/zjunet/amnet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"enhancing-graph-neural-network-based-fraud","repo_url":"https://github.com/dmlc/dgl/tree/master/examples/pytorch/caregnn","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"fraud-detection","task_name":"Fraud Detection"},{"task_slug":"graph-mining","task_name":"Graph Mining"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"}],"methods":[],"datasets_introduced":[{"slug":"amazon-fraud","name":"Amazon-Fraud","full_name":"Multi-relational Graph Dataset for Amazon Fraudulent Account Detection"},{"slug":"yelpchi","name":"Yelp-Fraud","full_name":"Multi-relational Graph Dataset for Yelp Spam Review Detection"}],"methods_introduced":[],"results":[{"leaderboard":"/sota/fraud-detection-on-amazon-fraud","task":"Fraud Detection","dataset":"Amazon-Fraud","model":"CARE-GNN","rank_in_archive_order":6,"of":6,"metrics":{"AUC-ROC":"89.73","Averaged Precision":"82.19"},"uses_additional_data":false},{"leaderboard":"/sota/fraud-detection-on-yelp-fraud","task":"Fraud Detection","dataset":"Yelp-Fraud","model":"CARE-GNN","rank_in_archive_order":10,"of":10,"metrics":{"AUC-ROC":"75.70","Averaged Precision":"42.68"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-amazon-fraud","task":"Node Classification","dataset":"Amazon-Fraud","model":"CARE-GNN","rank_in_archive_order":6,"of":6,"metrics":{"AUC-ROC":"89.73"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-yelpchi","task":"Node Classification","dataset":"Yelp-Fraud","model":"CARE-GNN","rank_in_archive_order":9,"of":9,"metrics":{"AUC-ROC":"75.70"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2008.08692","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2008.08692"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/safe-graph/DGFraud","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zjunet/amnet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/safe-graph/dgfraud-tf2","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/thudm/graphcad","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dmlc/dgl/tree/master/examples/pytorch/caregnn","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YingtongDou/CARE-GNN","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":1,"unverified":16},"by_repo_kind":{"official":{"samples":10,"ran":1,"repositories":1},"listed":{"samples":7,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"5d14a28a520ecbee","entry":"normalize","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"utils.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/utils.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5d14a28a520ecbee"}},{"code_sha256_prefix":"ff287257b0b7f3a6","entry":"RLModule","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"layers.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/layers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ff287257b0b7f3a6"}},{"code_sha256_prefix":"d3e0193f69dfa61c","entry":"build_batch","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"algorithms/GraphConsis/GraphConsis_main.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/algorithms/GraphConsis/GraphConsis_main.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d3e0193f69dfa61c"}},{"code_sha256_prefix":"afac081736ef9604","entry":"build_batch","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"algorithms/GraphSage/GraphSage_main.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/algorithms/GraphSage/GraphSage_main.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"afac081736ef9604"}},{"code_sha256_prefix":"848f8034ca5d8ab4","entry":"compute_diffusion_matrix","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"algorithms/GraphConsis/GraphConsis_main.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/algorithms/GraphConsis/GraphConsis_main.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"848f8034ca5d8ab4"}},{"code_sha256_prefix":"c6c6448a408df9a3","entry":"compute_diffusion_matrix","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"algorithms/GraphSage/GraphSage_main.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/algorithms/GraphSage/GraphSage_main.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c6c6448a408df9a3"}},{"code_sha256_prefix":"2f5a6dba21e8cc75","entry":"date_diff","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"amazon_preprocess.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/amazon_preprocess.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2f5a6dba21e8cc75"}},{"code_sha256_prefix":"4c699fbcd8522a90","entry":"dot","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"layers/layers.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/layers/layers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4c699fbcd8522a90"}},{"code_sha256_prefix":"a9d2dcd649e1c69d","entry":"filter_neighs_ada_threshold","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"layers.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/layers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a9d2dcd649e1c69d"}},{"code_sha256_prefix":"9671520f763cedba","entry":"getdict","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"amazon_preprocess.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/amazon_preprocess.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9671520f763cedba"}},{"code_sha256_prefix":"2ab0f159b61e9e5b","entry":"load_data","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"utils.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2ab0f159b61e9e5b"}},{"code_sha256_prefix":"c80c8faa06ecf716","entry":"mean_inter_agg","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"layers.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/layers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c80c8faa06ecf716"}},{"code_sha256_prefix":"393c2aa36f176d58","entry":"normalize","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"simi_comp.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/simi_comp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"393c2aa36f176d58"}},{"code_sha256_prefix":"4f136d9fcf969069","entry":"pos_neg_split","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"utils.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4f136d9fcf969069"}},{"code_sha256_prefix":"00245cbc1ab1f183","entry":"scaled_dot_product_attention","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"layers/layers.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/layers/layers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"00245cbc1ab1f183"}},{"code_sha256_prefix":"fcf4f04027e8dde1","entry":"sparse_dropout","repo":"safe-graph/dgfraud-tf2","repo_kind":"listed","path":"layers/layers.py","file_url":"https://github.com/safe-graph/dgfraud-tf2/blob/HEAD/layers/layers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fcf4f04027e8dde1"}},{"code_sha256_prefix":"7785fece996c91c2","entry":"star_judge","repo":"YingtongDou/CARE-GNN","repo_kind":"official","path":"amazon_preprocess.py","file_url":"https://github.com/YingtongDou/CARE-GNN/blob/HEAD/amazon_preprocess.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7785fece996c91c2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}