AI数学講座 0.4.1: 確率の基本と確率変数 – 不確実な医療データをAIで扱う第一歩
【この記事で学ぶこと】
- 確率の基本的な定義(事象、確率空間)を、医療現場の例を用いて説明できるようになる。
- 「確率変数」が、現実世界の出来事と数値を結びつける「橋渡し」として機能する理由を理解する。
- Pythonを用いて簡単な確率シミュレーションを実行し、理論的な確率と実験的な確率の関係性を視覚的に確認できる。
【対象読者・前提知識】
- AIの背景にある数学の考え方を、直感的に学びたいと考えている医療従事者、研究者、学生の方。
- AIやプログラミングの経験は問いませんが、これまでの講座(特に0.2.1: スカラー、ベクトル、行列)で触れた「データを数値として扱う」という考え方に触れていると、よりスムーズに理解できます。
はじめに:なぜAIに「確率」が必要なのか?
これまでの講座で、私たちは線形代数(データの表現)と微分(学習の仕組み)という、AIの強力なツールを見てきました。微分が「損失」という山の傾斜を計算し、AIが「谷底」という正解へ向かう羅針盤になる、という話もしましたね。
しかし、実際の医療現場は、常に「100%黒」か「100%白」かで判断できるほど単純ではありません。「この患者さんが3年以内に再発する可能性は70%」「この検査の陽性的中率は約85%」といったように、私たちは日々不確実性 (Uncertainty) の中で意思決定を行っています。
AIが真に医療現場で役立つパートナーとなるためには、この「不確実性」を数学の言葉で、つまり確率 (Probability) を使って、定量的かつ論理的に扱えるようにならなければなりません。
今回の講座から始まる「確率・統計」のセクションでは、AIがこの不確実な世界をどのように捉え、意思決定を行っているのか、その根幹にある考え方を探求します。今回はその第一歩として、「確率とは何か?」という基本に立ち返り、現実の出来事を数値に変換するための重要な概念「確率変数」について学んでいきましょう。
1. 確率とは何か? — 「確からしさ」を表現する世界共通の言語
私たちは日常的に「確率50%」のような言葉を使いますが、その数学的な定義を少しだけ確認しておきましょう。これは、今後のAIの挙動を理解する上で非常に重要です。
- 試行 (Trial): コインを投げる、サイコロを振る、患者さんを一人選んで検査を行う、など、結果が偶然によって決まる行為。
- 事象 (Event): 試行の結果として起こり得ること。例えば、「コインの裏が出る」「サイコロの目が1である」「検査が陽性である」など。
- 根元事象 (Elementary Event): これ以上分解できない、最も基本的な事象の集まり。
- 標本空間 (Sample Space): 起こりうる全ての根元事象を集めた集合。例えば、サイコロを1回振る試行の標本空間は \(\Omega = \{1, 2, 3, 4, 5, 6\}\) です。
- 確率 (Probability): ある事象が起こる「確からしさ」を、0から1の間の数値で表現したもの。標本空間の全ての根元事象の確率を足し合わせると、必ず1になります (1, 2)。
例えば、ある疾患を持つ患者100人に対して新薬を投与する臨床試験を考えます。この試行における標本空間は、「薬が奏効した」「奏効しなかった」の2つの事象から成ります。もし80人の患者さんに効果が見られたなら、「薬が奏効する」という事象が起こる確率は、\(P(\text{奏効}) = \frac{80}{100} = 0.8\) と推定されます。これが、AIが確率を扱う上での基本的な考え方です。
2. 確率変数 — 「現実の出来事」と「コンピュータが扱う数値」を結ぶ橋渡し
さて、AI(コンピュータ)は「薬が奏効した」という言葉を直接理解できません。AIが扱えるのは、あくまで数値です。ここで、現実世界の出来事と数値を結びつけるための、非常に重要な「翻訳機」が登場します。それが確率変数 (Random Variable) です。
確率変数とは、試行の結果(事象)に応じて、特定の値(数値)をとる変数のことです。通常、大文字のアルファベット(例: \(X, Y\))で表されます。
先ほどの臨床試験の例で考えてみましょう。
「薬が奏効したか否か」という結果を、確率変数\(X\)を使って数値に翻訳します。
- 事象「薬が奏効した」 → \(X = 1\) とする
- 事象「奏効しなかった」 → \(X = 0\) とする
このようにルールを決めることで、私たちは「薬が奏効する確率」を、AIが扱える \(P(X=1)\) という数式で表現できるようになります。確率変数は、現実の出来事と数学の世界をつなぐ、不可欠な橋渡し役なのです。
確率変数には、その「とりうる値」の性質によって、大きく2つの種類があります。
- 離散確率変数 (Discrete Random Variable): とびとびの値(整数など)をとる変数。
例: サイコロの目 (\(X \in \{1, 2, 3, 4, 5, 6\}\))、コインの表裏 (\(X \in \{0, 1\}\))、ある日の外来患者数など。 - 連続確率変数 (Continuous Random Variable): ある範囲内の任意の実数値をとる変数。
例: 患者さんの身長や体重、血圧、検査値など。
この2つの区別は、次回以降に登場する「確率分布」を理解する上で重要になってきます。
3. Pythonで確率をシミュレートする
言葉だけの説明では、イメージが湧きにくいかもしれませんね。実際にPythonコードを動かして、確率の性質を体感してみましょう。
ここでは、公平な6面のサイコロを何度も振ったとき、それぞれの目が出る確率が、理論値である \(1/6\) (約0.167) に本当に近づいていくのかをシミュレーションで確かめます。
【実行前の準備】
以下のコードで日本語のグラフを表示させるには、あらかじめターミナルやコマンドプロンプトで pip install japanize-matplotlib を実行してライブラリをインストールしてください。
graph TD
A(開始) --> B["シミュレーション設定
(試行回数: 10,000回)"];
B --> C["設定回数サイコロを振る
(1〜6の乱数を生成)"];
C --> D["各目(1〜6)の
出現回数を集計"];
D --> E["観測された確率を計算
(出現回数 / 試行回数)"];
E --> F["結果をグラフで可視化
・観測確率を棒グラフで描画
・理論確率(1/6)を点線で描画"];
F --> G["観測された確率を
数値で出力"];
G --> H(終了);
# 必要なライブラリをインポートします
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib # matplotlibの日本語表示を簡単にする
# --- シミュレーションの設定 ---
# サイコロを振る回数
num_trials = 10000
# --- シミュレーションの実行 ---
# 1から6までの整数をランダムにN回生成します (N回サイコロを振ることに相当)
rolls = np.random.randint(1, 7, size=num_trials)
# --- 結果の集計 ---
# 各目が出た回数を数えます
# np.uniqueは配列のユニークな要素と、その出現回数を返してくれます
values, counts = np.unique(rolls, return_counts=True)
# 各目が出る確率(観測された確率)を計算します
observed_probabilities = counts / num_trials
# --- 結果の可視化 ---
plt.figure(figsize=(10, 6)) # グラフのサイズを設定
# 棒グラフで各目が出た確率を表示します
plt.bar(values, observed_probabilities, label='観測された確率', color='skyblue')
# 理論上の確率(1/6)を点線で描画します
plt.axhline(y=1/6, color='red', linestyle='--', label='理論上の確率 (1/6 ≈ 0.167)')
# グラフの見た目を整えます
plt.title(f'サイコロを{num_trials}回振ったときの各目の出現確率', fontsize=16)
plt.xlabel('サイコロの目', fontsize=12)
plt.ylabel('確率', fontsize=12)
plt.xticks(values) # x軸の目盛りを1,2,3,4,5,6に設定
plt.ylim(0, 0.25) # y軸の範囲を設定
plt.legend() # 凡例を表示
plt.grid(axis='y', linestyle='--', alpha=0.7) # y軸のグリッド線を表示
plt.show() # グラフを表示
print("--- 観測された確率 ---")
for v, p in zip(values, observed_probabilities):
print(f"目 {v}: {p:.4f}")

(注:上記コードを実行すると、結果のグラフが表示され、コンソールには以下の実行結果が出力されます。)
▼コンソールへの出力結果
--- 観測された確率 ---
目 1: 0.1683
目 2: 0.1664
目 3: 0.1658
目 4: 0.1687
目 5: 0.1640
目 6: 0.1668
このコードを実行すると、サイコロを振る回数(num_trials)を増やせば増やすほど、観測された確率(青い棒グラフ)が、理論上の確率(赤い点線)に近づいていくことが視覚的に確認できるはずです。これは大数の法則として知られる、確率論の基本原則です (3)。
まとめ
- 確率は、不確実な事象が起こる「確からしさ」を0から1の数値で表現する、世界共通の言語です。
- 確率変数は、現実世界の出来事(例:検査陽性)と数値(例:1)を結びつけ、AIが確率を扱えるようにするための重要な「翻訳機」です。
- AIは、この確率という概念を用いることで、診断の信頼度を示したり、治療法の効果を予測したりと、医療現場の不確実性を伴う問題に取り組むことができます。例えば、画像診断AIは「この画像に悪性腫瘍が存在する確率は95%です」といった形で、その予測に「自信度」を添えて提示します (4, 5)。
確率の基礎を理解することは、AIがどのようにして「たぶん」「おそらく」といった人間の思考に近い判断を下しているのか、その根源を理解することに繋がります。
次回は、この確率の考え方を一歩進め、ある情報が与えられたときに、別の事象の確率がどう変化するのかを学ぶ「0.4.2: 条件付き確率とベイズの定理」について探求します。これは、AIによる診断推論の根幹をなす、非常に重要なテーマです。
参考文献
- DeGroot MH, Schervish MJ. Probability and Statistics. 4th ed. Pearson; 2012.
- Wasserman L. All of Statistics: A Concise Course in Statistical Inference. Springer; 2004.
- Yates F. The Place of the Principle of Randomization in the History of Experimental Design. In: Experimental Design: Selected Papers of Frank Yates, C.B.E., Sc.D., F.R.S. Charles Griffin & Company Ltd; 1970. p. 13-22.
- LeCun Y, Bengio Y, Hinton G. Deep learning. Nature. 2015;521(7553):436-444.
- Rajkomar A, Dean J, Kohane I. Machine Learning in Medicine. N Engl J Med. 2019;380(14):1347-1358.
- Bishop CM. Pattern Recognition and Machine Learning. New York: Springer; 2006.
- James G, Witten D, Hastie T, Tibshirani R. An Introduction to Statistical Learning. Springer; 2013.
ご利用規約(免責事項)
当サイト(以下「本サイト」といいます)をご利用になる前に、本ご利用規約(以下「本規約」といいます)をよくお読みください。本サイトを利用された時点で、利用者は本規約の全ての条項に同意したものとみなします。
第1条(目的と情報の性質)
- 本サイトは、医療分野におけるAI技術に関する一般的な情報提供および技術的な学習機会の提供を唯一の目的とします。
- 本サイトで提供されるすべてのコンテンツ(文章、図表、コード、データセットの紹介等を含みますが、これらに限定されません)は、一般的な学習参考用であり、いかなる場合も医学的な助言、診断、治療、またはこれらに準ずる行為(以下「医行為等」といいます)を提供するものではありません。
- 本サイトのコンテンツは、特定の製品、技術、または治療法の有効性、安全性を保証、推奨、または広告・販売促進するものではありません。紹介する技術には研究開発段階のものが含まれており、その臨床応用には、さらなる研究と国内外の規制当局による正式な承認が別途必要です。
- 本サイトは、情報提供を目的としたものであり、特定の治療法を推奨するものではありません。健康に関するご懸念やご相談は、必ず専門の医療機関にご相談ください。
第2条(法令等の遵守)
利用者は、本サイトの利用にあたり、医師法、医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律(薬機法)、個人情報の保護に関する法律、医療法、医療広告ガイドライン、その他関連する国内外の全ての法令、条例、規則、および各省庁・学会等が定める最新のガイドライン等を、自らの責任において遵守するものとします。これらの適用判断についても、利用者が自ら関係各所に確認するものとし、本サイトは一切の責任を負いません。
第3条(医療行為における責任)
- 本サイトで紹介するAI技術・手法は、あくまで研究段階の技術的解説であり、実際の臨床現場での診断・治療を代替、補助、または推奨するものでは一切ありません。
- 医行為等に関する最終的な判断、決定、およびそれに伴う一切の責任は、必ず法律上その資格を認められた医療専門家(医師、歯科医師等)が負うものとします。AIによる出力を、資格を有する専門家による独立した検証および判断を経ずに利用することを固く禁じます。
- 本サイトの情報に基づくいかなる行為によって利用者または第三者に損害が生じた場合も、本サイト運営者は一切の責任を負いません。実際の臨床判断に際しては、必ず担当の医療専門家にご相談ください。本サイトの利用によって、利用者と本サイト運営者の間に、医師と患者の関係、またはその他いかなる専門的な関係も成立するものではありません。
第4条(情報の正確性・完全性・有用性)
- 本サイトは、掲載する情報(数値、事例、ソースコード、ライブラリのバージョン等)の正確性、完全性、網羅性、有用性、特定目的への適合性、その他一切の事項について、何ら保証するものではありません。
- 掲載情報は執筆時点のものであり、予告なく変更または削除されることがあります。また、技術の進展、ライブラリの更新等により、情報は古くなる可能性があります。利用者は、必ず自身で公式ドキュメント等の最新情報を確認し、自らの責任で情報を利用するものとします。
第5条(AI生成コンテンツに関する注意事項)
本サイトのコンテンツには、AIによる提案を基に作成された部分が含まれる場合がありますが、公開にあたっては人間による監修・編集を経ています。利用者が生成AI等を用いる際は、ハルシネーション(事実に基づかない情報の生成)やバイアスのリスクが内在することを十分に理解し、その出力を鵜呑みにすることなく、必ず専門家による検証を行うものとします。
第6条(知的財産権)
- 本サイトを構成するすべてのコンテンツに関する著作権、商標権、その他一切の知的財産権は、本サイト運営者または正当な権利を有する第三者に帰属します。
- 本サイトのコンテンツを引用、転載、複製、改変、その他の二次利用を行う場合は、著作権法その他関連法規を遵守し、必ず出典を明記するとともに、権利者の許諾を得るなど、適切な手続きを自らの責任で行うものとします。
第7条(プライバシー・倫理)
本サイトで紹介または言及されるデータセット等を利用する場合、利用者は当該データセットに付随するライセンス条件および研究倫理指針を厳格に遵守し、個人情報の匿名化や同意取得の確認など、適用される法規制に基づき必要とされるすべての措置を、自らの責任において講じるものとします。
第8条(利用環境)
本サイトで紹介するソースコードやライブラリは、執筆時点で特定のバージョンおよび実行環境(OS、ハードウェア、依存パッケージ等)を前提としています。利用者の環境における動作を保証するものではなく、互換性の問題等に起因するいかなる不利益・損害についても、本サイト運営者は責任を負いません。
第9条(免責事項)
- 本サイト運営者は、利用者が本サイトを利用したこと、または利用できなかったことによって生じる一切の損害(直接損害、間接損害、付随的損害、特別損害、懲罰的損害、逸失利益、データの消失、プログラムの毀損等を含みますが、これらに限定されません)について、その原因の如何を問わず、一切の法的責任を負わないものとします。
- 本サイトの利用は、学習および研究目的に限定されるものとし、それ以外の目的での利用はご遠慮ください。
- 本サイトの利用に関連して、利用者と第三者との間で紛争が生じた場合、利用者は自らの費用と責任においてこれを解決するものとし、本サイト運営者に一切の迷惑または損害を与えないものとします。
- 本サイト運営者は、いつでも予告なく本サイトの運営を中断、中止、または内容を変更できるものとし、これによって利用者に生じたいかなる損害についても責任を負いません。
第10条(規約の変更)
本サイト運営者は、必要と判断した場合、利用者の承諾を得ることなく、いつでも本規約を変更することができます。変更後の規約は、本サイト上に掲載された時点で効力を生じるものとし、利用者は変更後の規約に拘束されるものとします。
第11条(準拠法および合意管轄)
本規約の解釈にあたっては、日本法を準拠法とします。本サイトの利用および本規約に関連して生じる一切の紛争については、東京地方裁判所を第一審の専属的合意管轄裁判所とします。
For J³, may joy follow you.

