原理

N個のサンプルがある教育用データセット
X=\{\vec{x}_1,\dots , \vec{x}_N\}
があって、これらはすべて正常のクラスをもつとする(半教師有り学習)。
\vec{x}_jは決まった長さD個の特徴量\vec{x}_j=(x_{j,1},\dots ,x_{j,D})を持っていて、名義変数か連続変数の属性\vec{t}=(t_1,\dots ,t_D)があって、混合していてもいい。
 
やりたいことは、引数ベクトル\vec{x}_qをひとつの実数値に対応させる関数f:\vec{x}\to \mathbb{R}を作ることである。
いま、\rho_iを、i番目のターゲットを予測する予測セットとする。つまり、
\rho_i(\vec{x}_j)=(x_{j,1},\dots,x_{j,i-1},x_{j,i+1},\dots,x_{j,D}) (x_{j,i}が抜けている)
P個のモデルがある。回帰またはクラス分けをする予測モデルを学習する。つまり、
C_{p,i}:\rho_i(\vec{t})\to t_i\hspace{5}p\in \{1,2,\dots,P\}
 
モデルの特徴量を結合させるらしい。テストデータ\vec{x}_qのすべてのエラーは
error(\vec{x}_q)=\sum_{p=1}^P\sum_{i=1}^D distance(x_{q,i},C_{p,i}(\rho_i(\vec{x}_q))) (距離は尺度か連続かに応じて計算する)
となる。
ここで、surprisalなるものを導入するらしい。
surprisal(p)=-\log(p)
p(x_{q,i}|C_{p,i}(\rho_i(\vec{x}_q)))を計算するために、C_{p,i}を交差検証を用いて評価する。
i番目の特徴量が尺度なら
A_{p,i}=\{(x_{1,i},C_{p,i}(\rho_i(\vec{x}_1))),\dots,(x_{N,i},C_{p,i}(\rho_i(\vec{x}_N)))\}
連続なら
E_{p,i}=\{x_{1,i}-C_{p,i}(\rho_i{\vec{x}_1),\dots,x_{N,i}-C_{p,i}(\rho_i(\vec{x}_N))\}
 
最後に、ひたすら surprisal anomaly scoreを計算する。
S(\vec{x}_q)=\sum_{p=1}^P \sum_{i=1}^D surprisal( p(x_{q,i}|C_{p,i}(\rho_i(\vec{x}_q)), A_{p,i}))
しかし、このsurprisal anomaly scoreいうのは、エントロピーが大きいような分布(様々な値をとりうるような)で大きくなる傾向があるらしい。なので、
entropy(\{x_{1,i},\dots,x_{N,i}\})=\sum_{k=1}^V -p(v_k)\log(v_k)
で補正する。
結局、x_{q,i}が欠損値のときは0扱いする、とすれば、anomaly scoreは
NS(\vec{x}_q)=\sum_{p=1}^P \sum_{i=1}^D surprisal( p(x_{q,i}|C_{p,i}(\rho_i(\vec{x}_q)), A_{p,i}))-entropy(\{x_{1,i},\dots,x_{N,i}\})
となる。