askoki / sopila-transcriptor

MIT License
1 stars 0 forks source link

Nova tehnika pretprocesiranja #12

Closed askoki closed 5 years ago

askoki commented 5 years ago

Kao što je opisano u issue #11 nova tehnika pretprocesiranja trebala bi izvlačiti značajke iz signala vremenskog okvira od 10 ms. Na njemu se radi fft te se odstranjuju apsolutne amplitude manje od thresholda. Nakon toga se amplitude kvadriraju i normaliziraju po najvećoj vrijednosti.

Potrebno je ispitati sljedeće:

  1. Prikaz grafa odnosa frekvencije i amplitude i primjena cnn-a
  2. Performanse sa Random Forest
  3. Performanse sa PCA + Random forest
    • pca 0.95
    • pca 0.99
  4. Primjena cnn-a sa 1D konvolucijskim filtrom na podatcima koji se koriste i u RF (jednodimenzionalni)
askoki commented 5 years ago
  1. Opisano ovdje
askoki commented 5 years ago
  1. Performanse sa RF su prilično dobre, točnost je 89%. Ukoliko se uspoređuju matrice zabune sa točkom 1. valja napomenuti da su različite skale (oko 3x veća je ovdje). Vrijeme treniranja je veoma brzo - svega minutu. train_test_accuracy_random_forest_default_name confusion_matrix_matrix_default_pca_random_forest

Vidljivi su problemi kod pogrešne klasifikacije velike sopile. Najviše sumnje imam u pogrešnu klasifikaciju vele u tišinu. Tišina se u svim testnim podacima ubiti svodi na vektor 0, a ukoliko je u nekim slučajevima fft vele premali tada ga možda treshold spusti na 0. To je potrebno daljnje ispitati.

askoki commented 5 years ago
  1. Performanse PCA + RF ne donose na poboljšanju:

    • PCA sa očuvanjem 95% varijance: train_test_accuracy_random_forest_pca_default_name confusion_matrix_matrix_default_pca_random_forest

    • PCA sa očuvanjem 99% varijance: train_test_accuracy_random_forest_pca99_default_name confusion_matrix_matrix_default_pca99_random_forest

istajduh commented 5 years ago

Kakav je odnos training i testing (odnosno validacijske) pogreške? Imate li osjećaj je li model overfitan?

askoki commented 5 years ago

Morao sam malo prilagoditi kod za testiranje na pravim podatcima (snimke nekih kombinacija) pa da mogu potvrditi da model sa random forest nažalost overfita. Istestirat ću još sa PCA i manjim brojem stabala pa javim konačni zaključak.

istajduh commented 5 years ago

Podešavanjem parametara kojima regulirate kompleksnost korištenog modela i odnos pristranost-varijanca možete prilagoditi konačno rješenje pozadinskoj distribuciji u podacima. Normalnim rječnikom, predlažem da probate više različitih kombinacija hiperparametara i da vidite što radi najbolje (Python ima gridsearch za takve stvari - možda je primjenjivo tu). Zanima nas scenarij u kojem dobijemo minimalnu pogrešku validacije, te je pogreška treniranja jako blizu pogrešci validacije.

askoki commented 5 years ago

Pokušao sam s tehnikom opisanom ovdje pronaći raspon pravih parametara. Pritom sam balansirao skup podataka tako da svaka klasa ima jednak broj. Rezultat je isti: oko 95% trening set i 89% test set. Trening služi samo za treniranje i model nigdje ne koristi podatke test seta. Na test setu taj isti model ostvaruje 89% točnosti što je i dalje iznimno dobro. Problem nastaje kada pokušam predvidjeti stvarne snimke. Tada model izgleda kao da nasumično pogađa klase. Možda random forest nije dobar pristup jer se rasponi i vrijednosti amplituda previše razlikuju u stvarnim podatcima od onih korištenih za trening. Nisam siguran što je točno problem, ali sa grid searchom nažalost neće doći do poboljšanja.

istajduh commented 5 years ago

Što je "stvarna snimka"? Je li to zvučni zapis izvedbe drugih ljudi na drugom instrumentu (s koncerta, npr.), ili se radi o vašoj izvedbi neke kompozicije? Ako je ovo potonje, onda zaista ne znam u čemu bi mogao biti problem. Je li više instrumenata aktivno istovremeno?

askoki commented 5 years ago

Da stvarne snimke su melodije koje sam ja odsvirao. Npr. zapis 'mala012345' označuje zapis u kojem bi trebali predvidjeti sviranje tonova male sopile od 0 do 5. Amplitude su u oba slučaja skalirane na vrijednosti 0-1.