Given a million data points in say 100d, is there a way to generate an optimal filter bank of say 20 filters from an SVD of the data ?
Call the 100d space $F$ (as in Frequency), with coordinates $[f_1, f_2 ... f_{100}]$. There are many bases $V_i$ of $F$, that split the 1M $\times$ 100 data array $ A \approx \sum_{i=1}^{100} d_i U_i \otimes V_i $
where the $d_i$ are scalars $d_1 \ge d_2\ ...\ \ge 0$, the $U_i$ are 1M long, and the $V_i$ 100 long.
I have two goals:

  • the $d_i$ should be rapidly decreasing, so that 20 terms approximate $A$ reasonably well

  • for a filter bank, I want a local basis, with each $V_i$ zero outside some interval $[f_a, f_b]$

How can I optimize both together ?
The problem is that SVD has no notion of locality in $F$. And one can optimize a filter bank with a given local basis, such as overlapping triangles in MFCC, but I see no connection to SVD.

Edit 12 Jan: SVD and filter banks / local overlapping bases / dictionaries seem to me quite different:
$\qquad$ SVD: orthogonal, fast and easy, very dependent on data and noise
$\qquad$ local: many possibilities / objectives, robust.
Nonetheless it would be nice if one could use SVD/PCA to improve a given filter bank / local basis.

  • $\begingroup$ In what way shall the filter bank be optimal? $\endgroup$
    – user7358
    Jan 6, 2014 at 18:37
  • $\begingroup$ It should be between SVD and a filter-bank with a fixed basis like MFCC: SVD fits given data $A$ optimally but is non-local, whereas any fixed basis doesn't look at data $A$ at all. $\endgroup$
    – denis
    Jan 7, 2014 at 12:51
  • $\begingroup$ I am sorry to say that I still do not understand you. $\endgroup$
    – user7358
    Jan 8, 2014 at 1:39


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.