|
402 |
ニューラル回帰予測プログラム |
|
|
|
ニューラル回帰予測プログラムは、ニューラルネット(入力層、中間層、出力層)による回帰予測をするときに、 |
|
|
使用します。予測結果は予測データの最後の列から出力されます。 |
|
|
|
|
|
|
100行×20列の機能制限版は、こちら↓をクリックして下さい。 |
|
|
クリックの前に、扱うことができる行列の数を、もう一度ご確認下さい。 |
|
|
 |
|
|
|
|
|
|
|
400行×40列の機能制限版は、こちら↓をクリックして下さい。 |
|
|
クリックの前に、扱うことができる行列の数を、もう一度ご確認下さい。 |
|
|
 |
|
|
|
|
|
|
↑クリックすると、インフォカートの決済画面に移ります。 |
|
|
|
|
|
操作画面とその解法は以下の通りです。 |
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
青色 |
「学習パターン範囲」としてドラッグして範囲選択します。 |
|
|
|
|
最大400行×40列まで有効です。 |
|
|
|
|
|
|
|
|
|
|
処理の種類 |
|
|
|
|
|
|
学習のみか、学習と予測を行うかを |
|
|
|
|
|
|
クリックして選択します。 |
|
|
|
|
|
|
|
|
|
|
データの種類 |
|
|
|
|
|
|
データがダミー変数によるデータなのか、 |
|
|
|
|
|
実数データなのかをクリックして選択します。 |
|
|
|
|
|
|
|
|
|
緑色 |
「予測データ範囲」としてドラッグして範囲選択します。 |
|
|
|
|
最大400行×40列まで有効です。 |
|
|
|
|
|
|
|
|
|
|
中間ニューロン数 |
1〜40の半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
出力変数 |
0〜4の半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
ゲイン値 |
1.0〜4.0の半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
学習率 |
0〜100の半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
収束誤差 |
0〜0.1の半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
打切り回数 |
90000までの半角数字を入力します。 |
|
|
|
|
|
|
|
|
|
|
|
中間出力 |
解析途上の出力を表示させたい場合、 |
|
|
|
|
クリックしてチェックを入れます。 |
|
|
|
|
|
任意のセル1か所をクリックして指定。 |
|
|
|
|
|
|
|
|
|
開始 |
設定が済んだら、「開始」をクリックします。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
【解説】 |
|
|
|
この処理のポイントは、誤差逆伝播法を使用し、伝播量の計算にシグモイド関数を使用して |
|
|
いることです。 |
|
|
|
ウェイトの初期設定には乱数を使用します。 |
|
|
学習の完了は、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】 |
|
|
|
|
|
0・1データの場合の解析例: |
|
|
|
|
|
|
|
|
学習データ |
|
予測データ |
|
|
x1 |
x2 |
x3 |
実績値1 |
実績値2 |
|
x1 |
x2 |
x3 |
予測値1 |
予測値2 |
|
|
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
0 |
|
|
0 |
0 |
1 |
1 |
0 |
|
0 |
0 |
1 |
1 |
0 |
|
|
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
|
|
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
1 |
1 |
1 |
|
|
1 |
0 |
0 |
0 |
0 |
|
1 |
0 |
0 |
0 |
0 |
|
|
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
1 |
0 |
1 |
|
|
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
0 |
0 |
1 |
|
|
1 |
1 |
1 |
1 |
1 |
|
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
Gain=2 |
学習率(%)=20 |
中間Neu=3 |
収束誤差=0.0001 |
|
|
|
|
学習値1 |
学習値2 |
2乗誤差1 |
2乗誤差2 |
回数 |
No.Wght |
Wghtx値 |
No.Wght |
Wghth値 |
|
|
0.008*0.008=0.000064 |
0.0080 |
0.0000 |
0.0001 |
0.0000 |
5165 |
wghx(0:0) |
-4.986 |
wghh(0:0) |
8.594 |
|
|
1.0000 |
0.0020 |
0.0000 |
0.0000 |
5165 |
wghx(0:1) |
0.079 |
wghh(0:1) |
-8.457 |
|
|
|
|
0.9940 |
0.0100 |
0.0000 |
0.0001 |
5165 |
wghx(0:2) |
0.489 |
wghh(1:0) |
-0.639 |
|
|
0.01*0.01=0.0001 |
|
1.0000 |
0.9900 |
0.0000 |
0.0001 |
5165 |
wghx(1:0) |
2.963 |
wghh(1:1) |
11.64 |
|
|
0.0000 |
0.0020 |
0.0000 |
0.0000 |
5165 |
wghx(1:1) |
2.286 |
wghh(2:0) |
-12.814 |
|
|
0.0040 |
1.0000 |
0.0000 |
0.0000 |
5165 |
wghx(1:2) |
-0.167 |
wghh(2:1) |
-12.848 |
|
|
0.0000 |
0.9970 |
0.0000 |
0.0000 |
5165 |
wghx(2:0) |
2.328 |
|
|
0.9980 |
1.0000 |
0.0000 |
0.0000 |
5165 |
wghx(2:1) |
0.098 |
|
|
|
|
wghx(2:2) |
-1.202 |
|
|
|
|
|
|
|
|
誤差の計算例 |
|
|
|
|
|
|
|
|
|
2乗誤差は、収束状況をモニターするために、100回毎に表示し、収束した時に、最終計算しています。 |
|
|
|
|
|
|
|
|
(ご参考)次のホームページに誤差逆伝播法の解説があります。 |
|
|
|
http://griffon.cs.ehime-u.ac.jp/column/neural/chapter6.html |
|
|
|
|
|
|
|
|
【サンプルデータB】 |
|
|
|
|
|
|
|
|
|
実数データの場合の解析例: |
|
|
|
|
|
|
|
|
|
Excelの分析ツール「回帰分析」による解析結果との比較を示します。 |
|
|
|
|
|
|
|
学習データ |
|
|
x1 |
x2 |
x3 |
x4 |
y |
|
|
|
|
7 |
10 |
5 |
6 |
13 |
|
|
|
|
6 |
8 |
4 |
3 |
11 |
|
|
|
|
6 |
7 |
6 |
8 |
10 |
|
|
|
|
5 |
6 |
4 |
8 |
9 |
|
|
|
|
8 |
10 |
7 |
9 |
13 |
|
|
|
|
5 |
6 |
8 |
6 |
9 |
|
|
|
|
4 |
5 |
3 |
3 |
7 |
|
|
|
|
|
予測データ |
|
|
|
|
x1 |
x2 |
x3 |
x4 |
予測値1 |
|
ここに予測値が表示されます。 |
|
|
|
6 |
8 |
4 |
3 |
10.77 |
|
|
|
6 |
7 |
6 |
8 |
10.027 |
|
|
|
5 |
6 |
4 |
8 |
8.736 |
|
|
3 |
5 |
2 |
3 |
6.872 |
|
|
7 |
10 |
5 |
6 |
12.933 |
|
|
|
|
中間出力の指定部分(セル1か所を指定) |
|
|
|
|
中間出力範囲 |
|
|
Gain=2 |
学習率(%)=20 |
中間Neu=4 |
収束誤差=0.0001 |
|
|
学習値1 |
2乗誤差1 |
回数 |
No.Wght |
Wghtx値 |
No.Wght |
Wghth値 |
|
|
12.933 |
0 |
8713 |
wghx(0:0) |
0.629 |
wghh(0:0) |
0.39 |
|
|
10.77 |
0.0001 |
8713 |
wghx(0:1) |
0.787 |
wghh(1:0) |
1.175 |
|
|
10.027 |
0 |
8713 |
wghx(0:2) |
-0.349 |
wghh(2:0) |
-2.608 |
|
|
8.736 |
0.0001 |
8713 |
wghx(0:3) |
0.187 |
wghh(3:0) |
-1.186 |
|
|
13.161 |
0 |
8713 |
wghx(1:0) |
0.71 |
wghh(4:0) |
-2.783 |
|
|
8.871 |
0 |
8713 |
wghx(1:1) |
1.124 |
|
|
7.26 |
0.0001 |
8713 |
wghx(1:2) |
-1.18 |
|
|
wghx(1:3) |
-0.232 |
|
|
wghx(2:0) |
0.601 |
|
|
wghx(2:1) |
0.556 |
|
|
wghx(2:2) |
-0.038 |
|
|
wghx(2:3) |
0.407 |
|
|
wghx(3:0) |
0.585 |
|
|
wghx(3:1) |
0.615 |
|
|
wghx(3:2) |
0.005 |
|
|
wghx(3:3) |
0.438 |
|
|
wghx(3:1) |
0.635 |
|
|
wghx(3:2) |
0.631 |
|
|
wghx(3:3) |
0.61 |
|
|
wghx(3:4) |
0.038 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
参考: 回帰分析の結果との比較 |
|
|
|
予測データ |
|
|
x1 |
x2 |
x3 |
x4 |
予測値 |
回帰予測 |
学習Y |
|
|
6 |
8 |
4 |
3 |
10.77 |
10.6437 |
11 |
|
|
6 |
7 |
6 |
8 |
10.027 |
9.93199 |
10 |
|
|
5 |
6 |
4 |
8 |
8.736 |
8.78389 |
9 |
|
|
3 |
5 |
2 |
3 |
6.872 |
7.48038 |
? |
|
|
7 |
10 |
5 |
6 |
12.933 |
13.0607 |
13 |
|
|
|
エクセルでの回帰分析結果 |
|
|
回帰統計 |
|
|
重相関 R |
0.99315 |
|
|
重決定 R2 |
0.98635 |
|
|
補正 R2 |
0.95905 |
|
|
標準誤差 |
0.44817 |
|
|
観測数 |
7 |
|
|
|
分散分析表 |
|
|
|
自由度 |
変動 |
分散 |
観測された分散比 |
有意 F |
|
|
回帰 |
4 |
29.0269 |
7.25671 |
36.1286 |
0.02711 |
|
|
残差 |
2 |
0.40172 |
0.20086 |
|
|
合計 |
6 |
29.4286 |
|
|
|
|
|
|
|
係数 |
標準誤差 |
t |
P-値 |
下限 95% |
上限 95% |
下限 95.0% |
上限 95.0% |
|
|
切片 |
1.82139 |
0.90091 |
2.02173 |
0.18058 |
-2.0549 |
5.69769 |
-2.0549 |
5.69769 |
|
|
x1 |
-0.1489 |
0.84381 |
-0.1765 |
0.87619 |
-3.7795 |
3.48174 |
-3.7795 |
3.48174 |
|
|
x2 |
1.15652 |
0.51072 |
2.26451 |
0.15182 |
-1.0409 |
3.35396 |
-1.0409 |
3.35396 |
|
|
x3 |
0.07024 |
0.13329 |
0.52693 |
0.65085 |
-0.5033 |
0.64376 |
-0.5033 |
0.64376 |
|
|
x4 |
0.06086 |
0.12866 |
0.47302 |
0.6828 |
-0.4927 |
0.61446 |
-0.4927 |
0.61446 |
|
|
|
|
|
|
|
100行×20列の機能制限版は、こちら↓をクリックして下さい。 |
|
|
クリックの前に、扱うことができる行列の数を、もう一度ご確認下さい。 |
|
|
 |
|
|
|
|
|
|
|
400行×40列の機能制限版は、こちら↓をクリックして下さい。 |
|
|
クリックの前に、扱うことができる行列の数を、もう一度ご確認下さい。 |
|
|
 |
|
|
|
|
|
|
↑クリックすると、インフォカートの決済画面に移ります。 |
|
|
|
●特定商取引法に基づく表記 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|