「データ分析プロセス」を読んだ

# 概要
[データ分析プロセス](https://www.kyoritsu-pub.co.jp/bookdetail/9784320123656)を改めて読んでみると、学びが多かったので、要点をまとめる。

# 要点
## 第1章　データ分析のプロセス
### データ分析の問題点

+ ビジネス目標を解決するために、使用するデータや分析方法が分からない
+ データの加工に多大な手間を要する
+ 欠損値が存在すると、多くの分析手法がそのままでは適用できない
+ 外れ値によって、分析結果が大きく影響を受けてしまう
+ 実務で直面するデータの多くは不均衡データであり、単純に多変量解析や機械学習のアルゴリズムを適用しただけでは満足のいく結果が得られない

### データ分析のフレームワーク
今回紹介するどちらのフレームワークもウォータフォールで進行するのではなく、結果に応じて前工程に戻る必要がある。
#### CRISP-DM
データ分析の標準的なフレームワーク

1. ビジネス理解(Business Understanding)  
ビジネス上の目的を明確化して、KPIの設定やプロジェクトの計画を行う。
2. データ理解(Data Understanding)  
「ビジネス理解」フェーズで策定したビジネス課題を解決するために必要なデータを列挙し、これらのデータが実施したい分析を実行するために十分であるかを吟味する（ex. 必要なデータ項目が取得できているか、データの量は十分にあるか）。もし不十分である場合は、現状のデータではビジネス目標を達成することができないため、新たに取得するデータについて検討し、習得のために必要な取り組みを実施しなければならない。
3. データ準備(Data Preparation)  
データを分析に適するように整形する工程。データクレンジングとも呼ばれ、欠損値や外れ値の処理、データの離散化、規格化などの処理が含まれる。
4. モデリング(Modeling)  
多変量解析や機械学習の手法などを用いて、モデルを作成する（ex. 分類、予測）。
5. 評価(Evaluation)  
「モデリング」フェーズで作成したモデルが「ビジネス理解」フェーズで定義したビジネス目標を達成するために十分であるかどうかをビジネスの観点から評価する。
6. 共有・展開(Deploy)  
データ分析で得られた結果をビジネスに適用するために具体的な計画を立案し、実施する。

#### KDD
CRISP-DMがビジネスを重視しているのに対し、KDDはデータ分析部分に特化して、定義されたフレームワーク

1. データ獲得  
対象領域の性質を理解し、事前知識と必要なデータ、ならびにデータマイニングの目標を設定する。
2. データ選択  
データからマイニングに必要なものを選択する
3. 前処理  
データからノイズや異常値を除去し、意図した分析が実施可能なデータにする。連続データの離散化、離散データの連続化、欠損データの補間などの処理がある。
4. 変換  
知識発見アルゴリズムを適用できるように、データを変換する。属性生成や属性選択などの処理が含まれる
5. データマイニング  
統計解析や機械学習などの分析手法を用いて、データから知見を発見する。
6. 解釈・評価  
抽出したパターンの解釈や評価を行って知識を得る。


## 第3章　前処理・変換
### データの記述・要約
分析対象とするデータがどのような項目を持っているかについて調べ、要約統計量や相関係数の算出、ヒストグラムや散布図などのプロットにより、データの分布や項目間の関係などについて調べる。この過程でデータに欠損値や外れ値などが存在することなどが認識される。

### 欠損値への対応
現実のデータは値が入力されておらず欠損が生じていることが多い。統計学や機械学習の手法の多くは、欠損値が存在しないことを前提としている。そのため、こうした手法を適用するためには欠損値に対して、データの除去や補間を行う必要がある。

|    |  概要  |
| ---- | ---- |
|  リストワイズ法  |  欠損値をもつサンプルを削除  |
|  ペアワイズ法  |  相関係数や分散等の算出に置いて、2変数のいずれかが欠損値をもつサンプルを削除  |
|  平均値代入法  |  平均値により欠損値を補間  |
|  回帰代入法  |  欠損値のないサンプルに回帰分析を行い、欠損値を含む項目の推定式を元に欠損値を補間  |
|  確率的回帰代入法  |  回帰代入法により推定した値にランダムに誤差を加えて欠損値を補間  |
|  完全情報最尤推定法  |  サンプルごとに欠損パターンに応じて尤度関数を仮定して最尤推定を実施して得られる多変量正規分布を用いて平均値や分散共分散行列を推定  |
|  多重代入法 |  欠損値に代入したデータセットを複数作成し、各データセットに対して分析を実施し、その結果を統合することにより欠損値を補間  |


上記の手法の中では、他の手法と比べて弱い仮定の下でバイアスのない推定値を与える完全情報最尤推定法、多重代入法がよく用いられる手法のようである。



### 外れ値の検出
外れ値の影響で分析結果が大きく変わってしまい、データの実態とかけ離れてしまう可能性がある。このような事態を避けるために、外れ値を検出し、データの除去や置換など然るべき対応を考える必要がある。

+ 統計モデル  
統計的検定に基づくアプローチなどがある。利点は簡便であることだが、データの平均値や標準偏差は外れ値の影響を受けるにもかかわらず、外れ値も含めて算出してしまうという問題がある。

+ データの空間的な近さに基づくモデル  
データ間の空間的な近さを判断基準として外れ値を検出するアプローチ。距離や密度に基づいたアプローチがある。高次元になると、次元の呪いにより適用できない。

+ 特定の問題に対する異なるモデルの適用
高次元データの外れ値の検出方法。

|  分類  |  アルゴリズム  |　アイディア |
| ---- | ---- |---- |
|  角度に基づく方法  |  ABOD  | 外れ値は、自身と他の2点のデータのなす角度の分散が小さい|
|  グリッドによる方法  |  Aggarwal and Yu  | 空間をグリッドで分割してデータの個数が少ないグリッドに属する点を外れ値とする|
|  距離に基づく方法  |  SOD  | 各店に対して、k-近傍点の分散が最も小さくなる超平面との距離を外れ値スコアとする|
|  ランダムな部分空間の選択  |  Feature Bagging  |  部分空間をランダムに選択する試行を複数回繰り返し、各試行に置ける外れ値スコアの平均値を算出する|
|  コントラストが高い部分空間の選択  |  HiCS  | ある座標の周辺確率密度関数と、他の座標の条件付き確率密度関数が大きく異なる（コントラストが高い）点を外れ値として検出する。このような部分空間を探索し、外れ値スコアを算出する。部分空間の探索と外れ値スコアの算出を完全に分離している点に特徴がある|
|  任意の方向の部分空間への射影  |  COP  |各店のk-近傍点に対してロバスト主成分分析を実行しマハラノビス距離の分布を推定。これにより、座標軸方向だけでなく、任意の方向の部分空間への射影により外れ値を検出することが可能になる|


### 連続データの離散化
連続値のデータを離散化する。データの理解を促進させたり、外れ値が存在する場合などに分析手法を適用するうえで重要である。

「区間を作成するアプローチの種類」と「教師データの有無」から分類することが可能。
「区間を作成するアプローチの種類」については、離散化する時に最初はデータ全体を1つの区間として逐次的に区間を分割していく方法がトップダウンアプローチ、最初に細かい区間をいくつか生成して逐次的に併合していく方法がボトムアップアプローチである。

|   |  教師データなし  |　教師データあり |
| ---- | ---- |---- |
|  トップダウン  |  等間隔区間による離散化、等頻度区間による離散化  | エントロピーを用いた離散化、最小記述原理による離散化|
|  ボトムアップ  |  k-means等  | カイマージ|

### 属性選択
データ分析では膨大な量の属性を扱うことが多い。これらの属性の中から重要なものを選択するタスクを属性選択と呼ぶ。属性選択を行うことによって、モデルの精度を向上させたり計算量を削減させたりすることが可能になる。属性選択のアルゴリズムはフィルタ法、ラッパ法、埋め込み法の3つに分けられる。

+ フィルタ法  
学習アルゴリズムを用いることなく、属性の性質のみを考慮して有効なものを選択する方法である。計算負荷が比較的少ないというメリットがある一方で、ラッパ法と比べて一般的に精度が低いというデメリットがある。相関係数や情報量に基づく手法が存在する。

+ ラッパ法  
学習するアルゴリズムを用いて学習を実行しながら、有効な属性を選択する方法である。ある評価指標に基づいて属性をランキングして、指定した個数だけ重要な属性を選択する。計算負荷が比較的大きいというデメリットはあるが、フィルタ法と比べて高い精度が期待できる。

+ 埋め込み法  
本書では解説されてないが、ランダムフォレストを用いた特徴量選択はよく知られている。これは埋め込み法に該当するっぽい。（参考 https://rightcode.co.jp/blog/information-technology/feature-selection-right-choice ）

## 第4章　予測モデルの構築
### 予測モデル構築のプロセス
1. 予測問題の設定  
顧客の解約予測など
2. 特徴量の構築
3. ハイパーパラメータの最適化
4. 予測モデル構築  
3で決定したハイパーパラメータを用いて、全データを使用して予測モデルを構築する。

#### 予測問題の設定
+ 予測対象
+ 予測のタイミング
+ 予測期間
+ 予測する事象
+ 予測に用いる事象

#### 不均衡データへの対応
+ サンプリングを用いた方法  
クラスのデータ数の不均衡を緩和するために、正例を複製して増加させる方法、負例を削減する方法、この2つを組み合わせた方法がある。
代表的な手法としてSMOTEがある。これはオーバーサンプリングとアンダーサンプリングを組み合わせた方法。

+ コスト考慮型学習  
正例を誤答した時のペナルティを重くすることにより、正例の予測をなるべく間違いないようにするアプローチ。

### 実データに対する分析
+ 予測モデルの実適用においては、モデルの構築に用いたデータとモデルを適用するデータの傾向が大きく変化しないことを確認したうえで適用する必要がある
+ 各特徴量の基本統計量と分布を確認する
+ 各特徴量が目的変数に対してどの程度説明力をもつかについて検証する  
  + データを分割し、AUCを計算することによって評価

+ 外れ値への対応  
  + 外れ値を検出して除去
  + 数値を離散化してカテゴリ変数として扱う

+ カテゴリ数が多すぎるカテゴリ変数のハンドリング  
  + 観測値の数が少ないカテゴリ変数を集約する

+ 購買履歴から顧客がいつ購入したか(Recency)、どのくらい頻繁に購入したか(Frequency)、購買に使った金額はいくらか(Money)はRFM分析と呼ばれ、顧客分析の定石

### 頻出パターンの抽出
+ 頻出パターンマイニング  
代表的な手法としてAprioriがある
+ 系列パターンマイニング  
代表的な手法としてSPADE、PrefixSpanなどがある