予測モデルとは、ある時点で得られる情報から、将来の転帰や未観測の状態を推定するためのモデルです。リハビリテーション領域でいえば、入院時の年齢、FIM、麻痺の重症度、発症からの日数などから、退院時 FIM、歩行自立、自宅退院の可能性を予測する研究が代表例です[1]。
予測モデルを理解するときに大切なのは、最初からアルゴリズム名を考えることではありません。まず、「誰を対象に」「いつの情報を使い」「何を予測し」「その結果をどの判断に使うのか」を整理することです。
本稿では、予測モデルの基本を、説明変数と目的変数、回帰と分類、評価指標、データリーケージ、臨床での使い方という視点から整理します。
本稿は、第1部「医療AI・機械学習の基礎地図」の第5記事です。前 4 記事では、機械学習の基本、統計モデル・機械学習・生成AIの違い、回帰・分類・クラスタリング・生成というタスク類型、医療AI研究の進め方を整理しました。本稿では、その中でも医療AI研究で最もよく使われる「予測モデル」に焦点を当てます。第2部以降で扱うデータ前処理、アルゴリズム、評価指標、データリーケージを理解するための土台となる記事です。
// 01 · LEARN OUTCOMESこの記事でわかること
読了後、次の4つを説明できるようになります。
- 医療AI研究でいう「予測モデル」とは何かを説明できる
- 説明変数、目的変数、予測時点、アウトカム定義を区別できる
- 回帰モデルと分類モデルを、FIM 予測や歩行自立予測の例で使い分けられる
- AUC、calibration、Brier score、外部検証など、予測モデル評価の基本を理解できる
// 02 · CONCLUSIONまず結論
// 03 · FIGURE直感的な図解
予測モデルは、「ある時点で得られる情報」から「将来のアウトカム」を推定する仕組みです。重要なのは、予測に使う情報が予測時点で本当に得られるものか、そして予測したいアウトカムが連続値なのかカテゴリなのかを確認することです。
// 04 · CLINICAL医療・リハビリでの具体例
ここでは、回復期リハビリテーション病棟に入院した脳卒中患者の予後予測を例に、予測モデルの設計を具体的に見ていきます。同じ FIM データを使っていても、目的変数の定義が変われば、モデルの種類も評価指標も変わります。
例1:退院時 FIM を予測する
問い:
「入院時情報から、退院時 FIM 運動項目が何点になるかを予測できるか?」
この場合、目的変数は退院時 FIM 運動項目の点数です。連続値として扱うなら、回帰モデルとして設計します。説明変数には、年齢、発症から入院までの日数、入院時 FIM、麻痺の重症度、認知機能など、予測時点で得られる情報を使います。
評価指標としては、MAE、RMSE、R²、予測区間などを用います。臨床的には、退院時 ADL の見込みを考えるうえで参考になる可能性があります。ただし、予測誤差が臨床的に許容できる範囲かを確認する必要があります。
例2:退院時歩行自立を予測する
問い:
「入院時情報から、退院時に歩行自立できるかを予測できるか?」
この場合、目的変数は歩行自立の有無です。たとえば、FIM 歩行項目 6 点以上を「自立」、5 点以下を「非自立」と定義する場合、2 値分類モデルとして設計します。
評価指標としては、AUC、感度、特異度、PPV、NPV、F1、calibration、Brier score、decision curve analysis などを用います。歩行自立予測では、単に AUC が高いだけでなく、予測確率が実際のリスクと合っているか、臨床判断に役立つかを確認することが重要です。
例3:自宅退院を予測する
問い:
「入院時情報から、自宅退院できる可能性を予測できるか?」
この場合、目的変数は自宅退院の有無です。分類モデルとして設計することが多く、説明変数には入院時 FIM、年齢、同居家族、認知機能、発症からの日数、併存疾患などが候補になります。
ただし、自宅退院は身体機能だけで決まるわけではありません。家族介護力、住宅環境、地域資源、本人・家族の希望、施設方針なども影響します。そのため、モデルの性能だけでなく、どの情報を含められているか、どの情報が欠けているかを Discussion で説明する必要があります。
予測時点を固定する
予測モデルで特に重要なのは、予測時点を固定することです。たとえば「入院時に退院時歩行自立を予測する」のであれば、説明変数は入院時点で得られる情報に限る必要があります。
退院時の情報、入院後に決まる在院日数、退院直前の FIM などを説明変数に入れると、未来の情報を使ったことになります。これはデータリーケージであり、見かけの精度は高くなっても、実際の臨床場面では使えないモデルになります。
カンファレンスで行う「見立て」と、予測モデルの構造は似ています。どちらも、現在得られる情報から将来の転帰を見積もっています。
違いは、予測モデルでは、説明変数、目的変数、予測時点、評価指標を明確に定義し、別データでどの程度当たるかを検証する点です。経験的な見立てを、研究として再現可能な形に整理するのが予測モデル研究です。
// 05 · THEORY数式・理論
予測モデルの数式は難しく見えますが、基本はシンプルです。複数の説明変数を入力し、目的変数を予測する関数を学習するだけです。重要なのは、式そのものよりも、「どの時点の情報を入力し、どのアウトカムを予測しているか」を理解することです。
説明変数と目的変数
予測モデルでは、まず「予測に使う情報」と「予測したい結果」を分けて考えます。
予測時点で得られる情報。例:年齢、発症から入院までの日数、入院時 FIM、SIAS、認知機能、画像情報、加速度計データなど。
予測したいアウトカム。例:退院時 FIM、退院時歩行自立、自宅退院、在院日数、退院後再入院など。
この 2 つが曖昧なままだと、モデルの種類、評価指標、論文での説明も曖昧になります。
予測モデルの一般形
次のように書けます。
ŷ = f(X)
ここで、X は説明変数の集合、ŷ はモデルが出した予測値です。f は、説明変数から予測値を出す関数です。f は、ロジスティック回帰、SVM、ランダムフォレスト、勾配ブースティング、ニューラルネットワークなど、さまざまな形を取りえます。
回帰モデルでは、ŷ は退院時 FIM のような連続値になります。分類モデルでは、ŷ は「歩行自立する確率」や「自宅退院する確率」のような予測確率になります。
回帰モデルと分類モデル
予測モデルは、目的変数の型によって大きく分けられます。
| 種類 | 予測するもの | 主な評価指標 | リハビリ領域の例 |
|---|---|---|---|
| 回帰モデル | 連続値 | MAE、RMSE、R²、予測区間 | 退院時 FIM、歩行速度、在院日数 |
| 分類モデル | カテゴリ | AUC、感度、特異度、PPV、NPV、F1、calibration、Brier score | 歩行自立、自宅退院、転倒リスク |
ただし、FIM 項目のように1〜7 点の順序を持つ尺度では、単純な回帰や 2 値分類だけでなく、順序回帰を検討する余地があります。臨床的なしきい値がある場合は分類として扱うこともありますが、情報量が失われる可能性もあります。
予測性能の3つの見方
予測モデルでは、少なくとも次の 3 つを分けて考えます[1]。
- 識別能:陽性例と陰性例をどの程度分けられるか。代表的な指標は
AUCです。 - 較正(calibration):予測確率が実際の発生率とどの程度一致しているか。
calibration plotやBrier scoreで評価します[6]。 - 臨床的有用性:モデルを使うことで臨床判断が改善するか。
decision curve analysisなどで検討します[7]。
AUC だけでは、予測確率が信頼できるか、臨床で役立つかまではわかりません。そのため、予測モデル研究では、複数の評価指標を組み合わせる必要があります。
// 06 · IMPLEMENTATION · PYTHON実装
ここでは、退院時歩行自立を予測する 2 値分類モデルを例に、予測モデルの基本構造をコードで確認します。重要なのは、高度なアルゴリズムを使うことではなく、説明変数、目的変数、データ分割、前処理、評価指標を明確に分けることです。
# ============================================
# 教育用サンプル
# 実臨床データを使う場合は、個人情報保護、
# 倫理審査、施設ルール、利用規約を必ず確認してください。
# ============================================
import pandas as pd
# 教育用の仮想データを想定
df = pd.read_csv("example_rehab_dataset.csv")
# ============================================
# 1. 説明変数と目的変数を定義する
# ============================================
features = [
"age",
"onset_days",
"fim_motor_admission",
"fim_cognition_admission",
"sias_motor"
]
target = "walk_independent_discharge"
X = df[features]
y = df[target]
# 注意:
# featuresには、予測時点で得られる情報だけを入れる。
# 退院時FIM、在院日数、退院先など、
# 未来の情報を入れるとデータリーケージになる。
# ============================================
# 2. train / test に分割する
# ============================================
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
stratify=y,
random_state=42
)
# ============================================
# 3. 前処理とモデルをPipelineでまとめる
# ============================================
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
model = Pipeline([
("imputer", SimpleImputer(strategy="median")),
("scaler", StandardScaler()),
("classifier", LogisticRegression(max_iter=1000))
])
model.fit(X_train, y_train)
# ============================================
# 4. testデータで評価する
# ============================================
from sklearn.metrics import roc_auc_score, brier_score_loss
y_prob = model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_prob)
brier = brier_score_loss(y_test, y_prob)
print(f"AUC: {auc:.3f}")
print(f"Brier score: {brier:.3f}")
# 実際の研究では、以下も検討する:
# - 感度、特異度、PPV、NPV
# - calibration plot
# - decision curve analysis
# - bootstrapによる95%信頼区間
# - 外部検証または時期別検証
このコードでは、欠測補完と標準化を Pipeline の中に入れています。これにより、前処理が train データ内で fit され、test データの情報が学習側に漏れにくくなります。
予測モデル研究では、モデル名よりも、説明変数と目的変数の定義、予測時点、前処理、データ分割、評価指標を明確に記録することが重要です。これらが曖昧なままだと、AUC が高く見えても、研究としての信頼性は弱くなります。
// 07 · MYTHSよくある誤解
- 数値で表されているアウトカムなら、必ず回帰モデルを使う
- 数値で表されていても、臨床的にはカテゴリとして扱う方が自然な場合があります。たとえば FIM 歩行項目は 1〜7 点の順序尺度ですが、歩行自立を予測したい研究では、6 点以上を自立、5 点以下を非自立として 2 値分類にすることがあります。ただし、2 値化すると情報量は減るため、臨床的なしきい値と研究目的を明確にする必要があります。
- AUC が高ければ良い予測モデルである
- AUC は重要な指標ですが、それだけでは十分ではありません。AUC は陽性例と陰性例をどの程度区別できるかを示しますが、予測確率が実際のリスクと合っているかは
calibrationを見なければわかりません。また、臨床判断に役立つかどうかはdecision curve analysisなどで検討する必要があります。 - 説明変数は多ければ多いほど良い
- 説明変数を増やせば、開発データでの見かけの性能は上がることがあります。しかし、症例数に対して変数が多すぎると過学習しやすくなります。また、未来の情報や目的変数に近すぎる情報を入れると、データリーケージになります。説明変数は、「予測時点で実際に得られる情報か」「臨床的に意味があるか」を確認して選ぶ必要があります。
- 予測モデルは臨床判断を自動化するためのもの
- 予測モデルは、臨床判断を置き換えるものではありません。患者背景、本人・家族の希望、社会的要因、医療資源、治療方針など、モデルに入っていない情報も臨床判断には関わります。予測モデルは、医療者の判断を補助する情報として使うのが基本です。
// 08 · WRITING予測モデル研究で Methods に書くべきこと
予測モデル研究では、どのアルゴリズムを使ったかだけでは不十分です。Methods には、対象集団、予測時点、目的変数、説明変数、前処理、データ分割、評価指標、外部検証を明確に書く必要があります[2][3]。
1. 対象集団を明確にする
予測モデルは、どの患者集団で開発されたかによって性能が変わります。脳卒中患者なのか、大腿骨近位部骨折患者なのか、回復期リハ病棟なのか、急性期病院なのかを明確にします。包含基準、除外基準、対象期間も Methods に記載します。
2. 予測時点を固定する
「入院時に予測する」のか、「入院 2 週間時点で予測する」のか、「退院前に予測する」のかを明確にします。予測時点が変われば、使える説明変数も変わります。予測時点より後に得られる情報を説明変数に入れてはいけません。
3. 目的変数を明確に定義する
歩行自立を予測するなら、どの尺度を使い、どのカットオフで自立とするのかを事前に決めます。たとえば、FIM 歩行項目 6 点以上を自立とする場合は、その理由を説明します。事後的に都合のよいカットオフへ変更することは避けます。
4. 説明変数を選ぶ
説明変数には、予測時点で実際に得られる情報を使います。年齢、発症からの日数、入院時 FIM、認知機能、麻痺の重症度などが候補になります。一方、退院時 FIM、在院日数、退院先など、予測したい結果に近い未来の情報は使いません。
5. 評価指標を選ぶ
回帰モデルでは、MAE、RMSE、R²、予測区間などを用います。分類モデルでは、AUC、感度、特異度、PPV、NPV、F1、calibration、Brier score、decision curve analysis などを用います。研究目的に合わせて、主要評価指標と副次評価指標を決めておきます。
6. 外部検証を検討する
開発データで性能が高くても、別施設や別時期のデータで同じ性能が出るとは限りません。可能であれば、外部検証、時期別検証、施設別検証を行います。外部検証がない場合は、臨床実装可能と強く主張するのではなく、限界として明記します[5]。
7. 報告ガイドラインを確認する
予測モデル研究では、回帰モデル・機械学習モデルのいずれであっても TRIPOD+AI の確認が基本になります[3]。バイアスリスク評価には PROBAST または PROBAST+AI が参考になります[4]。ガイドライン名を並べるだけでなく、自分の研究でどの項目を満たしているかを Methods と Supplement で説明することが重要です。
// 09 · CHECKLISTチェックリスト
研究計画と論文読解のセルフチェックに使う 9 項目。
- 01対象集団、予測時点、目的変数、使用場面を 1 文で説明できる
- 02説明変数が予測時点で得られる情報だけで構成されている
- 03目的変数を、連続値・2 値・多値・順序尺度のどれとして扱うか決めている
- 04回帰モデルか分類モデルかを、目的変数の型から説明できる
- 05未来の情報や目的変数に近すぎる情報を説明変数に含めていない
- 06AUC だけでなく、calibration、Brier score、95% 信頼区間を検討している
- 07外部検証、時期別検証、施設別検証のいずれかを検討している
- 08予測モデルを臨床判断の補助として位置づけている
- 09TRIPOD+AI に沿って Methods と Results を点検している
// 10 · QUIZミニクイズ
-
Q1退院時 FIM 運動項目の点数を予測したい場合、最も近いタスクはどれか?
- 回帰
- 分類
- クラスタリング
- 生成
SHOW ANSWER
A. 退院時 FIM 運動項目の点数を連続値として予測する場合は、回帰モデルとして設計します。評価には MAE、RMSE、R²、予測区間などを用います。 -
Q2退院時歩行自立の有無を予測したい場合、最も近いタスクはどれか?
- 回帰
- 分類
- クラスタリング
- 生成
SHOW ANSWER
B. 歩行自立の有無は「自立 / 非自立」というカテゴリなので、分類モデルとして設計します。AUC、感度、特異度、calibration、Brier score などで評価します。 -
Q3入院時に退院時歩行自立を予測するモデルで、説明変数として使うべきでないものはどれか?
- 年齢
- 入院時 FIM
- 発症から入院までの日数
- 在院日数
SHOW ANSWER
D. 在院日数は退院後に確定する情報なので、入院時予測モデルの説明変数として使うと未来の情報を含むことになります。これはデータリーケージの原因になります。 -
Q4AUC が高い分類モデルについて、追加で確認すべきこととして最も適切なのはどれか?
- AUC だけで十分なので追加評価は不要
- calibration や外部検証、臨床的有用性を確認する
- p値だけを確認する
- モデル名だけを確認する
SHOW ANSWER
B. AUC は識別能を示しますが、予測確率の信頼性や臨床的有用性は別に評価する必要があります。calibration、Brier score、decision curve analysis、外部検証などを組み合わせて評価します。
// REF参考文献
- Steyerberg EW. Clinical Prediction Models: A Practical Approach to Development, Validation, and Updating. 2nd ed. Springer, 2019.
- Moons KGM, Altman DG, Reitsma JB, et al. Transparent Reporting of a multivariable prediction model for Individual Prognosis Or Diagnosis (TRIPOD). Annals of Internal Medicine 2015;162(1):55-63.
- Collins GS, Moons KGM, et al. TRIPOD+AI statement: updated guidance for reporting clinical prediction models that use regression or machine learning methods. BMJ 2024;385:e078378.
- Wolff RF, Moons KGM, Riley RD, et al. PROBAST: A Tool to Assess the Risk of Bias and Applicability of Prediction Model Studies. Annals of Internal Medicine 2019;170(1):51-58.
- Riley RD, Snell KIE, Ensor J, et al. Minimum sample size for developing a multivariable prediction model: PART II — binary and time-to-event outcomes. Statistics in Medicine 2019;38(7):1276-1296.
- Van Calster B, McLernon DJ, van Smeden M, Wynants L, Steyerberg EW. Calibration: the Achilles heel of predictive analytics. BMC Medicine 2019;17:230.
- Vickers AJ, Elkin EB. Decision curve analysis: a novel method for evaluating prediction models. Medical Decision Making 2006;26(6):565-574.