{"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/subquadratic-kronecker-regression-with","title":"Subquadratic Kronecker Regression with Applications to Tensor Decomposition","arxiv_id":"2209.04876","date":"2022-09-11","proceeding":null,"authors":["Matthew Fahrbach","Thomas Fu","Mehrdad Ghadiri"],"abstract":"Kronecker regression is a highly-structured least squares problem $\\min_{\\mathbf{x}} \\lVert \\mathbf{K}\\mathbf{x} - \\mathbf{b} \\rVert_{2}^2$, where the design matrix $\\mathbf{K} = \\mathbf{A}^{(1)} \\otimes \\cdots \\otimes \\mathbf{A}^{(N)}$ is a Kronecker product of factor matrices. This regression problem arises in each step of the widely-used alternating least squares (ALS) algorithm for computing the Tucker decomposition of a tensor. We present the first subquadratic-time algorithm for solving Kronecker regression to a $(1+\\varepsilon)$-approximation that avoids the exponential term $O(\\varepsilon^{-N})$ in the running time. Our techniques combine leverage score sampling and iterative methods. By extending our approach to block-design matrices where one block is a Kronecker product, we also achieve subquadratic-time algorithms for (1) Kronecker ridge regression and (2) updating the factor matrices of a Tucker decomposition in ALS, which is not a pure Kronecker regression problem, thereby improving the running time of all steps of Tucker ALS. We demonstrate the speed and accuracy of this Kronecker regression algorithm on synthetic data and real-world image tensors.","url_abs":"https://arxiv.org/abs/2209.04876v2","url_pdf":"https://arxiv.org/pdf/2209.04876v2.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":"subquadratic-kronecker-regression-with","repo_url":"https://github.com/fahrbach/subquadratic-kronecker-regression","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"tensor-decomposition","task_name":"Tensor Decomposition"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[{"method_slug":"als","method_name":"ALS"},{"method_slug":"speed","method_name":"SPEED"},{"method_slug":"tucker","method_name":"TuckER"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2209.04876","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2209.04876"}},"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/fahrbach/subquadratic-kronecker-regression","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":17},"by_repo_kind":{"official":{"samples":17,"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":"82c781f4547b2669","entry":"ComputeLossTerms","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"tucker_als.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/tucker_als.py","link_basis":"harvester_set","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":"82c781f4547b2669"}},{"code_sha256_prefix":"32d613ea9e77d51b","entry":"compute_ridge_leverage_scores","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"tucker_als.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/tucker_als.py","link_basis":"harvester_set","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":"32d613ea9e77d51b"}},{"code_sha256_prefix":"c14379352ef2082f","entry":"create_regression_experiment_01","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"kronecker_regression_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/kronecker_regression_main.py","link_basis":"harvester_set","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":"c14379352ef2082f"}},{"code_sha256_prefix":"eb116619cfd8e34a","entry":"get_eigs","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"upper_bound_experiment.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/upper_bound_experiment.py","link_basis":"harvester_set","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":"eb116619cfd8e34a"}},{"code_sha256_prefix":"2cd73c0cc8f82e5b","entry":"get_output_filename_prefix","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"tensor_data_handler.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/tensor_data_handler.py","link_basis":"harvester_set","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":"2cd73c0cc8f82e5b"}},{"code_sha256_prefix":"f295c618bf061a18","entry":"get_ridge_leverage_score_matrix","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"upper_bound_experiment.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/upper_bound_experiment.py","link_basis":"harvester_set","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":"f295c618bf061a18"}},{"code_sha256_prefix":"6320a3bc98e8aa3b","entry":"kron_mat_mult","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"tucker_als.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/tucker_als.py","link_basis":"harvester_set","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":"6320a3bc98e8aa3b"}},{"code_sha256_prefix":"2bbf21749cd13578","entry":"kronecker_product","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"kronecker_regression_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/kronecker_regression_main.py","link_basis":"harvester_set","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":"2bbf21749cd13578"}},{"code_sha256_prefix":"565559f51bbf56ac","entry":"loss_function","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"kronecker_regression_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/kronecker_regression_main.py","link_basis":"harvester_set","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":"565559f51bbf56ac"}},{"code_sha256_prefix":"67c61c9c639a565c","entry":"random_gaussian_design_matrix_min_betas","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"upper_bound_experiment.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/upper_bound_experiment.py","link_basis":"harvester_set","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":"67c61c9c639a565c"}},{"code_sha256_prefix":"4b52a8280877e3e3","entry":"read_and_parse_log_file","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"get_mean_runtime.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/get_mean_runtime.py","link_basis":"harvester_set","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":"4b52a8280877e3e3"}},{"code_sha256_prefix":"5df2e021bfb18192","entry":"read_hooi_rre","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"extract_tensor_decomposition_output.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/extract_tensor_decomposition_output.py","link_basis":"harvester_set","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":"5df2e021bfb18192"}},{"code_sha256_prefix":"162e2d122a391a5f","entry":"read_hooi_time","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"extract_tensor_decomposition_output.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/extract_tensor_decomposition_output.py","link_basis":"harvester_set","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":"162e2d122a391a5f"}},{"code_sha256_prefix":"df933c150238639d","entry":"read_rre","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"extract_tensor_decomposition_output.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/extract_tensor_decomposition_output.py","link_basis":"harvester_set","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":"df933c150238639d"}},{"code_sha256_prefix":"87cf5dc0462ab0d3","entry":"solve_least_squares","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"all_tucker_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/all_tucker_main.py","link_basis":"harvester_set","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":"87cf5dc0462ab0d3"}},{"code_sha256_prefix":"502528d393a1debc","entry":"tensor_index_to_vec_index","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"all_tucker_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/all_tucker_main.py","link_basis":"harvester_set","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":"502528d393a1debc"}},{"code_sha256_prefix":"ea2d967d838577d7","entry":"vec_index_to_tensor_index","repo":"fahrbach/subquadratic-kronecker-regression","repo_kind":"official","path":"all_tucker_main.py","file_url":"https://github.com/fahrbach/subquadratic-kronecker-regression/blob/HEAD/all_tucker_main.py","link_basis":"harvester_set","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":"ea2d967d838577d7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}