# sksurv.svm.FastSurvivalSVM¶

class sksurv.svm.FastSurvivalSVM(alpha=1, rank_ratio=1.0, fit_intercept=False, max_iter=20, verbose=False, tol=None, optimizer=None, random_state=None, timeit=False)

Efficient Training of linear Survival Support Vector Machine

Training data consists of n triplets $$(\mathbf{x}_i, y_i, \delta_i)$$, where $$\mathbf{x}_i$$ is a d-dimensional feature vector, $$y_i > 0$$ the survival time or time of censoring, and $$\delta_i \in \{0,1\}$$ the binary event indicator. Using the training data, the objective is to minimize the following function:

\begin{align}\begin{aligned} \arg \min_{\mathbf{w}, b} \frac{1}{2} \mathbf{w}^\top \mathbf{w} + \frac{\alpha}{2} \left[ r \sum_{i,j \in \mathcal{P}} \max(0, 1 - (\mathbf{w}^\top \mathbf{x}_i - \mathbf{w}^\top \mathbf{x}_j))^2 + (1 - r) \sum_{i=0}^n \left( \zeta_{\mathbf{w}, b} (y_i, x_i, \delta_i) \right)^2 \right]\\\begin{split}\zeta_{\mathbf{w},b} (y_i, \mathbf{x}_i, \delta_i) = \begin{cases} \max(0, y_i - \mathbf{w}^\top \mathbf{x}_i - b) \quad \text{if \delta_i = 0,} \\ y_i - \mathbf{w}^\top \mathbf{x}_i - b \quad \text{if \delta_i = 1,} \\ \end{cases}\end{split}\\\mathcal{P} = \{ (i, j) \mid y_i > y_j \land \delta_j = 1 \}_{i,j=1,\dots,n}\end{aligned}\end{align}

The hyper-parameter $$\alpha > 0$$ determines the amount of regularization to apply: a smaller value increases the amount of regularization and a higher value reduces the amount of regularization. The hyper-parameter $$r \in [0; 1]$$ determines the trade-off between the ranking objective and the regresson objective. If $$r = 1$$ it reduces to the ranking objective, and if $$r = 0$$ to the regression objective. If the regression objective is used, survival/censoring times are log-transform and thus cannot be zero or negative.

See sksurv.svm.FastKernelSurvivalSVM for an efficient implementation of kernel Survival Support Vector Machine.

Parameters: alpha : float, positive, default: 1 Weight of penalizing the squared hinge loss in the objective function rank_ratio : float, optional, default: 1.0 Mixing parameter between regression and ranking objective with 0 <= rank_ratio <= 1. If rank_ratio = 1, only ranking is performed, if rank_ratio = 0, only regression is performed. A non-zero value is only allowed if optimizer is one of ‘avltree’, ‘rbtree’, or ‘direct-count’. fit_intercept : boolean, optional, default: False Whether to calculate an intercept for the regression model. If set to False, no intercept will be calculated. Has no effect if rank_ratio = 1, i.e., only ranking is performed. max_iter : int, optional, default: 20 Maximum number of iterations to perform in Newton optimization verbose : bool, optional, default: False Whether to print messages during optimization tol : float, optional Tolerance for termination. For detailed control, use solver-specific options. optimizer : “avltree” | “direct-count” | “PRSVM” | “rbtree” | “simple”, optional, default: avltree) Which optimizer to use. random_state : int or numpy.random.RandomState instance, optional Random number generator (used to resolve ties in survival times). 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 optimizer_result_ attribute.

References

 [Rbdd1c162df74-1] Pölsterl, S., Navab, N., and Katouzian, A., “Fast Training of Support Vector Machines for Survival Analysis”, Machine Learning and Knowledge Discovery in Databases: European Conference, ECML PKDD 2015, Porto, Portugal, Lecture Notes in Computer Science, vol. 9285, pp. 243-259 (2015)
Attributes: coef_ : ndarray, shape = (n_features,) Coefficients of the features in the decision function. optimizer_result_ : scipy.optimize.optimize.OptimizeResult Stats returned by the optimizer. See scipy.optimize.optimize.OptimizeResult.
__init__(self, alpha=1, rank_ratio=1.0, fit_intercept=False, max_iter=20, verbose=False, tol=None, optimizer=None, random_state=None, timeit=False)

Initialize self. See help(type(self)) for accurate signature.

Methods

 __init__(self[, alpha, rank_ratio, …]) Initialize self. fit(self, X, y) Build a survival support vector machine model from training data. predict(self, X) Rank samples according to survival times score(self, X, y)
fit(self, X, y)

Build a survival support vector machine 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(self, X)

Rank samples according to survival times

Lower ranks indicate shorter survival, higher ranks longer survival.

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