最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

mapminmax

行の最小値および最大値の [-1 1] へのマッピングによる行列の処理

構文

[Y,PS] = mapminmax(X,YMIN,YMAX)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('reverse',Y,PS)
dx_dy = mapminmax('dx_dy',X,Y,PS)

説明

mapminmax は、各行の最小値と最大値を [YMIN, YMAX] に正規化することによって行列を処理します。

[Y,PS] = mapminmax(X,YMIN,YMAX) は、X およびオプションのパラメーターを取ります。

X

NQ 列の行列

YMIN

Y の各行の最小値 (既定値は –1)

YMAX

Y の各行の最大値 (既定値は +1)

これは、以下を返します。

Y

NQ 列の行列

PS

値の一貫した処理を可能にする処理設定

[Y,PS] = mapminmax(X,FP) は、構造体としてパラメーター FP.yminFP.ymax を取ります。

Y = mapminmax('apply',X,PS) は、X と設定 PS を指定すると、Y を返します。

X = mapminmax('reverse',Y,PS) は、Y と設定 PS を指定すると、X を返します。

dx_dy = mapminmax('dx_dy',X,Y,PS) は、微分の逆数を返します。

ここでは、各行の最小値と最大値が既定の区間 [-1,+1] にマッピングされるように、行列を構成する方法を示します。

x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]
[y1,PS] = mapminmax(x1)

次に、新しい値に同じ処理設定を適用します。

x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]
y2 = mapminmax('apply',x2,PS)

y1 の処理を逆にして、x1 を再取得します。

x1_again = mapminmax('reverse',y1,PS)

詳細

すべて折りたたむ

mapminmax を使用した入力およびターゲットの正規化

学習の前に、入力とターゲットが常に指定の範囲内になるようにスケーリングすると役に立つことがよくあります。関数 mapminmax は、入力とターゲットが範囲 [–1,1] に収まるようにスケーリングします。次のコードは、この関数の使用方法を説明しています。

[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);

元のネットワークの入力とターゲットは、行列 p および t に指定されています。返される正規化された入力 pn およびターゲット tn は、すべて区間 [–1,1] に収まります。構造体 ps および ts は設定を含みます。この場合は、元の入力とターゲットの最小値と最大値です。ネットワークの学習が終わったら、設定 ps を使用して、ネットワークに適用される将来の入力を変換する必要があります。これらは、ネットワークの重みおよびバイアスと同様に、実質的にネットワークの一部になります。

mapminmax を使用してターゲットをスケーリングした場合、範囲 [–1,1] で出力を生成するようにネットワーク出力の学習が行われます。これらの出力を、元のターゲットに使用されたものと同じ単位に戻すには、設定 ts を使用します。次のコードは、前のコードで学習が行われたネットワークのシミュレーションを行ってから、ネットワーク出力を元の単位に戻します。

an = sim(net,pn);
a = mapminmax('reverse',an,ts);

ネットワーク出力 an は、正規化されたターゲット tn に対応します。正規化されていないネットワーク出力 a の単位は、元のターゲット t と同じです。

mapminmax を使用して学習セット データを前処理する場合、学習済みネットワークを新しい入力で使用する場合は常に、設定 ps に格納されている、学習セットに対して計算された最小値と最大値で前処理しなければなりません。次のコードは、新しい一連の入力を学習済みのネットワークに適用します。

pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);

feedforwardnet を含むほとんどのネットワークでは、これらのステップは自動的に行われるため、必要なのは sim コマンドを使用することだけです。

アルゴリズム

X は有限の実数値のみを取り、各行の要素がすべて等しいとは限らないと仮定します。(xmax=xmin の場合、または xmaxxmin のいずれかが非有限である場合、y=x となり、変更は発生しません)。

y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;

R2006a で導入