SVM.jl
THIS PACKAGE IS UNMAINTAINED AND WILL BE REMOVED FROM METADATA
SVMs in Julia
Native Julia implementations of standard SVM algorithms. Currently, there are textbook style implementations of two popular linear SVM algorithms:
- Pegasos (Shalev-Schwartz et al., 2007)
- Dual Coordinate Descent (Hsieh et al., 2008)
The svm
function is a wrapper for pegasos
, but it is
possible to call cddual
explicitly. See the source code
for the hyperparameters of the cddual
function.
Usage
The demo below shows how SVMs work:
# To show how SVMs work, we'll use Fisher's iris data set
using SVM
using RDatasets
# We'll learn to separate setosa from other species
iris = dataset("datasets", "iris")
# SVM format expects observations in columns and features in rows
X = array(iris[:, 1:4])'
p, n = size(X)
# SVM format expects positive and negative examples to +1/-1
Y = [species == "setosa" ? 1.0 : -1.0 for species in iris[:Species]]
# Select a subset of the data for training, test on the rest.
train = randbool(n)
# We'll fit a model with all of the default parameters
model = svm(X[:,train], Y[train])
# And now evaluate that model on the testset
accuracy = countnz(predict(model, X[:,~train]) .== Y[~train])/countnz(~train)
You may specify non-default values for the various parameters:
# The algorithm processes minibatches of data of size k
model = svm(X, Y, k = 150)
# Weight regularization is controlled by lambda
model = svm(X, Y, lambda = 0.1)
# The algorithm performs T iterations
model = svm(X, Y, T = 1000)