Maxentの利用方法 その1;Maxentってなに?

動物の生息確率や、巣の存在確率を、調査で得られた発見位置とその環境データから推測するソフトMaxentを紹介します。Maxentによる方法は、ロジスティック回帰分析に似ていますが、不在データが必要ないところが最も違います。生物調査では、生息している場所を記録しますが、生息していない場所は記録しません。その場合、ロジスティック回帰分析を行おうとすると、生息していない場所をランダムに作成する必要があります。しかし、ランダムに作成した生息していない場所には、実際には生息している場所も含まれる可能性があります。Maxentでは、不在データが必要ないので、このような問題が生じず、高精度な推測が行えるようです。



http://www.cs.princeton.edu/~schapire/maxent/

使い方は、マニュアルを見れは、なんとなく分かると思うので、その原理や出力結果について説明したいと思います。(分かった範囲で)

※この文章は、Maxentのヘルプ、関連する論文、グループ掲示板の情報から、独自に解釈したものです。なので、間違っている部分もあると思いますので、その点ご注意ください。


原理の説明

今、モデルを規定する関数を以下の4つとして考えます。
また、データは、調査地域全域の環境(標高、傾斜、方位)と動物確認位置の環境(標高、傾斜、方位)があるとします。※調査地域全域のデータの、動物の在、不在の情報は必要ありません。
f1=標高
f2=標高×標高
f3=傾斜
f4=傾斜×方位

1.Σf1/m=Σf1P(x) ※Σ:在データすべて ※x:在データの標高、傾斜、方位
2.Σf2/m=Σf2P(x)
3.Σf3/m=Σf3P(x)
4.Σf4/m=Σf4P(x)
5.ΣP(x)=1    ※Σ:背景データすべて
6.P(x)>=0
1.〜6.の条件をみたし、エントロピー:-ΣP(x)LnP(x) ※Σ:背景データすべて を最大にする確率分布P(x)が、求めたい確率分布モデルです。

大雑把に説明すると、、、調査地域全域を確率分布で表すと、何も情報がなければ、同確率の一様分布となるはずです。しかし、今、動物が存在する情報があるので、求める確率分布の期待値が、動物が存在する場所の環境の平均値となるようにします。しかも、なるべく一様分布に近くなるようにします。つまり、動物が確認された環境と似た場所が、徐々に確率が高くなるような確率分布が求められます。

上の条件を満たすP(x)は、下のカノニカル分布Q(x)の形になります。そして、確率分布Qの不明な変数λを求めるには、確率分布Qにおける在データの最尤推定によって求めます。ただし、λを求める際に、データにオーバーフィッテイングしないようにしきい値βによって調整を行います。λが求まれば、それを代入したQ(x)が求めたい確率分布P(x)ということになります。

Q=Exp(λ1f1+λ2f2+λ3f3+λ4f4)/Z
Z=ΣExp(λ1f1+λ2f2+λ3f3+λf4) ※Σ背景データすべて

ΠQを最大にするλを求める ※Π:在データすべて

環境関数の選択

モデルを規定する関数の形には、線形linear(L)、二次の項quadratic(C)、交互作用項product(P)、閾値threshold(T)、ヒンジhinge(H)、カテゴリcategory(C)があります。ある環境変数に対して、例えば、標高、傾斜に対して、f1=標高 f2=標高×標高 f3=標高×傾斜 f4:標高>100→1、標高=<100→0 f5=傾斜 f6=傾斜×傾斜 f7,f8,, などのように、すべての関数の形を、モデルの候補として考えます。これらの候補の様々な組み合わせを、繰り返し計算を行い、最も在データにフィットするモデルを選択します。(実際には、繰り返し数や、フィットの精度に制約があります。)

出力結果の説明

Maxentから出力される結果は、Raw、Cumulative、logisticの3種類あります。

  • Rawは、P(x)の値そのままで、背景データすべてのP(x)を足し合せると1になります。
  • Cumulativeは、その場所のRaw値を基準として、背景データの中からそれ以下のRaw値を持つ場所のすべてのRaw値を合計して、100をかけた値です。例えば、ある場所のRaw値が0.001の場合、Raw値0.001以下の場所のRaw値の合計が0.3となった場合、その場所は、Cumulative 30%ということになります。Cumulativeの値は、背景データに関係なく0〜100になります。100に近い程、良い生息環境と考えられます。Cumulativeの欠点としては、全域がほぼ等しい条件の時にも、全域を0〜100の範囲で表現してしまうということです。
  • logisticは、ある場所の生息確率を0〜1で表し、Exp(entropy)*P(x)/(1+Exp(entropy)*P(x))で計算します。この計算式の理由は、以下のとおりです。定義から、-entropy = ΣP(x)logP(x)です。右辺は、変数P(x)が背景データの範囲で変化したときの、logP(x) の平均値と言い換えることができます。つまり、-entropyは、logP(x)の平均的な値と考えることができます。そうなると、P(x)の平均的な値は、おおよそExp(-entropy)になることになります。これをlogisticの式に代入すると、平均的なP(x)のlogistic値は、Exp(entropy)*Exp(-entropy)/(1+Exp(entropy)*Exp(-entropy)) = 0.5 となるので、平均的なP(x)よりも大きい値は、1に近づき、逆に小さい値は0に近づくことになります。

モデルの評価

Omission and Predicted Area

あるCumulativeの値より小さい在データの数が、在データ全体の数の何割になるかをグラフにしたものです。横軸は、Cumulativeの値、縦軸は、在データの割合です。(ここから、自身なしの理解→)トレーニングデータ(モデルを作成したデータ)は、Cumulativeが100に近い程、在データが多いはずなので、y=xの直線より下に来ます。テストデータ(モデル作成に使用しない在データ)がトレーニングデータに近いか、y=xの周辺であれば、良いモデルということになります。逆に、y=xより大きく上にはずれると、Cumulativeが小さい値のところに在データが多くあるということなので、悪いモデルということになります。Fraction of background predictedの赤い線は、Cumulativeの値以上の場所がどれだけあるかを割合で示しています。

ROC、AUC

縦軸には、在データの内、正しく予測された割合(感度)、横軸には、不在データの内、間違って在と予測された割合(偽陽性)を示します。不在データは、背景データからランダムに選ばれます。推測された生息確率0〜1で、閾値を0.3とした場合、生息確率0.3以上を生息箇所と予測して、生息確率0.3以上の在データの数をTP、0.3より下の在データの数をFP、生息確率0.3以上の不在データをFN、0.3以下の不在データをTNとします。FP/FP+TNが偽陽性、TP/TP+FNが感度で、X,Yとしてプロットします。閾値を0〜0.1〜0.2〜,,,〜1として、同様に計算してプロットするとROC曲線を書くことができます。ROC曲線の下側の面積がAUCで、AUCが1に近いほど、良いモデルということになります。ただし、不在データが背景データからのランダムサンプリングなので、その点を考慮する必要があります。

参考文献

http://www.cs.princeton.edu/~schapire/maxent/
http://groups.google.com/group/maxent
↓Maxentについて紹介してあります。これを読んでMaxentの存在を知りました。

↓最大エントロピー原理について詳しく書かれています。