Newsgroups: comp.ai.neural-nets
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!oitnews.harvard.edu!purdue!lerc.nasa.gov!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland.reston.ans.net!newsfeed.internetmci.com!news.kei.com!nntp.coast.net!news00.sunet.se!sunic!news99.sunet.se!news.rccn.net!news.inesc.pt!animal.inescn.pt!news
From: jcard@merlin.tecno.inescn.pt (Joao Cardoso)
Subject: Re: Normalised or UnNormalised Inputs ??
Message-ID: <DKyCs8.D8E@animal.inescn.pt>
Sender: news@animal.inescn.pt (USENET News System)
Nntp-Posting-Host: bart.inescn.pt
Reply-To: jcard@zorg.tecno.inescn.pt
Organization: INESC-Porto, Portugal
X-Newsreader: knews 0.9.3
References: <4cas3d$gne@ntuix.ntu.ac.sg> <DKooH6.33D@unx.sas.com>
Date: Wed, 10 Jan 1996 06:31:19 GMT
Lines: 47

In article <DKooH6.33D@unx.sas.com>,
	saswss@hotellng.unx.sas.com (Warren Sarle) writes:
..
>Depends on what you mean by "normalize". If you mean an operation that is
>applied to each case, such as dividing all the inputs by the root-mean-square
>of the inputs for that case, then you are throwing away information about
>the magnitude of the inputs. In some applications, that information may be
>of crucial importance, and normalizing cases that way can cause the net to
>fail to learn anything useful.

Not if you add an extra variable representing the magnitude of the original
input vector. If your input space has dimension N, than you end-up in an
input space of dimension N+1, and the original input space can be viewed
as a projection of the N+1 space. This transformation does not `distort'
the input space, keeping original geometrical information.

Below is an matlab-like script to perform the above procedure.

--------------------------------
function ndata = add_extra(data)

# data = add_extra(data)
#
# add an extra variable (column) to data,
# in such a way that all rows (patterns) have equal modulus (L2),
# then normalize all vectors (rows) to modulus one.

n_rows = rows(data);
n_cols = columns(data);

for i=1:n_rows
	mod(i) = norm(data(i,:));
end

maxmod = max(mod);
ndata = [data/maxmod sqrt(maxmod^2 - mod.^2)/maxmod];

endfunction

I Hope this can help, it helped me on a Kohonen `NN'.

Joao
-- 
Joao Cardoso, INESC	|	e-mail: jcard@zorg.tecno.inescn.pt
R. Jose Falcao 110	|	tel:    + 351 2 2094345
4000 PORTO, PORTUGAL	|	fax:    + 351 2 2008487

