# Optimal filter bank from SVD/PCA

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.

• In what way shall the filter bank be optimal? – user7358 Jan 6 '14 at 18:37
• 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. – denis Jan 7 '14 at 12:51
• I am sorry to say that I still do not understand you. – user7358 Jan 8 '14 at 1:39