Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm hoping to get some assistance from some math gurus on a troubling problem i'm having with a website.

The site has a very large gallery (millions of photos) which are uploaded by users. The users of the community (currently 200k+) are able to 'like' photos similar to what happens on facebook and the alike. The idea was for this to be a way to state that the photo was a good photo. However, there is a problem with this model:

  1. some users 'like' photos that are friend's photos
  2. some users 'like' photos for the quality
  3. new users rarely get many likes due to their low profile on the site

I'd like to find a way to use the user actions to start to build a relatively good photo rating system. Some of the variables to possible consider are:

  1. how long the photo has be uploaded
  2. number of likes received
  3. recipricol liking ('you like me, i'll like you' mantality)
  4. like habits of the user (average number of daily liking, how long they have been a user, etc)

Most users can be classified in 1 of the following categories:

  1. 'Quality user' - uploads and likes photos based of personal taste (ideal)
  2. 'New user' - someone who has just joined, just uploaded and maybe only started liking photos
  3. 'Cliquers' - User who likes photos based off a friend status with other users and rarely likes photos outside their friends
  4. 'Like Whore' - User who likes as many photos as possible in hopes of receive a like back

I hope someone out there might be able to assist with this problem and help provide a formula or a thought through process for calculating a photo rating.

thanks in advance!

share|cite|improve this question
This seems like a good fit for the "too broad" closing reason: "There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs." – Rahul Aug 19 '13 at 8:59
  • Unsupervised learning

I would either begin with a partitional clustering on some subsets of the huge database you have in hand, or a hierarchical one.

More precisely, you could focus on a subset of "qualities" of your database, then use partitional clustering(s) like (multiple runs of) k-means, pam, clara, dbscan etc... and to analyze the resulting clusters w.r.t. the remaining qualities. Note that the main problem here is represented by a suitable split of the database w.r.t. the quality assignment-this has to be done entirely by you- and the choice of metric to use.

This second topic is notoriously hard to manage: it strongly depends on your dataset.

A very easy example is represented by the iris database (you can find some details here): you can begin with easy clustering of the numerical "qualities" (in the link they are called features) of the database (i.e. Sepal length, Sepal Width, Petal Length and Petal Width) and compare the results with the three species of the flowers.

Hierarchical clustering (see here) is an option too: the resulting dendrograms could provide you with interesting information.

  • Regression

If you want to use a variable model, then regression is probably the best choice. In your question you write some variables that, in your opinion, should be considered to determine whether the given photo is good or not. As the response variable (i.e. the quality of the photo) is binary ("good" vs. "bad"), in this preliminary phase I would suggest the use of a logistic regression. The input variables provides you with a probability of being "good". The presence of a discrete classification of users suggests the use of the categorical variable formalism.

As you can see, options are many as the problem is quite broad. With more details and some practice you would be able to select 1-2 methods which could provide you with meaningful answers.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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