Computer Breakers Testovani Algoritmu - NEUROINFORMATICS-GROUP-FAV-KIV-ZCU/guess_the_number GitHub Wiki

Testování použitých/implementovaných algoritmů pro extrakci příznaků a klasifikaci


Obsah

1. Úvod, členění dokumentu

2. Schéma testování

3. Testovací reference - defaultní nastavení aplikace

4. Testy algoritmů pro extrakci příznaků

5. Testy algoritmů pro klasifikaci

6. Závěr


1. Úvod, členění dokumentu

Tento dokument slouží jako protokol pro výsledky testování jednotlivých algoritmů, které byly implementovány během práce na zadaném projektu. Cílem je zjistit přesnost klasifikace aplikace Guess the Number při použití zmíněných algoritmů a rozhodnout, které jsou pro daný úkol nejvhodnější. Dělí se na několik kapitol - první (pokud nepočítáme tento úvod) je popis samotného testování, co a jak se bude testovat, poté jsou uvedeny výsledky z měření při použití defaultních metod pro extrakci příznaku a klasifikaci, následují dvě kapitoly, kde jsou samotné výsledky z měření přesnosti při použití algoritmů extrakce příznaků a algoritmů klasifikace a nakonec je sepsán závěř, který slovně shrnuje výsledky testování.

2. Schéma testování

Testování algoritmů proběhne ve dvou fázích:

  • otestování algoritmů pro extrakci příznaků
  • otestování algoritmů pro klasifikaci těchto příznaků

V první fázi se otestují všechny tři nové algoritmy pro extrakci - Waveletová transformace, Matching Pursuit a Hilbert-Huangova transformace - při použití s defaultně nastaveným klasifikátorem aplikace - MLPClassifier (neuronová síť). Vzhledem k nedeterministické povaze klasifikátoru bude třeba provést testování pro každé nastavení v algoritmech pro extrakci několikrát, resp. je nutné klasifikátor natrénovat vícekrát se stejnými parametry.

Parametry pro trénování klasifikátoru se použijí ty v aplikaci defaultně nastavené a měření bude provedeno alespoň se 3 natrénováními klasifikátoru.

V druhé fázi pak proběhne testování čtyř nových klasifikátorů - K Nearest Neighbors, Linear Discriminant Analysis, Support Vector Machines a Korelace. Extrakční metoda (+ její nastavení) pro tyto klasifikátory bude použita ta, která dosáhla v předchozí fázi při nějakém nastavení lepších výsledků než všechny ostatní.

V obou fázích testování pak platí, že je třeba vyzkoušet různá nastavení testovaných algoritmů podle způsobu jejich použití/implementace. Zvolení konkrétních hodnot je pak na každém testovateli a jeho poznatcích o daném algoritmu.

3. Testovací reference - defaultní nastavení aplikace

Zde budou provedeny testy přesnosti při použití defaultně nastavené metody extrakce příznaků - filtrace a podvzorkování - a klasifikátoru - MLPClassifier. Výsledky budou sloužit jako vodítko pro testovací proces a jako reference, se kterou se budou nově implementované algoritmy měřit.

Vzhledem k nedeterministické povaze klasifikátoru je zde třeba provést měření několikrát (v tomto případě pětkrát) se stejnými parametry. Jako parametry se zde budou měnit pouze vlastnosti extrakce příznaků, konkrétně se jedná o počet vzorků (EPOCH_SIZE), který chceme s epochy získat, počet vzorků od počátku epochy, který se bude ignorovat (SKIP_SAMPLES) a poměr podvzorkování extrahovaného vektoru s příznaky (DOWN_SMPL_FACTOR). Cílem je zkusit vliv těchto parametrů na přesnost klasifikátoru, přičemž je důležité vzít do úvahy vlastnosti ERP komponenty P300 (od jakého vzorku by se měla vyskytovat, kolik vzorků obsahuje...).

Výsledky měření:

  1. EPOCH_SIZE=650, SKIP_SAMPLES=0, DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 598 49 48.03921568627451
2 651 55 53.92156862745098
3 712 62 60.78431372549019
4 695 60 58.82352941176471
5 472 38 37.254901960784316
  1. EPOCH_SIZE=512, SKIP_SAMPLES=150, DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 430 35 34.31372549019608
2 565 48 47.05882352941176
3 580 47 46.07843137254902
4 599 50 49.01960784313725
5 623 54 52.94117647058824
  1. EPOCH_SIZE=512, SKIP_SAMPLES=150, DOWN_SMPL_FACTOR=4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 552 44 43.13725490196079
2 567 43 42.15686274509804
3 540 46 45.09803921568628
4 530 42 41.17647058823529
5 445 31 30.392156862745097
  1. EPOCH_SIZE=256, SKIP_SAMPLES=300, DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 429 34 33.33333333333333
2 509 43 42.15686274509804
3 466 37 36.27450980392157
4 595 53 51.9607843137255
5 277 21 20.588235294117645
  1. EPOCH_SIZE=256, SKIP_SAMPLES=300, DOWN_SMPL_FACTOR=4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 408 30 29.411764705882355
2 362 24 23.52941176470588
3 444 33 32.35294117647059
4 501 40 39.21568627450981
5 548 47 46.07843137254902

4. Testy algoritmů pro extrakci příznaků

4.1 Waveletová transformace

Výsledky měření:

  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=0, Wavelet=Coiflet 6
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 506 41 40.19607843137255
2 464 40 39.21568627450981
3 487 42 41.17647058823529
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=1, Wavelet=Coiflet 12
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 534 43 42.15686274509804
2 577 50 49.01960784313725
3 511 42 41.17647058823529
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=2, Wavelet=Coiflet 18
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 444 36 35.294117647058826
2 571 49 48.03921568627451
3 575 48 47.05882352941176
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=3, Wavelet=Coiflet 24
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 363 28 27.450980392156865
2 448 33 32.35294117647059
3 307 22 21.568627450980394
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=4, Wavelet=Coiflet 30
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 569 46 45.09803921568628
2 522 43 42.15686274509804
3 401 31 30.392156862745097
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=5, Wavelet=Daubechies 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 579 47 46.07843137254902
2 577 47 46.07843137254902
3 527 41 40.19607843137255
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=6, Wavelet=Daubechies 6
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 664 57 55.88235294117647
2 587 52 50.98039215686274
3 545 46 45.09803921568628
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=7, Wavelet=Daubechies 8
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 562 46 45.09803921568628
2 462 35 34.31372549019608
3 622 56 54.90196078431373
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=8, Wavelet=Daubechies 10
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 712 67 65.68627450980392
2 696 58 56.86274509803921
3 499 40 58.82352941176471
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=9, Wavelet=Daubechies 12
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 460 36 35.294117647058826
2 651 58 49.01960784313725
3 311 22 56.86274509803921
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=10, Wavelet=Daubechies 14
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 511 39 38.23529411764706
2 532 43 42.15686274509804
3 567 47 46.07843137254902
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=11, Wavelet=Daubechies 16
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 249 16 15.686274509803921
2 297 23 22.54901960784314
3 382 27 26.47058823529412
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=12, Wavelet=Daubechies 18
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 617 55 53.92156862745098
2 361 25 24.509803921568626
3 363 26 25.49019607843137
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=13, Wavelet=Daubechies 20
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 548 47 46.07843137254902
2 588 51 50.0
3 658 59 57.84313725490197
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=14, Wavelet=Haar
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 402 27 26.47058823529412
2 549 47 46.07843137254902
3 535 40 39.21568627450981
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=15, Wavelet=Symmlet 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 563 41 40.19607843137255
2 507 36 35.294117647058826
3 574 45 44.11764705882353
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=16, Wavelet=Symmlet 6
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 633 55 53.92156862745098
2 475 38 37.254901960784316
3 624 52 50.98039215686274
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=17, Wavelet=Symmlet 8
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 517 42 41.17647058823529
2 703 61 59.80392156862745
3 651 56 54.90196078431373
  • Shrnutí: Nejlépe se jeví použití waveletu Daubechies 10. Tento wavelet se nadále testuje s různými hodnotami vynechání prvních vzorků a různým množstvím použitých koeficientů.

Množství použitých koeficientů a velikost epochy

  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=16
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 566 48 47.05882352941176
2 689 59 57.84313725490197
3 724 65 63.725490196078425
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=8
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 425 33 32.35294117647059
2 375 29 28.431372549019606
3 400 32 31.372549019607842
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=64
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 588 48 47.05882352941176
2 524 43 42.15686274509804
3 584 46 45.09803921568628
  1. EPOCH_SIZE=256, SKIP_SAMPLES=200, FEATURE_SIZE=32
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 367 27 26.47058823529412
2 400 32 31.372549019607842
3 468 35 34.31372549019608
  • Shrnutí: Pokud se množství použitých koeficientů dostalo pod hodnotu 16 nebo nad hodnotu 32, nedosahovalo se dříve dosažených výsledků. Podobně tomu bylo s velikostí použité epochy, po zmenšení na polovinu se nedosahovalo dříve dosažených výsledků.

Vynechání prvních X vzorků a poloviční velikost epochy

  1. EPOCH_SIZE=256, SKIP_SAMPLES=300, FEATURE_SIZE=32
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 538 43 42.15686274509804
2 479 40 39.21568627450981
3 652 56 54.90196078431373
  1. EPOCH_SIZE=256, SKIP_SAMPLES=400, FEATURE_SIZE=32
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 407 29 28.431372549019606
2 521 45 44.11764705882353
3 393 31 30.392156862745097
  • Shrnutí: Pokud se více než 200 prvních vzorků epochy přeskočilo, nedosahovalo se dříve naměřených hodnot.

  • Celkové shrnutí: Nejlépe se jeví toto nastavení: EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=8, Wavelet=Daubechies 10

4.2 Matching Pursuit

  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, DOWN_SMPL_FACTOR = 8, iterationCount = 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 690 62 60.78431372549019
2 275 20 19.607843137254903
3 167 12 11.76470588235294
4 511 41 40.19607843137255
5 777 72 70.58823529411765
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, DOWN_SMPL_FACTOR = 4, iterationCount = 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 413 36 35.294117647058826
2 627 56 54.90196078431373
3 419 35 34.31372549019608
4 315 22 21.568627450980394
5 613 52 50.98039215686274
  1. EPOCH_SIZE=512, SKIP_SAMPLES=150, DOWN_SMPL_FACTOR = 4, iterationCount = 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 656 54 52.94117647058824
2 286 18 17.647058823529413
3 227 14 13.725490196078432
4 85 5 4.901960784313726
5 578 49 48.03921568627451
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, DOWN_SMPL_FACTOR = 2, iterationCount = 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 558 48 47.05882352941176
2 585 49 48.03921568627451
3 75 3 2.941176470588235
4 373 29 28.431372549019606
5 115 8 7.8431372549019605
  1. EPOCH_SIZE=256, SKIP_SAMPLES=300, DOWN_SMPL_FACTOR = 4, iterationCount = 4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 171 10 9.803921568627452
2 511 43 42.15686274509804
3 175 10 9.803921568627452
4 591 52 50.98039215686274
5 521 41 40.19607843137255
  1. EPOCH_SIZE=512, SKIP_SAMPLES=200, DOWN_SMPL_FACTOR = 4, iterationCount = 8
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 120 7 6.862745098039216
2 545 49 48.03921568627451
3 536 44 43.13725490196079
4 285 21 20.588235294117645
5 93 3 2.941176470588235
  • Shrnutí: Jako nejlepší nastavení pro Matching Pursuit se jeví nastavení EPOCH_SIZE=512, SKIP_SAMPLES=200, DOWN_SMPL_FACTOR = 8, iterationCount = 4.

4.3 Hilbert-Huangova tranformace

Pro porovnání s výsledky Waveletové transformace bylo standardní nasatvení pro zpracovávanou epochu nastaveno takto: SKIP_SAMPLES=200 ; EPOCH_SIZE=512 ; DOWN_SMPL_FACTOR=2

Jako příznaky byly použity okamžité amplitudy z Hilbertovy transformace. Nastavení okna pro průměrování hodnot bylo na polovině velikosti epochy (256 vzorků) a jeho posun byl nastaven na 8 vzorků.

Training number Total points (of 1020) Perfect guess Accuracy [%]
1 188 12 11.76470588235294
2 212 13 12.745098039215685
3 183 12 11.76470588235294

Následovalo postupně zvyšování podvzorkování výsledného vektoru příznaků:

  • SKIP_SAMPLES=200 ; EPOCH_SIZE=512 ; DOWN_SMPL_FACTOR=4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 259 17 16.666666666666664
2 193 11 10.784313725490197
3 210 13 12.745098039215685
  • SKIP_SAMPLES=200 ; EPOCH_SIZE=512 ; DOWN_SMPL_FACTOR=8
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 197 13 12.745098039215685
2 191 11 10.784313725490197
3 155 7 6.862745098039216

Jako další nastavení byl upraven posun počáteční epochy, přičemž byl použit faktor podvzorkování 4, neboť se nejevil, že by měl negativní dopady na výsledek trénování:

  • SKIP_SAMPLES=100 ; EPOCH_SIZE=512 ; DOWN_SMPL_FACTOR=4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 220 17 16.666666666666664
2 207 14 13.725490196078432
3 266 17 16.666666666666664
  • SKIP_SAMPLES=0 ; EPOCH_SIZE=512 ; DOWN_SMPL_FACTOR=4
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 266 18 17.647058823529413
2 243 13 12.745098039215685
3 234 14 13.725490196078432

Následuje nastavení poloviční velikosti epochy (256 vzorků) s různým posunem. Faktor podvzorkování byl nastaven na 2, což zajistilo stejnou velikost vektoru příznaků jako v předchozím nastavení. Velikost okna na průměrování vzorků je opět poloviční vůči epoše (128 vzorků) a jeho posun je nastaven na 4 vzorky.

  • SKIP_SAMPLES=200 ; EPOCH_SIZE=256 ; DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 198 12 11.76470588235294
2 215 14 13.725490196078432
3 167 10 9.803921568627452
  • SKIP_SAMPLES=300 ; EPOCH_SIZE=256 ; DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 199 11 10.784313725490197
2 207 11 10.784313725490197
3 219 13 12.745098039215685
  • SKIP_SAMPLES=400 ; EPOCH_SIZE=256 ; DOWN_SMPL_FACTOR=2
Training number Total points (of 1020) Perfect guess Accuracy [%]
1 173 10 9.803921568627452
2 173 10 9.803921568627452
3 178 10 9.803921568627452

Shrnutí:

Výsledky měření při použití Hilbert-Huangovy transformace dopadly silně pod očekávání v zásadě okolo úrovně náhody. To může být způsobeno nevhodností vytvářených příznaků pro následný způsob klasifikace nebo nevhodným použitím poskytnuté knihovny (navzdory předpokladům a odhadům). Změny v parametrech vstupní epochy tedy neměly zásadní dopad.

5. Testy algoritmů pro klasifikaci

5.1 K Nearest Neighbours

Vzhledem k deterministické povaze této klasifikační techniky není třeba provádět opakované trénovaní, pro každé nastavení je tedy pouze jeden výsledek měření.

Zde je vyzkoušeno různé nastavení počtu nejbližších sousedů pro nejlepší naměřené nastavení Waveletové transformace: EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=32, NAME=8, Wavelet=Daubechies 10.

Number of nearest neighbors Total points (of 1020) Perfect guess Accuracy [%]
1 178 13 12.745098039215685
3 172 11 10.784313725490197
5 138 6 5.88235294117647
11 143 10 9.803921568627452
21 157 11 10.784313725490197
31 175 12 11.76470588235294
41 189 12 11.76470588235294
51 211 12 11.76470588235294
75 149 10 9.803921568627452

Vzhledem k výsledků pohybujícím se okolo úrovně náhody bylo vyzkoušeno i jiné nastavení pro Waveletovou transformaci. Z těch mírně lepších se jevilo nastavení u waveletu typu Coiflet a nastavení SKIP_SAMPLES=0, stejně jako poloviční hodnota u FEATURE_SIZE. Počet nejbližších sousedů pro klasifikaci byl nastaven na 5, protože nabízel o něco lepší výsledky než vyšší počty sousedů (na rozdíl od prvotního měření).

  • Wavelet=Coiflet 12 (NAME=1)

Total points: 269 of 1020; Perfect guess: 19; Accuracy: 18.627450980392158 %

  • Wavelet=Coiflet 18 (NAME=2)

Total points: 256 of 1020; Perfect guess: 16; Accuracy: 15.686274509803921 %

  • Wavelet=Coiflet 24 (NAME=3)

Total points: 250 of 1020; Perfect guess: 17; Accuracy: 16.666666666666664 %

Shrnutí:

Z měření bohužel vyplývá, že K Nearest Neighbors algoritmus nevyhodnocuje dobře ve spojení s příznaky, které vrací Waveletová transformace. Výsledky byly mírně lepší při použití odlišného typu waveletu (Coiflet) a snížení počtu odebíraných příznaků, ale i tak se jedná o velice malou přesnost.

5.2 Linear Discriminant Analysis

Vzhledem k deterministické povaze této klasifikační techniky není třeba provádět opakované trénovaní, pro každé nastavení je tedy pouze jeden výsledek měření.

Klasifikátor se testuje s různou délkou příznakového vektoru

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=512, NAME=8, Wavelet=Daubechies 10

    Total points: 207 of 1020; Perfect guess: 11; Accuracy: 10.784313725490197 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=256, NAME=8, Wavelet=Daubechies 10

    Total points: 197 of 1020; Perfect guess: 10; Accuracy: 9.803921568627452 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=128, NAME=8, Wavelet=Daubechies 10

    Total points: 407 of 1020; Perfect guess: 29; Accuracy: 28.431372549019606 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=64, NAME=8, Wavelet=Daubechies 10

    Total points: 503 of 1020; Perfect guess: 39; Accuracy: 38.23529411764706 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=32, NAME=8, Wavelet=Daubechies 10

    Total points: 483 of 1020; Perfect guess: 38; Accuracy: 37.254901960784316 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=16, NAME=8, Wavelet=Daubechies 10

    Total points: 592 of 1020; Perfect guess: 50; Accuracy: 49.01960784313725 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=8, NAME=8, Wavelet=Daubechies 10

    Total points: 612 of 1020; Perfect guess: 50; Accuracy: 49.01960784313725 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=4, NAME=8, Wavelet=Daubechies 10

    Total points: 533 of 1020; Perfect guess: 43; Accuracy: 42.15686274509804 %

  • Shrnutí: Nejlepšího výsledku se dosáhlo při velikosti příznakového vektoru 4, pokud se velikost zvětšovala, přesnost klesala.

5.3 Support Vector Machines

Jedná se o deterministický algoritmus, vždy je tedy uveden pouze jeden výsledek měření.

Zde je vyzkoušeno různé nastavení hyper-atributu cost pro nejlepší naměřené nastavení Waveletové transformace: EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE=32, NAME=8, Wavelet=Daubechies 10.

K tomuto typu problému je nastavení následující:

  • SVM typ: C-SVC
  • Kernel: lineární

Měření probíhalo na základě doporučených nastavení v příručce ke knihovně LibSVM (Příručka k použití knihovny LibSVM).

Cost atribute Total points (of 1020) Perfect guess Accuracy [%]
2^(-5) 259 19 18.627450980392158
2^(-3) 259 19 18.627450980392158
2^(-1) 485 41 40.19607843137255
2 505 41 40.19607843137255
8 519 42 41.17647058823529
64 541 44 43.13725490196079
256 703 61 59.80392156862745
1024 491 40 39.21568627450981
4096 510 43 42.15686274509804

Vzhledem k tomu, že nejlepší výsledky se pohybovali okolo hodnoty 256 provedli jsme ještě několik měření poblíž.

Cost atribute Total points (of 1020) Perfect guess Accuracy [%]
224 691 59 57.84313725490197
242 712 62 60.78431372549019
256 703 61 59.80392156862745
  • Shrnutí: Výsledky zhruba odpovídají naší představě, nutno, ale říct, že bychom ještě mohli dosáhnout větší procentuální úspěšnosti za předpokladu, že bychom měli více času. Testování je totiž časově náročné a tak nemůžeme zaručit, že tato hodnota atributu je ideální. Rozhodně je však lepší než většina doporučených nastavení. Nejlepší hodnota hyper-atributu cost je tedy 242.

5.4 Korelace

Jedná se o deterministický algoritmus, vždy je tedy uveden pouze jeden výsledek měření. Při měření je jako vzorový signál použit průběh vlny P300 uložený v Functions/P3_cut.txt. Jako extraktor příznakového vektoru je použita Waveletová transformace.

Výsledky měření: Nastavení Waveletová transformace EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 32

Wavelet Total points (of 1020) Perfect guess Accuracy [%]
NAME=0, Coiflet 6 532 45 44.11764705882353
NAME=1, Coiflet 12 550 46 45.09803921568628
NAME=2, Coiflet 18 557 47 46.07843137254902
NAME=3, Coiflet 24 557 47 46.07843137254902
NAME=4, Coiflet 30 548 45 44.11764705882353
NAME=5, Daubechies 4 591 51 50.0
NAME=6, Daubechies 6 556 46 45.09803921568628
NAME=7, Daubechies 8 509 40 39.21568627450981
NAME=8, Daubechies 10 533 45 44.11764705882353
NAME=9, Daubechies 12 535 44 43.13725490196079
NAME=10, Daubechies 14 558 47 46.07843137254902
NAME=11, Daubechies 16 538 45 44.11764705882353
NAME=12, Daubechies 18 548 45 44.11764705882353
NAME=13, Daubechies 20 540 45 44.11764705882353
NAME=14, Haar 652 58 56.86274509803921
NAME=15, Symmlet 4 591 51 50.0
NAME=16, Symmlet 6 556 46 45.09803921568628
NAME=17, Symmlet 8 531 45 44.11764705882353

Následují testy NAME=14, Wavelet=Haar při různém nastavení ostatních parametrů:

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 64

Total points: 645 of 1020; Perfect guess: 56; Accuracy: 54.90196078431373 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=200, FEATURE_SIZE = 16

Total points: 407 of 1020, Perfect guess: 30, Accuracy: 29.411764705882355 %

  • EPOCH_SIZE=256, SKIP_SAMPLES=200, FEATURE_SIZE = 32

Total points: 717 of 1020, Perfect guess: 66, Accuracy: 64.70588235294117 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=0, FEATURE_SIZE = 32

Total points: 612 of 1020, Perfect guess: 54, Accuracy: 52.94117647058824 %

  • EPOCH_SIZE=512, SKIP_SAMPLES=100, FEATURE_SIZE = 32

Total points: 669 of 1020, Perfect guess: 59, Accuracy: 57.84313725490197 %

  • EPOCH_SIZE=256, SKIP_SAMPLES=300, FEATURE_SIZE = 32

Total points: 727 of 1020, Perfect guess: 64, Accuracy: 62.745098039215684 %

Shrnutí: Jako nejlepší nastavení Waveletové transformace pro klasifikační algoritmus korelace se jeví EPOCH_SIZE=256, SKIP_SAMPLES=200, FEATURE_SIZE = 32, NAME=14, Wavelet=Haar.

6. Závěr

Na základě naměřených výsledků si lze o použitých algoritmech vyvodit několik informací. Ne všechny jsou zřejmě vhodné pro konkrétní použití ve stávajícím systému aplikace Guess the Number nebo alespoň jejich standardní implementace. Ostatní mohou silně záviset na vybrané kombinaci vstupních parametrů včetně kombinace extrakce-klasifikace.

Z použitých algoritmů pro extrakci příznaků se nejlépe jevila Waveletová transformace, kde jsme zaznamenali ve spojení s defaultně nastaveným způsobem klasifikace (neuronová síť) přes 60% správně klasifikovaných případů. Matching Pursuit dosahuje podobné výsledky. Hilbert-Huangova Transformace se pak projevila jako buď nevhodná k použití nebo nebyla využita vhodně vzhledem k podmínkám, což způsobilo její slabé výsledky.

Měření algoritmů pro klasifikaci získaných příznaků dopadlo dobře pro Korelaci a Support Vector Machines. U prvního zmíněného algoritmu se povedlo získat výsledek okolo 65% správně klasifikovaných případů, u toho druhého bylo možno najít nastavení poskytující zhruba 60% přesnost. K Nearest Neighbors není pravděpodobně vhodné při použití se získanými příznaky, jeho výsledky se většinou pohybovaly okolo úrovně náhody. Naproti předpokladům, Linear Discriminant Analysis poskytla rovněž slabé výsledky, které nicméně poukazují spíše na chybu v implementaci.

Celkově vzato lze patrně najít kombinaci nastavení nebo provést úpravy takové, aby i metody jevící se jako nevhodné, poskytovaly přinejmenším uspokojivé výsledky. Stejně tak další testování na jiných kombinacích by mohlo ještě vylepšit výsledky stávajících "dobrých" algoritmů. Ovšem při možném množství nastavení a jejich kombinací, je prakticky nemožné otestovat je všechny v rozsahu tohoto projektu. Na druhou stranu v případě algoritmů Matchin Pursuit a Linear Discriminant Analysis se jedná zřejmě o nějakou chybu v kódu, kterou by neměl být problém odstranit a provést opětovné měření.

⚠️ **GitHub.com Fallback** ⚠️