{"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/factor-fitting-rank-allocation-and","title":"Factor Fitting, Rank Allocation, and Partitioning in Multilevel Low Rank Matrices","arxiv_id":"2310.19214","date":"2023-10-30","proceeding":null,"authors":["Tetiana Parshakova","Trevor Hastie","Eric Darve","Stephen Boyd"],"abstract":"We consider multilevel low rank (MLR) matrices, defined as a row and column permutation of a sum of matrices, each one a block diagonal refinement of the previous one, with all blocks low rank given in factored form. MLR matrices extend low rank matrices but share many of their properties, such as the total storage required and complexity of matrix-vector multiplication. We address three problems that arise in fitting a given matrix by an MLR matrix in the Frobenius norm. The first problem is factor fitting, where we adjust the factors of the MLR matrix. The second is rank allocation, where we choose the ranks of the blocks in each level, subject to the total rank having a given value, which preserves the total storage needed for the MLR matrix. The final problem is to choose the hierarchical partition of rows and columns, along with the ranks and factors. This paper is accompanied by an open source package that implements the proposed methods.","url_abs":"https://arxiv.org/abs/2310.19214v1","url_pdf":"https://arxiv.org/pdf/2310.19214v1.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":"factor-fitting-rank-allocation-and","repo_url":"https://github.com/cvxgrp/mlr_fitting","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"factor-fitting-rank-allocation-and","repo_url":"https://github.com/cvxgrp/multilevel_factor_model","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.19214","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.19214"}},"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/cvxgrp/multilevel_factor_model","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cvxgrp/mlr_fitting","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":10,"unverified":8},"by_repo_kind":{"official":{"samples":18,"ran":10,"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":"9fe3e7947e1e8bbc","entry":"block_diag_lk_t","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/mlr_symm_hpar_matmul.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/mlr_symm_hpar_matmul.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":"9fe3e7947e1e8bbc"}},{"code_sha256_prefix":"c9abc485229b62f1","entry":"dct_matrix","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/example_matrices.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/example_matrices.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":"c9abc485229b62f1"}},{"code_sha256_prefix":"0d91e922e5c6680c","entry":"dgt_matrix","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/example_matrices.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/example_matrices.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":"0d91e922e5c6680c"}},{"code_sha256_prefix":"a20a441fac22eb19","entry":"frob_low_rank","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/low_rank.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/low_rank.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":"a20a441fac22eb19"}},{"code_sha256_prefix":"346476c10c7a3c2b","entry":"frob_low_rank_psd","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/low_rank.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/low_rank.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":"346476c10c7a3c2b"}},{"code_sha256_prefix":"30b99a32209ad6f9","entry":"full_htree_to_hpart","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/utils.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/utils.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":"30b99a32209ad6f9"}},{"code_sha256_prefix":"cf77baca5261aefd","entry":"get_device","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/utils.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/utils.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":"cf77baca5261aefd"}},{"code_sha256_prefix":"ef521c44c1904120","entry":"mult_blockdiag_refined_BCt","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/mlr_symm_hpar_matmul.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/mlr_symm_hpar_matmul.py","link_basis":"harvester_set","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":"ef521c44c1904120"}},{"code_sha256_prefix":"5aad5be17baa3de7","entry":"mult_blockdiag_refined_CtB","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/mlr_symm_hpar_matmul.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/mlr_symm_hpar_matmul.py","link_basis":"harvester_set","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":"5aad5be17baa3de7"}},{"code_sha256_prefix":"d802ffab8d362ad7","entry":"rel_diff","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/utils.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/utils.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":"d802ffab8d362ad7"}},{"code_sha256_prefix":"8d90975cb8bbc3e0","entry":"build_hodlr","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/hodlr_methods.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/hodlr_methods.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":"8d90975cb8bbc3e0"}},{"code_sha256_prefix":"74da1b8799c39cd6","entry":"build_hodlr_contiguous","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/hodlr_methods.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/hodlr_methods.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":"74da1b8799c39cd6"}},{"code_sha256_prefix":"02428dc40faf1617","entry":"diag_sparseBCt","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/psd_factorised.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/psd_factorised.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":"02428dc40faf1617"}},{"code_sha256_prefix":"843bb2fea0375328","entry":"frob_loss","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/psd_factorised.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/psd_factorised.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":"843bb2fea0375328"}},{"code_sha256_prefix":"91c9204b0e796760","entry":"hpart_from_gsubind","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/hpartitioning.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/hpartitioning.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":"91c9204b0e796760"}},{"code_sha256_prefix":"27adefd8135a0868","entry":"low_rank_approx_tol","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/hodlr_methods.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/hodlr_methods.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":"27adefd8135a0868"}},{"code_sha256_prefix":"f9d7aa2aa047b4dc","entry":"svds_using_factoring","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/low_rank.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/low_rank.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":"f9d7aa2aa047b4dc"}},{"code_sha256_prefix":"119d622ae564a485","entry":"update_single_block_delta_psd_jit","repo":"cvxgrp/mlr_fitting","repo_kind":"official","path":"mlrfit/fit.py","file_url":"https://github.com/cvxgrp/mlr_fitting/blob/HEAD/mlrfit/fit.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":"119d622ae564a485"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}