I'm quite new to machine learning/data mining and I'm struggling to find the correct path for my problem and would appreciate some guidance or criticism of my proposed solution i.e. is there a better/simpler algorithm for the problem?

The Problem

I have a number of features that describe a particular type (label) of wave (frame of audio) at a predetermined level 'v'. I want to be able to identify the level of an unknown wave and distinguish it from other types of waves that fall under the same higher level category.


  1. A group in a test set should be in increasing order of level v
  2. The type of wave in the group should be the same and known

Proposed Solution

Stage one: Level Selection

  1. For a given type of wave compute the features at each level for N number of samples

  2. For each level calculate the mean/median of each feature the N samples to create a feature vector for each level.

  3. Normalise the feature set by subtracting the empirical mean and dividing by the variance.

  4. Take the Euclidean/Manhattan distance of an incoming vector with the feature set and choose the closest level.

  5. For a group with assigned levels, compare levels with neighbours and report negative differences (should be ascending) or large differences.

Stage two: type selection

  1. Take the Euclidean/Manhattan distance of an incoming vector with the feature set for each type at a specific level or maybe across all levels choose closest type.

Extension of Problem

Features evolve over time as well as level

Proposed Solution

Repeat the stages of the above solution for each frame.

Thanks for any help

*Update I cannot guarantee that the levels v are equivalent across the data I can only guarantee that the order is increasing. i.e. Sample A may have 5 levels v= 1,..,5 and they correspond to {1,..,5} and sample B has 10 samples v = 1,2,..10 and they correspond to {.5,1,1.5,...,10}. How can I capture this without knowing the relationship between levels and identify those which do not follow this pattern. Pleas let me know if this is not clear


2 Answers 2

  • To link feature vectors with levels 'v', you can use GP's.

  • Assuming the 'v' levels are determined by the feature vectors, I can't see why you need to model each group separately... Adding the location of the frame within the audio segment should also not be necessary.

  • If the GP model fails then one can try adding an element to the feature vector describing the location of the audio frame in the group.

Good luck.

  • $\begingroup$ Because each group was recorded separately and the levels v just correspond to the index of each sample in a group. All I know is that they are in the correct order. So if group A had 88 samples, and B had 66 it would be incorrect to say that sample 66 in group A is the same as sample 66 in group B or assume that sample 66 is the max and is equivalent to sample 88 in group B. Thanks again $\endgroup$
    – melinnde
    Aug 29, 2013 at 16:34
  • $\begingroup$ Looks like we are not on the same page here. Please provide details on 'v' values What are they ? And what is your feature vector? $\endgroup$
    – Hasan
    Aug 29, 2013 at 16:37
  • $\begingroup$ Ok it may be clearer with an example. Group A is a drum that was hit 88 times from soft to hard. Group B is different brand drum hit 66 times from soft to hard. V then describes the index of what is believed perceptually as the correct order of soft to hard. So I'm looking to identify this pattern of soft to hard with my features e.g. the fundamental frequency of the drum should increase when the drum is hit harder due to change in tension of the skin. Other features include spectral centroid, bfcc's,irregularity etc. So it is likely that V1 for group A and V2 for group B fit to the same line. $\endgroup$
    – melinnde
    Aug 29, 2013 at 16:49
  • $\begingroup$ OK..Using your earlier example: "A" 88 samples, "B" 66, After I compute the values of B which can range from 1-88. I sort them to get the the correct index. A higher value should still indicate a harder hit. $\endgroup$
    – Hasan
    Aug 29, 2013 at 17:18
  • 1
    $\begingroup$ I still don't know what you are looking for. "V then describes the index of what is believed perceptually as the correct order of soft to hard". You can get that in the example you mentioned. $\endgroup$
    – Hasan
    Aug 29, 2013 at 18:17
  • You need to be certain that your feature vector is capturing the properties you are looking for. Using the mean and median for dimension reduction (i.e. extracting the features) is not a good choice unless your problem is really simple. Better choices are: PCA, ICA, and SVM's. Capturing the features in the frequency domain can also be a great tool if your signal is sparse in the FFT or DCT domain.
  • $\begingroup$ Thanks for your response. I intended to use mean/median across the training set rather than use it on the feature vector. The problem is now a little bit more difficult as I can't guaranty that the levels across the training set are equal I can only guaranty that they are increasing. Any thoughts on this? $\endgroup$
    – melinnde
    Aug 29, 2013 at 11:44
  • $\begingroup$ Regression between the feature vectors and the levels. Regression with Gaussian processes (gaussianprocess.org) can be a good choice $\endgroup$
    – Hasan
    Aug 29, 2013 at 11:59
  • $\begingroup$ I'm not sure if I fully understand. So for a given group of levels and feature vectors a GP can model the features w.r.t. the levels so if I come along with a new feature vector I can deduce a level. I then do the same for another group of the same type. How do I combine these models such they should be describing the same type of pattern and that I don't know how the levels in each group are related and the lengths of the levels may vary? Do I do an almost recursive regression or have I completely lost the plot? $\endgroup$
    – melinnde
    Aug 29, 2013 at 15:44

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.