【超入門】確率密度とは?新人エンジニアが最初に知るべきデータ分析の基礎知識
こんにちは。ゆうせいです。
みなさんは、データ分析や機械学習の勉強を始めて、いきなり確率密度という言葉に出くわして困惑したことはありませんか。
確率ならなんとなくわかるけれど、密度ってなに。物理の話。そう感じてしまう気持ち、とてもよくわかります。僕も最初はそうでした。
でも、安心してください。この概念は、現代のAIやデータサイエンスを理解するための最も重要な土台の一つです。ここを乗り越えれば、データの見え方が劇的に変わります。
今日は、数式ばかりの教科書はいったん脇に置いて、新人エンジニアのみなさんがイメージしやすいように、確率密度の世界を一緒に探検していきましょう。
サイコロとストップウォッチの違い
まず、確率密度を理解するために、データの種類の違いについてお話しします。
みなさん、サイコロを振ったときのことを想像してみてください。
1が出る確率は、6分の1ですよね。2が出る確率も同様です。これはとてもわかりやすい。なぜなら、サイコロの目は1、2、3といった飛び飛びの値しか取らないからです。これを専門用語で離散型確率変数と呼びます。
では、今度はストップウォッチを想像してみましょう。
あなたは目をつぶって、ちょうど10秒だと思った瞬間にストップウォッチを止めます。このとき、表示がピッタリ10.000000...秒になる確率はどれくらいでしょうか。
どう思いますか。
実は、限りなくゼロに近いのです。なぜなら、時間は10.1秒、10.01秒、10.001秒と、どこまでも細かく刻めるからです。連続してつながっている値、これを連続型確率変数と呼びます。
ここで困ったことが起きます。サイコロのように特定の数字が出る確率はこれですと言えないのです。特定の値になる確率がゼロになってしまうなら、どうやって確率を扱えばいいのでしょうか。
そこで登場するのが、確率密度という考え方です。
点ではなく面積で考える
確率密度とは、ある一点の確率ではなく、ある範囲にデータが存在する可能性の濃さを表したものです。
イメージしやすいように、公園の砂場を思い浮かべてください。
あなたは砂場のどこかにボールを落とします。砂場のちょうど真ん中の、針の先ほどの点にボールが落ちる確率はほぼゼロです。でも、真ん中周辺というある程度の広さのエリアに落ちる確率は計算できますよね。
このある程度の広さにおける確率の濃さを表すカーブ、それが確率密度関数です。
グラフの縦軸が確率そのものではなく、確率の密度を表していると考えてください。ある範囲(区間)を指定して、そのグラフの下側の面積を計算すると、それが初めて確率になります。
つまり、点ではなく面で捉えるのです。
数式で見る確率と密度の関係
少しだけ数学の言葉を使ってみましょう。高校数学で習った積分を思い出してください。
積分とは、グラフの下の面積を求める計算のことでしたよね。確率密度関数においては、この面積こそが確率そのものになります。
言葉で表すと、以下のような関係になります。
確率 確率密度関数の積分
これをもう少し数学的な記号を使って書いてみますね。ある値 から
の間に入る確率は次のように表せます。
確率
ここで出てくる が確率密度関数です。
この式が意味しているのは、特定の点ではなく から
という幅を持たせて、その間の密度を足し合わせる(積分する)ことで、やっと確率という具体的な数字が得られるということです。
確率密度を使うメリットとデメリット
では、なぜわざわざこんな面倒な考え方をするのでしょうか。メリットとデメリットを整理してみましょう。
メリット
現実世界のデータをそのまま扱える点が最大のメリットです。
身長、体重、気温、株価、これらはすべて連続した値です。これらを無理やり区切って離散的なデータとして扱うよりも、連続したまま確率密度関数としてモデル化するほうが、計算もスムーズですし、より精度の高い予測が可能になります。
とくに機械学習では、正規分布という釣鐘型の確率密度関数が頻繁に使われます。これを使うことで、異常検知や将来予測といった複雑なタスクを数学的に処理できるようになるのです。
デメリット
直感的に理解しにくい点がデメリットでしょう。
先ほどお話しした通り、確率密度関数の値(グラフの縦軸の値)自体は確率ではありません。場合によっては1を超えることさえあります。
確率は最大で1(100パーセント)のはずなのに、密度は1を超えることがある。ここで混乱してしまう初心者が非常に多いのです。あくまで面積が確率であるというルールを常に意識しておく必要があります。
今後の学習の指針
ここまで読んで、なんとなくイメージは掴めましたか。
確率密度とは、連続したデータの世界で確率を扱うための魔法の翻訳機のようなものです。点では捉えきれないものを、広がり(面積)として捉えるための道具なんですね。
さて、ここから先、みなさんに挑戦してほしいことがあります。
まずは、Pythonなどのプログラミング言語を使って、実際に正規分布のグラフを描画してみてください。NumPyやMatplotlibといったライブラリを使えば、数行のコードで確率密度のグラフを表示できます。
自分でコードを書き、パラメータを変えてグラフの形が変わる様子を見る。これこそが、直感を確信に変える一番の近道です。
恐れずに、データサイエンスの海へ飛び込んでみてくださいね。
また次の記事でお会いしましょう。