{ "info": { "author": "Christian Grussler", "author_email": "christian.grussler@eng.cam.ac.uk", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# LRIPy\nPython code for Low-rank optimization by Low-Rank Inducing Norms as well as non-convex Douglas-Rachford. \n\n## Purpose:\nLow-rank rank inducing norms and non-convex Proximal Splitting Algoriths attempt to find exact rank/cardinality-r solutions to minimization problems with convex loss functions, i.e., avoiding of regularzation heuristics. LRIPy provides Python implementations for the proximal mappings of the low-rank inducing Frobenius and Spectral norms, as well as, their epi-graph projections and non-convex counter parts.\n\n## Literature:\n\n### Low-rank inducing norms: \n* [Rank Reduction with Convex Constraints](https://lup.lub.lu.se/search/publication/54cb814f-59fe-4bc9-a7ef-773cbcf06889)\n* [Low-rank Inducing Norms with Optimality Interpretations](https://arxiv.org/abs/1612.03186)\n* [Low-rank Optimization with Convex Constraints](https://arxiv.org/abs/1606.01793)\n* [The Use of the r* Heuristic in Covariance Completion Problems](http://www.control.lth.se/index.php?mact=ReglerPublicationsB,cntnt01,showpublication,0&cntnt01LUPid=a61669c7-29b9-41ee-82da-9c825b08f8d8&cntnt01returnid=60)\n* [On optimal low-rank approximation of non-negative matirces](http://lup.lub.lu.se/search/ws/files/21812505/2015cdcGrusslerRantzer.pdf)\n\n### Non-convex counter parts:\n* [Local Convergence of Proximal Splittinge Methods for Rank Constrained Problems](https://arxiv.org/abs/1710.04248)\n\n## Installation\n\nThe easiest way to install the package is to run ``pip install lripy``. To install the package from source, run ``python setup.py install`` in the main folder. \n\n## Documentation\nIn the following it holds that\n* for the low-rank inducing Frobenius norm: p = 2\n* for the low-rank inducing Spectral norm: p = 'inf'\n\n### Examples\nThere are two examples in the \"example\" folder:\n\n1. Exact Matrix Completion\n2. Low-rank approximation with Hankel constraint\n\n### Optimization\n\nLRIPy contains Douglas-Rachford splitting implementations for \"Exact Matrix Completion\" and \"Low-rank Hankel Approximation\", both with low-rank inducing norms, as well as, non-convex Douglas-Rachford splitting. It is easy to modify these functions for other constraints! \n\n#### Exact Matrix completion\n\nLet N be a matrix and Index be a binary matrix of the same size, where the ones indicate the known entries N. We attempt to find a rank-r completion M:\n\n```\n# Import the Douglas-Rachford Completion function:\n\nfrom lripy import drcomplete\n\n# Low-rank inducing norms with Douglas-Rachford splitting:\n\nM = drcomplete(N,Index,r,p)[0]\n\n# Non-convex Douglas-Rachford splitting:\n\nM = drcomplete(N,Index,r,p,solver = 'NDR')[0]\n```\n\n#### Low-rank Hankel Approximation\n\nLet H be a matrix. We attempt to find a rank-r Hankel approximation M that minimizes the Frobenius norm:\n\n```\n# Import the Douglas-Rachford Hankel Approximation function:\n\nfrom lripy import drhankelapprox\n\n# Low-rank inducing norms with Douglas-Rachford splitting:\n\nM = drhankelapprox(H,r)[0]\n\n# Non-convex Douglas-Rachford splitting:\n\nM = drhankelapprox(H,r,solver = 'NDR')[0]\n```\n\n### Proximal Mappings\nLRIPy provides Python implemenations for the proximal mappings to the low-rank inducing Frobenius and Spectral norm as well as their epi-graph projections and non-convex counter parts.\n\n#### Low-rank inducing Spectral and Frobenius norms: \n\nProximal mapping of the low-rank inducing norms at Z with parameter r and scaling factor gamma:\n```\nX = proxnormrast(Z,r,p,gamma)[0]\n```\n#### Squared Low-rank inducing Spectral and Frobenius norms: \nProximal mapping of the SQUARED low-rank inducing norms at Z with parameter r and scaling factor gamma:\n```\nX = proxnormrast_square(Z,r,p,gamma)[0]\n```\n#### Projection onto the epi-graph of the low-rank inducing norms: \nProjection of (Z,zv) on the epi-graph of the low-rank inducing norms with parameter r and scaling factor gamma:\n```\nX,xv = projrast(Z,zv,r,p,gamma)[0:2]\n```\n\n#### Non-convex proximal mappings for Frobenius and Spectral norm: \n\nNon-convex proximal mapping of at Z with parameter r and scaling factor gamma:\n```\nX = proxnonconv(Z,r,p,gamma)\n```\n#### Non-convex proximal mappings for squared Frobenius and Spectral norm:\nNon-convex proximal mapping for the SQUARED norms at Z with parameter r and scaling factor gamma:\n```\nX = proxnonconv_square(Z,r,p,gamma)\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/LowRankOpt/LRIPy", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "lripy", "package_url": "https://pypi.org/project/lripy/", "platform": "", "project_url": "https://pypi.org/project/lripy/", "project_urls": { "Homepage": "http://github.com/LowRankOpt/LRIPy" }, "release_url": "https://pypi.org/project/lripy/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "Python implementation for optimization with Low-Rank Inducing Norms", "version": "0.0.2" }, "last_serial": 4162118, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6b430e821bdc3bd5ffc904731470a83d", "sha256": "84d1fb1e8c08a5d9d3b308d8fdbd8bc0b13d3d374e151f1720135a95b0c4c437" }, "downloads": -1, "filename": "lripy-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b430e821bdc3bd5ffc904731470a83d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21621, "upload_time": "2018-08-08T22:48:17", "url": "https://files.pythonhosted.org/packages/e3/fe/7a570ed7910b3c569aaebe4dc8786ead79df236c9ea618fe766cde315513/lripy-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26170ef6e4e16e1cb1207a8ab532f609", "sha256": "ad8e5b2ad90ef1afabfbaa20286b484497b85b107b12c1d8feef66176844d2ec" }, "downloads": -1, "filename": "lripy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "26170ef6e4e16e1cb1207a8ab532f609", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14782, "upload_time": "2018-08-08T22:48:18", "url": "https://files.pythonhosted.org/packages/77/de/f38da02e3ac1729609bd66e570cf8774bcef32fe83740e2fd5161303306b/lripy-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fb3580f9720ab739d43dce0b5c268120", "sha256": "cdd0f35145ce2052d49f6a114534a5863d6920c8e563a21dd4d115aea3379356" }, "downloads": -1, "filename": "lripy-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fb3580f9720ab739d43dce0b5c268120", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21585, "upload_time": "2018-08-12T17:34:29", "url": "https://files.pythonhosted.org/packages/95/fe/e526c2c60b1b4790e0065ff90f1b98d858f3e9646836dd4bb3aeb526eec8/lripy-0.0.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fb3580f9720ab739d43dce0b5c268120", "sha256": "cdd0f35145ce2052d49f6a114534a5863d6920c8e563a21dd4d115aea3379356" }, "downloads": -1, "filename": "lripy-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fb3580f9720ab739d43dce0b5c268120", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21585, "upload_time": "2018-08-12T17:34:29", "url": "https://files.pythonhosted.org/packages/95/fe/e526c2c60b1b4790e0065ff90f1b98d858f3e9646836dd4bb3aeb526eec8/lripy-0.0.2-py3-none-any.whl" } ] }