1. 分類の次は回帰 — 「数値そのもの」を予測する
モデル①(乳がん)は「良性か悪性か」という分類でした。 医療AIには、もう一つ大きなタスク——回帰(連続した数値を予測する)——があります。 在院日数、検査値の推移、リスクスコア……いずれも「YESかNOか」ではなく数値そのものを当てにいく問題です。
題材は scikit-learn 同梱の糖尿病データセット。 442人の患者について、年齢・BMI・血圧・血液検査値などから、 1年後の糖尿病の進行度を表すスコアを予測します。
442例・10特徴量。目的変数(進行度スコア)は25〜346の範囲で、平均は約152です
(具体的な単位の定義は公開されていませんが、大きいほど進行が強いことを表す指標です)。
age(年齢)・sex(性別)・bmi(体格指数)・bp(血圧)と、
s1〜s6 の6つの血液検査値が特徴量です。
💡 このデータは「標準化済み」:
このデータの特徴量は、あらかじめ平均0・スケール調整済みで配布されています。
そのため bmi 列の平均は0、値も -0.1〜0.1 程度の小さな数字になっています。
レッスン3のように自分で標準化する手間が省ける代わりに、
「BMI 25」のような元の単位では解釈できない点に後で効いてきます。
2. 回帰モデルを学習して評価する(MAE・R²)
機械学習入門コースで学んだ 線形回帰で予測し、回帰の代表的な指標MAEとR²で評価します。
- MAE(平均絶対誤差)……予測が平均で「±いくつ」外れるか。単位が目的変数と同じで直感的
- R²(決定係数)……ばらつきのうちモデルが説明できた割合。1に近いほど良い(0=平均を答えるだけと同等)
MAE41.9、R²0.477。 進行度スコア(平均152・幅25〜346)に対して平均±42ほど外す、という精度です。 R²は0.48——ばらつきの約半分を説明できているが、半分は説明できていない。 分類の「正解率0.97」に比べると地味ですが、医療の回帰ではこれくらいが普通で、 「1年後の身体の変化」を10個の数値だけで完全予測などできない、という現実を示しています。
⚠ 誤差を「臨床の重み」で読む: MAE=42という数字が「使える」かどうかは、その42が臨床的にどれだけ大きいかで決まります。 進行度が10違えば方針が変わる病気なら42の誤差は致命的ですし、大まかな層別け(軽症/重症の目安)が目的なら許容できるかもしれません。 指標の数値だけでなく、それが現場の判断にどう響くかまで考えるのが医療AIの評価です。
3. どの因子が効くのか — 係数と特徴量重要度
医療現場では「予測できた」だけでなく、「なぜその予測か」—— どの因子が進行度に効いているのか——が問われます。 線形回帰の係数と、ランダムフォレストの特徴量重要度、2つの角度から見てみましょう。
2つの方法で見ても、bmi(体格指数)と s5(血清の検査値の一つ)が
上位に来ます。ランダムフォレストでは bmi の重要度が飛び抜けて高く(0.40)、
「体格指数が進行度予測の主役級の手がかりになっている」と読めます。
2つの独立した方法が同じ因子を指すと、その結果への信頼が高まります。
⚠ 「効く」=「原因」ではない(相関と因果): 重要度が高い=その因子が進行の原因、とは限りません。 モデルが見ているのは相関(一緒に動く関係)であって、因果ではないからです。 「BMIを下げれば進行度が下がる」と言い切るには、モデルの重要度ではなく介入研究(実際に減量してもらう試験)が必要です。 医師に説明するときは「予測に効いている因子」であって「治療の標的」ではないことを明確に分ける——医療AIの誠実さです。
4. 結果を「医師に説明する」ということ
開発したモデルの結果を現場に届けるとき、数字の渡し方ひとつで受け取られ方が変わります。 このデータの落とし穴を例に考えましょう。
💡 このモデルの係数は「そのまま」説明できない:
sample_3 の係数で s1 は約 -902 と大きな値ですが、
これは「s1が1増えると進行度が902下がる」という意味にそのままは読めません。
このレッスンの冒頭(§1)で触れたとおり、このデータの特徴量は標準化済みだからです。
「s1が1標準偏差ぶん増えると…」という単位で解釈する必要があり、
さらに s1 と s2 のように相関の強い検査値どうしがあると、
係数は互いに打ち消し合って不安定になります(多重共線性)。
だから医師への説明では、次のような伝え方が誠実です。
- 「BMIとs5が予測に大きく寄与しています」(重要度=寄与の大きさ、として)
- 「このモデルは平均で±42ほど外します」(MAEを臨床の言葉で)
- 「予測はあくまで参考値で、実際の方針は診察と合わせて判断してください」(診断支援の原則)
- 「効いている因子は相関であって、治療で下げれば良いという意味ではありません」
「なぜその予測か」を示す技術は、次のUnit(レッスン9・説明可能性)で さらに踏み込みます。ここでは「数字は、受け手が判断に使える形に翻訳して渡す」という姿勢を覚えておきましょう。
5. 練習問題
ランダムフォレスト回帰と比べる
線形回帰の代わりに RandomForestRegressor を使うと、MAEとR²はどうなりますか。
線形回帰(MAE 41.9 / R² 0.477)より良くなるでしょうか。
ヒントを見る(答え+解説)
from sklearn.ensemble import RandomForestRegressor
...
model = RandomForestRegressor(random_state=42).fit(X_tr, y_tr)
ランダムフォレストは MAE 42.8 / R² 0.470 で、線形回帰とほぼ同じ(わずかに劣る)です。 「複雑なモデルなら必ず勝つ」わけではありません。 このデータは特徴量と進行度の関係がおおむね直線的なので、シンプルな線形回帰で十分—— データに合ったモデルを選ぶという基本が確認できます。
MAEとR²、医師への説明に向くのは?
「このモデルは平均でどれくらい外しますか?」と医師に聞かれました。 答えるのに直接使える指標はどちらで、それはなぜですか。
- A. R² ── 1に近いほど良いので分かりやすい
- B. MAE ── 目的変数と同じ単位で「平均±いくつ外す」を表すから
- C. どちらも同じ
答えと解説を見る
正解:B. MAE
MAEは目的変数と同じ単位なので、「平均で±42ほど外す」とそのまま伝えられます。 R²は「ばらつきの何割を説明できたか」という統計的な指標で、 臨床家に「0.48です」と言っても外し幅は伝わりません。 指標は受け手が使える言葉に翻訳する——R²は開発者どうしの比較に、MAEは現場への説明に、と使い分けます。
「BMIを下げれば進行を防げる」?
モデルで bmi の重要度が最も高いことがわかりました。
ここから「患者のBMIを下げれば進行を防げる」と結論してよいですか。理由も考えてください。
答えと解説を見る
結論してはいけません。
モデルが示すのは bmi と進行度の相関(一緒に動く関係)であって、
因果(下げれば進行が防げる)ではありません。
BMIと進行度の両方に影響する別の要因(生活習慣・遺伝など)が背後にあるかもしれず、
「効いている特徴量」は必ずしも「介入すべき標的」ではないのです。
因果を確かめるには、実際に減量してもらう介入研究が必要です。
医療AIの結果を伝えるときは、この線引きを必ず添えます。
6. まとめ
このレッスンのポイント
- 回帰は数値そのものを予測する。医療では在院日数・検査値・リスクスコアなどに使う
- 評価はMAE(同じ単位で「平均±いくつ外す」)とR²(説明できた割合)。糖尿病データでMAE≒42・R²≒0.48
- 医療の回帰は完全予測はできないのが普通。誤差を臨床の重みで読む
- 係数・特徴量重要度で効く因子(bmi・s5)を読む。ただし標準化済みデータの係数はそのまま解釈できない
- 「効く」は相関であって因果ではない。医師への説明では、参考値であること・相関であることを明示する
これでテーブルデータのモデルは2つ完成しました。次のUnitからは、いよいよ医用画像の世界へ。 まずは画像の標準フォーマットDICOMを、その構造から扱えるようになりましょう。
完了するとコース一覧に進捗が記録されます