# How to scale this expression

1. Feb 10, 2012

### pamparana

Hello everyone,

I have a bit of an issue regarding scaling of an expression. So, the scenario is as follows.

I have a confidence value that can be associated with the solution given by an optimization routine and it is as follows:

C = exp(-A)/(exp(-A) + exp(-B))

where A, B and C are some energy values returned by the optimization routine and C represents the confidence or the probability assigned to the solution A. Also, B is always greater than A.

After some simple manipulation, the expression becomes:

C = 1.0 / (1 + exp(A-B))

Now, in the beginning my issue was that the values A, B and C were usually quite large (in tens of thousands). So this expression was giving values of 0.5 when A and B were very close and when the difference was something a bit larger (in absolute numbers), then the expression would basically become 1.

So, I realized I needed to do some normalization and the first thing I tried was divide everything by A. So, now the expression becomes:

C = 1.0 / (1 + exp(1-B/A))

Now typically B/A is something from 1 to 1.01. So, now I have a similar problem: As exp(1-B/A) will basically be 0.5.

So, what I would like to do is introduce some scaling, normalization on this expression that would help me basically capture the changes in my data range. I would be grateful for any suggestions that anyone might have.

Thanks,
Luca

2. Feb 10, 2012

### coelho

For some reason, for me this formula resembles Statistical Mechanics, more exactly the Partition Function.

If this formula didnt come directly from it, maybe you could read about it, see if it applies to your problem, and see if there is already some technique for doing what you want.

3. Feb 11, 2012

### pamparana

Hello,

it is sort of derived from the Ising model but actually it is just a coincidence that it looks like the partition function.

My problem is actually much simpler:

So, ok.

C= 1 / (1 + e^(B/A)) for the moment assume B >= A, So C can range from 0.5 to 1.

Typically, B/A ranges from 1 to 1.01. What I would like to do is have some sort of scaling so when B/A is "close" to 1, then C is close to 0.5 but when it starts to diverge, then C starts to get closer to 1. However, I do not want a linear scale as I want to exaggerate the differences.

I can now a priori what the maximum B and A values will be. I was wondering what suitable function can I use. One thing that comes to mind is to actually use the exponential:

So,

C = 1 / (1 + e^(e^(factor)*B/A)).

However, I am not sure how I can derive this "factor" term in a suitable way from B and A values that would make sense.

Thanks,

Luca

4. Feb 11, 2012

### chiro

Hey pamparana.

Have you considered modelling your variables on derivative information?

Basically what I am getting at is using derivative information to work backwards to get an empirical value for your 'factor' variable. So if you specify specific derivative behaviour at some given point, then you can use that to get equations for 'factor' and hence evaluate it for those given conditions.