pystruct.models.BinarySVMModel

class pystruct.models.BinarySVMModel(n_features)

Formulate standard linear binary SVM in CRF framework.

Inputs x are simply feature arrays, labels y are -1 or 1.

Parameters :

n_features : int

Number of features of inputs x.

Notes

No bias / intercept is learned. It is recommended to add a constant one feature to the data.

It is also highly recommended to use n_jobs=1 in the learner when using this model. Trying to parallelize the trivial inference will slow the infernce down a lot!

Methods

batch_inference(X, w)
batch_loss(Y, Y_hat)
batch_loss_augmented_inference(X, Y, w[, ...])
batch_psi(X, Y)
continuous_loss(y, y_hat)
inference(x, w[, relaxed]) Inference for x using parameters w.
loss(y, y_hat)
loss_augmented_inference(x, y, w[, relaxed]) Loss-augmented inference for x and y using parameters w.
max_loss(y)
psi(x, y) Compute joint feature vector of x and y.
__init__(n_features)
inference(x, w, relaxed=None)

Inference for x using parameters w.

Finds armin_y np.dot(w, psi(x, y)), i.e. best possible prediction.

For a binary SVM, this is just sign(np.dot(w, x) + b))

Parameters :

x : ndarray, shape (n_features,)

Input sample features.

w : ndarray, shape=(size_psi,)

Parameters of the SVM.

relaxed : ignored

Returns :

y_pred : int

Predicted class label.

loss_augmented_inference(x, y, w, relaxed=None)

Loss-augmented inference for x and y using parameters w.

Minimizes over y_hat: np.dot(psi(x, y_hat), w) + loss(y, y_hat) which is just sign(np.dot(x, w) + b - y)

Parameters :

x : ndarray, shape (n_features,)

Unary evidence / input to augment.

y : int

Ground truth labeling relative to which the loss will be measured.

w : ndarray, shape (size_psi,)

Weights that will be used for inference.

Returns :

y_hat : int

Label with highest sum of loss and score.

psi(x, y)

Compute joint feature vector of x and y.

Feature representation psi, such that the energy of the configuration (x, y) and a weight vector w is given by np.dot(w, psi(x, y)).

Parameters :

x : nd-array, shape=(n_features,)

Input sample features.

y : int

Class label, either +1 or -1.

Returns :

p : ndarray, shape (size_psi,)

Feature vector associated with state (x, y).