I have a computer-generated music project, and I'd like to classify short passages of music as "good" or "bad" via machine learning.

I won't have a large training set. I'll start by generating 500 examples each of good and bad music, manually. These examples can be transposed and mirror-imaged to produce 12,000 examples of each good and bad.

I have a way of extracting features from the music in an intelligent way that mimics the way a perceptive listener would do. The trouble is that it involves thousands of features on a single passage. Each feature is a number from 0 to 1.

I'm pretty new to data science, and my understanding is that binary classifiers like decision trees wouldn't work well with that many features. But note that I'll have a lot of clumping and dependence of features. I just don't know how to predict that structure. Also, good examples will probably clump around a few categories, while bad examples will tend to be all over the place and "far" from good examples.

It occurred to me that maybe a recommendation system could work.

Taking the example of movie recommenders, the score of each of my features would be like the rating a viewer gives a movie. Each example will rate thousands of features, i.e. a viewer rating thousands of movies.

Then we have one movie, called the "Good Movie." Each training example gives that either 5 stars or 0 stars depending on whether it's good or bad.

We then take a test example and predict whether it likes the "Good Movie."

Can this sort of thing work? Is there another approach to working with thousands of features?

EDIT: adding a comment on dependence or "clumping" of features: I intuitively think that "good" music will probably clump around several categories and within those clumps there will be strong correlation between features. Let's say inside clump #1, features A and B are correlated. But inside clump #2, A and B might be uncorrelated with each other, although each correlated to other features. I mention this in case it's relevant to doing feature reduction with PCA or other techniques.

  • 1
    $\begingroup$ Maybe binary classifiers other than decision tree could help? e.g. SVM, logistic regression can both work with more features $\endgroup$
    – 1tan Wang
    Dec 8, 2019 at 8:20
  • 1
    $\begingroup$ If you already know that there is a lot of correlation between your variables, you can use some dimension reduction technics such as PCA to come up with less features. This said I think you can easily go with neural networks here. $\endgroup$
    – Jeanba
    Dec 8, 2019 at 8:34
  • $\begingroup$ @Jeanba I added an edit to the question about feature dependence or "clumping." I don't know if this is relevant to the use of PCA. $\endgroup$ Dec 8, 2019 at 20:37

2 Answers 2

  • Would this approach work?

I don't know, you should try, it very well could.

  • Can recommender systems be used as classifiers?

Absolutely! But first, let's clarify a couple of things. Recommender systems are systems. They are the output you are trying to achieve. This can theoretically be achieved without machine learning but in general, building recommenders happens via a learning algorithm (i.e. collaborative filtering, neural nets, etc.).

What that learning algorithm does is learning to provide a "score" to each item given a specific context (i.e. user X wanted to watch a movie on a Tuesday night) such that the highest scores are given to items that are worth recommending.

This can directly be applied to a classification problem where your learning algorithm learns to give high scores to the correct class.

So in summary, you would still be building a classifier system (what it does) by using a recommendation learning algorithm (how it does it).


Please do not build a recommendation system in order to solve a binary classification problem. If you like the idea with the ratings, you can always create a new feature that is the ranking. Consider using random forest, SVM, log regression, XGBoost, LightGBM. Some of these models are capable of returning the feature importance, so you can see how important your rankings are, if of course you decide to implement them as a feature.


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.