バックナンバー Vol.2 2017 年 10 月 17 日発行

適当な状態数について

BayoLinkSメールマガジン

日頃 BayoLink をご利用いただきありがとうございます。

BayoLink での分析を始める際、

「データ件数はどの位あれば良いのか?」
「各変数の状態数はどの位がよいでしょうか?」

というご質問をよくいただきます。
そこで、今回は、適切なデータ件数と状態数についてお話させていただきます。


【今回のテーマ】 

~ ベイジアンネットモデル構築に必要なデータ件数と、変数の状態数について ~


ベイジアンネットワークは、事象間の確率的な依存関係をネットワーク構造で表現します。
確率的に関連のある変数は矢印で結ばれます。各変数は状態値を持ちます。
(例えば『性別』という変数には [男性,女性] という状態値があります)
矢印で結ばれた変数間には、条件付確率分布 (Conditional Probability Table 以下 CPT ※1) が
定義されます。

(※1) BayoLink の情報パネル (画面左) の [CPT] パネルに表示されます。

CPT は十分な件数の学習データがあれば、変数の状態値の頻度を正規化し算出します。
ここで学習データに各変数の値の全ての組合せが存在するのであれば、CPT の項目を全て埋めることが
できます。

しかし現実には CPT の全項目を埋めるだけのデータを揃えるのは困難であり、不完全なデータから
モデルを構築するケースが多いと思われます。
不完全なデータから作ったモデルでも推論の計算は可能です。
しかし、データ件数が十分でないなどCPTの空いた項目が増えると、予測精度が悪くなったり信頼性に
欠けるモデルができる傾向があります。
モデルを作るのに完全なデータを準備する必要はありませんが、より良いモデルを作るためには、
学習データの件数やCPTの項目数 (変数の状態数) の検討が必要です。

では、モデルを構築するために十分なデータ件数はどの位か?
また各変数の状態数はどの位がよいでしょうか。

十分なデータ件数について、具体的に数値を挙げることはできませんが、目的とするモデルの
CPT のサイズから、おおよそ見積もることができます。

例えば、親 ( 5 状態) × 親 ( 5 状態) × 子 ( 5 状態) という組合せのモデルを作ると、
CPT のサイズは 5 × 5 × 5 = 125 です。
ここで データ件数が 100 件あれば、CPT の 1 項目あたりの平均データ件数は 1 未満となり、
決して情報量が多いとはいえません (※2)。
このような状況では、可能であればデータ件数を増やすことを検討します。

(※2) BayoLink では CPT の元となるクロス集計テーブルが表示できます。
クロス集計テーブルで 赤色で表示されれるセルがあるのですが、これは項目の頻度が閾値より
小さいことを示しています。
また、クロス集計のサイズや各項目の平均値などが表示できますが、これらの値から、CPT の
信頼性を評価することができます。
各値の表示については、操作マニュアルの下記ページをご参照ください。

p.29『5.4.4 ノードの詳細情報の表示』
p.37『5.7.4 クロス集計表』


同様に、変数の状態数も CPT のサイズとデータ件数から見積もることができます。
先ほどの例でデータ件数を増やせない場合、状態を集約して個数を減らします。あるいは親を
減らすことで CPT のサイズを小さくします。これにより CPT の項目あたりのデータ頻度を
増やすことができます。

上記のように 目的とするモデルの CPT のサイズから、現状のデータ件数が十分か、変数の状態数に
無理はないか、を検討することができます。

もちろん、CPT の埋まり方は各々のデータの分布で大きく異なるため、その点を十分考慮する必要は
あります。実際にモデルを構築し、検証等によりモデルの信頼性を確認することが重要です。

                                                                      (2017.10.16. 石富 妙)