1/37ページ
ダウンロード(1.2Mb)
本資料では、過去にメールマガジンのコラム等で取り上げたニューラルワークス製品の中の基本ソフトウェアである Predict の活用を中心に役立つ知識をまとめています
このカタログについて
ドキュメント名 | ニューラルワークス分析モデル開発トピック集 |
---|---|
ドキュメント種別 | 事例紹介 |
ファイルサイズ | 1.2Mb |
登録カテゴリ | |
取り扱い企業 | SETソフトウェア株式会社 (この企業の取り扱いカタログ一覧) |
この企業の関連カタログ
このカタログの内容
Page1
ニューラルワークス分析モデル開発トピック集
はじめに
本資料では、過去にメールマガジンのコラム等で取り上げたニューラルワークス製品の中の基本ソフトウェアである
Predictの活用を中心に役立つ知識をまとめていますので、関心のあるトピックから読んでみてください。
コラム一覧
モデリングとは何か?
予測モデル開発の進め方
説明変数の数とレコード数
予測に必要なデータ項目は?
クラスタリングとクラス分類問題?
ニューラルネットワークと重回帰モデルの違いは何ですか?
データ変換とネットワーク構造の関係
モデルの複雑性の回避
時系列データに対するモデル構築
ハイブリッド型モデル
アンサンブル学習
ニューラルネットワークと逆問題
複数の目的変数を持つモデルの構築
数値コードを含むデータの学習について
教師データに偏りがある場合の取り扱い
欠損値の取り扱い
外れ値の取り扱いはどうなりますか?
多重共線性
相関係数によるモデル評価の落とし穴
Page2
モデル構築における特徴抽出(前処理)の重要性
カテゴリー変数の取り扱い方
カテゴリー変数の取り扱い方(その2)
変数選択と遺伝的アルゴリズム
データセットの選択
時系列データに対する学習・テスト期間の選択
Predictにおける最適ネットワーク構造の高速探索
自己組織化マップ入門
自己組織化マップ入門(その2)
予測誤差分析への自己組織化マップの活用
コマンドラインインターフェイス入門
フラッシュコード入門
ニューラルワークス Predict/NeuralSightを用いたアプリケーション開発(Excel VBA編)
ニューラルワークス Predict/NeuralSightを用いたアプリケーション開発(.NET編)
Predictモデルを Excelマクロ関数から利用する
需要予測におけるカレンダー情報の活用
予測モデル開発の進め方
建築業の現場では、顧客の希望と予算を確認し、設計を行い、施工し、引き渡されます。 弊社が本業とするシステム開
発も、このような工程を踏む仕事ということで、よく建築業に例えられることがあります。 その際、両者に共通するこ
とは、開発規模が大きくなればなるほど(犬小屋から超高層ビルへ)、後工程からの手戻りがないように工程をマネー
ジメントできるかどうが、プロジェクト成功の成否を決定付けるということです。 予測モデルの開発においても、同じ
ことが言えます。 目的・ゴールがあいまいな状態で、闇雲にデータを解析ソフトに投入して結果をみて試行錯誤するの
は、木を見て森を見ない、局所最適は実現できても、全体最適に寄与しないというような危険が常に背中合わせである
ことを肝に銘じる必要があろうかと思います。
さて、予測モデルの開発工程を大きく4つに分けると
Page3
(1) 経営目標と課題認識に基づく分析テーマ確定
(2) 業務分析に基づくモデル化方針検討
(3) 可視化/集計/相関分析に基づくモデル詳細仕様決定
(4) 予測モデル構築/評価に基づく業務への適用可能性検討
となろうかと思います。
なにか難しい言葉を並べましたが、ようは経営ビジョン(森)に対して、木(業務)を最適化する、そのための予測モ
デル構築であるということを述べているに過ぎません。
また、建築やソフトウェア開発同様に、前工程での品質レベルが、後工程の品質を左右するという点が重要なポイント
で、(4)に関係する、いくら高価な分析環境をそろえても、(1)~(3)の準備が十分配慮されていなければ、プロジェクト
は失敗するということです。
最近では、アジャイル BIというキーワードで、(1)~(4)のプロセスを短いスパンでまわして、変化の激しい業務要件
に適合するアプローチが提唱されているようですが、いずれにせよ、テクニカルな部分にとらわれて、”木を見て森を
見ず”とならないよう、常に注意が必要です。
需要予測におけるカレンダー情報の活用
最近、特に需要予測システムの構築に関わるご相談が顕著となっております。 この背景には、日本市場の高度成長期
におけるメーカー主導型の作れば売れる時代から、成熟期における顧客主導型へ移行したことを反映して、ターゲッ
ト顧客の行動心理をベースとした予測システムへの需要があるかと思います。 そこでは、需要予測モデルを構築する
にあたって、単に過去の売上げデータからの外挿にとどまらず、その変動要因を、ターゲット顧客の行動心理に基づ
いた仮説-検証が本質的に重要となってきます。 カレンダー情報は、その中でも行動心理に影響を与える基本的な情
報ですね。 例えば、大型家電の販売予測では、月(ボーナス、期末)・五十日(ごとおび)・日祭日、旅行関連サー
ビスの場合は休前日・連休日数 等々、商品やサービス内容に依存した変動要素がパラメータとして考えられます
ね。 予測モデルを構築するにあたっての仮説設定には、実際の業務知識・経験をモデルへ反映できるかどうかは、予
測性能および検証の効率性からも重要です。
予測誤差分析への自己組織化マップの活用
Page4
予測システムの構築にあたって、弊社ではまずその柱である予測モデルのプロトタイプ構築とテストデータに対する統
計的な性能評価を行います。 次に、そこで見出された予測値と実績値(答え)との誤差をどのように解釈し、モデルに
反映していくかを業務の観点で顧客と検討を行ないます。 その際、その誤差はテストデータ中に学習データに含まれな
いパターンがある為であるとして、機械的に学習データ+テストデータを新たな学習データとして学習させる戦略は、
問題の本質を隠し、かつ学習データ量および計算時間の無制限の増大を引き起こし兼ねません。 そこで次善策として、
誤差が大きいレコードに着目し、かつ外れ値とは見なせないレコードのみを学習データとして追加する戦略を取る場
合、注意すべきは目的変数値は大きく異なるが、説明変数のセットに大きな違いがないような場合で、この場合にはそ
れぞれのケースを識別する情報量が足りないことが問題であり、新たな変数を見つけなければ問題は解決できません。
このような、学習データとテストデータのパターンの違いを把握するに当たって、自己組織化マップ(SOM)の適用は
効果的です。
SOMによって説明変数セットに対するパターンの可視化を行なうことで、予測誤差が学習データのパターンの不足によ
るものか(学習データとテストデータで明確なクラスターを構成)、あるいは説明変数の不足によるものか(この場合
は、同一ノード上の目的変数値のばらつきを見ます)を把握でき、モデルの性能改善の指針となります。
ニューラルワークス Predictや Professional II/PLUSでは、SOMの基本出力のみで出力結果のグラフィックス表現を
持っていませんが、弊社ではこの点を補うべく、ニューラルワークスが出力した結果を Excel散布図を使用して可視化
するマクロを現在無償でご提供しています。
上記問題で課題をもたれている、あるいは関心を持たれた読者様はニューラルワークス技術サポート
(ann@setsw.co.jp)まで、お問い合わせください。
Predict モデルを Excel マクロ関数から利用する
Predictあるいは NeuralSightが生成したモデル(ファイル拡張子 npr)を業務で使用するには、
(1) Excelの Predictメニューからモデル読み込み、シート上の入力データを参照して予測結果を出力する
(2) コマンドラインインターフェースによるバッチ処理用スクリプトファイルを作成し、予測用 CSV入力データから予
測値を算出する
(3) Flashコード機能により、モデルを C言語等で関数出力して、アプリケーションから参照する
Page5
(4) Visual Basic,Java,C#アプリケーション用のインターフェースを使用して
Predictモデルを実行
の手段が多用されますが、更に簡便な手段をご紹介します。
ニューラルワークス Predictをインストールすると、自動的に Excel関数の中のユーザー定義関数として、Predictモデ
ルを実行する関数 PredictRunが追加されています。
(Excelメニューの「挿入」-->「関数」で、関数の分類=”ユーザー定義”で現れるリストから、上記関数名を探すこと
ができます。)
具体的には、Excelシートのセル中に以下の関数呼び出しを記述します:
=PredictRun([モデルファイル名],[予測用入力(1レコード)セル範囲])
Excelの Predictメニューからの操作やプログラミング作業無しで実行できる点や、セル上の数値の変更に対して、即
座に予測結果が得られる為、Excelを使用した業務やシミュレーション分析に大変便利な仕組みです。
是非ご活用ください。
教師データに偏りがある場合の取り扱い
実社会で関心がもたれているデータは、通常偏りがあるのが普通です。 リスク管理の例でいえば、システム異常診断や
不正アクセス監視などでは、得られるデータのほとんどが正常データであり、関心のある異常データはほとんど取れま
せん(あるいは運用開始後全く存在しない)。
上記システムのデータから判定モデルを作成する際、このようなアンバランスなデータに対して、標準的な学習方法で
は、メジャークラスの判別性能に偏ったモデルが生成されやすくなります。 この問題は機械学習の世界では、不均衡デ
ータにおける学習問題(Learning from Imbalanced Data Sets)として、近年精力的に研究が行なわれています。
問題点を理解する分かりやすい例として、クラス Aとクラス Bに属するデータの割合がそれぞれ 99%および 1%とし
ましょう。 この場合、単純にすべてクラス Aと答えるモデルであっても、正答率(正解数/サンプル数)からみれば正
答率 99%の優れたモデルに見えてしまいます。
この問題の背景には、クラス Aとクラス Bの分布には偏りがないという前提が崩れていることが問題な訳です。
Page6
この問題の対策としてよく知られているものには、サンプリングの方法があり、問題に応じてその有効性が示されてい
ます:
アンダーサンプリング:メジャーなクラスからサンプリングして、マイナークラスのレコード数と同レベルに保つ。
オーバーサンプリング:マイナークラスのデータを、メジャークラスと同レベルまで人工的に増やす。
前者では、自己組織化マップなどのクラスタリング手法により、類似パターンのレコード群から、代表レコードを抽
出するなども、有効と考えられます。
複数の目的変数を持つモデルの構築
予測モデルを構築する際に、目的変数が 1つのみの場合は珍しく、通常は複数存在する場合が多いと思います。
例えば、
・ 予算計画
年間予算計画で月毎の 12ヶ月分の売上げ予測を行なう。
・ 新材料の開発
さまざまな実験条件の元で生成される材料の基礎物性値のセット を予測する。
等々。
ニューラルワークス Predictでは、教師データを目的変数分データ列で用意して、Excel上で対象範囲をドラックする
のみで多目的変数のモデルが構築できます。 モデル構築および管理の点では、多出力のネットワーク構成はシンプルで
理想的なのですが、予測性能の点からは各目的変数毎にモデルを構築する方が性能が大きく向上します。
すなわち、N個の目的変数がある場合は、N種類の 1出力モデルを作成します。 しかしながら、複数のモデルを作成
するのは、操作の手間がかかりますので、操作ミスも発生しやすいかと思います。 この場合はコマンドラインインタ
ーフェースで、コマンドスクリプトファイルを作成されるとよいでしょう。
外れ値の取り扱いはどうなりますか?
他の大多数のデータから大きく離れた値は外れ値と呼ばれ、モデル性能に影響を与える厄介者ですが、その反面、不正
行為の検出やリスク回避、ビジネスチャンス発見に大変貴重なデータでもあります。
Page7
ここで、計測不能や入力ミス、システムエラーなどによる異常値は、外れ値とは区別されます。 モデル学習では、説明
変数あるいは教師変数ともに外れ値が存在する可能性がありますが、対処方法如何でその性能に大きく影響します。
Predictでは、数値型の説明変数あるいは教師変数に対して、数値列を値で昇順に並べたときの最大値および最小値か
ら、それぞれ既定パーセント(デフォルトで 1%)の内側の値とデータ分布の濃度閾値に基づいた有効最大値、有効最
小値が自動的に決定されます。そして、その外側のレコードはそれぞれの有効値に置き換えられます(クリッピング
処理)。 また、Predictでは、外れ値データをスキップする仕組みはない為、発生原因に応じて
あらかじめ除去すべきかどうかの検討が必要です。
相関係数によるモデル評価の落とし穴
予測モデルの性能を評価する場合に、予測値と実績値の相関係数を指標とすることが多いと思いますが、その評価に
は落とし穴も存在します。例として、以下に 2列のデータを用意しました。ここで、d列が例えば実績値で、それに
対してモデルからの予測値が y列と考えてみてください:
d y
1 3
2 9
3 6
4 5
5 5
6 5
7 2
8 3
9 8
10 6
101 103
102 108
103 105
104 106
Page8
105 109
106 105
107 104
108 106
109 103
110 108
Excelの散布図などで横軸を d, 縦軸を yとしてプロットするとお分かりのように、上記データは 2点(座標原点(0,0)お
よび(100,100))の周辺に偏って存在しています。このような場合、通常それぞれのグループは異なる特性をもつデータ
であり、本来、予測モデルの構成は別々とするべきものです(例えば商品分類の異なる商品に対して、売上数量を予測
するモデルを個別に作成)。
上記データの場合、それぞれのグループ(10レコードづつ)ごとの相関係数を計算すると-0.03および 0.04(ほぼ無
相関)となりますが、一方全レコードに対する相関係数は(なんと)0.997となり、一見非常に高い予測精度のモデル
が出来た!と勘違いしてしまいます(実は単に商品属性に基づいて平均的な売上規模を出力するモデル)。
上記の例のように、データ特性の異なるものが集まった場合に見かけ上相関係数が大きくなることがあります。この場
合、データ特性の可視化に基づくモデル構成の検討や、影響の大きい外れ値の評価が大変重要となります。
機械的な評価にはくれぐれもご注意を。
ハイブリッド型モデル
世界的経済不況と環境への意識が高まる中、自動車産業は走行状況に応じて動力源を切り替えることで低燃費・低環境
負荷を実現するハイブリッドカーの売上げ好況で盛り上がっていますね。データマイニングの世界でも、モデルのハイ
ブリッド化はよく行なわれて
学習過程では、
1) クラスター分析(SOM等を活用)による入力データのパターンに応じた
分類ルールの作成
2) 各クラスター単位で予測モデルを作成
(上記を組み合わせたハイブリッド型モデル構成)
Page9
予測過程では、
3) 入力パターンからのモデル選択~予測実行
の手順を踏むことで、予測精度の向上が一般に期待できます。
また、性能面だけでなく、一つの大きくて複雑怪奇なモデルよりも、各モデルの得意領域が明確となる為、コントロ
ールしやすくなるメリットもあります。ただし、クラスター定義の吟味やクラスター単位で学習に十分なレコード数
の確保には注意してください。
数値コードを含むデータの学習について
学習に使用するデータに、数値コード列が入っている場合には、そのままニューラルネットワークの入力とすると、大
小関係を持つ数値フィールドとして処理されてしまいます。しかしながら、本来数値コードは属性や分類などの質的デ
ータとしての意味を持つので、その観点でカテゴリー変数として改めてダミー変数化などの前処理が必要となります。
モデル構築上よくある注意すべき点としては、カテゴリー種別が非常に細かくて、個々のカテゴリー値に対して十分な
レコードが確保できない場合です。そのような場合には、意味的に近いカテゴリー同士は合成を行なって、十分な学習
パターンを確保することも検討ください。
さて、ニューラルワークス Predictを使用する場合には、手間となるダミー変数化(カテゴリー種別数に対応する入
力ニューロン数の動的拡張)は、ユーザー側で明示的に行なわずとも、例えば数値コードに対して単に数値以外の文
字を追加加工を一括して行なえば(例:123-->_123)、Predictは数値列以外のデータはカテゴリー変数とみなして
ダミー変数化を内部的に行いますので大変便利です。
多重共線性
重回帰分析を行なう際に説明変数間に強い相関がある場合、解が不安定となる現象が起こります。 例えば、回帰式を決
定するためのデータの測定ノイズがほんの少し異なるだけで,全く異なる偏回帰係数のセットが得られ、ときに符号す
ら変化してしまうこともあります. これは多重共線性と呼ばれています。
例えば、予測したい変数を z,説明変数を x,yとしたときに
z = ax + by + c -----(1)
Page10
として、最小自乗法により a,b,c を決定する場合、(標準化された)x,yが独立な場合には a,bは x,yそれぞれの zに
対する影響度を表すと考えることができます。
しかし、例えば xとyの間に
x=2y -----(2)
の関係があった場合、(1)は
z= (2a+b)y -----(3)
と変形されます。
この場合、測定データから(2a+b)は計算できても、aおよび bを単独では決定することは出来ません(解が一意に定
まらない)。 ニューラルネットワークモデルの構築に関しても同様の問題があり、感度分析(注)にて説明変数の影響
度を評価する際には注意が必要です。 多重共線性の問題を事前に排除するには、相関のある変数同士は、事前に一方
を排除するなどの工夫を行ないます。
欠損値の取り扱い
観測やアンケート調査によって得られるデータに欠損(あるいは欠測)値があるのは、ごくごく普通のことです。 では
一般に学習用に使用するデータに欠損がある場合、そのデータの適切な処理方法にはどのようなものがあるでしょう
か?
大別すると、
・欠損値のあるデータ(レコードあるいは変数)は除外する
・欠損値を適切な値で補完する
があります。
もちろん前者の対応で済む場合は大変楽ですが・・・、サンプル数が少なくなる点や、欠損値の発生原因によっては、
分析結果に偏りを生む問題もあります。 例えば、アンケート調査で年収や健康状態に関わる項目があった場合、低所得
者や健康不良者ほど無回答が多く、無回答データの削除の結果として高所得側、健康優良側寄りの分析結果に偏りま
す。
次に、欠損値を補完する方法に関しては、その妥当性を検討する必要がありますが、よく知られた例を挙げると
Page11
・ 連続変数の場合
欠損値を持つフィールドの平均値あるいは最大・最小値を使用する。
・ カテゴリー変数の場合
最頻値を用いる、あるいは欠損値用のカテゴリーを追加する。
・ 時系列データ
データ列の連続性を仮定して前回値、前後の平均値あるいは線形補間
等を用いる。
・ ホットデック補完法
属性の似ているデータを同じデータセット内から選び、その値で補充する。
・ 回帰分析による補完法
欠損値以外の属性で補完対象を予測。
上記のような、欠損値に一つの値を補う単一代入法に対して、多重代入法や EMアルゴリズムと呼ばれる拡張手法
も知られています。 ニューラルワークス Predictでは、欠損データの割合に応じてデータの除外あるいは補完が自
動的に選択・実行されます。
アンサンブル学習
近年、アンサンブル学習(あるいは集団学習)と呼ばれる手法が、機械学習の高い汎化性能獲得の実現方法として注目
されています。 汎化能力とは、未学習データ に対してどれだけ正しい予測できるかどうかの能力を意味しています。
従来は単一の学習機械の性能向上追求(ベストモデル)をゴールとしてきたわけですが、そうではなく、個別に学習し
た(性能的には劣るが得意な識別領域を持つ)複数のモデルを何らかの形で融合させて、ベストモデルを超えた汎化性
能を追求するというものです。 これは、諺でいえば「3人集まれば文殊の知恵」(余談)という話です。
具体的には、
ブースティング: 逐次的に例題(入出力ペア)の重み(重要度)を変化させながら異なる複数のモデルを生成。
バギング: 与えられた例題からのリサンプリングによる複数のデータセットからモデルを複数生成。
Page12
が有名で、このような手段により得られたモデル群を組み合せて精度の高い予測・判別システムを構築する研究が盛ん
に行なわれ、大きな成果が得られています。 ちなみにクラス分類問題の場合はいわゆる多数決、回帰問題の場合は加重
平均値を採用します。 ニューラルワークス・シリーズの NeuralSightは、さまざまな初期条件からの多数のモデルを
一括生成(数千~数万)できるので、このいわゆる多数決戦略への適用も大変興味深く、現在検証を進めています。
(余談) 9カ国語でことわざ三人寄れば文殊の知恵
http://www.jfg.to/green/news/shinchaku_kotowaza.html
クラスタリングとクラス分類問題?
クラスタリングとクラス分類の問題の違いを混同されている方は結構多いのではないでしょうか?
どちらも「物事を分ける」点では同じですが・・・
データセットを構成する個々のレコードは、そのレコードを定義する属性を軸に持つ多次元空間上の 1点に対応してい
ます。 クラスタリングとは、その多次元空間に散らばっているデータ群に対して、近傍の点同士(すなわち似たもの同
士)のグループあるいはクラスターを定義する作業です。 通常難しいのがクラスター境界の決定の問題で、定義される
クラスターの意味や新たな構造を発見するには、その領域の知識援用が不可欠と言えます。
この抽象的な話をシステムの障害対応で例えれば・・・、
ユーザーからの多数の障害やクレームに対して、事前知識がない状態でまず問題点の切り分けを模索する段階に当たる
でしょうか。 一方、クラス分類問題とは、あらかじめ定義された有限個のクラスの中で、判別対象のデータがどのクラ
スに属するか?を判定する問題です。 言い換えると、分類が未知の属性入力に対して、判別精度を追及する問題です。
画像認識などの分野ではパターン認識問題とも呼ばれています。
企業の人事の例でいえば、組織構造が与えられているとして、従業員の適性に応じてどの部署に配属すべきかを判断す
る問題と言えるでしょうか。
以上をまとめると、クラスタリングとクラス分類の違いは、前者は識別に有用なグループ(分類構造)を発見する問
題であり、後者は与えられた分類に対して、その識別能力を高める問題と言うことができ、それぞれが全く異なる役
割を持っていることが分かります。
時系列データに対する学習・テスト期間の選択
Page13
商品販売予測や電力需要予測などの時系列データに対する予測では、一般に、
・ トレンド
・ 季節変動
・ 循環変動(周期の確定していない変動)
・ 不規則変動(偶発変動)
を、データ分析により見極めることが大切ですが、このことと関連して、学習やテストを行う期間の選択は、モデルの
性能評価に大きく影響します。 例えば、季節商品であれば、予測時点からの近々、例えば半年の売上げ実績データより
も、前年同時期のデータの方が重要です。 また、通年商品であっても、経済状況や顧客嗜好の変化を考慮し、学習デー
タに含めるかどうかの判断が必要な場合もあります。
(過去のニュースレターで解説させていただいたように、複数年に渡るデータを単に学習させただけでは、その期間の
平均的モデルが得られるだけであって、時系列データの上記特徴をモデルに取り入れるには、一工夫必要である点には
注意が必要です。)
特に学習期間が特にシビアとなる分野の一つは、システムトレードの世界です。
システムトレードとは、投資を行う際に、投資家の裁量を排して一定ルールに従って売買を行うことをいいます。
ここでは、利益が最大となる売買ルールを決定するために、過去データを用いてパラメータを最適化します。このこと
を「バックテスト」と呼んでいます。 一方、そのパラメータ最適化期間を含まない未来の一定期間において、その売買
ルールの評価を実施することを「フォワードテスト」と呼び、売買ルールの良し悪しと適用期間を判断します(注)。
ニューラルネットワークのような機械学習でいうところの過学習と同様に、システムトレードの世界では、バックテス
トでは非常によいが、フォワードテストでは評価のよくない売買ルールを「カーブフィッティング」と呼んで、戒めて
います。
(注) 例えば、10年間のデータのうち、前半の 7年をバックテスト用データ、後の 3年をフォワードテスト用デー
タとする。あるいは、ウォークフォワードテストといって、テスト期間をずらしながらバックテストとフォワードテ
ストを複数回行い、その結果を比較することで、最適な学習期間とルール適用期間を判断する方法もあります。
Predict における最適ネットワーク構造の高速探索
Page14
ニューラルワークス Predictのネットワークの中間層の層数は?というご質問を受けることがよくあります。 Predict
では、いわゆる階層型ネットワークにおける中間層(一つの層の中のノード同士は結合しない)を 1層あるいは 2層と
用意することはせず、基本的に全てのノードが結合しており、学習の結果としていわゆる中間層と考えられるものが生
成されうると考えます。 このことで、より自由度の高いモデルの探索が可能となるわけですが、ネットワーク構造を決
定するための試行錯誤の段階で、新たなノードを追加する毎に増加する学習時間の遅延の問題は避けられません。
Predictでは、カーネギーメロン大学のスコット・フォールマン教授らの研究に基づいたカスケードコリレーション
(Cascade-Correlation)という手法で、高速化を図っています。
カスケードコリレーション法では、入力層と出力層が直接つながったいわゆるパーセプトロンから始めて、そのネット
ワークが表現できない誤差を補うように新たに中間ノードが、解くべき問題の複雑さに応じて段階的に追加され、結果
として高速なネットワークモデルの構築を実現します(標準的なバックプロパゲーション法よりもすくなくとも 10倍
以上の高速化が図れます)。
後の研究により、発達段階の子供が徐々に複雑な問題に対処していくステップアップの段階が、カスケードコリレーシ
ョンの中間層のニューロン数に対応付けられるとする研究もあり、大変興味深いものです。 カスケードコリレーション
の詳細にご関心の方は、以下の関連論文をご覧ください:
[カスケードコリレーションの原論文]
http://www.cs.iastate.edu/~honavar/fahlman.pdf
[日本語による解説記事]
http://www.cis.twcu.ac.jp/~asakawa/waseda2002/cascor.pdf
余談ですが、コンピュータ上でおなじみの顔文字は、スコット・フォールマン教授が世界で最初の発明者です。:-)
http://en.wikipedia.org/wiki/Scott_Fahlman
モデリングとは何か?
このコラムでは、モデルあるいはモデリングという言葉を定義なしに使用してきましたが、その言葉でイメージする事
は、人それぞれかも知れませんね。 フリー百科事典『ウィキペディア(Wikipedia)』では、「モデリング」は複数の
意味で使用されているため、誤解を避けるための水先案内ページが用意されていました:
Page15
・科学的モデリング - 機構の分からない現象を、分かりやすい対象に置き換えて考えること。
・モデリング (心理学) - 観察学習。
・3DCGの分野において、三次元モデルを作ること。
と説明されています。
しかしながら、それらに共通する部分を、抽象的ですが表現すれば「現実の世界の本質的な部分を強調した、単純化さ
れた表現を獲得するプロセス」といえるでしょうか。
ここでは勿論、何が本質的で、何が本質的でないかは、同じ対象でも、その見る視点(あるいは目的)によって変わっ
てきます。
ちょっと抽象的な表現過ぎるので、改めてモデルあるいはモデリングの現実に戻ると・・・・・
日常目にするモデルは、雑誌やグラビアに登場するモデルでしょうか。この場合のモデルとは、彼女(彼)らの理想と
する体型やファッション、生活環境を強調した人間のモデルですね。
弊社の主要業務であるソフトウエア開発においては、その設計工程において、モデリング作業が行なわれます。特にオ
ブジェクト指向言語での開発においては、UML(統一モデリング言語)を使用して、アプリケーションの本質的に重要
な要素をより抽象化させ、かつ実装への依存性を切り離すことにより、頑健性のあるシステム開発が可能となります。
さて、ニューラルワークスが実現するモデリングとはなんでしょうか?
ニューラルワークスでは
「データ間の相関関係(ルール)を抽出して、未来(未知)の事象に対してそのルールを適用し、予測(推定)する」
を行ないますが、この際、「データ間の相関関係(ルール)を抽出して」の部分で、目的変数に影響力のある重要な変
数を少数抽出して、より単純な変数間の関係を、学習の結果獲得する過程にあたります。
今回は、ちょっと抽象的な話題でした。
ニューラルネットワークと逆問題
日ごろ、さまざまな分野のお客様の課題をお伺いしますが、一般に「逆問題」と呼ばれる問題に対してニューラルネッ
ト の適用を検討されている事例が多く見受けられます。
今回のコラムでは、この「逆問題」にスポットを当ててみようかと思います。
Page16
「逆問題」には、それと対となる「順問題」というものが常に存在しています。
順問題とは入力(原因)から出力(結果)が求められる問題いい、逆問題とはその逆に出力から入力を推定する問題を
いいます。 加工品を作成することを例に取ると、加工条件(圧力、温度、攪拌回数、等々)に対して、ある特性値を持
つ加工品が得られたとします。 その場合、順問題は入力(原因) = 加工条件 から、出力(結果) = 特性値を予測す
る問題になります。 この場合の逆問題は、指定された特性値を持たせるには、どのような加工条件をとればよいか?を
推定することになります。
その他、逆問題として代表的なものとしては医療現場での心電図や CTスキャン、建造物の超音波探傷による非破壊検
査など、直接的に知ることが出来ない、あるいはそのためには甚大なコストあるいはリスクのある目標物に対して、容
易にあるいは安価に知りうる情報から推定する問題があげられます。
職場の部下に軽く声をかけたときの反応を見て、マネージャーは部下の状態を把握するのも逆問題ですね。 通常、逆
問題解析では順問題に比べて情報量が不足しているため、逆問題を解くためには,何らかの追加情報が必要となり、
解析を難しくしています。 簡単に言えば、結果に対して、通常複数の原因の可能性があり、原因を特定するには、他
の前提条件を考慮する必要があるということです。
変数選択と遺伝的アルゴリズム
予測モデルを作成する際には、使用する説明変数の数と学習データ・レコード数の関係は
説明変数の数 << 学習データ・レコード数
でなくてはいけない理由(「次元の呪い」)を以前、本メルマガで解説を行ったことがありました。
では、利用可能な説明変数のうち、有効な最小の変数セットを選択する方法はあるのでしょうか?
一般に、組み合わせ最適化問題を高速に実行するアルゴリズムとしては、「遺伝的アルゴリズム」あるいは、英語表現
の Genetic Algorithmの頭文字をとって「GA」と呼ばれるものが知られています。これは、配送計画問題によく使用
されています。
GAの基本フローは以下となります:
Page17
1.初期集団の生成
ランダムに、親となるデータを発生させます。(※Predictではデータ変換後の全変数の中からランダムにサブセッ
トを選択)
2.適応度の評価
「適応条件」を満足しているか評価します。(※Predictでは回帰モデルを作成して予測性能を評価)
3.選択
評価の高い親のグループを選択します。
4.交叉
親同士のそれぞれの一部を組み合わせて、その親たちに似ている
(※有力な変数の組み合わせを換える) データを作成します。
5.突然変異
外的要因を持ち込むため、一部「遺伝子」変化を加えます。
6.終了条件判定
世代数の上限等、イテレーションの終了条件が満たされなければ
2へ(次世代へ)
ニューラルワークス Predictでは、ネットワーク・トポロジー(入力層-中間層-出力層)の最適化や重み係数(ニュー
ロン間の結合)の探索処理を行なう前に、変数選択処理として GAを適用し、有効な最小セットの説明変数を高速に抽
出しています。 その際、適応度の評価には、ロジスティック回帰モデル(パラメータの設定によってはニューラルネッ
トワーク)を構築し、相関係数等で評価しています。
ニューラルワークス Predictは、このように生物が持つ優れた学習機能や遺伝・進化の過程の仕組みをフルに活用し
た次世代ツールです。
ニューラルワークス Predict を用いたアプリケーション開発(Excel VBA 編)
Page18
ここのところ、 「Excel上で Predictエンジンを使い、学習から予測までワンクリックで行なえるアプリケーションを
開発したい」とのお問い合わせを多くいただいております。 そこで、今回は予測アプリケーション開発者向けの話題と
させていただきたく思います。
さて、Predictは、Excelメニュー上から、ウィザードに従って容易にモデルが作れるように設計されてはおりますが、
初級ユーザー様からは
「途中の手間を省いて、ボタンのワンクリックで学習から予測まで、一括で!」
や、上級ユーザー様からは
「さまざまな初期パラメータ条件下でのモデル性能の総合評価を一括で行ないたい」
との要求も寄せられております。
(後者の要求に対しては、Excelで扱いきれないデータ処理向けに NeuralSightがご用意されています。)
上記の場合は、Excel VBAプログラミングに基づき、外部アプリケーション実行用の関数から、Predictエンジンを呼
び出すプログラムを作成することで実現できます。
以下は、その関数呼び出し部分のサンプルです。
===========================================================
‘ Win32API関数宣言 外部アプリケーション(Predict)呼び出しの為の
‘プロセス起動
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd_ As Long) As Long
' コマンドプロンプトを非表示にして、他のウィンドウをアクティブにします。
Private Const SW_HIDE = 0
Public Sub Predict_CommandLine_Execute()
‘ Predictのコマンドファイル(sample.npc)へのパス
Page19
Dim cmdfile_path As String
cmdfile_path = "c:\sample"
' 実行するコマンド
Dim cmd_com_str As String
cmd_com_str = "/c start ""aaa"" /B ""C:\Program Files\NeuralWare
\NeuralWorks\Predict\PredictCL.exe"" sample.npc"
Dim retVal As Integer
retVal = ShellExecute(0, "open", "cmd.exe", cmd_com_str, cmdfile_path, _
SW_HIDE)
End Sub
=====================================================
上記サンプルでは、外部アプリケーションを呼び出すWin32APIの ShellExecute関数を使用して、Predictの実行プ
ログラム(PredictCL.exe)に、引数として Predictの実行コマンドを記載するファイル(sample.npc)を指定してい
ます(注)。
アプリケーションの全体の処理フローは、
[1] Excelシート上の学習および予測用データ領域を CSVファイルへ出力
[2] 上記 Predict_CommandLine_Execute()の実行
(sample.npcの中で、[1]の CSVファイルを参照する)
[3] Predictエンジンによる学習および予測結果の出力(CSV)
[4] [3]の CSVデータの読み出し
[5] Excelシートセルへの反映
となりますね。
自己組織化マップ入門(その2)
Page20
前回は、自己組織化マップ(SOM)の威力は、多次元データを低次元空間(正確には格子空間上)に集約して、レコード
間の関係性を可視化できることを説明しました。 同様な多次元データを可視化する方法としては、主成分分析による次
元削減が知られているところですが、その違いは何でしょうか?
主成分分析では、「多次元空間上でのデータ分布が、ある 2次元平面上に良く分布していること」という強い仮定があ
り、問題はこの仮定が事前に知りえない点です。 そのような、あらかじめデータ分布の特性が分からない分布一般に適
用できるのが、SOMという訳です。
さて、SOM適用のメリットは、データの可視化の他に何が考えられるでしょうか? 例えば、データ処理の観点では、
以下が挙げられます:
・ 大規模データの圧縮
大規模データから、母集団を特徴付ける少数の代表レコードを抽出。
・ データクレンジング(データクリーニング)
重複レコードの削除。欠損値の補完。
・ SOMによるクラス分類を組み合わせた高精度予測システムの構築
SOMによって発見されたクラスターごとに、予測モデルを構築。予測工程では、前処理として SOMを経由させる
ことで、最適な予測モデルの選択を行う。
SOMの具体的な問題への豊富な適用例は、日本語の書籍で分かり易いものとして[1]や[2]が SOM研究の第一人者の解
説ぞろいで、お勧めです。
[1] 自己組織化マップとその応用
著:徳高平蔵・大北正昭・藤村喜久郎【編】
出版社:シュプリンガー・ジャパン
[2] 自己組織化マップ応用事例集--SOMによる可視化情報処理
著:徳高 平蔵・藤村 喜久郎・ 山川 烈【監修】
出版社:海文堂出版
自己組織化マップ入門