Generalized Distance Weighted Discrimination (DWD) with sGS-ADDM
Project description
genDWD: Generalized Distance Weighted Discrimination
genDWD is a high-performance Python implementation of the Generalized Distance Weighted Discrimination (DWD) algorithm.
While Support Vector Machines (SVM) are widely used, they often suffer from the "data piling" phenomenon in HDLSS (High Dimensional Low Sample Size) settings, where many data points project onto the same location on the decision boundary, leading to poor generalization. DWD was specifically developed to overcome this by accounting for the relative distance of all data points, providing better robustness in high-dimensional spaces.
Originally formulated for binary classification, this implementation extends the algorithm's utility by featuring built-in Multiclass classification support, enabling its application to complex, real-world datasets with multiple categories. It is designed to handle these tasks efficiently using the sGS-ADMM framework for large-scale optimization.
Core Research Basis
This implementation is strictly constructed based on the numerical procedures described in the following scientific paper:
"Fast algorithms for large scale generalized distance weighted discrimination"
Xin Yee Lam, J.S. Marron, Defeng Sun, and Kim-Chuan Toh (September 5, 2018)
Key Features
- Automatic Detection: Automatically switches between Binary and Multiclass (One-vs-One) logic.
- Adaptive Solvers: Dynamically selects between Cholesky Decomposition, Sherman-Morrison-Woodbury (SMW) formula, or PSQMR based on n (data) and d (features).
- sGS-ADMM Framework: Ensures fast convergence using Symmetric Gauss-Seidel ADMM.
- Penalty Tuning: Automatic C parameter calculation using median inter-class distance.
Quick Start
- Install the package:
pip install genDWD
Implementation Guide
To use the genDWD class in your project, follow the instructions below. The model follows the standard .fit() and .predict() pattern.
1. Basic Initialization
You can customize the model during initialization. The parameter C='auto' is recommended as it calculates the penalty based on the dataset's geometry.
from gendwd import genDWD
model = genDWD(C='auto')
2. Model Training and Prediction
The model follows the familiar .fit() and .predict() workflow. It automatically handles both binary and multiclass data.
Training the Model
To train the model, pass your feature matrix X and label vector y. The algorithm will automatically detect if it should use a binary or multiclass (One-vs-One) strategy.
Example:
from sklearn.datasets import load_breast_cancer
#Load Breast Cancer Dataset
data = load_breast_cancer()
X, y = data.data, data.target
model.fit(X, y)
y_pred = model.predict(X)
print(f"Accuracy : {np.mean(y_pred==y)*100} %")
Acknowledgments
I would like to express my sincere gratitude to the following individuals for their invaluable support and guidance during the development of this project:
- Adilan Widyawan Mahdiyasa, S.Si., M.Si., Ph.D., for the academic guidance, mentorship, and insights into the mathematical foundations of optimization and discrimination algorithms.
- Ika Widya Palupi, Marshanda Nalurita Serlaloy, Puan Amalia Islamiati, and Radithya Rizky Syandana, for their unwavering support, meaningful discussions, and generous contributions of time and effort throughout the coding, debugging, and testing phases of this project.
Their contributions have been instrumental in making this implementation of the genDWD algorithm possible.
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 gendwd-0.1.2.tar.gz.
File metadata
- Download URL: gendwd-0.1.2.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ef4c12c0d1da8a5d4ecd7121639be8d60fb4e360152bf3a5ae16f1a050cc96d
|
|
| MD5 |
e436fe548b31f2db2d8866a3b57801c7
|
|
| BLAKE2b-256 |
8a1ccc6ba3ecf9b8d7edb1b6dadde0fee95d0e658cc8dfe3a85ba9ded0e70771
|
File details
Details for the file gendwd-0.1.2-py3-none-any.whl.
File metadata
- Download URL: gendwd-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cec9554e7ba806a7ff6894382b26aa37ea75440692215d7a9735302b499d659
|
|
| MD5 |
3afcae6fbc4725785068b777ec9b2257
|
|
| BLAKE2b-256 |
9f54d83d412f0f4deec0f161dbcd46c196d9b0fbb54cb1bbb74072f0ab8dc8cd
|