机器学习经典算法SVM,网上有各种博客介绍,以及各种语言的源代码。 这里提供SVM几种版本的matlab实现,主要目的是熟悉利用CVX来求解凸优化问题。
basic SVM
推导什么的就不说了,直接搬最后的公式:
min w,b 2∥w∥ 2 2 minw,b2‖w‖22代码依然很简单:
function [ w,b ] = svm_prim_sep( data,labels )%UNTITLED2 此处显示有关此函数的摘要% Input:% data: num-by-dim matrix .mun is the number of data points,% dim is the the dimension of a point% labels: num-by-1 vector, specifying the class that each point belongs% to +1 or -1% output:% w: dim-by -1 vector ,the mormal dimension of hyperpalne% b: a scalar, the bias[num,dim]=size(data);cvx_begin variables w(dim) b,xi(num); minimize (sum(w.^2)/2+C * sum(xi.^2)); subject to labels.* (data * w+b)>=1-xi; xi>=0;cvx_endend
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
是不是很简单?例子以后再给吧。(公式乱码,请尝试其它浏览器)
未完待续,