天天看點

SVM試驗的一些困惑。

今天用在Matlab中做SVM分類試驗,采用SVM通用工具箱,訓練資料資料量為1250,使用的核函數為rbf。但訓練速度非常慢,大概3個小時,并且訓練得到的支援向量數等于樣本數。SVM求解得到的是解析解,是以算法的訓練過程應該很快。由于以前沒有使用SVM進行過相關試驗,是以對于訓練慢的原因不是太清楚。

在網上查閱了相關資料,并且重新設計了一個試驗,資料量為100,且線性可分.實驗效果非常好,訓練速度快,得到的支援向量機數業很少。試驗程式如下:

N = 50;

n=2*N;

randn('state',6);

x1 = randn(2,N);

y1 = ones(1,N);

x2 = 5+randn(2,N);

y2 = -ones(1,N);

figure;

plot(x1(1,:),x1(2,:),'b+',x2(1,:),x2(2,:),'k.');

axis([-3 8 -3 8]);

title('C-SVC')

hold on;

X1 = [x1,x2]';

Y1 = [y1,y2]';

X=X1;

Y=Y1;

C=Inf;

ker='linear';

global p1 p2

p1=3;

p2=1;

[nsv alpha bias] =svc(X,Y,ker,C)

--------------------

是以,我分析之前訓練速度慢的主要是采用的資料位非線性可分。不過這個理由好像不太通,因為SVM本身是可以處理非線性可分的問題的。到底是什麼原因呢?......

繼續閱讀