14
$\begingroup$

What are some approaches for classifying data with a variable number of features?

As an example, consider a problem where each data point is a vector of x and y points, and we don't have the same number of points for each instance. Can we treat each pair of x and y points as a feature? Or should we just summarize the points somehow so each data point has a fixed number of features?

$\endgroup$
  • 7
    $\begingroup$ Does the presence or absence of a given point help in classifying the data? $\endgroup$ – jonsca Feb 11 '12 at 4:37
5
$\begingroup$

You can treat these points as missing --- ie. let's assume that vector has at most 20 (x, y) pairs and particular point has 5 (x, y) pairs, in this case treat rest of pairs as missing, and then apply standatd procedures for missing parameters:

These standard procedures may be:

  • Use a model that handles missing parameters in natural way, for example decision tree models should be able to cope with that.
  • Replace missing with the mean value for appropriate column.
  • Use some easy model to 'predict' missing values.

But as @jonsca points --- if presence of absence of given point helps in classyfying the data you should for example build couple of models, each of them models instances with particular number of points.

| cite | improve this answer | |
$\endgroup$
11
$\begingroup$

From how I understand your question, the points in the data are interchangeable and don't come with any ordering, i.e. you have a set of points for each example. This setting is different from the "Missing Value" setting that jb. described.

I know about two commonly used methods for this problem, which are actually based on your ideas. A good baseline would probably be to just average all points within one example, but that usually doesn't work well.

  • To aggregate multiple points to a single feature, bag of words (or bag of feature) representations are quite commonly used, for example in computer vision. The idea is to cluster all points in your training set (using for example k-means) and then describe each point by its cluster. For each example you then get a histogram over which clusters occur how often.

  • To use all pairs of points, you can make use of set kernels. This might work best with using SVMs but will probably also work with any learning algorithm that can be kernelized or make use of a compatibility function between inputs. Set kernels are basically a way to compute the similarity of two sets of features, as in your setting.

| cite | improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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