{"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/dedpul-method-for-mixture-proportion","title":"DEDPUL: Difference-of-Estimated-Densities-based Positive-Unlabeled Learning","arxiv_id":"1902.06965","date":"2019-02-19","proceeding":null,"authors":["Dmitry Ivanov"],"abstract":"Positive-Unlabeled (PU) learning is an analog to supervised binary classification for the case when only the positive sample is clean, while the negative sample is contaminated with latent instances of positive class and hence can be considered as an unlabeled mixture. The objectives are to classify the unlabeled sample and train an unbiased PN classifier, which generally requires to identify the mixing proportions of positives and negatives first. Recently, unbiased risk estimation framework has achieved state-of-the-art performance in PU learning. This approach, however, exhibits two major bottlenecks. First, the mixing proportions are assumed to be identified, i.e. known in the domain or estimated with additional methods. Second, the approach relies on the classifier being a neural network. In this paper, we propose DEDPUL, a method that solves PU Learning without the aforementioned issues. The mechanism behind DEDPUL is to apply a computationally cheap post-processing procedure to the predictions of any classifier trained to distinguish positive and unlabeled data. Instead of assuming the proportions to be identified, DEDPUL estimates them alongside with classifying unlabeled sample. Experiments show that DEDPUL outperforms the current state-of-the-art in both proportion estimation and PU Classification.","url_abs":"https://arxiv.org/abs/1902.06965v5","url_pdf":"https://arxiv.org/pdf/1902.06965v5.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":"dedpul-method-for-mixture-proportion","repo_url":"https://github.com/dimonenka/DEDPUL","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"binary-classification","task_name":"Binary Classification"},{"task_slug":"density-estimation","task_name":"Density Estimation"},{"task_slug":"classification","task_name":"General Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1902.06965","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1902.06965"}},"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/dimonenka/DEDPUL","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":11,"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":"2fc1e462fa17bf92","entry":"all_convolution","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"NN_functions.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/NN_functions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2fc1e462fa17bf92"}},{"code_sha256_prefix":"c7b90aa51789cfcf","entry":"compute_best_rbf_kernel_width","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"KMPE.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/KMPE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c7b90aa51789cfcf"}},{"code_sha256_prefix":"de4c8b239a02d418","entry":"compute_log_likelihood","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"utils.py","file_url":"https://github.com/dimonenka/DEDPUL/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"de4c8b239a02d418"}},{"code_sha256_prefix":"3362ee82dfdbe3e8","entry":"d_loss_standard","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"NN_functions.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/NN_functions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3362ee82dfdbe3e8"}},{"code_sha256_prefix":"e89d726f7cb1bfcd","entry":"estimate_preds_cv_sklearn","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"algorithms.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e89d726f7cb1bfcd"}},{"code_sha256_prefix":"fdf1ad5d8442958e","entry":"get_discriminator","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"NN_functions.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/NN_functions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fdf1ad5d8442958e"}},{"code_sha256_prefix":"7116aa940a83577a","entry":"loguniform","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"utils.py","file_url":"https://github.com/dimonenka/DEDPUL/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7116aa940a83577a"}},{"code_sha256_prefix":"1ff62228d9b009fc","entry":"low_c","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"TIcE.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/TIcE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1ff62228d9b009fc"}},{"code_sha256_prefix":"8539d764f42cb41e","entry":"max_bepp","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"TIcE.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/TIcE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8539d764f42cb41e"}},{"code_sha256_prefix":"50b21e7e6829bc67","entry":"pick_delta","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"TIcE.py","file_url":"https://github.com/dimonenka/DEDPUL/blob/HEAD/TIcE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"50b21e7e6829bc67"}},{"code_sha256_prefix":"a57fe4dd902f2b9a","entry":"rolling_apply","repo":"dimonenka/DEDPUL","repo_kind":"official","path":"utils.py","file_url":"https://github.com/dimonenka/DEDPUL/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a57fe4dd902f2b9a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}