PhysioNet 2016 Challenge – Audio Classifier

by allenlu2007

本文參考 matlab video “essential tools for machine learning”.   主要是用 PhysioNet 2016 Challenge 分類心跳 normal and abnormal.  相關 video 可以參考 Mathwork and Youtube video.  非常值得整個 go through.

Step1: download PhysioNet 2016 的 voice data 如下:

https://physionet.org/physiobank/database/challenge/2016/

Step 2: 先試試水溫。用 audioread and audioplayer/play 顯示 normal and abnormal 的心跳聲。可以看到 time domain waveform 有很大的差異。似乎 peak-to-average ratio (PAR) 是一個重要 feature. 

另外找到周期應該是另一個重點。雖然 normal and abnormal 心音周期差異應該不大(不然就挂掉了)。但是可以用周期切分 waveform, 在做更細緻的分類。

image

下圖是教科書的心音圖 (PCG – Phono Cardio Gram) 和心電圖 (ECG – Electro Cardio Gram).  本文是用 PCG 做 normal and abnormal 分類。

image

Matlab tutorial

Matlab 的做法可以參考 youtube.  先説結論:簡單粗暴,腦洞大開。

幾個重點:

* Live Script 看起來是模仿 Jupyter notebook.  是一個好的開始。不過除非電腦給力,很容易 hang 住(因爲一直在 background computing. e.g. feature extraction)。如果發生最好先用 matlab script run 過,最後再用 save as 轉爲 live script.

image

* fileDatastore (and Datastore, etc.) 是專門爲 machine learning 需要 (sequentially) 處理大量資料的指令。一定要用。但要花一點時間搞定 syntax and file descriptor. Tutorial 沒給 code.

* Tutorial 完全沒有找周期。衹是簡單用 5 second (win_len) 作爲“周期”。這是後續可以改進的地方。

image

* Feature extraction 就是把所有想到的 features 都一股腦丟到分類器中。包含 time domain, frequency domain, wavelet domain, and mfcc (Mel frequency cepstral coefficient feature extraction).  不過從最後的結果來看,主要的係數是 time domain kurtosis, time domain entropy, mfcc1/2/3/4/5/6/7/8/10/13?   Wavelet 完全沒影響。

MFCC: In sound processing, the mel-frequency cepstrum (MFC) is a representation of the short-term power spectrum of a sound, based on a linear cosine transform of a log power spectrum on a nonlinear mel scale of frequency.

Key word: frequency domain, log power spectrum for audio signal!

image

下圖是 confusion matrix with all features.

image

下圖是confusion matrix with NCA feature selection 的結果。

image

幾個問題或是待改進之處:

* 新的 feature, 如 PAR.   見以下結果。并沒有什麽改善。

* 找心音周期。是否能 refine classification?

* 目前 class 是每個 audio file 全對 (all normal) 或全錯 (all abnormal). 是否有可能心音是部分 normal or abnormal.  最后再用 majority vote or HMM 決定。

* 所有幸福 (normal) 家庭都一樣,但不幸 (abnormal) 的家庭都各有不同。是否應該先把所有  normal cases 用 unsupervised learning, e.g. dimension reduction training 出 manifold based on normal PCG waveform shape.  再用 abnormal cases 來分類。

下圖是 PAR 的結果。

image

下圖是 PAR + NCA feature selection

Feature 包含

‘parValue’    ‘sampleKurtosis’    ‘signalEntropy’    ‘MFCC1’    ‘MFCC2’    ‘MFCC3’    ‘MFCC4’    ‘MFCC5’    ‘MFCC6’    ‘MFCC7’    ‘MFCC8’    ‘MFCC10’    ‘MFCC12’    ‘MFCC13’

image


Advertisements