Yalmip & SVM: Universal Function

yalmip_SVM je univerzálna funkcia navrhnutá tak, aby vyriešila ľubovoľný SVM klasifikačný problém s použitím Yalmip-u.

Prvý vstupný parameter M1 je matica typu nxm, druhý vstupný parameter M2 je matica typu nxl. n, počet riadkov oboch matíc, sa rovná počtu extrahovaných vlastností (súradnice), m, počet stĺpcov matice M1, sa rovná počtu bodov (meraní) patriacich k prvej z dvoch skupín dát a l, počet stĺpcov matice M2 sa rovná počtu bodov (meraní) patriacich k druhej z dvoch skupín dát. (Počet riadkov matice M1 musí byť rovný počtu riadkov matice M2.) Parameter γ (gamma) je ľubovoľný nezáporný skalár.

Výstupom z funkcie sú koeficienty separátora - vektor a s rozmerom nx1 a skalár b.

function [aopt, bopt] = yalmip_SVM(M1, M2, gamma)

n = size(M1,1); % n = size(M2,1);
m = size(M1,2);
l = size(M2,2);

sdpvar b;
a = sdpvar(n,1,'full');
u = sdpvar(m,1,'full');
v = sdpvar(l,1,'full');

objective_function = 1/4*a'*a + gamma*(sum(u) + sum(v));

constraints = [u>=0; v>=0; 
               a'*M1 + b >= 1 - u'; 
               a'*M2 + b <= -1 + v'];
               
optimize(constraints,objective_function);

aopt = value(a);
bopt = value(b);