ä¸ å®è£
1. ä¸è½½
å¨LIBSVMç主页ä¸ä¸è½½ææ°çæ¬ç软件å
ï¼å¹¶è§£åå°åéç®å½ä¸ã
2. ç¼è¯
å¦æä½ ä½¿ç¨çæ¯64ä½çæä½çç³»ç»åMatlabï¼é£ä¹ä¸éè¦è¿è¡ç¼è¯æ¥éª¤ï¼å 为èªå¸¦è½¯ä»¶å
ä¸å·²ç»å
å«æ64ä½ç¼è¯å¥½ççæ¬ï¼libsvmread.mexw64ãlibsvmwrite.mexw64ãsvmtrain.mexw64ãsvmpredict.mexw64ãå¦åï¼éè¦èªå·±ç¼è¯äºè¿å¶æ件ã
é¦å
å¨Mtlabä¸è¿å
¥LIBSVMæ ¹ç®å½ä¸çmatlabç®å½ï¼å¦C:\libsvm-3.17\matlabï¼ï¼å¨å½ä»¤çªå£è¾å
¥
>>mex âsetup
ç¶åMatlabä¼æç¤ºä½ éæ©ç¼è¯mexæ件çC/C++ç¼è¯å¨ï¼å°±éæ©ä¸ä¸ªå·²å®è£
çç¼è¯å¨ï¼å¦Microsoft Visual C++ 2010ãä¹åMatlabä¼æ示确认éæ©çç¼è¯å¨ï¼è¾å
¥yè¿è¡ç¡®è®¤ã
ç¶åå¯ä»¥è¾å
¥ä»¥ä¸å½ä»¤è¿è¡ç¼è¯ã
>>make
注æï¼MatlabæVCçæ¬è¿ä½å¯è½ä¼å¯¼è´ç¼è¯å¤±è´¥ï¼å»ºè®®ä½¿ç¨ææ°ççæ¬ã
ç¼è¯æååï¼å½åç®å½ä¸ä¼åºç°è¥å¹²ä¸ªåç¼ä¸ºmexw64ï¼64ä½ç³»ç»ï¼æmexw32ï¼32ä½ç³»ç»ï¼çæ件ã
3. éå½åï¼å¯éï¼ä½å»ºè®®æ§è¡ï¼
ç¼è¯å®æåï¼å¨å½åç®å½ä¸ååºç°svmtrain.mexw64ãsvmpredict.mexw64ï¼64ä½ç³»ç»ï¼æè
svmtrain.mexw32ãsvmpredict.mexw32ï¼32ä½ç³»ç»ï¼è¿ä¸¤ä¸ªæ件ï¼ææ件åsvmtrainåsvmpredictç¸åºæ¹ælibsvmtrainålibsvmpredictã
è¿æ¯å 为Matlabä¸èªå¸¦æSVMçå·¥å
·ç®±ï¼èä¸å
¶å½æ°ååå°±æ¯svmtrainåsvmpredictï¼åLIBSVMé»è®¤çååä¸æ ·ï¼å¨å®é
使ç¨çæ¶åææ¶ä¼äº§çä¸å®çé®é¢ï¼æ¯å¦æ³è°ç¨LIBSVMçåæäºè°ç¨Matlab SVMã
å¦ææè¿è¡éå½åçï¼ä»¥å使ç¨LIBSVMæ¶ä¸å¾ä½¿ç¨libsvmtrainålibsvmpredictè¿ä¸¤ä¸ªååè¿è¡è°ç¨ã
4. æ·»å è·¯å¾
为äºä»¥å使ç¨çæ¹ä¾¿ï¼å»ºè®®æLIBSVMçç¼è¯å¥½çæ件æå¨è·¯å¾ï¼å¦C:\libsvm-3.17\matlabï¼æ·»å å°Matlabçæ索路å¾ä¸ãå
·ä½æä½ä¸ºï¼ï¼ä¸æçMatlab对åºè¿è¡ï¼
HOME -> Set Path -> Add Folder -> å å
¥ç¼è¯å¥½çæ件æå¨çè·¯å¾ï¼å¦C:\libsvm-3.17\matlabï¼
å½ç¶ä¹å¯ä»¥æé£4个ç¼è¯å¥½çæ件å¤å¶å°æ³è¦çå°æ¹ï¼ç¶ååæ该路å¾æ·»å å°Matlabçæ索路å¾ä¸ã
äº æµè¯
LIBSVM软件å
ä¸èªå¸¦ææµè¯æ°æ®ï¼ä¸ºè½¯ä»¶å
æ ¹ç®å½ä¸çheart_scaleæ件ï¼å¯ä»¥ç¨æ¥æµè¯LIBSVMæ¯å¦å®è£
æåãè¿éçheart_scaleæ件ä¸è½ç¨Matlabçloadè¿è¡è¯»åï¼éè¦ä½¿ç¨libsvmread读åã
è¿å
¥LIBSVMçæ ¹ç®å½è¿è¡ä»¥ä¸ä»£ç ï¼å 为heart_scaleæ件没æ被添å è¿æ索路å¾ä¸ï¼å
¶ä»è·¯å¾ä¸æ æ³è®¿é®è¿ä¸ªæ件ï¼ï¼
[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);
å¦æLIBSVMå®è£
æ£ç¡®çè¯ï¼ä¼åºç°ä»¥ä¸çè¿è¡ç»æï¼æ¾ç¤ºæ£ç¡®ç为86.6667%ã
*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)
ä¸ åçç®ä»
使ç¨SVMåé¦å
å¾äºè§£SVMçå·¥ä½åçï¼ç®åä»ç»å¦ä¸ã
SVM(Support Vector Machineï¼æ¯æåéæºï¼æ¯ä¸ç§æçç£çæºå¨å¦ä¹ æ¹æ³ï¼å¯ä»¥å¦ä¹ ä¸åç±»å«çå·²ç¥æ ·æ¬çç¹ç¹ï¼è¿è对æªç¥çæ ·æ¬è¿è¡é¢æµã
SVMæ¬è´¨ä¸æ¯ä¸ä¸ªäºåç±»çç®æ³ï¼å¯¹äºn维空é´çè¾å
¥æ ·æ¬ï¼å®å¯»æ¾ä¸ä¸ªæä¼çåç±»è¶
å¹³é¢ï¼ä½¿å¾ä¸¤ç±»æ ·æ¬å¨è¿ä¸ªè¶
å¹³é¢ä¸å¯ä»¥è·å¾æ好çåç±»ææãè¿ä¸ªæä¼å¯ä»¥ç¨ä¸¤ç±»æ ·æ¬ä¸ä¸è¿ä¸ªè¶
å¹³é¢è·ç¦»æè¿çç¹çè·ç¦»æ¥è¡¡éï¼ç§°ä¸ºè¾¹ç¼è·ç¦»ï¼è¾¹ç¼è·ç¦»è¶å¤§ï¼ä¸¤ç±»æ ·æ¬åå¾è¶å¼ï¼SVMå°±æ¯å¯»æ¾æ大边ç¼è·ç¦»çè¶
å¹³é¢ï¼è¿ä¸ªå¯ä»¥éè¿æ±è§£ä¸ä¸ªä»¥è¶
å¹³é¢åæ°ä¸ºæ±è§£åéçä¼åé®é¢è·å¾è§£å³ãç»å®éå½ç约ææ¡ä»¶ï¼è¿æ¯ä¸ä¸ªäºæ¬¡ä¼åé®é¢ï¼å¯ä»¥éè¿ç¨KKTæ¡ä»¶æ±è§£å¯¹å¶é®é¢çæ¹æ³è¿è¡æ±è§£ã
对äºä¸æ¯çº¿æ§å¯åçé®é¢ï¼å°±ä¸è½éè¿å¯»æ¾æä¼åç±»è¶
å¹³é¢è¿è¡åç±»ï¼SVMè¿æ¶éè¿æn维空é´çæ ·æ¬æ å°å°æ´é«ç»´ç空é´ä¸ï¼ä½¿å¾å¨é«ç»´ç空é´ä¸æ ·æ¬æ¯çº¿æ§å¯åçãå¨å®é
çç®æ³ä¸ï¼SVMä¸éè¦çæ£å°è¿è¡æ ·æ¬ç¹çæ å°ï¼å 为ç®æ³ä¸æ¶åå°çé«ç»´ç©ºé´ç计ç®æ»æ¯ä»¥å
积çå½¢å¼åºç°ï¼èé«ç»´ç©ºé´çå
积å¯ä»¥éè¿å¨åæ¬n维空é´ä¸æ±å
积ç¶ååè¿è¡ä¸ä¸ªåæ¢å¾å°ï¼è¿é计ç®ä¸¤ä¸ªåéå¨éå¼å°æ å°å°é«ç»´ç©ºé´çå
积çå½æ°å°±å«åæ ¸å½æ°ãSVMæ ¹æ®é®é¢æ§è´¨åæ°æ®è§æ¨¡çä¸åå¯ä»¥éæ©ä¸åçæ ¸å½æ°ã
è½ç¶SVMæ¬è´¨ä¸æ¯äºåç±»çåç±»å¨ï¼ä½æ¯å¯ä»¥æ©å±æå¤åç±»çåç±»å¨ï¼å¸¸è§çæ¹æ³æä¸å¯¹å¤ï¼one-versus-restï¼åä¸å¯¹ä¸ï¼one-versus-oneï¼ãå¨ä¸å¯¹å¤æ¹æ³ä¸ï¼è®ç»æ¶ä¾æ¬¡ækç±»æ ·æ¬ä¸çæ个类å«å½ä¸ºä¸ç±»ï¼å
¶å®å©ä¸çå½ä¸ºå¦ä¸ç±»ï¼ä½¿ç¨äºåç±»çSVMè®ç»å¤ä¸ä¸ªäºåç±»å¨ï¼æåæå¾å°çk个äºåç±»å¨ç»ækåç±»å¨ã对æªç¥æ ·æ¬åç±»æ¶ï¼åå«ç¨è¿k个äºåç±»å¨è¿è¡åç±»ï¼å°åç±»ç»æä¸åºç°æå¤çé£ä¸ªç±»å«ä½ä¸ºæç»çåç±»ç»æãèä¸å¯¹ä¸æ¹æ³ä¸ï¼è®ç»æ¶å¯¹äºä»»æä¸¤ç±»æ ·æ¬é½ä¼è®ç»ä¸ä¸ªäºåç±»å¨ï¼æç»å¾å°k*(k-1)/2个äºåç±»å¨ï¼å
±åç»ækåç±»å¨ã对æªç¥æ ·æ¬åç±»æ¶ï¼ä½¿ç¨ææçk*(k-1)/2个åç±»å¨è¿è¡åç±»ï¼å°åºç°æå¤çé£ä¸ªç±»å«ä½ä¸ºè¯¥æ ·æ¬æç»çåç±»ç»æã
LIBSVMä¸çå¤å类就æ¯æ ¹æ®ä¸å¯¹ä¸çæ¹æ³å®ç°çã
å 使ç¨
å
³äºLIBSVMå¨Matlabä¸ç使ç¨ï¼å¯ä»¥åç软件å
ä¸matlabç®å½ä¸çREADMEæ件ï¼è¿é对éé¢å
容åä¸ä¸ªç¿»è¯åä¸äºç»èç讲解ã
1. è®ç»
libsvmå½æ°ç¨äºå¯¹è®ç»éçæ°æ®è¿è¡è®ç»ï¼å¾å°è®ç»å¥½ç模åã
model = libsvmtrain(training_label_vector, training_instance_matrix [, 'libsvm_options']);
è¿ä¸ªå½æ°æä¸ä¸ªåæ°ï¼å
¶ä¸
-training_label_vector:è®ç»æ ·æ¬çç±»æ ï¼å¦ææmä¸ªæ ·æ¬ï¼å°±æ¯m x 1çç©éµï¼ç±»åå¿
须为doubleï¼ãè¿éå¯ä»¥æ¯äºåç±»åå¤åç±»ï¼ç±»æ æ¯ï¼-1,1ï¼ãï¼1,2,3ï¼æè
å
¶ä»ä»»æç¨æ¥è¡¨ç¤ºä¸åçç±»å«çæ°åï¼è¦è½¬ædoubleç±»åã
-training_instance_matrix:è®ç»æ ·æ¬çç¹å¾ï¼å¦ææmä¸ªæ ·æ¬ï¼æ¯ä¸ªæ ·æ¬ç¹å¾æ¯nç»´ï¼å为m x nçç©éµï¼ç±»åå¿
须为doubleï¼ã
-libsvm_options:è®ç»çåæ°ï¼å¨ç¬¬3ç¹è¯¦ç»ä»ç»ã
2. é¢æµ
libpredictå½æ°ç¨äºå¯¹æµè¯éçæ°æ®è¿è¡æµè¯ï¼è¿è½å¯¹æªç¥æ ·æ¬è¿è¡é¢æµã
[predicted_label, accuracy, decision_values/prob_estimates]
ãããã= libsvmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);
è¿ä¸ªå½æ°å
æ¬å个åæ°ï¼å
¶ä¸
-testing_label_vector:æµè¯æ ·æ¬çç±»æ ï¼å¦ææmä¸ªæ ·æ¬ï¼å°±æ¯m x 1çç©éµï¼ç±»åå¿
须为doubleï¼ãå¦æç±»æ æªç¥ï¼å¯ä»¥åå§å为任æm x 1çdoubleæ°ç»ã
-testing_instance_matrix:æµè¯æ ·æ¬çç¹å¾ï¼å¦ææmä¸ªæ ·æ¬ï¼æ¯ä¸ªæ ·æ¬ç¹å¾æ¯nç»´ï¼å为m x nçç©éµï¼ç±»åå¿
须为doubleï¼ã
-model:使ç¨libsvmtrainè¿åç模å
-libsvm_options:é¢æµçåæ°ï¼ä¸è®ç»çåæ°å½¢å¼ä¸æ ·ã
3. è®ç»çåæ°
LIBSVMè®ç»æ¶å¯ä»¥éæ©çåæ°å¾å¤ï¼å
æ¬ï¼
-s svmç±»åï¼SVM设置类åï¼é»è®¤0)
ãããã0 â C-SVCï¼ 1 âv-SVCï¼ 2 â ä¸ç±»SVMï¼ 3 â e-SVRï¼ 4 â v-SVR
-t æ ¸å½æ°ç±»åï¼æ ¸å½æ°è®¾ç½®ç±»åï¼é»è®¤2ï¼
ãããã0 â 线æ§æ ¸å½æ°ï¼uâv
ãããã1 â å¤é¡¹å¼æ ¸å½æ°ï¼ï¼r*uâv + coef0)^degree
ãããã2 â RBF(å¾ååº)æ ¸å½æ°ï¼exp(-r|u-v|^2ï¼
ãããã3 â sigmoidæ ¸å½æ°ï¼tanh(r*uâv + coef0)
-d degreeï¼æ ¸å½æ°ä¸çdegree设置ï¼é对å¤é¡¹å¼æ ¸å½æ°ï¼ï¼é»è®¤3ï¼
-g r(gammaï¼ï¼æ ¸å½æ°ä¸çgammaå½æ°è®¾ç½®ï¼é对å¤é¡¹å¼/rbf/sigmoidæ ¸å½æ°ï¼ï¼é»è®¤1/kï¼k为æ»ç±»å«æ°)
-r coef0ï¼æ ¸å½æ°ä¸çcoef0设置ï¼é对å¤é¡¹å¼/sigmoidæ ¸å½æ°ï¼ï¼ï¼é»è®¤0)
-c costï¼è®¾ç½®C-SVCï¼e -SVRåv-SVRçåæ°ï¼æ失å½æ°ï¼ï¼é»è®¤1ï¼
-n nuï¼è®¾ç½®v-SVCï¼ä¸ç±»SVMåv- SVRçåæ°ï¼é»è®¤0.5ï¼
-p pï¼è®¾ç½®e -SVR ä¸æ失å½æ°pçå¼ï¼é»è®¤0.1ï¼
-m cachesizeï¼è®¾ç½®cacheå
å大å°ï¼ä»¥MB为åä½ï¼é»è®¤40ï¼
-e epsï¼è®¾ç½®å
许çç»æ¢å¤æ®ï¼é»è®¤0.001ï¼
-h shrinkingï¼æ¯å¦ä½¿ç¨å¯åå¼ï¼0æ1ï¼é»è®¤1ï¼
-wi weightï¼è®¾ç½®ç¬¬å ç±»çåæ°C为weight*C (C-SVCä¸çC) ï¼é»è®¤1ï¼
-v n: n-fold交äºæ£éªæ¨¡å¼ï¼n为foldç个æ°ï¼å¿
须大äºçäº2
以ä¸è¿äºåæ°è®¾ç½®å¯ä»¥æç
§SVMçç±»ååæ ¸å½æ°ææ¯æçåæ°è¿è¡ä»»æç»åï¼å¦æ设置çåæ°å¨å½æ°æSVMç±»åä¸æ²¡æä¹ä¸ä¼äº§çå½±åï¼ç¨åºä¸ä¼æ¥å该åæ°ï¼å¦æåºæçåæ°è®¾ç½®ä¸æ£ç¡®ï¼åæ°å°éç¨é»è®¤å¼ã
4. è®ç»è¿åçå
容
libsvmtrainå½æ°è¿åè®ç»å¥½çSVMåç±»å¨æ¨¡åï¼å¯ä»¥ç¨æ¥å¯¹æªç¥çæ ·æ¬è¿è¡é¢æµãè¿ä¸ªæ¨¡åæ¯ä¸ä¸ªç»æä½ï¼å
å«ä»¥ä¸æåï¼
-Parameters: ä¸ä¸ª5 x 1çç©éµï¼ä»ä¸å°ä¸ä¾æ¬¡è¡¨ç¤ºï¼
ãããã-s SVMç±»åï¼é»è®¤0ï¼ï¼
ãããã-t æ ¸å½æ°ç±»åï¼é»è®¤2ï¼
ãããã-d æ ¸å½æ°ä¸çdegree设置(é对å¤é¡¹å¼æ ¸å½æ°)(é»è®¤3)ï¼
ãããã-g æ ¸å½æ°ä¸çr(gammaï¼å½æ°è®¾ç½®(é对å¤é¡¹å¼/rbf/sigmoidæ ¸å½æ°) (é»è®¤ç±»å«æ°ç®çåæ°)ï¼
ãããã-r æ ¸å½æ°ä¸çcoef0设置(é对å¤é¡¹å¼/sigmoidæ ¸å½æ°)((é»è®¤0)
-nr_class: 表示æ°æ®éä¸æå¤å°ç±»å«ï¼æ¯å¦äºåç±»æ¶è¿ä¸ªå¼å³ä¸º2ã
-totalSV: 表示æ¯æåéçæ»æ°ã
-rho: å³çå½æ°wx+bä¸ç常æ°é¡¹çç¸åæ°ï¼-bï¼ã
-Label: 表示æ°æ®éä¸ç±»å«çæ ç¾ï¼æ¯å¦äºå类常è§ç1å-1ã
-ProbA: 使ç¨-båæ°æ¶ç¨äºæ¦ç估计çæ°å¼ï¼å¦å为空ã
-ProbB: 使ç¨-båæ°æ¶ç¨äºæ¦ç估计çæ°å¼ï¼å¦å为空ã
-nSV: 表示æ¯ç±»æ ·æ¬çæ¯æåéçæ°ç®ï¼åLabelçç±»å«æ ç¾å¯¹åºãå¦Label=[1; -1],nSV=[63; 67]ï¼åæ ç¾ä¸º1çæ ·æ¬æ63个æ¯æåéï¼æ ç¾ä¸º-1çæ67个ã
-sv_coef: 表示æ¯ä¸ªæ¯æåéå¨å³çå½æ°ä¸çç³»æ°ã
-SVs: 表示ææçæ¯æåéï¼å¦æç¹å¾æ¯nç»´çï¼æ¯æåéä¸å
±æm个ï¼å为m x nçç¨çç©éµã
å¦å¤ï¼å¦æå¨è®ç»ä¸ä½¿ç¨äº-våæ°è¿è¡äº¤åéªè¯æ¶ï¼è¿åçä¸æ¯ä¸ä¸ªæ¨¡åï¼èæ¯äº¤åéªè¯çåç±»çæ£ç¡®çæè
åå½çåæ¹æ ¹è¯¯å·®ã
5. é¢æµè¿åçå
容
libsvmtrainå½æ°æä¸ä¸ªè¿åå¼ï¼ä¸éè¦çå¼å¨Matlabå¯ä»¥ç¨~è¿è¡ä»£æ¿ã
-predicted_labelï¼ç¬¬ä¸ä¸ªè¿åå¼ï¼è¡¨ç¤ºæ ·æ¬çé¢æµç±»æ å·ã
-accuracyï¼ç¬¬äºä¸ªè¿åå¼ï¼ä¸ä¸ª3 x 1çæ°ç»ï¼è¡¨ç¤ºåç±»çæ£ç¡®çãåå½çåæ¹æ ¹è¯¯å·®ãåå½çå¹³æ¹ç¸å
³ç³»æ°ã
-decision_values/prob_estimatesï¼ç¬¬ä¸ä¸ªè¿åå¼ï¼ä¸ä¸ªç©éµå
å«å³ççå¼æè
æ¦ç估计ã对äºn个é¢æµæ ·æ¬ãkç±»çé®é¢ï¼å¦ææå®â-b 1âåæ°ï¼ån x kçç©éµï¼æ¯ä¸è¡è¡¨ç¤ºè¿ä¸ªæ ·æ¬åå«å±äºæ¯ä¸ä¸ªç±»å«çæ¦çï¼å¦æ没ææå®â-b 1âåæ°ï¼å为n x k*(k-1)/2çç©éµï¼æ¯ä¸è¡è¡¨ç¤ºk(k-1)/2个äºåç±»SVMçé¢æµç»æã
6. 读åæä¿å
libsvmreadå½æ°å¯ä»¥è¯»å以LIBSVMæ ¼å¼åå¨çæ°æ®æ件ã
[label_vector, instance_matrix] = libsvmread(âdata.txtâ);
è¿ä¸ªå½æ°è¾å
¥çæ¯æ件çååï¼è¾åºä¸ºæ ·æ¬çç±»æ å对åºçç¹å¾ã
libsvmwriteå½æ°å¯ä»¥æMatlabçç©éµåå¨ç§°ä¸ºLIBSVMæ ¼å¼çæ件ã
libsvmwrite(âdata.txtâ, label_vector, instance_matrix]
è¿ä¸ªå½æ°æä¸ä¸ªè¾å
¥ï¼åå«ä¸ºä¿åçæ件åãæ ·æ¬çç±»æ å对åºçç¹å¾ï¼å¿
须为doubleç±»åçç¨çç©éµï¼ã
äº æ´æ°:svddæ©å±å®è£
ï¼2014.10ï¼
ä»libsvmå®ç½ä¸è½½svddå·¥å
·ç®±ï¼ç®å使ç¨libsvm3.18以åsvdd3.18çæ¬ã
svddå·¥å
·ç®±éé¢æä¸ä¸ªmatlabæ件夹å3个æ件svm.cppãsvm.hãsvm-train.cã
å°matlabæ件夹ä¸çæ件svmtrain.cè¦çålibsvmçmatlabæ件夹ä¸çæ件ã
å°svm.cppãsvm.hãsvm-train.cè¿3个æ件è¦çlibsvmæ件夹ä¸çç¸åæ件ã
ææ¬æåå¼å§è®²è¿°çæ¹æ³è¿è¡mex -setupãmakeçå®æå®è£
ï¼æ ¹æ®éè¦è¿è¡æ¹å以åæ·»å Pathã
温馨提示:答案为网友推荐,仅供参考