Od separátora ku klasifikácii.

V sérii Yalmip & SVM som doposiaľ uverejnila tieto články:
Yalmip Test: Support Vector Machine (2D problém)
Yalmip & SVM: Universal Function

V príspevku Yalmip & SVM: Universal Function som predstavila funkciu, ktorej výstupom sú koeficienty separátora oddeľujúceho dve tréningové množiny bodov v n-rozmernom priestore.

Súčasťou dnešného príspevku je funkcia, ktorej úlohou je na základe identifikovaného separátora klasifikovať nové vzorky, t.j. priradiť ich k jednej alebo druhej množine bodov. Priradenie prebieha formou splnenia alebo naopak nesplnenia podmienky v dolnej časti funkcie. (Táto podmienka priamo vyplýva z matematickej formulácie SVM)

Prvé dva vstupné parametre aopt a bopt sú spomínané koeficienty separátora. Tieto parametre získame spustením funkcie yalmip_SVM. aopt je vektor rozmeru nx1 a bopt je skalár. sample je matica vzoriek rozmeru nxm, kde n je počet vlastností jednej vzorky a m je počet všetkých vzoriek. class1 a class2 sú premenné typu char alebo tzv. "stringy". Do týchto premenných uložíme meno prvej aj druhej skupiny dát. (Pozn. autorky: stringy môžu byť samozrejme nahradené premennými iného typu, záleží na sympatiách.)

function class = sample_classification(aopt,bopt,sample,class1,class2)

% vytvorenie string-u: class1 = 'jablká';

cell_class1 = cellstr(class1); % zmena typu premennej: string to cell
cell_class2 = cellstr(class2);

m = size(sample,2);
class = cell(m,1); % vytvorenie prázdneho cell-u rozmeru mx1

for i = 1:m
    if ((aopt'*sample(:,i) + bopt) >= 0)
        class(i) = cell_class1; % plnenie cell-u pri splnení podmienky
    
    else
        class(i) = cell_class2; % plnenie cell-u pri nesplnení podmienky
    end
end

Rada by som pripomenula, že obe spomínané funkcie sú zatiaľ iba prototypy (v slovenskom jazyku, majú svoje muchy, ktoré sa budem snažiť odstrániť).

Plány do budúcnosti:
Funkcie, ktoré mám v súčasnosti k dispozícii je možné využiť na klasifikáciu dvoch skupín dát. Zjednodušene povedané, oddelíme jablká od hrušiek.

alt

Veľmi praktickým by sa stalo vedieť klasifikovať viac ako len dve skupiny dát. Práve tento cieľ sa budem snažiť dosiahnuť využitím tzv. "classification trees" alebo v preklade klasifikačných stromov. Tejto metóde bude venovaný môj budúci príspevok.