{"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/co-optimal-transport","title":"CO-Optimal Transport","arxiv_id":"2002.03731","date":"2020-02-10","proceeding":"NeurIPS 2020 12","authors":["Ievgen Redko","Titouan Vayer","Rémi Flamary","Nicolas Courty"],"abstract":"Optimal transport (OT) is a powerful geometric and probabilistic tool for finding correspondences and measuring similarity between two distributions. Yet, its original formulation relies on the existence of a cost function between the samples of the two distributions, which makes it impractical when they are supported on different spaces. To circumvent this limitation, we propose a novel OT problem, named COOT for CO-Optimal Transport, that simultaneously optimizes two transport maps between both samples and features, contrary to other approaches that either discard the individual features by focusing on pairwise distances between samples or need to model explicitly the relations between them. We provide a thorough theoretical analysis of our problem, establish its rich connections with other OT-based distances and demonstrate its versatility with two machine learning applications in heterogeneous domain adaptation and co-clustering/data summarization, where COOT leads to performance improvements over the state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2002.03731v3","url_pdf":"https://arxiv.org/pdf/2002.03731v3.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":"co-optimal-transport","repo_url":"https://github.com/PythonOT/COOT","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"data-summarization","task_name":"Data Summarization"},{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2002.03731","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2002.03731"}},"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/PythonOT/COOT","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"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":"669b5b5eaf9a8ec0","entry":"cot_clustering","repo":"PythonOT/COOT","repo_kind":"official","path":"expe/cot_coclustering_sim.py","file_url":"https://github.com/PythonOT/COOT/blob/HEAD/expe/cot_coclustering_sim.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":"669b5b5eaf9a8ec0"}},{"code_sha256_prefix":"fa8d74150e95bb61","entry":"generatedata","repo":"PythonOT/COOT","repo_kind":"official","path":"code/blockSim.py","file_url":"https://github.com/PythonOT/COOT/blob/HEAD/code/blockSim.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":"fa8d74150e95bb61"}},{"code_sha256_prefix":"06b676a4c0d261da","entry":"init_matrix_np","repo":"PythonOT/COOT","repo_kind":"official","path":"code/cot.py","file_url":"https://github.com/PythonOT/COOT/blob/HEAD/code/cot.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":"06b676a4c0d261da"}},{"code_sha256_prefix":"72f6ccaf68cd3534","entry":"partitionrnd","repo":"PythonOT/COOT","repo_kind":"official","path":"code/blockSim.py","file_url":"https://github.com/PythonOT/COOT/blob/HEAD/code/blockSim.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":"72f6ccaf68cd3534"}},{"code_sha256_prefix":"793c6ff784066d5a","entry":"sinkhorn_scaling","repo":"PythonOT/COOT","repo_kind":"official","path":"code/bregman.py","file_url":"https://github.com/PythonOT/COOT/blob/HEAD/code/bregman.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":"793c6ff784066d5a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}