How am I supposed to represent area input variables to SOM, with the weights/distances to be based on how much they overlap?

I'm trying to encode ranges of finite and positive integers. Like:

  • 500-600
  • 550-650
  • 0-100
  • 101-102

Problem is, the underlying calculations of SOM are supposed to use numeric subtraction and multiplication.

So, how do I represent, like: (500-600) is very close to (550-650) (overlap 50 points) while (0-100) has nothing to do with (500-600), same as (0-100) to (101-102)

It's more like boolean toogles of 0...1000, but the distances should really be calculated by OR not subtraction.

How is this usually done? Unless I change the input vector from the original inputs to distances between each of them?


If I understand you correctly, you want a custom distance metric that allows overlapping regions considered between variables instead of the actual numerical distances. To accomplish this, you could write a function that takes two numerical values and determines a distance between them need on the custom rules you've described. The return value would be a numerical value that conveys you're interpretation of closeness.

For the nodes themselves, they need a representation that your distance metric function can use for distance calculations. Since you're writing the distance metric, you can choose how to deal with that. Additionally, the node representation needs to be adjustable such that you can modify it to move a node "closer" to an observation in a meaningful way. That representation may be exactly the same as the input observations themselves or something completely different but I can't say without further information.

Your final set of node representation, distance metric, and adjustment method may be very simple or very esoteric, but as long as the concepts of closeness and adjustability hold, it should still work.

| cite | improve this answer | |

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.