ICARE models
Project description
ICARE
Rebaud, L.*, Escobar, T.*, Khalid, F., Girum, K., Buvat, I.: Head and Neck Tumor and Lymph Node Segmentation and Outcome Prediction from 18F-FDG PET/CT Images: Simplicity is All You Need. In: Lecture Notes in Computer Science (LNCS) Challenges (in press)
This package contains the Individual Coefficient Approximation for Risk Estimation (ICARE) survival model. For ensembling strategies, it also includes a dedicated bagging aggregator.
Description
The Individual Coefficient Approximation for Risk Estimation (ICARE) survival model uses a minimal learning strategy to reduce to risk of overfitting on the often noisy and censored survival data. To do so:
- drop highly correlated features
- for each feature:
- evaluate feature sign using an univariate approach
- normalize the feature
- multiply the feature by its sign
- the prediction is computed as the mean of all signed features
This makes the model more robust to overfitting. It also makes it
resilient to the curse of dimensionality. We hypothesize that it is
better to have too many features than too few for this model.
This algorithm is implemented in the IcareSurv estimator in this
package.
To improve the performance, this model can be bagged. The package
provides BaggedIcareSurv estimator that does the ensembling of
multiple IcareSurv estimators.
The models make predictions that are anti-concordants with the target. For instance, if the target is the survival in days since baseline, the prediction corresponds to the ranking risk of death.
Getting Started
Dependencies
- Python 3.6 or later
- scikit-survival
Installing
- Via PyPI:
pip install icare
or via GitHub
pip install git+https://github.com/Lrebaud/ICARE.git
Documentation
Coming soon.
Utilisation
The model is used as any other scikit-learn estimator:
from sksurv import datasets
from sksurv.preprocessing import OneHotEncoder
from icare.metrics import harrell_cindex
from icare.survival import IcareSurv, BaggedIcareSurv
X, y = datasets.load_veterans_lung_cancer()
X = OneHotEncoder().fit_transform(X)
model = IcareSurv()
model.fit(X, y)
pred = model.predict(X)
print(pred[:5])
harrell_cindex(y, pred)
It can be used with all scikit-learn functions:
from sklearn.model_selection import cross_val_score, ShuffleSplit
model = IcareSurv()
score = cross_val_score(model, X, y,
cv=ShuffleSplit(n_splits=20, test_size=.25),
n_jobs=-1,
scoring=harrell_cindex_scorer).mean()
If you are working with a censored target, you need to create a structured array containing both the time and the censoring:
from sksurv.util import Surv
y = Surv.from_arrays(event=np.array(event_happened).astype('bool'),
time=time)
Author
Louis Rebaud: louis.rebaud@gmail.com
Version History
- 0.0.1
- Initial Release
License
This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details
Acknowledgements
This package was created as a part of the HEad and neCK TumOR segmentation and outcome prediction in PET/CT images challenge, 3rd edition (HECKTOR 2022) and presented by Louis Rebaud and Thibault Escobar at the 25th international conference on Medical Image Computing and Computer-Assisted Intervention (MICCAI) congress in Singapore.
Citation
If you use this package for your research, please cite the following paper:
Rebaud, L.*, Escobar, T.*, Khalid, F., Girum, K., Buvat, I.: Head and Neck Tumor and Lymph Node
Segmentation and Outcome Prediction from 18F-FDG PET/CT Images: Simplicity is All You Need.
In: Lecture Notes in Computer Science (LNCS) Challenges (in press)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file icare-0.0.5.tar.gz.
File metadata
- Download URL: icare-0.0.5.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
140bf2ca5e450e4f37f57ab471ca1c2f562b59ab99018ca3f6729bce195fc721
|
|
| MD5 |
2ebd9cb52792912192560beeb4bdc9dd
|
|
| BLAKE2b-256 |
e0d671471d5b7649a8e9ab06cfa235991815bde50a96b11ad5e2d0afeeeb7e74
|
File details
Details for the file icare-0.0.5-py3-none-any.whl.
File metadata
- Download URL: icare-0.0.5-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f67b23d5e5409dcbafc4141008bb8e832e0caedda49ea580392a692da6970492
|
|
| MD5 |
bf96076d1e05f2b200f88e6d048ff3b0
|
|
| BLAKE2b-256 |
44ecc05e6b2e7fb09b43982c459dd6d567a4e9cb0afc1fbbc4f1a4e605da4719
|