abess: Fast Best Subset Selection
Project description
Overview
abess (Adaptive BEst Subset Selection) library aims to solve general best subset selection, i.e., find a small subset of predictors such that the resulting model is expected to have the highest accuracy. The selection for best subset shows great value in scientific researches and practical application. For example, clinicians wants to know whether a patient is health or not based on the expression level of a few of important genes.
This library implements a generic algorithm framework to find the optimal solution in an extremely fast way [1]. This framework now supports the detection of best subset under: linear regression, (multi-class) classification, censored-response modeling [2], multi-response modeling (a.k.a. multi-tasks learning), etc. It also supports the variants of best subset selection like group best subset selection [3] and nuisance best subset selection [4]. Especially, the time complexity of (group) best subset selection for linear regression is certifiably polynomial [1] [3].
Quick start
Install the stable abess Python package from Pypi:
$ pip install abess
Best subset selection for linear regression on a simulated dataset in Python:
from abess.linear import LinearRegression
from abess.datasets import make_glm_data
sim_dat = make_glm_data(n = 300, p = 1000, k = 10, family = "gaussian")
model = LinearRegression()
model.fit(sim_dat.x, sim_dat.y)
See more examples analyzed with Python in the tutorials; the notebooks are available here.
Runtime Performance
To show the power of abess in computation, we assess its timings of the CPU execution (seconds) on synthetic datasets, and compare to state-of-the-art variable selection methods. The variable selection and estimation results are deferred to performance.
We compare abess Python package with scikit-learn on linear and logistic regression. Results are presented in the below figure, and can be reproduce by running the commands in shell:
$ python ./simulation/Python/timings.py
we obtain the runtime comparison picture:
abess reaches a high efficient performance especially in linear regression where it gives the fastest solution.
Open source software
abess is a free software and its source code are publicly available in Github. The core framework is programmed in C++, and user-friendly R and Python interfaces are offered. You can redistribute it and/or modify it under the terms of the GPL-v3 License. We welcome contributions for abess, especially stretching abess to the other best subset selection problems.
Citation
If you use abess or reference our tutorials in a presentation or publication, we would appreciate citations of our library [5].
The corresponding BibteX entry:
@article{zhu-abess-arxiv,
author = {Jin Zhu and Liyuan Hu and Junhao Huang and Kangkang Jiang and Yanhang Zhang and Shiyun Lin and Junxian Zhu and Xueqin Wang},
title = {abess: A Fast Best Subset Selection Library in Python and R},
journal = {arXiv:2110.09697},
year = {2021},
}
References
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for abess-0.4.4-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d462241a32fe569eac44e65b919030d44b395d2b9e1d684a8f7259631d9d7cfe |
|
MD5 | 11260d90c6f70ece0f863c49045a922e |
|
BLAKE2b-256 | 3048ad22b6f7ca7a11811d1547b5f2181ee21f5e40d93ca4d4814d159b9e48b9 |
Hashes for abess-0.4.4-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96dfc72b706cd36506c254f6e14614f87d506a080fdbf5db4dee0f08a530b080 |
|
MD5 | 0460cb7a1243fdd49ebcd153b6ef8bf5 |
|
BLAKE2b-256 | 5eec12200a79157584fc0c5683e161fc8b8b8eedf4422042a32544b163188d5c |
Hashes for abess-0.4.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10108df8c226af7ccfea688f4bb6a2506d45b0e671d7af495261ede4321ea66c |
|
MD5 | 698f56588a5e28f7d686040c739ff052 |
|
BLAKE2b-256 | b5a809180654108b25e74868c7a90d3f29f951b90c82f0f1e39d9bb84b28400f |
Hashes for abess-0.4.4-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71bb2aab813a42d9e6c785c5a471e331bf8bf61d0bbbd49c11ed4e37125e3b55 |
|
MD5 | 9c90ca428f8bd6f9d90bc8233c161ea4 |
|
BLAKE2b-256 | bb27bdbba64f50d78faca90cb85bc9b2c405b28e7a55745eab7f01e24c6cd7f7 |
Hashes for abess-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4cbf19d91eaa188cb2eb4117d8969161add717c0cfef971654e696c0ce4b082 |
|
MD5 | 949c8cd37544c0836a314e4cc860cd46 |
|
BLAKE2b-256 | 78bdd8a2afa59ab76fef010f20efbfb48417e20b7ba0e9e5d095463930ad314b |
Hashes for abess-0.4.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 153fc41a720b0d189a69c34b7ec9080b861a45301b508a659a436cab9a0cfe5d |
|
MD5 | d08a276e71d85c5e40f6b31c416ac694 |
|
BLAKE2b-256 | f0b08adb025aba1e9e2c45e2905fbb2d98ffcf454f8f822669b327be057a298a |
Hashes for abess-0.4.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01a40ee0eafbea487d286cc0ae50d1398e7ca0d3cdfb99e8a131c111c87695e0 |
|
MD5 | d7ac986e1d8829d4e6ddd4a0a25adb17 |
|
BLAKE2b-256 | 97b6d81cfbce7563e51f58b7605ce84f17d732b1915509b20eb3536cc1a5e46e |
Hashes for abess-0.4.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d14e93221d65157101656a19bff945fe3ed60640e3afaf07ed9ca3a96581b56 |
|
MD5 | cb69eefd58e5d8cb1c836b12d7537d72 |
|
BLAKE2b-256 | b51a5792df8a0d70899441a5e78ef929c61b3d3a51b6e9048db2332a7ca5649f |
Hashes for abess-0.4.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f7b80d29a509d01046781101f1e6db7f61fa0be78600029a6df965edc38cc28 |
|
MD5 | b30e4f9ebc7577e6ffdb6f5a52521b89 |
|
BLAKE2b-256 | 22c3592d37c403f3d02a8e0635a98e1377d27c7c9f99e3b8b9f790b3e740cbf0 |
Hashes for abess-0.4.4-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9339e44fc4e1669d74b7e0c2c70c0650000f33e0724c5a52df4cfff5c5f47040 |
|
MD5 | 3ff5810ba19871894bb81bce6c063f69 |
|
BLAKE2b-256 | df8238d8648dff39d76858ebc9952f587615beae1cfaeeaf79c9ef54e4641071 |
Hashes for abess-0.4.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b8c6c7a26e0e1391f48a00cbd6eda85fc644cee3d84570db0df2369563246b4 |
|
MD5 | 769dd17d176248c6eccd7e0169653eb0 |
|
BLAKE2b-256 | 353f98d0c56621ee3b859dbbabba023b5e0e411e2d87ccaaafbf8f3e1c391131 |
Hashes for abess-0.4.4-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abd5baf17c7f349c5f9819602c625dd9c0e80a0bbad59fce1a3d4df7d73f22b1 |
|
MD5 | 2b8f8014afbaba05d85723d1ebcb2de1 |
|
BLAKE2b-256 | 95bdc0c22556f28f95bcd26899efde8cd71eafa499fc81ce3d963c18dea8290f |
Hashes for abess-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0117ade4683d00f93779f72e6c7e6ae518788c9a5216f19c78859a55a1e3cb3c |
|
MD5 | fa471dad57fb7c19a7f5e9b08b9e69c3 |
|
BLAKE2b-256 | 61f0866206ab5413dfcd3b090d82f091c6db7c09ae51ba181bbcd4ae0ff8b71d |
Hashes for abess-0.4.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c08efd9f5e6054eeddd9869330327b377b71671436110d995886bd80fc2c4f5 |
|
MD5 | feccfecca18395f53636d0f1b6c113a7 |
|
BLAKE2b-256 | 4236761ee3b8e7df921ad0e60cc6a905f1e57325a053109f555497ef9129207d |
Hashes for abess-0.4.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 655251abd8ca6603c5b518af979676250db760d1f8a18d29841f3107a0b65206 |
|
MD5 | 0325f823b483f71ac7b3eb96de56f1af |
|
BLAKE2b-256 | b0d5e9843de081162db68c1ec2a82bc634283dfe403faec4c6ffc72e4edb2c15 |
Hashes for abess-0.4.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3096af325d90eea8abdb3743faef144c31eaf8370f7ea114457ddaed1c032bc4 |
|
MD5 | 91c6c538778b9341828db82481d6864b |
|
BLAKE2b-256 | 44f8c1364bb961596424f58cd1d87172e509fecc0e46c7b0c3c0253827698f98 |
Hashes for abess-0.4.4-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1288b8e5209bb31a3e641bc6506f481eae2b2eb1f6e3345c5501220d29d1b6fd |
|
MD5 | df31df80c2448fceacff1655d471e0a8 |
|
BLAKE2b-256 | 54c0f10a93224cdbd2da790735a4c01b56e35beeffda7d5cb7c03322302000e5 |
Hashes for abess-0.4.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfcf2e995a0389cafc922f7e418cce1c6b380ca48fe2645e34c17870e01ff697 |
|
MD5 | 3263834a4de1cef232eb4c52df1b8cfa |
|
BLAKE2b-256 | 63896bed111c972fc9bd3fb1a857077a14b80611cf62e001802ff68d3c21148a |
Hashes for abess-0.4.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe8a218bc8b6b3afee16f46833cf56e1d09f4ddb5b6a4ba49e04e01b23063dae |
|
MD5 | a5b93376beaed3f36d68ec8ac4e7347a |
|
BLAKE2b-256 | 849617157f254e1ccb14e5be5bfb8e4d67923250f1c327fe51408f7256ef9af8 |
Hashes for abess-0.4.4-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cf4e78ea2fce2ca8a294d9bf83dc92c8c85cd858ed237b00a8f81a91e7242ac |
|
MD5 | 7f9a61a79a53f585be2c3ce396bbe021 |
|
BLAKE2b-256 | 5d713f73982315481ef84493a855a88950010f7aa406cf4b9a6b4327d7f252e1 |
Hashes for abess-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52d6fbb9e8d9995767fbc32624e27df5f282f5e484be1efa9c3c49c37a3f7a3c |
|
MD5 | 03f6b0a8857f8594cef2c88318261a0e |
|
BLAKE2b-256 | 7c4fe4cf158a861c8e6d8818d0d98b1c06e2549b5c6645441f07b5d142ed1371 |
Hashes for abess-0.4.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b688ec37020fe221f292a2ecfd80fb71084a46cf8b2d13e3c770bc2f7024344 |
|
MD5 | 4224e52face58fac8ad0c91f45ccc5e7 |
|
BLAKE2b-256 | 64dc29ad97f72bf4b77b7dabde13054046ce437bf22e0b8d65ece050dd3ab01b |
Hashes for abess-0.4.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bebc5bf0b1d95494d714c3403ab534570ed2231013d77a7f32888dc89f8f79c |
|
MD5 | cd44af19ced24d62d464c84db84d756c |
|
BLAKE2b-256 | d2f585d47dabe61c2f8bb66996d7bfced7a7a5e01b5cfb22c75cbe5112b54935 |
Hashes for abess-0.4.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90633fbf89be85b1d36aba9bc4f6538cbd97531d458333b8178d24bec84b8105 |
|
MD5 | cc5353c1383038892c98c5895ba30ea3 |
|
BLAKE2b-256 | 2944ef5047f37e3df3dcaa2a7807b1b0eb60d854073184c8c55b85c8c96839da |
Hashes for abess-0.4.4-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e5fbdced3a4cf0b84cda474c3c1ad7b91801cef8cab4dd8eeeb777747beec3c |
|
MD5 | e93cbc6e64ce7e69919a6c892103951c |
|
BLAKE2b-256 | 3b608f805f3d5845e6add0799f7bc5a7e585295e8a9b8c6fe7e9c15eb9ae48e3 |
Hashes for abess-0.4.4-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef62dc7910cb3165196acdf47cbf09b459cca158ab69002af95c895435710d0d |
|
MD5 | 17dd6802e5ec5a0a75ffb4f46b29068c |
|
BLAKE2b-256 | e92923cdc513f7d57cdc9da5c4894e7e49d8a80a8acf2f214b2552100ecf9ce9 |
Hashes for abess-0.4.4-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c4580f49c7699cd26e5d53a77daf37f737312b7b00c3a652561b430295ba3a |
|
MD5 | 6866fd918a3743aaf730246ed09d1160 |
|
BLAKE2b-256 | 918efb1ac1087bdbc4bfefd890f341effdb4a902f484ddd82c753a12e78339ce |
Hashes for abess-0.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f652520b25da7e631834f4fe00c36edde6a84aabcd080f436d268dfb50c145f0 |
|
MD5 | c3feefa8fde3421c8ab514ef6f20d4bd |
|
BLAKE2b-256 | 34945df6198a625e715a7022029121b22aba06413c0ac9b5b198758cec46d79e |
Hashes for abess-0.4.4-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ff0b5915aa1ff1e0d393ffdf5fa2cec71d79890e916f784b079e0fb7cd82f58 |
|
MD5 | b292b64f43d6f460187af774858bd1d3 |
|
BLAKE2b-256 | f0fff4a1e765a737dec3c434d3055bfbb5a40918e7d803b7ccd25fc902937545 |
Hashes for abess-0.4.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a517056738d8c57903e8bb84de037319ffdc67edcbf366900ee38c4a13bddd7 |
|
MD5 | 6f7c7faf137c4a5dc1bacb97ff6abbd9 |
|
BLAKE2b-256 | d06ca1b43e84b42c596b5c9bee9da42d4ae0daf0b38d313a46d81e5739e2ab00 |
Hashes for abess-0.4.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03e1c4e5a32a2bf17a0c36446a62edb4966e4ac2380fccf414d30dad48b2d07f |
|
MD5 | f6dd77b19a1565e6e7899cf3764add15 |
|
BLAKE2b-256 | e2fcc37c74cc7177307ea9e9a2c5789de5c794aa003cea1e3339ab73671c1489 |
Hashes for abess-0.4.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d02b7f945ea92cffea2319b6baaa4f78940c4326cb272e0281f7e4fca8d07e0d |
|
MD5 | 8a94301b97be847f6cfe89ad1c61ee3a |
|
BLAKE2b-256 | 2c01cb8ee9f901e594517ee96105f2a9e7f86f7af97135ba33ebce7559f96377 |
Hashes for abess-0.4.4-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3857cb813ffca7b3f309c4d6afa4c520aa5410d90757818c6f2c7b747d8d0057 |
|
MD5 | 4c257d85f74f42cdcd5a39c67b7da3d9 |
|
BLAKE2b-256 | 6a9fe403339eb62be205cb5d35ec6ccfcfc87b99f2fe6384f0258ced246b8a65 |
Hashes for abess-0.4.4-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f40eb0159e73a91b370e73d23a8dc5caae8823e355e87db862f908055fb3ad5c |
|
MD5 | 24f6e7bd24ba8a7517ffcb12c7ad7aba |
|
BLAKE2b-256 | e78d36f5178cfd340ddc4abdf92c06b9ab32386436850ec7d813f618b6d9ed02 |
Hashes for abess-0.4.4-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 343b88f0b0dc4ca7309c7f0c85fb6a139e093979e9704ae0cdd40ccd5ec653cf |
|
MD5 | 07ba5d6d4fd1d81c623b7be9cd785f45 |
|
BLAKE2b-256 | 7bfb40ef63cbbde98d727ddcfbc38753f0e2ea2f01e36ddf9a782a6c76a9f66d |
Hashes for abess-0.4.4-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b6bc018b23b134787db1b295a7204ead43fa5e30b3aae2b82f8d4e62c06edae |
|
MD5 | b63de9cb1d814d4425336219792b2fdd |
|
BLAKE2b-256 | 2f1835c60a594ae8585781b1cae98077d25bb1a6c492e78169e80fc9db3db692 |
Hashes for abess-0.4.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be71a1a08b7c01fe482b198bae84c0cf572985c8a2a156180ca279fb08129803 |
|
MD5 | e87afc03fbbecbad4cce77e0eedfa229 |
|
BLAKE2b-256 | 906faefce86848d5d5375fffa9e4c60f4e544031b3e812122dccfba6c7590f02 |
Hashes for abess-0.4.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7b85b07b893907444d04db7d85686d8b8ed1e680a501365c699742db9854843 |
|
MD5 | 8d85298b79d0a84e436a75f541b4b2ca |
|
BLAKE2b-256 | 4f9c7a94157957a3ae9e6fcf735670c814ccf6818c783eb60c1cbd068c28f851 |
Hashes for abess-0.4.4-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 736f2de2a7028cbe41cd658681640742a195cc8bcc747a8bbad8b53905a35102 |
|
MD5 | c1c9c59a6781cd23d3933199c90c5a93 |
|
BLAKE2b-256 | bbf387fed8dbf07e65ebf1702805e8f268bd9c812e5cd07bdfbd176de20863c4 |