Computer Breakers Testovani Algoritmu - NEUROINFORMATICS-GROUP-FAV-KIV-ZCU/guess_the_number GitHub Wiki
3. Testovací reference - defaultní nastavení aplikace
4. Testy algoritmů pro extrakci příznaků
5. Testy algoritmů pro klasifikaci
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í.
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.
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í:
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
Výsledky měření:
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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
- 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 |
- 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 |
- 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 |
- 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
- 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 |
- 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
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- 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.
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.
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.
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.
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.
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.
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í.