コンピュータは働きたくて、いつもウズウズしています!   Data + Automation = Datamation
TEXT_SIZE

402 ニューラル回帰予測プログラム

ニューラル回帰予測プログラムは、ニューラルネット(入力層・中間層・出力層)による回帰予測をするときに使用します。


サンプルデータ・A ~ 2値の場合

データには、学習用のデータと、予測用データが必要です。

402 ニューラル回帰予測プログラム サンプルデータ


設定画面・A ~ 2値の場合

アドイン接続後、メニューから「ニューラル単一予測」をクリックすると、次のように設定画面が表示されます。

402 ニューラル回帰予測プログラム 設定例

学習パターン範囲:

サンプルデータの青色の部分をマウスでドラッグして、範囲選択をします。
データの先頭行にラベルを含める必要があります。
データ行列は最大400行×40列です。

処理の種類:

「学習のみ」か「学習と予測」か、いずれかをクリックして選択します。
デフォルトでは「学習と予測」が選択されています。

データの種類:

データが0・1の2値か、実数か、該当するものをマウスでクリックして選択します。

予測データ範囲:

「学習と予測」を選択した場合にのみ、範囲選択をできるようになります。

サンプルデータのオレンジ色部分を、ドラッグして範囲選択をします。
データの先頭行にラベルを含める必要があります。
データ行列は最大400行×40列です。

中間ニューロン数:

0~80の値を入力します。

出力変数Y:

0~4の値を入力します。

ゲイン値:

1.0から4.0の範囲内で入力します。

学習率:

0から100の範囲内で入力します。

収束誤差:

0から0.2の範囲内で入力します。

打切り回数:

1000000までの値を入力します。

中間出力:

中間出力を行う場合は、チェックを入れます。
チェックを入れると出力先を選択できるようになります。
出力を開始したいセル1か所をマウスでクリックして選択します。
なお予測値の出力は、予測データがある列(F列)使用するので、このサンプルデータでは、G列以降を指定するか、データの無い23行目以降などを指定します。

設定が済んだら、「開始」ボタンをクリックします。
「中止」ボタンをクリックすると、操作を中止します。


出力結果・A ~ 2値の場合


サンプルデータ・B ~ 実数データの場合


設定画面・B ~ 実数データの場合

分析用データ(サンプルデータ)は実数なので、「データの種類」では、「実数」を選択しています。


出力結果・B ~ 実数データの場合

ここからは参考のためになりますが、下図G列に、線形回帰分析(重回帰分析)の推定値を示しています。

サンプルデータBの学習データについて、Excelのデータ分析ツール「回帰分析」により求めた出力結果は、下図のようになっています。


参考

この処理のポイントは、誤差逆伝播法を使用し、伝播量の計算にシグモイド関数を使用していることです。

ウェイトの初期設定には乱数を使用します。
学習の完了は、2乗誤差が収束誤差より小さいときです。
学習完了後、完了時のウェイトを用いて、予測データについての予測計算を行います。

データの種類が2値の場合は、計算値が「0.5」より大きい場合は、予測値=1を、小さいときは=0を出力します。

●処理アルゴリズムは以下の通りです●

  1. 伝播量 hh(中間ニューロンの出力)、yy(出力)の計算

      iflg = ProcessY(xnum, hnum, gain, dx, hh, wghtx)
      iflg = ProcessY(hnum, ynum, gain, hh, yy, wghth)

        dx: 入力値
        gain: ゲイン
        xnum: 入力変数の個数
        hnum: 中間ニューロン数
        ynum: 出力変数の個数
        wghtx: 入力の重み係数
        wghth: ニューロンの重み係数
  2. 2乗誤差 yr の計算

      yb = (yy - dy) 
      yr = yb * yb 

        yy: 学習時の入力値
        dy: 学習時の出力値
        yb: 誤差
  3. 誤差逆伝播量の計算

      wnet = wnet + wghth(i, j) * yb
      hb = wnet * (1# - hh) * hh
  4. wghtx、wghth の更新 

      wghtx(i, j) = wghtx(i, j) - a * dx * hb
      wghth(i, j) = wghth(i, j) - a * hh * yb

        a: 設定した学習率
  5. 伝播量の計算 hh、yy

      iflg = ProcessY(xnum, hnum, gain, dx, hh, wghtx)
      iflg = ProcessY(hnum, ynum, gain, hh, yy, wghth)
  6. 2乗誤差の計算
      yb = (yy - dy)
      yr = yb * yb
  7. e < yr

      収束していないとき再度計算ループ
      e >= yr 、または再計算回数が打ち切り回数 n を超えたとき収束し、学習終了へ

        e: 設定した収束誤差
  8. 収束の時、学習終了

      終了時のwghtx、wghthを使用して、dxから出力 hh と 予測値 yy を計算 

      iflg = ProcessY(xnum, hnum, gain, dx, hh, wghtx)
      iflg = ProcessY(hnum, ynum, gain, hh, yy, wghth)

        dx: 入力値
        gain: 利得
        xnum: 入力数
        hnum: 中間ニューロン数
        ynum: 出力数
        wghtx: 入力の重み係数
        wghth: ニューロンの重み係数

サンプルデータ・A(2値)の場合、結果と詳細は次の通りです。

2乗誤差は、収束状況をモニターするために100回毎に表示し、収束したとき最終計算しています。

(参考)次のWebサイトに、誤差逆伝播法の解説があります。
http://griffon.cs.ehime-u.ac.jp/column/neural/chapter6.html


アドインプログラム販売価格:
402a: ~100行 × 20列: ¥4,000.-(税込)
402b: ~400行 × 40列: ¥5,000.-(税込)
※販売のみを行っております。ご質問対応等のサポート及び改変は承っておりません

ご注文はこちらから。別途、注文フォームが開きます。


VBAソースコード販売価格: ¥60,000.-(税込)
※コードの内容は、上記標準版の内容の通りです
※サポート・ご質問の対応・改変のご依頼を承ることはできかねます

VBAソースコードのご注文はこちら


▲動作環境・アドイン接続方法など▲

動作環境

日本語版Windows用 日本語版Microsoft Excel2003以降(推奨)が快適に動作するパソコン。
Excelのアドイン「分析ツール-VBA」のアドイン接続を必ず行い、マクロを使用可能にして下さい。
その他は、Microsoft Excelの仕様に基づきます。

なおMicrosoft社によるサポートが終了したバージョンのExcelを使用したときのいかなる障害・損害・不便などにおきましては、当方では責任を負いかねます。
予めご了承ください。

アドイン接続方法・
ソフトウェア使用許諾

addman03     addman07

※Excel2016・2019も右側の「Excel2007・2010・2013用」をお選びください
※Microsoft365も対応しておりますが、インストール版を対象としております。Web版は非対応です。

    get adobe_reader

マクロが実行できないときにご確認ください https://faq.mypage.otsuka-shokai.co.jp/app/answers/detail/a_id/314030

当商品のような、インターネットからダウンロードしたExcelのファイルについて、マクロが実行できない仕様になっているようです。

マクロを有効化する方法が記されています。お試しください。

※カスタマイズは対応不可となりました(2019年1月)

Excel用アドインプログラム