{"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/on-line-learning-of-linear-dynamical-systems","title":"On-Line Learning of Linear Dynamical Systems: Exponential Forgetting in Kalman Filters","arxiv_id":"1809.05870","date":"2018-09-16","proceeding":"AAAI 2019","authors":["Mark Kozdoba","Jakub Marecek","Tigran Tchrakian","Shie Mannor"],"abstract":"Kalman filter is a key tool for time-series forecasting and analysis. We show\nthat the dependence of a prediction of Kalman filter on the past is decaying\nexponentially, whenever the process noise is non-degenerate. Therefore, Kalman\nfilter may be approximated by regression on a few recent observations.\nSurprisingly, we also show that having some process noise is essential for the\nexponential decay. With no process noise, it may happen that the forecast\ndepends on all of the past uniformly, which makes forecasting more difficult.\n  Based on this insight, we devise an on-line algorithm for improper learning\nof a linear dynamical system (LDS), which considers only a few most recent\nobservations. We use our decay results to provide the first regret bounds\nw.r.t. to Kalman filters within learning an LDS. That is, we compare the\nresults of our algorithm to the best, in hindsight, Kalman filter for a given\nsignal. Also, the algorithm is practical: its per-update run-time is linear in\nthe regression depth.","url_abs":"http://arxiv.org/abs/1809.05870v1","url_pdf":"http://arxiv.org/pdf/1809.05870v1.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":"on-line-learning-of-linear-dynamical-systems","repo_url":"https://github.com/jmarecek/OnlineLDS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"time-series-forecasting","task_name":"Time Series Forecasting"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1809.05870","atlas_url":"https://app.syntology.ai/?focus=1809.05870","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1809.05870"}},"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/jmarecek/OnlineLDS","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":4},"by_repo_kind":{"listed":{"samples":4,"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":"6ae7f12ed9b19f35","entry":"cost_ftl","repo":"jmarecek/OnlineLDS","repo_kind":"listed","path":"onlinelds.py","file_url":"https://github.com/jmarecek/OnlineLDS/blob/HEAD/onlinelds.py","link_basis":"harvester_set","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":"6ae7f12ed9b19f35"}},{"code_sha256_prefix":"d667a8a36506970b","entry":"gradient_ftl","repo":"jmarecek/OnlineLDS","repo_kind":"listed","path":"onlinelds.py","file_url":"https://github.com/jmarecek/OnlineLDS/blob/HEAD/onlinelds.py","link_basis":"harvester_set","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":"d667a8a36506970b"}},{"code_sha256_prefix":"f3ef841c0231fd21","entry":"heatmap","repo":"jmarecek/OnlineLDS","repo_kind":"listed","path":"experiments.py","file_url":"https://github.com/jmarecek/OnlineLDS/blob/HEAD/experiments.py","link_basis":"harvester_set","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":"f3ef841c0231fd21"}},{"code_sha256_prefix":"24a2ec8c6ceb8b92","entry":"wave_filtering_SISO","repo":"jmarecek/OnlineLDS","repo_kind":"listed","path":"onlinelds.py","file_url":"https://github.com/jmarecek/OnlineLDS/blob/HEAD/onlinelds.py","link_basis":"harvester_set","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":"24a2ec8c6ceb8b92"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}