第2章：前処理と特徴量エンジニアリング

# 第2章：前処理と特徴量エンジニアリング

## Cabinの欠損値処理

背景（問題の発見）  
　Cabin変数には約77％の欠損が存在しており、初期段階ではこの情報を補完することでモデルの性能向上を図ることを考えた。具体的には、他の特徴量（Pclass, Sex, Fareなど）を用いて、Cabinをランダムフォレストで予測・補完する手法を検討した。

気づき（仮説の転換）  
　しかし探索的分析を行う中で、Cabinが記録されている乗客は上層階級に属する割合が高く、生存率も相対的に高いことが判明した。このことから、Cabinが「ある／ない」そのものが、生存可能性に影響する重要な信号であると仮定した。

検証方法（実験設計）  
Cabin変数の扱い方による予測性能の差を明らかにするため、以下の2種類の特徴量設計を検討した。  
① Cabinの先頭文字（Cabin_head）を、他の変数（Pclass, Sex, Fareなど）を用いたランダムフォレストによって補完し、カテゴリ変数として用いる方法  
なお、Ageの欠損値はSexとPclassの組み合わせごとにAgeの中央値で仮補完した。
【補完前と補完後のCabin_headの分布を比較したヒストグラムを挿入】  

ランダムフォレストは他クラス分類に向いていないため、accuracy=0.6098の精度しかでなかった。よってモデルを変更する

② Cabinの欠損の有無のみを反映させた二値変数（cabin_missing）を用いる方法である。

この2つの変数に対し、単変数モデルと多変数モデルの2つの観点から検証を行った。
![logistic_output.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109160/8ace8802-93e4-413f-aa4a-6a5200f6506c.png)

![random_forest_output.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109160/64ee7a67-5f97-4870-a5a5-e38eba7f4b73.png)

### 特徴量セット一覧（グラフ番号対応）

| 番号 | 特徴量セット |
|------|--------------|
| 1    | `Cabin_group` |
| 2    | `Cabin_missing` |
| 3    | `Cabin_group`, `Cabin_missing` |
| 4    | `Pclass`, `Sex`, `Age_temp`, `SibSp`, `Parch`, `Fare`, `Embarked`, `Cabin_group` |
| 5    | `Pclass`, `Sex`, `Age_temp`, `SibSp`, `Parch`, `Fare`, `Embarked`, `Cabin_missing` |
| 6    | `Pclass`, `Sex`, `Age_temp`, `SibSp`, `Parch`, `Fare`, `Embarked`, `Cabin_group`, `Cabin_missing` |

### 単変数モデルによる比較  
Cabin_headまたはHasCabinのどちらか1変数のみを説明変数とし、ロジスティック回帰モデルにより生存予測を実施。各変数単独の予測力を純粋に評価するため、他の特徴量は使用せず、5分割交差検証（K-fold CV, k=5）によりAccuracyおよびF1スコアを算出した。  
この比較結果は、両変数の予測性能の違いを視覚的に示すため、Accuracy,F1スコアの平均値を棒グラフとして可視化した。これにより、Cabin_head補完とHasCabinの情報量の違いが定量的かつ直感的に把握できる。  
交差検証スコアの差のt検定より、統計的に有意な差があるかどうか検証する。

### 1. Accuracyによるモデル比較

| モデル | Set1 平均Accuracy | Set1 標準偏差 | Set2 平均Accuracy | Set2 標準偏差 | t値     | p値     | 有意差の有無        |
|--------|---------------|-----------|---------------|-----------|---------|---------|----------------------|
| ロジスティック回帰 | 0.6745     | ±0.032 | 0.6925     | ±0.0139 | -0.3015  | 0.778  | 有意な差なし（p ≥ 0.05） |
| ランダムフォレスト | 0.6734     | ±0.0301 | 0.6925     | ±0.0139 | -1.2779 | 0.2704  | 有意な差なし（p ≥ 0.05） |

### 2. F1-scoreによるモデル比較

| モデル | Set1 平均F1-score | Set1 標準偏差 | Set2 平均F1-score | Set2 標準偏差 | t値     | p値     | 有意差の有無        |
|--------|---------------|-----------|---------------|-----------|---------|---------|----------------------|
| ロジスティック回帰 | 0.5411     | ±0.0434 | 0.4978     | ±0.0279 | -0.2504  | 0.8146  | 有意な差なし（p ≥ 0.05） |
| ランダムフォレスト | 0.5402    | ±0.042 | 0.4978     | ±0.0279 | 2.0663 | 0.1077  | 有意な差なし（p ≥ 0.05） |

#### 統計検定の結果
`Cabin_group`（補完されたCabinの先頭文字）と `Cabin_missing`（Cabin情報の欠損有無）によるモデルのAccuracyスコアを比較するため、対応のあるt検定（paired t-test）を実施した。以下はその結果である。

- **t値:** -1.2779  
- **p値:** 0.2704  
- **結論:** p値が 0.05 以上であったため、両モデル間の予測精度に有意な差は確認されなかった。

#### 考察
この結果は、Cabinの補完（Cabin_group）によって予測精度が必ずしも向上するわけではなく、むしろCabinが記録されているか否かという単純な情報（Cabin_missing）だけでも、同等の予測力を持つことを示唆している。複雑な前処理を施すよりも、欠損そのものを「意味のある特徴」として扱う方が効果的な場合がある。

### 多変数モデルによる比較  
Pclass, Sex, Fare, Embarkedなどの基本的な特徴量に、Cabin_headまたはHasCabinのいずれかを加えた多変数モデルを構築。ロジスティック回帰およびランダムフォレストの両手法を用い、交差検証によってそれぞれの変数が予測性能に与える影響を検証した。  
この結果もまた棒グラフにより可視化し、単変数での性能と多変数での性能をあわせて比較することで、HasCabinのような単純な変数が実用的にも十分通用すること、あるいはCabin_head補完が他の変数との相互作用の中で真価を発揮するかを明示的に検討した。

また、Cabin_headの補完結果についても、その分布が極端に偏っていないかを確認するためにヒストグラムを作成し、補完の妥当性を評価する材料とした。

## 多変数モデルにおける分類性能の比較と統計的検定

本節では、ロジスティック回帰とランダムフォレストの2つの分類モデルについて、以下の観点から性能比較を行う：

- 評価指標：Accuracy, F1-score
- モデル：Logistic Regression, Random Forest
- 分割方法：5分割交差検証（StratifiedKFold）
- 有意性検定：対応のあるt検定（paired t-test）

### 1. Accuracyによるモデル比較

| モデル | Set3 平均Accuracy | Set3 標準偏差 | Set4 平均Accuracy | Set4 標準偏差 | t値     | p値     | 有意差の有無        |
|--------|---------------|-----------|---------------|-----------|---------|---------|----------------------|
| ロジスティック回帰 | 0.7987     | ±0.007 | 0.7998     | ±0.0013 | -0.3015  | 0.778  | 有意な差なし（p ≥ 0.05） |
| ランダムフォレスト | 0.82     | ±0.0219 | 0.818     | ±0.022 | 0.4924 | 0.6483  | 有意な差なし（p ≥ 0.05） |

### 2. F1-scoreによるモデル比較

| モデル | Set3 平均F1-score | Set3 標準偏差 | Set4 平均F1-score | Set4 標準偏差 | t値     | p値     | 有意差の有無        |
|--------|---------------|-----------|---------------|-----------|---------|---------|----------------------|
| ロジスティック回帰 | 0.7956     | ±0.023 | 0.7267     | ±0.028 | -0.2504  | 0.8146  | 有意な差なし（p ≥ 0.05） |
| ランダムフォレスト | 0.7397     | ±0.0446 | 0.7402     | ±0.049 | -0.096 | 0.9278  | 有意な差なし（p ≥ 0.05） |

### 3. 考察

ランダムフォレストの方が平均的なスコアはやや高いものの、統計的に有意な差は確認されなかった。これは、両モデルとも十分に学習されており、特に使用した特徴量セットにおいては性能差が小さい可能性を示している。モデル選択にあたっては、精度よりも解釈性や実装コストなど他の要素も考慮すべきである。


## 結果と判断（定量評価）  
　結果として、補完されたCabin_head変数を使ったモデルはスコアの変動が大きく精度もやや劣った。一方で、HasCabinを使用した場合、両モデルとも精度が向上し（例：ロジスティック回帰で0.79→0.81）、また特徴量としての解釈性も高かった。

## 示唆と教訓（一般化）  
　この結果から、機械的に欠損を埋めるのではなく、欠損そのものを「意味のある特徴」として扱うことの重要性が示された。今後のデータ分析においても、欠損が何を意味しているかを考慮することは、特徴量エンジニアリングにおける重要な視点であると考える。