モデルの作り方について
BayoLinkSメールマガジン
平素より Bayolink をご利用いただき、誠にありがとうございます。
ユーザーの皆様に BayoLink を末永くご利用いただけますよう、この度、BayoLink また ベイジアン
ネットワークをよりご理解いただくためのメールマガジンを創刊致します。
BayoLink はユーザーの皆様のお役に立てる開発を心がけ、スタッフ一同努力を重ねておりますが、
その中で得られた知見や、日々いただくご質問の中から、より皆様の分析にお役立ていただけるような
有益な情報を共有させていただくことも、私たちの大切な役目だと考えております。
第 1 回目は、モデルの作り方についてのお話です。
○o.。.o○.。○o.。.o○.。○o.。.o○.。○o.。.o○.。
今回は、顧客情報から【商品 A を購入】する確率を予測したい、とします。
また、予測したい対象(「商品 A を購入」)を目的変数と呼び、目的変数を導き出すための条件と
なりうる変数 (今回は「役職」「年齢」「年収」) を、説明変数と呼びます。
○o.。.o○.。○o.。.o○.。○o.。.o○.。○o.。.o○.。
さて、ベイジアンネットワークモデルを構築する際、(図1) のように、原因→結果の順で因果関係を
表現することが一般的です。
---------------------------------
(図1)
【役職】 【年齢】 【年収】
↓ ↓ ↓
【商品 A を購入】
---------------------------------
でも実は、因果の向きを無視したモデルが有効な場合もあるのです。
例えば、目的変数が特定のひとつの変数に決まっている場合には、(図2) のようなモデルが
うまくいくことがあります。
---------------------------------
(図2)
【商品 A を購入】
↓ ↓ ↓
【役職】 【年齢】 【年収】
---------------------------------
(図2) は矢印の向きが因果関係とは逆向きになっていますね。
では、(図1) と (図2) のモデルにはそれぞれどのような特徴があるのでしょうか?
●複数の説明変数が親ノードで、目的変数が子ノードの場合 (図1 の場合)
(図1) は、原因 (説明変数) から結果 (目的変数) が発生する因果関係を表現するモデルです。
目的変数に対して、全ての説明変数の同時確率を計算します。
そのため、それぞれの説明変数と目的変数との依存関係を分析することに適しています。
注意点としては、説明変数の数が多くなりすぎると、事後確率値が現実世界での分布から乖離する
可能性がある、ということが挙げられます。
例) A という商品を買う人はどういう属性の人なのかを分析して、広告戦略に活用
●目的変数が【親ノード】で、複数の説明変数が子ノードの場合 (図2 の場合)
こちらは、説明変数間をそれぞれ独立と仮定したモデルです。(ナイーブベイズ構造ともいいます)
目的変数に対して、個々の説明変数の影響を独立に目的変数に与えます。
このため説明変数の数が多い場合にも対応ができ、また、少ないサンプル数であっても、比較的精度の
良いモデルを作成することが可能です。
注意点としては、
こちらのモデルの場合、説明変数間の依存関係を表現することはできません。
例) どの単語が含まれていたら迷惑メールに分類するべきかを分析して、
迷惑メールフィルタの仕組みに活用
★まとめ★
説明変数間の依存関係をモデルに取り込みたい、または、因果関係を正しく表現したい場合は、
(図1) によりモデルを構築するすることがおすすめです。
一般的には、親 (説明変数) を多くし過ぎない方が、よいモデルが構築できます。
逆に、多数の説明変数から目的変数を予測したい場合、または、サンプル数が少ない場合は
(図2) を使う方がおすすめです。
いかがでしたでしょうか?
是非実際にモデルを作って試してみてくださいね。
(2017.7.18. 篠宮 陽奈)