1/17ページ
ダウンロード(899.1Kb)
このカタログについて
ドキュメント名 | テクニカルチップス |
---|---|
ドキュメント種別 | 製品カタログ |
ファイルサイズ | 899.1Kb |
登録カテゴリ | |
取り扱い企業 | SETソフトウェア株式会社 (この企業の取り扱いカタログ一覧) |
この企業の関連カタログ
このカタログの内容
Page1
テクニカルチップス 目次
Tips-1. モデルの汎化性-学習 vs 過学習
Tips-2. ニューラルネットワークの実行速度
Tips-3. ニューラルワークス Predict による感度分析
Tips-4. 感度分析に対するデータセットの選択
Tips-5. 分類モデルと"強度"値
Tips-6. 明確な評価基準がない場合のモデルの評価方法
Tips-7. 事例ベース推論とその活用方法
Tips-8. 時系列データのモデル構築
Tips-9. モデル構築過程の自動化
モデルの汎化性-学習 vs 過学習
データには極端な値があるのと同様に、データモデリングの仕事も極端です。 ‘クリーン’な問題と’非常に雑音のある’問
題があります(以下に説明します)。何百万ものレコードのデータセットもあれば、50レコードのものもあります。5
個のデータフィールドのものもあれば、500個のものもあります。ターゲットが 1つのものも、20のものもありま
す。そしてデータフィールドが歪んだ分布のものや一様分布のものあります。
理想的なアプリケーションとは、それがもし仮に存在するとして、それは’クリーンな’データで数フィールド、1出力、
数千のデータレコードで可能なデータ範囲を対称的に分布しているものでしょう。しかし、いったい誰がそのような簡
単な仕事をしたことを覚えているでしょうか?
●クリーンな問題:すべての入力ケースがあって、測定誤差がない数学の関数のモデル
●雑音の多い問題:予測に有効かどうか分からない入力値と雑音の多い S&P500の終値のモデル
上記性質が、時間、努力、そして解析の結果に影響を与えます。モデリングの困難さは、モデルの新しいデータへの汎
化性能と関係があります。 いくつかのアプリケーションでは汎化が容易です。モデルの学習に関して 2つの互いに排他
的なテーマがあります。一つは、モデルはデータを可能な限りよく学習することが必要であり、可能性のあるもっとも
高い性能測度(R相関のような)が望まれます。他方、過度の学習はモデルの汎化性という点では有害です。モデルが
Page2
データ中の汎用的なパターンの学習から離れ、学習データ中にのみ存在する特別な関係を記憶し始めるやいなや、その
モデルは良いものから悪いものへ変わっていきます。したがって、良い汎化を行うためにはモデルの学習能力の制限が
必要です。もし学習を制限しすぎてしまったらどうなるでしょうか?また、それを知る方法はあるのでしょうか?ひと
つの方法は、モデル構築プロジェクトの初めでは、モデルの汎化性についての問題は全て忘れて、意識的にモデルを過
学習させることです! 最大の性能を見るため、利用できる全てのデータを使いましょう。これは、技術に明るくない
人は意識せずに行なってしまいますが、分かった上で行うのはメリットがあります。それらのモデルからの性能指標は
上限の性能値を与えることになり、汎化性の観点からは、開発中にその値には到達することはできないことがわかりま
す。
以上の議論のポイントは、汎化性のもとでモデルの学習能力の限界に関心が移る前に、モデル学習に関する極限を最初
に知ることが重要であるということです。そうでなければ、性能を低く制限しすぎてしまうかもしれません。これは、
ニューラルワークス Predictではその優れた機能を未使用にすることで実現できます。「すべて悪く」それらの設定を
使用するには、
●クリーンデータ(ノイズ設定)
●包括的なデータ変換
●変数選択なし
●徹底的なネットワーク検索
●詳細パラメータボタン、データセットタブ
○学習セット=すべて 2次セットから
○テストセット=すべて 2次セットから
○OK
●そしてモデルを学習!
Professional II/PLUSユーザも、同一の学習とテストセットを使用し、隠れ層ノードを十分多く使用し、
Run/SaveBest の代わりに Run/Learnを使用して、数百万レコードを学習させることで、この「良くない手段」を行
Page3
うことができます。たとえば、過学習で R=0.9であることが分かった場合でも、学習データセットでの評価は R=0.7
の評価を得る見込みもないでしょう。
ニューラルネットワーク実行速度について
ニューラル・ネットのデータの処理がどのくらい速いと思われますか? 極端に早いことが分かります-1分間に何百万
レコードのオーダーです!
例として、入力列 100、出力列 1のデータセットを作りました。ニューラルネットワークは Professional II/PLUSに
より生成し、50,000回の学習の反復、同じデータセットでのテスト、そして FlashCode機能を使った Cソースコード
への変換を行いました。Professional II/PLUSの全セッションは、ほぼ 2分以下で完了します。この 100入力、20の
隠れ層、1出力のモデルは大抵のアプリケーションよりも十分大きいものです。その後、生成された Cコードは実行速
度を計測するために特別に書かれたメインプログラムに容易に組み込まれました。
結果は...
10,000,000レコードが 76秒で処理されました(1.3分;131,578レコード/秒)。
テストマシンは 2.66GHz Pentium 4、メモリ 768MBですが、これより十分少ないメモリでもこのテストでは十分で
す。 Windows XPのバックグラウンドタスクの代表的なものとして、メール、ウイルスチェッカー、等が動いていま
した。そのプログラムは汎用化されたサブルーティンに対して 100列の浮動小数点配列を渡して、1つの浮動小数点値
を別の浮動小数点配列で返すものでした。予測した結果に対して、スクリーンやディスクへの書き込み、データの読み
込み、要素数 100の入力データ配列へのデータのセットなどは、何も行われませんでした-このテストはただ単にニュ
ーラルネットワークのスループット時間の計測となります。
学習したニューラルネットワークを通した情報処理自身は非常に高速です。実際の問題の時間の浪費は、データを取得
すること、そしてその結果に対して何かを行うことに費やされます。プログラムに対する変更として、ASCIIテキスト
ファイルから入力データを読み、個々のレコードを探索して、100個の要素の配列に格納すること、汎用サブルーティ
ンを呼び出すこと、そして予測した結果を別のテキストファイルに書き込むことを行ってみました。この入力・出力デ
ータ操作の追加は実行速度に大きな影響を与えます・・
Page4
10,000,000レコードが 1,446秒で処理されました(24.1分;6,915レコード/秒)。
ほとんどの方々には、まだ十分早いですね!より小さなニューラルネットワークモデルのスピード、より速いマシンで
バックグラウンドタスクのない状態を想定してみてください。
Predictを使った場合の時間の差は、広範なデータ変換と有効性のチェック機能、そして Professional II/PLUSよりも
大きなニューラルネットワークを FlashCodeで扱っている点によるものです。
お分かりになるように、Predictの結果もまた非常に印象的です・・
10,000,000レコードが 1,723秒で処理されました(28.6分;5,803レコード/秒)。
ニューラルワークス Predict による感度分析
ニューラルワークス Predictの多くの機能の一つに、個々の入力変数が、モデルで使用される他の入力変数に対して相
対的に、モデルの出力に与える貢献度を比較できる機能があります。この感度分析機能はオンラインドキュメントとオ
ンラインヘルプに記述されていますが、理解が容易な例を見てみることは非常に役に立ちます。
以下に続くテーブルは「土壌蒸発」の例題に対して、感度分析を実行した結果です。これは、ニューラルワークス
Predictのクイックスタートガイドで紹介されている例と同じです。
上記の集計結果では、元のすべての変数に対して数値が示されており、3行で次の情報が書かれています。
平均:この行は、感度の正と負の傾向を示します。負の値は一般的に、フィールドの増加によって、予測出力を減少さ
せることを意味します;すなわち、そのフィールドと出力には負の相関があります。正の値は一般的に、フィールドの
増加によって、予測出力を同様に増加させることを意味します。
Page5
平方平均:この行は、感度の強度を最もよく(平均よりもよい)あらわします。ここでは、傾き情報は決定することは
できませんが、もしあるフィールドが別のフィールドに対して 4倍の値であるならば、最初のフィールドは 2番目のフ
ィールドに比較して 4倍の影響を出力に与えることを意味します。
分散:これは、単に個々のフィールド列の感度の分散に他なりません。ここで、3つの全集計行(平均、平方平均、分
散)は、それぞれのレコードの感度分析を実行したあとの単純な統計集計であるということに注意してください。も
し、20フィールドの 100レコードがあれば、まず内部的には感度値の 100行 10列のマトリックスが作成されます。
分散値は、どの程度、平方平均値と平均値を信頼してよいかの程度を与えます。
この特別な例題では、全ての入力フィールドが使用されています;Predictは変数選択の実行中では入力フィールドを
削除しなかったことになります。多くのアプリケーションでは、強力な遺伝的アルゴリズムによって、削除される入力
フィールドがあります。そのようなフィールドは、感度分析においては、モデルの出力に対して、影響度が 0と示され
ます。
上の棒グラフは平方平均値を示します。それらの結果は、土壌蒸発データを使ったモデルからの結果です。棒グラフ
は、入力の重要度を顕著に示します。縦軸のスケールは重要ではありません;個々の棒の相対的な高さだけが重要で
す。
感度分析に対するデータセットの選択について
ニューラルワークス Predictとニューラルワークス Professional II/PLUSは両者とも感度分析機能を持っています。感
度分析は個々の入力フィールドがモデルに与える影響を決定するのに使われます(背景となる詳細は ニューラルワー
Page6
クス Predictによる感度分析 を見てください)。ニューラルネットワークは大抵の場合、さまざまなデータセットを
使用して生成され、通常、学習データセット、テストデータセット、そして 1つ以上の検証データセットを使用しま
す。よく行われるものとして、学習とテストのサブセット使ってモデルの構築と選択を行い、検証セットを使って期待
される実世界での性能を測定します。では、どのデータセットがモデルの入出力感度(すなわち、どの入力が最も出力
に影響を与えるか)を測定するのにベストなのでしょうか?
個人的には、そのデータの分布を知ることが有益であると常に警告しつつも、最も全体像を得るために、利用可能な全
てのデータを使用するのが好みです。たとえば、出力が 0と 1をもつ 2クラスのデータセットを考えましょう。(温度
あるいは販売量のような連続変数のターゲットの場合でも同様の議論が可能ですが、ただ 2つのカテゴリを持つ場合を
考えるのが理解するのに最も容易です)この 2クラスの例では、学習データセットはクラス 0とクラス 1のデータレコ
ードの数がほぼ同一で、平衡を保たれていると想定しましょう。テストデータセットもまた平衡を保たれているとし、
検証データセットは実際の世界の分布の特徴を持っているとしましょう。それらの検証データの 90パーセントがすべ
てクラス 1にあると想像してみましょう。そのセットでの統計性能を測定する際、R相関あるいは RMSエラーのよう
な全体を包含する測度、あるいは平均分類率のような測度を使用するよりも、それぞれのクラスを別々に見てくださ
い。また、歪対称のデータセットから生成された感度分析の出力を信用しないでください。
理想的なデータセットは全てのパターンのデータが出現し、平衡が保たれたものです。
2番目に、どのデータセットで感度分析を通すかという問題があり、そのデータはそのモデルに関係したデータでなけ
ればならないということです。
これは明らかであるというのは、本当でしょうか?
もし、ニューラルネットワークモデルがりんごの種類を区別するモデルであれば、そのりんごモデルにオレンジを入
力することはないでしょう。しかしながら、特に時系列のアプリケーションでは、学習、テスト、そして検証データ
セットが似通っていないデータを持つのはいたって起こりうることです-データ構造は同一であるにも関わらず。
「強気筋」市場中に構築された株式市場モデルで、「弱気筋」市場からの検証データを使用することを想像してみま
しょう。予測モデルの出力と同様、感度分析の結果はモデルが問題を理解しているか(どれだけよく学習してきた
か)どうかに依存し、処理されるデータがそのモデルにどれだけよくフィットしているか(新しいデータが学習に使
用されたデータにどの程度似ているか)に依存します。感度分析の結果はあまり学習していないモデルやあるいはあ
Page7
まりフィットしていないデータの場合に誤った結果になる可能性があります。(時系列データの表現に関する簡単な
導入解説 時系列データのモデル構築 を参照してください。)
分類モデルと「強度」値
ニューラルウエアの Predictの分類モデルは元のデータのターゲットと同じフォーマットで予測値を生成します。
たとえば、モデルの出力は 0/1、はい/いいえ、赤/緑/青、クラス 1/クラス 2/クラス 3/クラス 4、あるいは別のフォー
マットかもしれません。そのような出力は確かに便利ですが、個々の予測されたクラスへの割り当ての強さの方が知り
たいことがよくあります。
たとえば、ともに“はい”と予測されている 2つのレコードを取り上げましょう。
1つ目のレコードは 0.6を”はい”と予測し、他方は 0.99を”はい”と予測したとしましょう; 重要なことは、2番目の
データに対して、より自信を持った予測ができるということが分かることです。
Predictでは、Predictメニューで出力オプションを変更できます。
単に Predict/Runを選び、内部ユニット(ネットワーク出力は目的変数に変換されない)をチェックし、実行ボタンを
クリックしてタスクを続けててください。そうすると、予測出力は連続値となります。
たとえば、4つのクラスの出力の場合、たとえば{赤、オレンジ、黄色、青}は 4つの値、たとえば{0.01、0.42、
0.23、0.34}を生成し、最も高い値が勝利クラスとして選択されます。この特別のレコードに対しては、オレンジ
(0.42)は生き残った予測出力となります。
Professional II/PLUSユーザはこの問題をすこし違った方法で取り扱います。Professional II/PLUSのターゲット出力
は 4つのクラスに対して{0, 0, 0, 1}のように準備されていなければなりません(”one-of-N変換”)。予測出力の形式
は選択されたニューラルネットワークパラダイムに依存します。我々の最もベストな分類パラダイムである学習ベクト
ル量子化ネットワークは完全に 0か 1を生成します。その場合、他の方法も存在しますが、強度をすぐに得ることはで
きません。一方、バックプロパゲーションだけは連続値の予測を与え、後処理として最大値を勝利クラスとしてそれら
の値をクラスに割り当てます。
明らかな評価基準がない場合のモデルの評価方法
Page8
この疑問はニューラルネットワークモデルの学習を終えた際に起こります。あなたは、問題を把握し、解法を理解し、
正しいデータを得、その内容とフォーマットを理解し、モデル構築に集中するための時間を割き、製品のパラメータの
選択し、おどろくほど短い時間でネットワークの学習を終えたに違いありません。ニューラルワークス Predictあるい
はニューラルワークス Professional II/PLUSにより”テストコマンド”を実行し、R相関、平均絶対誤差、平均 2乗誤
差、あるいは平均分類率のような統計測度を得ているはずです。
そして、次の疑問にぶち当たります-このモデルはどのくらいよいものなのだろうか?R相関が 0.88と想定した場
合、このモデルはよいモデルなのだろうか?それは驚くほど優れたものなのだろうか?それとも本当は悪いモデルなの
だろうか?だれかその違いを教えてくれないだろうか!?もちろん“良い”は相対的で、平均よりも良いという意味で
す。確かに、あなたはモデルを繰り返し構築し、最良のモデルを保存し続けます。20モデルを構築した後、ベストなモ
デル(それはたとえば R=0.91を示し)を保持することには良い感覚をもつことでしょう。少なくとも、R=0.91モデ
ルは他のモデルよりも良く、平均よりも良いということを知っていますが、しかしもちろんこれは使用したアルゴリズ
ムや、あるいは使用したパラメータ、あるいはその製品に対して用意したデータの使用方法でということです。他のア
プローチであればもっと良い結果を生じる可能性はないのでしょうか?R=0.91は他のアプローチと比較してどのくら
い良いものなのでしょうか?
今から 11年前、ある研究によるとモデルの精度と株式市場取引のシミュレーションによる収益の関係は、あったとし
ても非常に希薄であるということが示されました。 数千のネットワークモデルを学習、そして評価し、64%の精度の
傾向予測(上下移動)がもっとも収益があるということが分かりました。78%の精度のものよりもよかったということ
です。したがって、目的の使用環境に合わせてモデルを計測することが最も重要であるということです。最終性能評価
として、統計性能に依存することはできないということです。古く悲しいことわざがあります-”82%の株式市場変動
の予測精度だったのに、全ての財産を失ったよ”
通常、比較の理由付けのための基準ラインが使用されます。それはたとえば、“最新モデルは昨年 Xドル儲けた”あるい
は“原料費に Xドル節約できた”、あるいは“我々は常に R相関を評価に使用します“など。たしかに、より重要な情報を
すこし探る必要が通常ありますが、重要なことは、あなたの手持ちの結果と比較するいくつかの基準型をもつことで
す。
最後の切札として、利潤のような適切な性能測度を使用しない場合、ニューラルネットワークと線形回帰モデルを比較
することは非常に役に立ちます。線形回帰は標準的な統計解析技術であり、加えられた非線形の複雑さが、そのより単
Page9
純なアプローチからどの程度結果に変更を与えるかを見てみることは、良いことです。もし、結果がその 2つのモデル
(ニューラルと線形)で似通っているならば、そのときは線形回帰モデルがおそらく最善の選択です。
線形回帰モデルの構築
ニューラルワークス Predictとニューラルワークス Professional II/PLUSユーザは、ニューラルネットワークと同様に
線形回帰モデルを作成することができます。線形回帰モデルはただ単に、隠れ層がなく、非線形(シグモイド)出力の
代わりに線形出力関数を使ったものです。両者はともに図に描くことができます;両者はともに入力と出力ノードを持
ちます;両者はともにバイアスノード(あるいは’a0項’)を持ちます;両者はともに重み(あるいは’係数’)を持ちま
す。その違いは隠れ層の存在と、隠れ層と(通常)出力層の非線形伝達関数の使用です。
ニューラルネットワークの R、平均二乗誤差、あるいは平均分類率のようなテスト結果と、線形回帰モデルによって得
られる値との比較から、いくらかの基準性能測度が得られます。
Professional II/PLUSを使用する場合、まず InstaNet/Back Propergationを選択してください。隠れ層のノード数に
0を入力し、’Linear Output’を選択、そしてお手持ちの学習とテストファイルを選択してください。次に、任意の学習
ルールを使用して、Run/Learnを選択し、誤差がこれ以上小さくならなくなるまで学習を行ってください(すなわち、
平均 2乗誤差あるいは他のグラフが改善を示さなくなるまで)。別の乱数種と学習ルールにより、R相関のようなスコ
アを使って、もっと良い評価が得られるかを試してみてください。
Predictユーザはできるだけ公平な比較を行うために、その機能を使用不可にすることができます。
Predictは知性を持ったがごとく、データを学習セットとテストセットに分割し、データ変換を適用し、注意深く変数
選択を行い、全体的なソリューションに貢献します。この重要な意味をもつデータ前処理は、ネットワークの学習に先
んじて行われます。この処理は最終的な Predictのソリューションの重要な部分であり、他の製品や他の回帰分析ツー
ルにはないものです。したがって、線形回帰モデルに対して、Predictに特有な機能を使用すべきでないでしょう。
我々は Predictのすばらしい処理のおかげで、回帰モデルが通常よりも良く見えることを望みませんので。
さて、Predictにデータを学習セットとテストセットに分割させるのは簡単なので、そうさせましょう。確かにこの操
作は完全にコントロールできますが、しかし実際に行うにはいくつかのステップが必要なので….したがって、Predict
に線形回帰モデル構築のためにデフォルトの 70%/30%のデータ分割を行わせましょう。
以下の手順に従って、Predict線形回帰モデルを作成してください
Page10
・Excelのセル範囲を通常のように指定
・ノイズレベルを’クリーンなデータ’に設定
・データ変換を’規則的なデータのみ’ に設定
・変数選択を’変数選択しない’に設定
・ネットワーク探索レベルを’包括的なネットワーク探索’に設定
・’詳細パラメータ’ボタンをクリック
・隠れ層構造の最大層数に 0を入力
・出力層関数には’線形’を選択
・OKをクリックしたあと、学習をクリック
Predictはテキスト-->数値変換、明らかな欠陥データ、はずれ値の除去、平均ゼロデータスケール変換等をさらに行
いますが、上記機能使用不可設定により、他の方法で生成されたものと似たモデルが作成されるでしょう。
事例ベース推論とその活用方法
概要
事例ベース推論(CBR)については、ニューラルワークス Predictユーザガイドのそれ自身の章で記述があります。ここ
での記述は、CBRの有用性に焦点を当て、CBRが簡単な手段だけれどもどれほど使えるものかを示すことにありま
す。
ある意味では、学習を行った CBRモデルは、学習を行ったニューラルネットワークモデルに似ています;すなわち、
両者は 1つあるいはそれ以上のデータセットから生成され、予言あるいは予測出力を生成することができます。
しかし、CBRとニューラルネットワークはモデルを構築するアプローチの点で大きく異なります。ニューラルネットワ
ークは、データセットの教師変数を使って学習するのに対して、CBRは入力データだけを使用してモデルを生成しま
す。CBRは似たレコードをまとめて 1つの事例(グルーピング)、それぞれの事例に対して、その事例中の全てのレコ
Page11
ードの目的出力の平均などの統計値を出力します。ここで、CBRモデル生成(データレコードをさまざまな事例にグル
ーピングする)は目的出力データを使用せず実行されるという点に注意してください。
CBRモデルは、少数入力変数のときに最もよく働きます。Predictでは、CBRモデルは Predictがデータ変換と変数選
択を実行した後で、その内部変数の入力データを使用します。
これは、例えば 100フィールドをもつデータを Predictにかけると、変数選択機能により 15フィールドかそれくらい
の変数に減じられて、ニューラルネットワークに使用されるということです。Predict CBRモデルはその 15フィール
ドかそれくらいの変数を使って生成されます。CBRはできるだけ少ない変数のときに最もよく働きます;すなわち、5
変数は 10変数よりもはるかに良いです;15あるいはそれ以上の変数では、性能の悪い CBRモデルが生成されてしま
います。この点は、後に詳しく説明します。
便利さ
ニューラルネットワークモデルは、CBRモデルよりも特に予言や予測に適しています。そうすると、CBRの価値とは
何でしょうか?CBRの出力はニューラルネットワークの出力結果に対しての信頼度の視点を提供することができます。
金融モデルとして、毎日数千の株を監視し、それぞれの株に対して、0~1を割り当てるモデルを考えましょう。ここ
で、1は明日株価が上がる見込みが非常に強いことを表します。
トップ 2の最強の株が選ばれていると想定し、それらに対する予測値が 0.97と 0.94であるとしましょう。表面上
は、予測値が 0.97の株が購入すべき最良の株のように見えます。同じ 2つの株のレコードを CBRモデルにかけ、似通
っているレコードの数を求めてみましょう。CBRは、それら 2レコードが区分される事例中のレコード数を含む、いく
つかの出力値を生成します。すると、0.97の予測は単独のケースから生成されたということが分かるかも知れません;
すなわち、その CBRモデルは決して予測値 0.97を生成する別の似通ったレコードを見つけられなかったということで
す。その CBRモデルは予測値 0.94の株に対して、100レコードの似通ったレコードを示唆するかもしれません。この
付加的な情報を与えられることによって、2番目に良い株の購入によって、リスク軽減がなされることでしょう。
ニューラルネットワークモデルは予言あるいは予測値を生成します。CBRモデルは平均出力値とレコード数により、こ
の値への信頼度を強化するのです。
Page12
CBRはどのように実行されるか
CBRがどのように実行されるかを、以下に続く 10レコードのデータセットを使って説明いたします。3つのそれぞれ
の入力変数は 1から 100の範囲を持っています。
CBRは入力列を個別に精査し、それぞれのデータ範囲を 5個の箱に分割します(5はデフォルトであり、Predictのパ
ラメータの細分度設定により調整できます)。それぞれの入力範囲はこのサンプルデータでは 1から 100となっていま
すが、しかし実際の問題では入力は異なる範囲を持っています。
以下のように、100の範囲は 5つの箱に分割されます。それぞれの箱は aから eまでラベル付けされています。
数値データは一時的に適切な箱ラベルに置きかえられ、以下のようになります:
そこで、このデータはソートされて、同様の入力レコードが同じ事例に属するようにグルーピングされます:
Page13
このサンプルデータを使った CBRの結果から、元の 10レコードから生成された 7個の異なる事例が現れました。
CBR統計は 1事例ベースあたりに一般化できます。それぞれの事例に対して、総数(事例中のレコードの数)と個々の
事例に対するレコードの出力値の平均、最小値、最大値を計算するのは容易です。CBR/Run操作により、学習後の
CBRモデルにデータを流すことで 1レコードが区分される事例の総数、平均値、最小値、最大値を出力します。
与えられた CBRのケースに割り当てられたレコードを検査すれば、ユニークなケースの番号も出力されます。
最後に、以下に続く新しいデータが CBRモデルを通されます。それらは、CBRモデルを生成するために使われたサン
プルデータの一部ではありません。注意していただきたいことは、このデータには、出力値が存在しないことです。以
下に示される、結果としての CBR出力は、上の 7個の事例と比較することにより決定されます。
変数の数が増加するに従って CBRの有効性が少なくなる理由は、入力空間に多くの要素(次元)が存在する場合、全
てのレコードがユニークになることが多くなるためです。以下は、箱ラベルに変換した後の 2レコードです。それらは
非常に似ていますが、それらのレコードは異なる CBR事例と見なされてしまいます。
abcdeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
abcdeaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Page14
あなたが 50の入力の 1000のデータ・レコードを持っていれば、すべてのレコードがそれ自身の CBRの場合を割り当
てられる見込みは非常に高いでしょう。そのようなデータセットでは、5の 50乗の事例の可能性があります。ここ
で、5は細分度であり、50は入力変数の数です。この数字は、地球上の人類の数よりもはるかに多くの事例になりま
す。もしあなたが、極端に多いデータ事例で、均等に分散したデータセットで仕事をしていない限り、50次元空間は
「穴」だらけとなります。もし、ほとんどのレコードがユニークならば、任意の値が統計的に無視されてしまいます。
もちろん、もし Predictが多くの入力変数から数個の重要な変数に落とすことができれば、そのときは CBRモデルは
ニューラルネットワーク同様に変数の数が多すぎるために阻害されてしまうことはないでしょう。
時系列データのモデル構築
ニューラルワークス Predictとニューラルワークス Professional II/PLUSは、ともに時系列モデルの構築に使用するこ
とができます。どちらの製品も、時系列データに対して、明示的な操作手段を提供しているわけではありませんが、そ
れらを取り扱うための方法があります。次に続くデータの例を考えましょう:
上の例では、時間列はモデルには使用せず、単に行の識別にのみに使います。最大タイムラグが 3ステップであると仮
定すると、黄色で強調されたレコードが全ての入力データになり、緑の強調されたデータが、目的の出力データとなり
ます。レコード番号 1の入力セットは 3:00、4:00、5:00からのものであり、6:00の生成量を予測します(yield-
6)。レコード番号 2の入力は、4:00、5:00、6:00からのものであり、7:00の生成量を予測します(yield-7)。レ
コード番号 3の入力は、5:00、6:00、7:00からのものであり、8:00の生成量を予測します、以下同様。
Excelインターフェイスでニューラルワークス Predictを使用する場合、入力データ、出力データの範囲に対して、行
列で選択することができます。’temp-9’から’flow-7’を含むセル群が、「最初の入力データレコード」となり、’yield-
6’が最初の出力データセルとなり、’temp-0’(もっと正確に言うと’temp-2’セル)が「全ての入力データ範囲」となりま
Page15
す。ニューラルワークス Predictのコマンドラインインターフェイスあるいは Professional II/PLUSデータファイルを
使う場合には、入力と出力の組みが 1行になっている必要があります。したがって、上記データファイルは、それらの
インターフェイス用には以下に示されるような形になっていることが必要です:
*********************************************************
temp-9, psi-9, flow-9, yield-9, temp-8, psi-8, flow-8, yield-8, temp-7, psi-7, flow-7, yield-7, yield-6
temp-8, psi-8, flow-8, yield-8, temp-7, psi-7, flow-7, yield-7, temp-6, psi-6, flow-6, yield-6, yield-5
temp-7, psi-7, flow-7, yield-7, temp-6, psi-6, flow-6, yield-6, temp-5, psi-5, flow-5, yield-5, yield-4
temp-6, psi-6, flow-6, yield-6, temp-5, psi-5, flow-5, yield-5, temp-4, psi-4, flow-4, yield-4, yield-3
temp-5, psi-5, flow-5, yield-5, temp-4, psi-4, flow-4, yield-4, temp-3, psi-3, flow-3, yield-3, yield-2
temp-4, psi-4, flow-4, yield-4, temp-3, psi-3, flow-3, yield-3, temp-2, psi-2, flow-2, yield-2, yield-1
temp-3, psi-3, flow-3, yield-3, temp-2, psi-2, flow-2, yield-2, temp-1, psi-1, flow-1, yield-1, yield-0
temp-2, psi-2, flow-2, yield-2, temp-1, psi-1, flow-1, yield-1, temp-0, psi-0, flow-0, yield-0, yield+1
*********************************************************
時系列予測において、全ての入力変数を使用して Predictを使用しようと考えれれるかもしれません。そのとき、どの
変数が捨てられるかのテストを行うことにより、どの入力が出力に大きな影響を与えるかへの洞察が得られ、タイムラ
グに関するアイデアが得られることでしょう。一般に、時系列データから入力列を導くことの方がよりよい結果を与え
ますので、時系列データの代わりに、計算されて導かれた入力を用いてください。たとえば、2点移動平均、5点移動
平均、10点移動平均の方が、時間のダイナミクスをよりよく捕らえることができます。もしそうであるならば、モデル
構築に元の n時間ステップを用いるよりも、それらの 3フィールドを使用するべきでしょう。
概して、上記のアプローチは 3期間移動平均によるアプローチに似ていますが、我々は、単純平均モデルではなく、
次の時点を予測するためにニューラル・ネットワークを使用できます。
モデル構築過程の自動化
ニューラルワークス Predictとニューラルワークス Professional II/PLUS製品には、人の介在なしで、自動的に学
習、テスト、ニューラルネットワークへのデータの投入ができるという特徴があります。たとえば、100個のネッ
トワークを一晩で学習させることができます。
Page16
この機能は、Predictにおいてはコマンドラインインターフェイスによって実行可能であり、すべての Predict商品群に
含まれています。以下に続く、コマンド群のスクリプトファイルを考えましょう:
[ファイル:evap.npc]
log my_evap.log new
data evap.txt,,,all
defaults pred,moderate,moderate,comprehensive,comprehensive
fields 6 0 1 0
saveas my_evap.npr
build all force
test test corr 1 my_evap.tst
run evap.txt my_evap.out stndout|hasheader
save
上記ファイルにより、学習、テスト、そして新しい Predictモデルによってデータを流し、その結果をログファイルと
ASCIIフォーマットの結果ファイルを生成します。この例では、1モデルを生成するだけですが、他のコマンド群によ
って、例えば異なる乱数種を使用することによる影響を調査するために、容易に非常に多くのモデルの構築を行うこと
ができます。(異なる初期重みは異なる出力結果を与える異なるモデルを生じます。)そのスクリプトファイルは次の
コマンドにより実行されます:
Predictcl.exe evap.npc
そして、そのコマンドは、Dosウインドウ上にタイプすることもできますし、Dosバッチファイルあるいは
Linux/Unixのスクリプトファイルに記載する、あるいはそのコマンドを Visual Basic、C、Java、あるいは他の実行プ
ログラムから呼び出すことができます。
詳細は Predictユーザガイドのコマンドラインインターフェイスを見てください。
Page17
Professional II/PLUSの自動化は、上記と同様の手続きを行うことになります。ただし、注意として、まず初めに学習
していないニューラルネットワークを生成して保存しておかなければなりません。自動化によって、初期化、学習、テ
スト、そしてネットワークを介したデータの実行ができますが、新しいネットワークを生成することはできません。
これは、”スクリプトファイル”のサンプルで、ネットワークファイルのオープン、学習、テスト、ネットワークを介し
たデータの実行を行います。
[ファイル:automate.dat]
open my_net.nnd
initialize
savebest 100000 500 10
set testfile my_valid.nna
test save
Professional II/PLUSは、以下に続くコマンドを使って、自動化プログラムを実行します:
nw2.exe -xuautomate
そして、そのコマンドは、Dosウインドウ上にタイプすることもできますし、Dosバッチファイルあるいは
Linux/Unixのスクリプトファイルに記載する、あるいはそのコマンドを Visual Basic、C、Java、あるいは他の実行プ
ログラムから呼び出すことができます。詳細はスタート|プログラム
|NeuralWare|NeuralWorks|Professional|SupplementGuide の”Automate”の章をご覧ください。