• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ニューラルネットワークでデータを正規化するには?)

ニューラルネットワークでデータを正規化する方法と逆変換について

sugakusyaの回答

  • ベストアンサー
  • sugakusya
  • ベストアンサー率68% (13/19)
回答No.1

 今晩は。  私もニューラルネットの研究をしています。 一つ目の回答  この場合教師データの入力としての価値が年齢の項目にはありません。したがって二つの方法が考えられます。 1.年齢は入力しない。 2.適当な最大値、最小値を自分で決定して正規化する。 2の方法はつまり好きな1~0の値を選ぶことになります。 状況に応じて選択してください。 二つ目の回答 正規化後の値 = (正規化前の値 - 最小値) / 最大値 - 最小値 だから 正規化後の値=A 正規化前の値=B 最大値=Max 最小値=Min とすると、 A=(B-Min)/(Max-Min) よって (Max-Min)A-Min=B では?

mgh072
質問者

お礼

お返事遅れました… 大変分かりやすい説明ありがとうございます! なるほどそうなんですね、実際にやってみたらできました!! 助かりました、ありがとうございました

関連するQ&A

  • ニューラルネットワークの正規化されたデータを元に戻すには

    ニューラルネットワークで正規化し、パラメータを求めた後、パラメータの正規化をもとに戻したいのですが、方法が分かりません。 以下は、私がやっている途中を示します。 たとえば、データの入力が年齢と身長、出力が体重のデータがあるとします。 年齢x1  身長x2   体重y 21    160     55 24    172     63 私は、正規化するために  x1’=(x1-ave(x1))/std(x1)  x2’=(x2-ave(x2))/std(x2)  y’=(y-ave(y))/std(y) として正規化しました。aveは平均、stdは標準偏差 ニューラルネットとしては、次の式で表される三層パーセプトロンを利用しています。  f=W0+Σ{Wj*hj} Σはj=1からJまで  (中間層-出力層)  hj=sigmoid(Σ{Wjk*xk’}) Σはk=1,2  (入力層-中間層)  Error=(f-y’)*(f-y’) 入力層のバイアスはなしで、中間層のバイアスはありを考えています。 活性化関数は、中間層がシグモイド関数、出力層が線形関数です。 正規化したxとyに対して各wを求めるプログラムは作れたのですが、 ここからどうやってwの正規化を解除すればよいか分かりません。 正規化する方法は載っているサイトはいくつかあるのですが、解除する 方法が載っているのは見つかりませんでした。 回答よろしくお願いします。

  • ニューラルネットワークの入力データについて

    例えば 性別、身長、体重、足のサイズ があった場合、身長・体重・足のサイズは正規化し、性別については 男→0 女→1として学習できるのではないな?と素人ながら思っております。 この時仮に性別が「男」「女」以外に「性別3」「性別4」と性別が4つだったとしたら、データはどう作れば良いのでしょうか? 2つの場合に倣ってそれぞれを0,1,2,3とラベル付けする感じでよいんでしょうか?

  • ニューラルネットの教師あり学習について質問です。

    最近誤差逆伝搬法を用いたニューラルネットについて プログラムを組んで実装してみようと思ったのですが あまり理解できていない部分があるのでよろしくお願いします。 私が作りたいのはフォントの違う数字画像の認識を 3つの特徴量(a,b,c)、3層のニューラルネット、 閾値関数にシグモイド関数、教師有り学習で作りたいのですが、 私の理解があっているかわからないのでご指摘をお願いします。 ・入力層は特徴量が3つなのでニューロンは3つ(a,b,cを入力)。 ・中間層は任意でいいということなので10つ。 ・出力層は数字が0~9までなので10つ。 教師ベクトルの与え方なのですが 出力層(0~9番とします)において各数字に対応する番号のニューロンは1、それ以外は0、 つまり 出力層の0番の教師ベクトルは{1,0,0,0,0,0,0,0,0,0} 1番目の教師ベクトルは{0,1,0,0,0,0,0,0,0,0} 9番目の教師ベクトルは{0,0,0,0,0,0,0,0,0,1} (シグモイド関数のため正確には0、1にはなりませんが・・) とあらかじめ決めておき、 教師ベクトルの学習の際は 0の画像ならば出力層は{1,0,0,0,0,0,0,0,0,0}^T となるように誤差逆伝搬を用いて中間層・出力層の重みの修正を行い、 同様に1~9の教師画像も対応する出力の番号以外0となるように 学習を行い、 識別を行いたい画像の特徴量を入力した際は 重みの修正は行わず 10この出力の誤差が最小となる教師ベクトルが第一候補、 誤差が最大となる教師ベクトルが第10候補 ということでよろしいのでしょうか? でもそうすると重みの値が一番最後に学習した教師ベクトルに 対応する重みになっているから ニューラルネット自体を10個つ用意する必要が ありますよね・・・? いま一つ理解できていないのでよろしくお願いします。

  • C言語で分からない問題があります。

    C言語で分からない問題があります。 以下をプログラミングする方法を教えてください。 身長(cm)と体重(Kg)を入力し、理想体重((身長-100)*0.9)との差を求めよ。ただし、入力データと出力データの書式は次の通りとする。 入力データ:H160W50 出力データ:HEIGHT=xxx.xx(cm) HEIGHT=xxx.xx(Kg) RISO=xxx.xx(Kg) RISO=xxx.xx(Kg) WEIGHT-RISO=xxx.xx(Kg) (答)-4.0(Kg)

  • 正規化について(初心者です)

    正規化について勉強しています。(質問ジャンルが違うかもしれません) 正規化の意味は漠然とつかめますが、どのように計算するんだろうと悩んでいます。 正規化について検索していると下のような質問がありました。これを正規化するとどうなるのでしょうか。計算式を教えてくださいませんか? 先ずは身長での正規化で具体例をお願いします。 年齢  身長   体重 21    160     55 24    172     63 私が計算すると分子がゼロになってしまいます。

  • ファイル入出力

    こんにちわ。私は大量のデータ読み込みそのを離散化させて0か1と して出力したいと思います。私は以下の流れでプログラムを組みました。 (1)stepとf1~f11、レコード数の2元配列を組む (2)データからf1からf11のレコード最大値と最小値を見つける (3)データの値-最小値/最大値-最小値で規格化 (4)規格化の値で0.5以上を1それ以外を0と出力 一応この流れで作ったのですが上手くいきません。作ったプログラム とデータを添付します。よろしくおねがいします。

  • 回帰分析におけるデータの正規化の意味

    重回帰分析をプログラム作成することを考えています。 しかし、データの正規化について疑問が2つあります。 まず一つは、例えば、画像の解析をする場合にデータの正規化をすることは、 ノイズを除去したり、画像の向きを正しくすることを意味しますよね。 しかし、回帰分析においてデータの正規化をすることは何を意味しているのでしょうか? 画像のように見てイメージがわけばよいのですが、数値データなのでどういう意図があるのかよく分かりません。 2つ目の疑問です。 また、データを正規化して重回帰分析をしたとします。 ↓の重回帰分析を例に挙げます。 http://homepage2.nifty.com/crop_shimane-u/multipleregression_excel.htm この例では、入力として年平均気温、降水量、日照時間とし、出力を単収としています。 このときデータを正規化せずに解析し、次のような予測式を推定しています。  水稲単収=713.932-17.336×年平均気温+0.010666×降水量+0.017851×日照時間 ・・・ @ この場合に、正規化していないので新しいデータとして、例えば、  年平均気温=14.8、降水量=2431、日照時間=1721 ・・・ (*) から単収を推定したいとき、上記@の回帰式に代入することで単収を計算して推定できます。(1) しかし、データを正規化(平均が0、分散が1になるように)した場合、入力と出力のデータが0以上1以下の値しかとらなくなるので、 重回帰によって上記@のように予測式が得られてもその予測式の出力は0以上1以下の値しかとらないことになり、 新しいデータ(*)をそのまま予測式に代入しても正しい単収を推定できないのではないかと考えています。 この場合のように、データを正規化して得られた予測式で(1)のように正しく単収を推定するにはどうしたらよいのでしょうか? 長くなりましたが、回答よろしくお願いします。

  • ニューラルネットワークの入力層の選択

    ニューラルネットワークで入力層・中間層・出力層があるわけですが、入力層をインプットとして出力層を推定するモデリングを考えていくのが基本だろうと思います。 そこで質問なのですが、出力層というのアウトプットとして欲しいものであり、入力層はそれを説明するに足りる情報だとみなすことができるように思います。という風に考えると入力層は説明には足りない数だとなっていた場合、十分学習した後、アウトプットはどのように変化していくものでしょうか。不安定とか発散とかそういう結果になるのでしょうか。また、正しくモデリングするためには入力層はある程度の数が必要ということになるのでしょうか。つまり必要な数よりも少ないとダメだけど、少々多いのは構わないということになるのでしょうか。それともモデリングの対象ごとにいろいろ違うということになるものでしょうか。また、入力層として必要なデータは理屈で考えて因果関係が説明できるものから選ぶというのが基本なのでしょうか。”風が吹けば桶屋が儲かる”ということで、風のデータは入力層に必ず含め、桶屋の収入をアウトプットとするという風にする、ということですが。 よろしくお願いします。

  • C言語でのプログラム作成について

    授業でIf文の問題が出たのですが、なかなか上手く作成できないので、教えていただけないでしょうか。やればやるほど上手くいかなくて困っているのでお願いします。 問題 身長(cm)と体重(kg)を入力して、それらの値からBMI値を求め出力せよ。さらに求められたBMI値によりそれぞれ以下のようなメッセージを出力せよ。 BMI値          出力メッセージ 18.5以下        Yasegimidesu      18.5以上25.0以下   Futsuudesu 25.0以上30.0未満   Futorifimidesu 30.0以上        Futorisugidesu ※BMI値計算のための式は以下の通りです。(身長がメートル単位であることに注意) BMI値=体重(kg)÷(身長(m)×身長(m)) 例えば身長167cm、体重60kgの場合、 BMI値=60÷(1.67×1.67)となる。 よろしくお願いします。

  • 数値データの正規化

    ほぼ素人なのですが若い社員に教える必要があるので四苦八苦してます。どうぞ判りやすくお教えください。数値データを統計的に処理する場合標準偏差を求めますね。そして場合によっては、更に深く解析を進めるためにはそれを正規化し比較する作業がありますね。例えばこの正規化された数値は偏差値の計算にも使われます。偏差値=10u+50(uは正規化された数値) ここまでは間違ってないですね! ここからが未だスッキリしない疑問です。正規化された数値はは平均値が0で、標準偏差・分散が1にあり-1~+1の範囲にある。と理解してましたが、どうも違う気がしてきてます。というのは正規化された数値が-1~+1の範囲の値しか取らないのであれば偏差値も40~60の値しか示さないことになります。「東大合格へは偏差値70あれば良い!」が説明できなくなります。多分、どこかで見た、あるいは教えていただいた「正規化された数値は-1~+1の範囲にある」が抜けきらないからスッキリしないと思うのですが、私は何処でどのように誤った理解をしたのかが気になって仕方ありません。「-1~+1の範囲」は誤りなので、割り切って頭の中を切り替えれば済むようですが・・・・・何方か私が誤った理解をするに至った経緯を推論していただけないでしょうか?気分をスッキリさせるだけの我が儘な質問ですがご親切な方、よろしくお願いします。