-
Create a support vector machine classifier for binary classification problem. Input: a dataset (x1, y1), ..., (xn, yn), where xi is an input vector and yi ∈ {-1, +1} is a binary label corresponding to it. Output: A SVM classifier.
-
Implement four basic methods for this SVM classifier, including svm.train, svm.fit, svm.prob, svm.predict
-
Explore different algorithms to solve the underlying quadratic programming(unconstrained non-smooth convex problem) behind SVM, study converge speed and complexity, including:
- Gradient descent, with modification
- Newton's method
- Stochastic gradient descent
- Sequential minimal optimization, if possible, this is implemented in the popular LibSvm library
- Implement different kernel option for the classifier, including:
- Linear kernel
- RBF kernel
- Poly kernel (degree = k)
-
Analyze the overall complexity.
-
Implement the classifier on several benchmark datasets and analyze the performance compared with Java library.