予測結果の根拠をデータで示す〜事例ベース推論(CBR)とその活用方法
機械学習モデルを活用する際、そのモデル予測値の根拠について議論になることが多いですね。事例ベース推論(Case Based Reasoning: CBR)は、その根拠となるケースが実際に訓練データにどれだけ存在していたかを提示してくれる機能です。
CBRについては、ニューラルワークス Predictユーザガイドのそれ自身の章で記述がありますので一度ご確認ください。
ここでの記述は、CBRの有用性に焦点を当て、CBRが簡単な手段だけれどもどれほど使えるものかを示すことにあります。
ある意味では、学習を行ったCBRモデルは、学習を行ったニューラルネットワークモデルに似ています;すなわち、両者は1つあるいはそれ以上のデータセットから生成され、予言あるいは予測出力を生成することができます。
しかし、CBRとニューラルネットワークはモデルを構築するアプローチの点で大きく異なります。
ニューラルネットワークは、データセットの教師変数を使って学習するのに対して、CBRは入力データだけを使用してモデルを生成します。
CBRは似たレコードをまとめて1つの事例(グルーピング)、それぞれの事例に対して、その事例中の全てのレコードの目的出力の平均などの統計値を出力します。
ここで、CBRモデル生成(データレコードをさまざまな事例にグルーピングする)は目的出力データを使用せず実行されるという点に注意してください。
CBRモデルは、少数の入力変数のときに最もよく働きます。PredictのCBRモデルはPredictがデータ変換と変数選択を実行した後で、その内部変数の入力データを使用します。
これは、例えば100フィールドをもつデータをPredictにかけると、変数選択機能により15フィールドかそれくらいの変数に減じられて、ニューラルネットワークに使用されますが、Predict CBRモデルはその15フィールドかその程度の変数を使って生成されます。
CBRはできるだけ少ない変数のときに最もよく働きます;すなわち、5変数は10変数よりもはるかに良いです;15あるいはそれ以上の変数では、性能の悪いCBRモデルが生成されてしまいます。
この点は、後に詳しく説明します。
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モデルは平均出力値とレコード数により、この値への信頼度を強化するのです。
CBRはどのように実行されるか
CBRがどのように実行されるかについて、以下に続く10レコードのデータセットを使って説明します。
3つのそれぞれの入力変数は1から100の範囲を持っています。
CBRは入力列を個別に精査し、それぞれのデータ範囲を5個の箱に分割します(5はデフォルトであり、Predictのパラメータの細分度設定により調整できます)。
それぞれの入力範囲はこのサンプルデータでは1から100となっていますが、しかし実際の問題では入力は異なる範囲を持っています。
以下のように、100の範囲は5つの箱に分割されます。
それぞれの箱はaからeまでラベル付けされています。
数値データは一時的に適切な箱ラベルに置きかえられ、以下のようになります:
そこで、このデータはソートされて、同様の入力レコードが同じ事例に属するようにグルーピングされます:
このサンプルデータを使ったCBRの結果から、元の10レコードから生成された7個の異なる事例が現れました。
CBR統計は1事例ベースあたりに一般化できます。それぞれの事例に対して、総数(事例中のレコードの数)と個々の事例に対するレコードの出力値の平均、最小値、最大値を計算するのは容易です。
CBR/Run操作により、学習後のCBRモデルにデータを流すことで1レコードが区分される事例の総数、平均値、最小値、最大値を出力します。
与えられたCBRのケースに割り当てられたレコードを検査すれば、ユニークなケースの番号も出力されます。
最後に、以下に続く新しいデータがCBRモデルを通されます。それらは、CBRモデルを生成するために使われたサンプルデータの一部ではありません。注意していただきたいことは、このデータには、出力値が存在しないことです。
以下に示される、結果としてのCBR出力は、上の7個の事例と比較することにより決定されます。
変数の数が増加するに従ってCBRの有効性が少なくなる理由は、入力空間に多くの要素(次元)が存在する場合、全てのレコードがユニークになることが多くなるためです。
以下は、箱ラベルに変換した後の2レコードです。それらは非常に似ていますが、それらのレコードは異なるCBR事例と見なされてしまいます。
abcdeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
abcdeaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
あなたが50の入力の1000のデータ・レコードを持っていれば、すべてのレコードがそれ自身のCBRの場合を割り当てられる見込みは非常に高いでしょう。
そのようなデータセットでは、5の50乗の事例の可能性があります。ここで、5は細分度であり、50は入力変数の数です。
この数字は、地球上の人類の数よりもはるかに多くの事例になります。
もしあなたが、極端に多いデータ事例で、均等に分散したデータセットで仕事をしていない限り、50次元空間は「穴」だらけとなります。
もし、ほとんどのレコードがユニークならば、任意の値が統計的に無視されてしまいます。
もちろん、もしPredictが多くの入力変数から数個の重要な変数に落とすことができれば、そのときはCBRモデルはニューラルネットワーク同様に変数の数が多すぎるために阻害されてしまうことはないでしょう。
※弊社では、データ分析プロジェクトにまつわる様々なご相談に、過去20年以上に渡るプロジェクト経験に基づき、ご支援しています。社内セミナーの企画等、お気軽にご相談いただければ幸いです。
製品カタログ