ポアソン分布~賢い在庫管理、宝くじまで

ポアソン分布

世の中で、ある事象が一定の頻度(確率)で、ある期間中にいつでも起きる可能性があり、ただし正確な発生時刻が知ることができない。例えば、自動車が交差点を通過、赤ちゃんが病院で生まれ、スーパーで商品が販売され、機械が故障との事象がある。機械は月に1回故障、スーパーは1日に牛乳50本を販売、病院に1時間に3人の赤ちゃんが誕生、15分の間に40台の車が交差点を通過したという具体的事象に対して、特定の期間における独立した事象の発生数の確率分布を求めるには、以下のポアソン分布が使用可能である。
$$P[X(t)=k]=\frac{(λt)^k e^{-λt}}{k!}$$
ただし、tは連続時間の長さ、λは単位時間に事象発生の期待値、eは自然対数の底(ネイピア数)。事象が期間t内に発生数がkの確率を計算する。ポアソン分布の期待値、分散ともλである。

在庫管理、ナンバーズ予測への応用例

【在庫管理の使用例】某ECサイトでは、1日に平均でPCを2台販売している。在庫切れの確率を5%以下に抑えたいので、どれだけの量の在庫が必要なのか。
1日にPCを0台販売の確率:
$$P[X(1)=0]=\frac{(2*1)^0 e^{-2*1}}{0!}=e^{-2}$$
1日にPCを1台販売の確率:
$$P[X(1)=1]=\frac{(2*1)^1 e^{-2*1}}{1!}=2e^{-2}$$
1日にPCを2台販売の確率:
$$P[X(1)=2]=\frac{(2*1)^2 e^{-2*1}}{2!}=2e^{-2}$$
1日にPCを3台販売の確率:
$$P[X(1)=3]=\frac{(2*1)^3 e^{-2*1}}{3!}=\frac{4}{3}e^{-2}$$
1日にPCを4台販売の確率:
$$P[X(1)=4]=\frac{(2*1)^4 e^{-2*1}}{4!}=\frac{2}{3}e^{-2}$$
1日にPCを5台販売の確率:
$$P[X(1)=5]=\frac{(2*1)^5 e^{-2*1}}{5!}=\frac{4}{15}e^{-2}$$
なので、1日にPCを3台以上販売の確率:
$$ P[X(1)>2]=1-\sum_{i=0}^{i=2}P[X(1)=i]\\\scriptsize=1-e^{-2}-2e^{-2}-2e^{-2}=0.3233$$
1日にPCを4台以上販売の確率:
$$P[X(1)>3]=1-\sum_{i=0}^{i=3}P[X(1)=i]\\\scriptsize=1-e^{-2}-2e^{-2}-2e^{-2}-\frac{4}{3}e^{-2}=0.1429$$
1日にPCを5台以上販売の確率:
$$P[X(1)>4]=1-\sum_{i=0}^{i=4}P[X(1)=i]\\\scriptsize=1-e^{-2}-2e^{-2}-2e^{-2}-\frac{4}{3}e^{-2}-\frac{2}{3}e^{-2}=0.0527$$
1日にPCを6台以上販売の確率:
$$P[X(1)>5]=1-\sum_{i=0}^{i=5}P[X(1)=i]\\\scriptsize=1-e^{-2}-2e^{-2}-2e^{-2}-\frac{4}{3}e^{-2}-\frac{2}{3}e^{-2}-\frac{4}{15}e^{-2}=0.0166$$
つまり、1日にPCを6台以上販売の確率が1.66%なので、PC 5台以上(最低5台)の在庫が確保できれば、在庫切れの確率を5%以下に抑えられる。

【ナンバーズ予測の使用例】
0~9の数字の出た回数を1000回分もしくは2000回分で平均して、λにしておく。最近の9回、0~9の出た回数+今度も出る(+1)確率を、大きさが大から小の順で並べて、確率が大きい数字が予測の結果とする。注意!:あくまで確率論からの予測(可能性)なので、ポアソン分布から宝くじが当たる意味ではない。

【発明者が残した言葉】
「私がランダム現象を記述する1つの確率分布を確立した」 by フランス数学者・物理学者ポアソン。

0

ロボット・ドローン部品お探しなら、ロボット翔をご利用下さい

粒子フィルタ

はじめに

ガウス分布に従う時系列確率変数の非線形関数は必ずしもガウス分布にならない、また非ガウス分布の確率変数が存在するから、優雅なるカルマンフィルタファミリーには限界あり、無理な場合がある。非線形、非ガウス時系列空間モデルに対して、1990年代から未知の状態密度関数p(x)に対して、既知の密度関数q(x)、p(x)⊂q(x) から逐次モンテカルロ法(逐次重要性サンプリングSequential Importance Samplingに、リサンプリングResampling)による粒子フィルタ(パーティクル・フィルタ、PF)が提案されて以来、研究・応用が活発になっている。粒子フィルタがROSのSLAM Gmappingアルゴリズムに組まれている。

粒子フィルタ

状態空間モデル

・システムモデル(状態方程式)
$$x_t = f_t(x_{t-1},v_t)$$

・観測モデル(観測方程式)
$$y_t = h_t(x_t,w_t)$$

ただし、\( v_t、w_t\)はフィルタリングをかける事前に既知で、非ガウス分布可能、\( y_t\)は2項分布またポアソン分布に従うcount dataのモデル化なども可能になる。また、粒子フィルタには、\( v_t、w_t\)はガウス分布でも構わない。
以下に粒子\( x_t^{[i]} \)~\( f_t (x_t^{[i]} | x_{t−1}^{[i]}, v_t) \)として、粒子フィルタリングの手順を示す。

粒子フィルタリングの手順

1、初期化\( (t=0) \)
初期分布\( f_t (x_0^{[i]}, v_0) \)に従って、n個の粒子\( \{x^{[i]}_0 | i = 1,2, ⋯ ,n\} \)を無作為に発生させる。

2、一期先予測\( (t=t+1) \)
粒子\( x_t^{[i]} \)を\( f_t (x_t^{[i]} | x_{t−1}^{[i]}, v_t) \)に従って状態推移させ、それぞれの類似値が\(x_t^{[i]}\)である粒子の集合\( \{\hat{x}^{[i]}_t | i = 1,2, ⋯ ,n\} \)を発生させる。

3、フィルタリング
・重み計算
粒子\( \hat{x}_t^{[i]} \) の重み\( w_t^{[i]} = p(y_k | \hat{x}_k^{[i]}) \)を計算する。
ただし、\( p(y_k | \hat{x}_k^{[i]}) \)は、尤度であり、観測値または類似値ではないことに注意する。

・重みの正規化
$$\hat{w}_t^{[i]} = \frac{w_t^{[i]}}{ \sum_{i=1}^n w_t^{[i]} }$$

・リサンプリング
粒子\( \hat{x}^{[i]}_0 \)を\(\hat{w}_t^{[i]}\)に従った確率でリサンプリングし、粒子集合\( \{x^{[i]}_t | i = 1,2, ⋯ ,n\} \)を発生させる。

・2に戻る

参考文献

粒子フィルタ、著者:樋口知之 先生

0

ロボット・ドローン部品お探しなら、ロボット翔をご利用下さい

SLAM~Unscentedカルマンフィルタ

はじめに

UKF(Unscented kalman filter)では無損変換(Unscented Transform)の線形化手法を利用し、つまり(2*n次元+1)個Sigma Pointの線形回帰に基づき、確率変数の非線形関数を線形化する。確率変数の拡張を考慮するので、この線形化は拡張カルマンフィルタEKFで使用するテイラー級数線形化より比較的正確に状態推定できる他、EKFと違い、状態・観測ヤコビアン行列を求める必要でなく、但しEKFと同様にUKFも予測と更新の手順から時系列の状態推定を行う。状態変数、観測変数ともガウス分布に当てるのがカルマンフィルタKFの共通特徴という。またガウス分布に当てないパーティクル(和文粒子、英文Particle)フィルタPFがある。そもそもガウス分布に従う確率変数の非線形関数はガウス分布にならないから、EKF、UKFよりPFの方が精度よく、ROSのSLAM Gmappingアルゴリズムに組まれている。

Unscented Kalman Filter

状態空間モデル

状態モデル(状態方程式)
$$x_t = F \cdot x_{t-1} + B \cdot u_{t-1} + q_{t-1} \\\scriptsize=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&0\end{bmatrix}\begin{bmatrix}x_{t-1}\\y_{t-1}\\ψ_{t-1}\\v_{t-1}\end{bmatrix}+\begin{bmatrix}Δt\cdot cosψ_{t-1}&0\\Δt\cdot sinψ_{t-1}&0\\0&Δt\\1&0\end{bmatrix}\begin{bmatrix}v_{t-1}\\ψ_{t-1}\end{bmatrix}+q_{t-1}$$

観測モデル(観測方程式)
$$z_t = H \cdot x_t + r_t \\=\begin{bmatrix}1&0&0&0\\0&1&0&0\end{bmatrix}\begin{bmatrix}x_t\\y_t\\ψ_t\\v_t\end{bmatrix}+r_t$$

予測ステップ

$$χ_{t-1}=(x_{t-1} , x_{t-1}+γ\sqrt{{\sum}_{t-1}} , x_{t-1}-γ\sqrt{{\sum}_{t-1}})\\
\bar{χ}_t^{*}=g(u_t,χ_{t-1})\\
\bar{x}_t=\sum_{i=0}^{2n} w_m^{[i]} \bar{χ}_t^{*[i]}\\
\bar{\sum}_t=\sum_{i=0}^{2n} w_c^{[i]}(\bar{χ}_t^{*[i]}-\bar{x}_t)(\bar{χ}_t^{*[i]}-\bar{x}_t)^T +R_t\\
\bar{χ}_{t}=(x_{t} , x_{t}+γ\sqrt{{\sum}_{t}} , x_{t}-γ\sqrt{{\sum}_{t}})\\
\bar{Z}_{t}=h(\bar{χ}_{t})\\
\hat{z}_{t}=\sum_{i=0}^{2n} w_m^{[i]} \bar{Z}_{t}^{[i]}\\
S_t=\sum_{i=0}^{2n} w_c^{[i]}(\bar{Z}_t^{[i]}-\hat{z}_t)(\bar{Z}_t^{[i]}-\hat{z}_t)^T +Q_t\\
\bar{\sum}^{x,z}_t=\sum_{i=0}^{2n} w_c^{[i]}(\bar{χ}_t^{[i]}-\bar{x}_t)(\bar{Z}_t^{[i]}-\hat{z}_t)^T
$$

更新ステップ

$$K_t=\bar{\sum}^{x,z}_t S^{-1}_t\\
x_t = \bar{x}_t+K_t(z_t-\hat{z}_t)\\
{\sum}_t = \bar{\sum}_t-K_t S_t K^T_t$$

参考文献

Probabilistic Robotics/Sebastian Thrun, Wolfram Burgard and Dieter Fox.

0

ロボット・ドローン部品お探しなら、ロボット翔をご利用下さい