In order to identify the similarity between images (products) I want to use a neural network approach similar to TiefVision. This pre-trained neural network is basically translating the images into a feature vectors and then creating a similarity measure between the images using a distance measure between the vectors. To make it more tangible have a look at a 2D visual representation below.

I want to take it one step further: When a single user "likes" multiple images, I want to average their feature vectors. This will result in a new vector, which I want to use to calculate recommendations. My assumption is that images close to the combined feature vector will possess similar features towards all "liked" images together.

Now I wonder: Is my thinking flawed - maybe because averaging the vectors will simply lead to entirely different images, or will it actually produce images with similar features?

(source: indico.io)

  • 2
    $\begingroup$ My opinion and experience is that averaging will work because the average will capture the commonalities, as you suspect. The next step up in complexity would be to consider the distribution of the points, rather than just their average. High-dimensional spaces are weird, and counter-intuitive, so you'll have to see for yourself. Welcome to the site! $\endgroup$
    – Emre
    Dec 27 '17 at 21:52
  • $\begingroup$ Thank you Emre. Also for the suggestion to work with the actual distribution instead of the average. Is it save to say then that a neural net working with images actually creates a continuous understanding of features rather than a discrete one? For example would a rounded corner be recognized to some extent as a corner and to some extent as an edge instead of being 100% new type of feature and 0% edge/corner? $\endgroup$
    – Gegenwind
    Dec 28 '17 at 7:28
  • $\begingroup$ Typically but not necessarily; you can also learn discrete representations; see for example arxiv.org/abs/1603.02844 This helps in retrieval. $\endgroup$
    – Emre
    Dec 28 '17 at 7:57

That is a common approach when using embeddings, especially word embeddings.

One choice is between mean and medoid. Mean calculates a central tendency vector that might not map to an observed image. Medoid adds the constraint the central tendency vector as to be an observed image.


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.