{"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/efficient-low-rank-matrix-estimation","title":"Efficient Low-Rank Matrix Estimation, Experimental Design, and Arm-Set-Dependent Low-Rank Bandits","arxiv_id":"2402.11156","date":"2024-02-17","proceeding":null,"authors":["Kyoungseok Jang","Chicheng Zhang","Kwang-Sung Jun"],"abstract":"We study low-rank matrix trace regression and the related problem of low-rank matrix bandits. Assuming access to the distribution of the covariates, we propose a novel low-rank matrix estimation method called LowPopArt and provide its recovery guarantee that depends on a novel quantity denoted by B(Q) that characterizes the hardness of the problem, where Q is the covariance matrix of the measurement distribution. We show that our method can provide tighter recovery guarantees than classical nuclear norm penalized least squares (Koltchinskii et al., 2011) in several problems. To perform efficient estimation with a limited number of measurements from an arbitrarily given measurement set A, we also propose a novel experimental design criterion that minimizes B(Q) with computational efficiency. We leverage our novel estimator and design of experiments to derive two low-rank linear bandit algorithms for general arm sets that enjoy improved regret upper bounds. This improves over previous works on low-rank bandits, which make somewhat restrictive assumptions that the arm set is the unit ball or that an efficient exploration distribution is given. To our knowledge, our experimental design criterion is the first one tailored to low-rank matrix estimation beyond the naive reduction to linear regression, which can be of independent interest.","url_abs":"https://arxiv.org/abs/2402.11156v2","url_pdf":"https://arxiv.org/pdf/2402.11156v2.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":"efficient-low-rank-matrix-estimation","repo_url":"https://github.com/jajajang/lowpopart","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"},{"task_slug":"efficient-exploration","task_name":"Efficient Exploration"},{"task_slug":"experimental-design","task_name":"Experimental Design"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2402.11156","atlas_url":"https://app.syntology.ai/?focus=2402.11156","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.11156"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/jajajang/lowpopart","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7,"unverified":9},"by_repo_kind":{"official":{"samples":16,"ran":7,"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":"ae6af5cbb1e3b661","entry":"SaveToDict","repo":"jajajang/lowpopart","repo_kind":"official","path":"myutils3_v2.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/myutils3_v2.py","link_basis":"first_harvest_node","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":"ae6af5cbb1e3b661"}},{"code_sha256_prefix":"fbef27b0fdd2a642","entry":"argmax_finder","repo":"jajajang/lowpopart","repo_kind":"official","path":"COBYLA_time_measure.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/COBYLA_time_measure.py","link_basis":"first_harvest_node","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":"fbef27b0fdd2a642"}},{"code_sha256_prefix":"c995a8e209cf8276","entry":"con","repo":"jajajang/lowpopart","repo_kind":"official","path":"COBYLA_time_measure.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/COBYLA_time_measure.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c995a8e209cf8276"}},{"code_sha256_prefix":"7621bb71a57a61eb","entry":"create_action","repo":"jajajang/lowpopart","repo_kind":"official","path":"eFALB_time_measure.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/eFALB_time_measure.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7621bb71a57a61eb"}},{"code_sha256_prefix":"9ab3050e92f51454","entry":"create_action","repo":"jajajang/lowpopart","repo_kind":"official","path":"eFALB_time_measure_old.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/eFALB_time_measure_old.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9ab3050e92f51454"}},{"code_sha256_prefix":"6ef2ca50d0be277e","entry":"create_unitvec","repo":"jajajang/lowpopart","repo_kind":"official","path":"COBYLA_time_measure.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/COBYLA_time_measure.py","link_basis":"first_harvest_node","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":"6ef2ca50d0be277e"}},{"code_sha256_prefix":"118f8811f37a96a2","entry":"gloc_solve_by_cvx","repo":"jajajang/lowpopart","repo_kind":"official","path":"new_lowrank_231016.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/new_lowrank_231016.py","link_basis":"first_harvest_node","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":"118f8811f37a96a2"}},{"code_sha256_prefix":"3fa29d4dfae20402","entry":"calc_regret","repo":"jajajang/lowpopart","repo_kind":"official","path":"bleval.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/bleval.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":"3fa29d4dfae20402"}},{"code_sha256_prefix":"0197a59100ee5153","entry":"calc_sqrt_beta_det2","repo":"jajajang/lowpopart","repo_kind":"official","path":"new_lowrank_231016.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/new_lowrank_231016.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":"0197a59100ee5153"}},{"code_sha256_prefix":"1654e6bdc10c5fb7","entry":"calc_sqrt_beta_det3","repo":"jajajang/lowpopart","repo_kind":"official","path":"new_lowrank_231016.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/new_lowrank_231016.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":"1654e6bdc10c5fb7"}},{"code_sha256_prefix":"776552ddd96c25f2","entry":"hybrid","repo":"jajajang/lowpopart","repo_kind":"official","path":"calcsubset.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/calcsubset.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":"776552ddd96c25f2"}},{"code_sha256_prefix":"6bd2a21260e7da09","entry":"paramGetList","repo":"jajajang/lowpopart","repo_kind":"official","path":"expr01_defs_230927.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/expr01_defs_230927.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":"6bd2a21260e7da09"}},{"code_sha256_prefix":"145e06abd7795fe0","entry":"paramGetList0","repo":"jajajang/lowpopart","repo_kind":"official","path":"expr01_defs_230927.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/expr01_defs_230927.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":"145e06abd7795fe0"}},{"code_sha256_prefix":"99c80b4ab0f7790d","entry":"paramGetList1","repo":"jajajang/lowpopart","repo_kind":"official","path":"expr01_defs_230927.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/expr01_defs_230927.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":"99c80b4ab0f7790d"}},{"code_sha256_prefix":"4cf818bbd16056ad","entry":"random","repo":"jajajang/lowpopart","repo_kind":"official","path":"calcsubset.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/calcsubset.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":"4cf818bbd16056ad"}},{"code_sha256_prefix":"41203af0d3b527c1","entry":"sdp","repo":"jajajang/lowpopart","repo_kind":"official","path":"calcsubset.py","file_url":"https://github.com/jajajang/lowpopart/blob/HEAD/calcsubset.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":"41203af0d3b527c1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}