Solved – Normalization by decimal scaling

classificationnormalizationoptimal-scalingsvm

I came to this normalization technique

Normalization by decimal scaling normalizes by moving the decimal point of values of attribute A. The number of decimal points moved depends on the
maximum absolute value of A. A value v of A is normalized to v’ by computing:
v’ = ( v / 10powerj )

where j is the smallest integer such that
Max(|v’|)<1.

So if we have matrix e.g. [1 3 5 7] j should be 1 I believe and when matrix is [ 1 3 5 99 ] j will be 2 ??

Is this method superior over min-max scaling e.g. for SVM ?? Obviously this method doesn't scale to range 0-1 as commonly suggested.

Is any MATLAB code for this method available somewhere ??

Best Answer

Are you asking for a way to compute $j$ ?

If so, I would simply take j = log10(max(v)). (round it if you want an integer power)

As for your question

Is this method superior over min-max scaling e.g. for SVM ?

I believe there is no single answer for that, i.e. it may depend on your data. The best way to know is to try both normalizations, conducting your experiments with the two data, and comparing the performances.

Edit:

I already gave you the MATLAB code j = round(log10(max(v)));

And the example you gave looks perfectly good to me. If you try min-max normalization (with mapminmax(v)), you will see that the final values will be -1 <= v' <= 1.

But if you definitely want max(v') < 1 (why though) then you should increment j by 1.

So in MATLAB, you need to do : j = round(log10(max(v))) + 1;

Related Question