# sksurv.svm.HingeLossSurvivalSVM¶

class sksurv.svm.HingeLossSurvivalSVM(solver='cvxpy', alpha=1.0, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None, pairs='all', verbose=False, timeit=None, max_iter=None)

Naive implementation of kernel survival support vector machine.

A new set of samples is created by building the difference between any two feature vectors in the original data, thus this version requires $$O(\text{n_samples}^4)$$ space and $$O(\text{n_samples}^6 \cdot \text{n_features})$$.

See sksurv.svm.NaiveSurvivalSVM for the linear naive survival SVM based on liblinear.

\begin{align}\begin{aligned}\begin{split}\min_{\mathbf{w}}\quad \frac{1}{2} \lVert \mathbf{w} \rVert_2^2 + \gamma \sum_{i = 1}^n \xi_i \\ \text{subject to}\quad \mathbf{w}^\top \phi(\mathbf{x})_i - \mathbf{w}^\top \phi(\mathbf{x})_j \geq 1 - \xi_{ij},\quad \forall (i, j) \in \mathcal{P}, \\ \xi_i \geq 0,\quad \forall (i, j) \in \mathcal{P}.\end{split}\\\mathcal{P} = \{ (i, j) \mid y_i > y_j \land \delta_j = 1 \}_{i,j=1,\dots,n}.\end{aligned}\end{align}
Parameters: solver : “cvxpy” | “cvxopt”, optional, default: cvxpy Which quadratic program solver to use. alpha : float, positive, default: 1 Weight of penalizing the hinge loss in the objective function. kernel : “linear” | “poly” | “rbf” | “sigmoid” | “cosine” | “precomputed” Kernel. Default: “linear” gamma : float, optional Kernel coefficient for rbf and poly kernels. Default: 1/n_features. Ignored by other kernels. degree : int, default: 3 Degree for poly kernels. Ignored by other kernels. coef0 : float, optional Independent term in poly and sigmoid kernels. Ignored by other kernels. kernel_params : mapping of string to any, optional Parameters (keyword arguments) and values for kernel passed as call pairs : “all” | “nearest” | “next”, optional, default: “all” Which constraints to use in the optimization problem. all: Use all comparable pairs. Scales quadratic in number of samples. nearest: Only considers comparable pairs $$(i, j)$$ where $$j$$ is the uncensored sample with highest survival time smaller than $$y_i$$. Scales linear in number of samples (cf. sksurv.svm.MinlipSurvivalSVM). next: Only compare against direct nearest neighbor according to observed time, disregarding its censoring status. Scales linear in number of samples. verbose : bool, default: False Enable verbose output of solver. timeit : False or int If non-zero value is provided the time it takes for optimization is measured. The given number of repetitions are performed. Results can be accessed from the timings_ attribute. max_iter : int, optional Maximum number of iterations to perform. By default use solver’s default value.

References

 [1] Van Belle, V., Pelckmans, K., Suykens, J. A., & Van Huffel, S. Support Vector Machines for Survival Analysis. In Proc. of the 3rd Int. Conf. on Computational Intelligence in Medicine and Healthcare (CIMED). 1-8. 2007
 [2] Evers, L., Messow, C.M., “Sparse kernel methods for high-dimensional survival data”, Bioinformatics 24(14), 1632-8, 2008.
 [3] Van Belle, V., Pelckmans, K., Suykens, J.A., Van Huffel, S., “Survival SVM: a practical scalable algorithm”, In: Proc. of 16th European Symposium on Artificial Neural Networks, 89-94, 2008.
Attributes: X_fit_ : ndarray Training data. coef_ : ndarray, shape = (n_samples,) Coefficients of the features in the decision function.
__init__(solver='cvxpy', alpha=1.0, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None, pairs='all', verbose=False, timeit=None, max_iter=None)

Methods

 __init__([solver, alpha, kernel, gamma, …]) fit(X, y) Build a MINLIP survival model from training data. predict(X) Predict risk score of experiencing an event. score(X, y)
fit(X, y)

Build a MINLIP survival model from training data.

Parameters: X : array-like, shape = (n_samples, n_features) Data matrix. y : structured array, shape = (n_samples,) A structured array containing the binary event indicator as first field, and time of event or time of censoring as second field. self
predict(X)

Predict risk score of experiencing an event.

Higher scores indicate shorter survival (high risk), lower scores longer survival (low risk).

Parameters: X : array-like, shape = (n_samples, n_features) The input samples. y : ndarray, shape = (n_samples,) Predicted risk.