今回のテーマは「データ前処理と特徴量エンジニアリング」についてです。
……と聞いて「なんだか難しそう」と思った方、大丈夫です!!
保健師さんであれば、欠損値(=足りないデータ)を整えた経験がある方もいらっしゃるのではないでしょうか。看護学生さんも卒業研究でやることがあるかもしれませんね。
今回のお話は、きっと実務でも役に立つと思います。
しっかり、でもリラックスしながら読んでくださいね!!(矛盾してる…)
それでは、レッツゴーーーーー!!!!!
欠損値処理:穴の空いたデータをどうする?
健診データを見たら、体温が書かれていない人がいる……。これが「欠損値」です。
現場でも「患者さん、体温を測り忘れてます!」なんてありますよね。
では、このような方はどのように対応すればいいでしょうか?
ここで、欠損値処理をします。
欠損値処理は、現場でカルテに空白があった時の「埋め方」に近いんです。
欠損値はデータ分析から除外する、という方もいると思いますが、実は方法はそれだけではなく、メリットもデメリットもあります。
6種類紹介するので、1つずつ見ていきましょう。
① 欠損を外す(除外する)
これは「測り忘れた体温の患者さんは集計から外す」という選択です。
- メリット:シンプルでわかりやすい。「記録が揃っている人だけで比べればいいや」と割り切れる。
- デメリット:せっかくの患者さんのデータが無かったことになってしまう。サンプルが減って、分析の信頼性が落ちることも。
データがある人数が万単位なら1人分減ったくらいでは痛くも痒くもないですが、10人しかいなかったら大きな痛手です。
② 平均値補完
これは「他の患者さんの平均体温を代わりに書き込んでおく」イメージです。
- メリット:実装が簡単。サンプル数を減らさずに済む。
- デメリット:データが均一化されすぎてしまい、バラつきが小さく見える。外れ値(すごく高い熱とか、低すぎる熱とか)に引っ張られやすい。
つまり「とりあえず病棟全員の平均体温を入れとけ!」みたいな対応です。医師や先輩看護師に怒られそうです。当たり前。
③中央値補完
これは「みんなの真ん中あたりの体温を入れる」イメージです。
- メリット:外れ値に強い。平均値よりも現実に即している場合が多い。
- デメリット:平均補完と同じで、データのバラつきを過小評価する。欠損が多いと全員同じ体温みたいになってしまう。
臨床なら「この人、きっと36.5度くらいだろう。普通はそのくらいだし」というノリです。うわーなんて適当なんだ。
④最頻値補完
一番よく出てくる値(最頻値、mode)で欠損を埋める方法です。
- メリット:カテゴリデータ(性別、部署名、病棟名など)に使いやすい。実装が簡単、データの分布に沿った補完ができる。
- デメリット:出現頻度の高いカテゴリに偏るため、多様性が失われる。最頻値が2つ以上ある場合、どれを採用するか決めなければならない。数値データに使うと、代表値としてはやや不自然なことが多い。
例として集団の身長の最頻値が170cmだった場合、欠損した人も170cmとしちゃう訳です。でもそうすると人類がいきなり170cmまみれになります。
いいなぁ…背が低い私には羨ましいよ。
⑤回帰補完(Regression Imputation)
ここからちょっと賢い方法になります。
年齢や体重、基礎疾患などから「この人の血圧は多分これくらい」と予測して埋めるやり方です。
- メリット:他の情報を使えるので、よりその人らしい補完が可能。
- デメリット:モデル作り(どの指標を使ってデータを保管するか?を決める)が必要で手間がかかる。しかも誤差を無視すると、補完値が直線上に並んでしまって現実味が減る。
臨床なら「この人BMI高いから血圧も高いはず」とカルテに勝手に書く感じです。ちょっと強引ですが、平均よりは個性が反映されています。
⑥ 多重代入法(Multiple Imputation)
最後は奥義・多重代入法です。
「補完の不確実性も考慮して、複数パターンの欠損補完をつくり、その結果を総合して分析する」方法です。
- メリット:欠損の不確実性まで織り込めるので、理論的に最も信頼性が高い。
- デメリット:手間も計算量もかかる。ちょっとした研究や実務ではオーバースペックに思えることも。
臨床なら「この人の体温、37.0℃・37.2℃・37.4℃の3パターンを仮に書いて、それぞれで診断してから総合判断する」みたいな感じ。手間ですが、かなり丁寧です。
要するに、どの方法も良し悪しがあるから、ケースバイケースで判断するように!!ということです。
標準化・正規化:身長と体重を同じ土俵に
さて、次は「スケーリング」。
これも現場のイメージに置き換えると簡単です。
身長170cm、体重70kg。この2つをそのまま比べたら、単位が違って不公平ですよね。
「cm」と「kg」を一緒に扱うために、数値のスケールを整える必要があります。
では、どうすればいいでしょうか?
標準化(Zスコア)
「平均0、標準偏差1に揃える」ということです。
正規分布に対してこれを行うと標準正規分布になります。
模試の偏差値もこの考え方が利用されています。
偏差値70は、上位約2.28%しかいないのです。天才だ……
正規化(min-maxスケーリング)
数字を「0〜1の範囲にギュッと縮める」ということです。
身長も体重もすべて0〜1のスケールに変えてしまえば、比較がしやすくなります。
カテゴリ変数の扱い:血液型はA型?B型?それとも……
最後は「カテゴリ変数」の説明です。
例えば「血液型」「性別」「職業」など、本来数値では表せないものです。
統計や機械学習は数字が大好きです。
でも「A型」「B型」と文字で書いてあっても計算できません。
そこで変換が必要になります。
ダミー変数(One-Hot Encoding)
「A型=1、他は0」のようにフラグを作ります。
これは「糖尿病あり=1、なし=0」と同じ感覚ですね。
糖尿病の有無では0、1の二択でいいのですが、
血液型など3つ以上の比較は0、1、2、3としてはいけないのです。
なぜなら、このようにすると「お??これは順序があるデータだな??B型の3倍はO型だな?」と統計ソフト等に誤解されてしまうことがあるからです。B型の方、怒っていいよ。
そこで、このように表示します。
| 患者 | A型 | B型 | AB型 | O型 |
|---|---|---|---|---|
| 患者1(A型) | 1 | 0 | 0 | 0 |
| 患者2(O型) | 0 | 0 | 0 | 1 |
| 患者3(AB型) | 0 | 0 | 1 | 0 |
| 患者4(B型) | 0 | 1 | 0 | 0 |
これなら、A型は「A型=1, 他=0」で表せます。大小関係もなく、フェアですね。
ただし、ここでもまた、3択以上の選択肢がある場合は注意点があるのです。
A型・B型・AB型・O型の4列すべてを回帰分析に入れてしまうと、「合計が必ず1になる」ため、多重共線性が起きます。
これは「4つの列のうちどれか1つを見れば、残り3つも自動的に決まってしまう」という完全な重複関係があるからです。
これでは回帰分析を行うのに不便です。
そこでよくやるのが、1つを基準にしてデータを落とすやり方です。
たとえば O型を基準にすると、A型列、B型列、AB型列の3列だけを説明変数として使います。
このとき回帰係数は「O型と比べてA型はどうか」「O型と比べてB型はどうか」と解釈できるようになります。
回帰分析を行う際は、覚えておきましょう。
まとめ
長々と書きましたが、要するに、
- 欠損値処理:空欄をどう埋めるか?それとも分析対象から外すか?
- 標準化・正規化:数値の単位をそろえて比べやすくする
- ダミー変数:文字情報を数字に変える
この3つを押さえれば、データ分析がしやすくなります。
是非覚えておいてくださいね。
次回は、ここに数式を足して「数学的にどう考えるのか」を見ていきましょう。
お楽しみに!!!!
