データの観察と前処理について読んだのでまとめる(3)
教材にするKernel
COMPREHENSIVE DATA EXPLORATION WITH PYTHON
Pedro Marcelino - February 2017
データからターゲットを取り出す前の段階、すなわち「データをよく見る」段階について解説している。
ノート
4.Basic cleaning
Outliers の処理
Outliers(外れ値)は、モデルや貴重な情報源に著しく悪影響を与える可能性がある。
一変数について見る
ある確率変数に着目し、その分布における外れ値を見つける。
- データを平均0,標準偏差1になるようStandardization(標準化)する。
- 標準化したデータを小さい順・大きい順に見る。
- その値は平均0/他のサンプルからどれだけ離れているか?
- 外れ値を決定する閾値を決める。いつでも外れ値があるとは限らない。
Python tips...
- sklearn.preprocessing.StandardScaler().fit_transform(data)
- dataからパラメータを求める
- dataを標準化する
二変数について見る
ある二つの変数の関係の中における外れ値を見つける。
- 散布図を描く
- 一つだけ外れているようなサンプルはないか?
5.Test assumptions
そのデータを多変量解析するための、統計的な前提条件が満されているかを確認する。
Hair et al. (2013) によると、確認すべきは以下の4項目である。
Normality
そのデータは正規分布に従っているか?
従属変数(1変数)についてのみ確かめるのが効率的。
統計的検定法などのいくつかは、データが正規分布に従うことを仮定しているので、これが成り立たないとそれらの検定ができない。
一般的に、データ数が多い時はNormalityはあまり大きな問題にならない(らしい。データ数が多いと正規分布に従うことが多いからかな)。
- Histogramの尖度と歪度に着目
- 正規分布を表す線を表示し、データがそれに近いか見る
- scipy.stats.probplot()を用いると、probability plotを描画できる。
これは、データがある確率分布(default=normal distribution)に従っているかどうかを見ることができるもの。
正規分布に従っていないときでも、
例えば正の歪度がある場合にはlogをとることで解決する場合が多い。
このとき、欠損値があるとlogがとれないので、欠損値を取り除く処理が必要になる。
Homoscedasticity(等分散性)
従属変数と独立変数の系列について、その全ての範囲での分散が等しいという性質。ふたつの群の分布が同じということ。
等分散性検定と調べると色々と出てくるが、単純に散布図を描くと見た目で分かる。
重回帰分析・分散分析では等分散性を仮定するので、これが成り立たないと困る。
ちなみに、全確率変数がNormalityを持っていればHomoscedasticityも持っている。
散布図を描くと、 分散不均一な場合には、円錐型(一端では分散が小さく、反対の端では分散が大きくなる)やダイアモンド型(中央の分散が大きくなる)などが表れる。
Linearity(線形性)
散布図を見て確かめるのが速い。
線形でない場合はデータ変換を検討する価値がある。
Absence of correlated errors
(相関エラーの欠落)???
質的変数をダミー変数に置換
質的変数を計算機で扱うときには、"女性","男性" → 1,0 という変換をする必要がある。
pandas.get_dummies()
を使うと非常に簡単に実現できる。
参考
- http://ailaby.com/scaler/
- https://bellcurve.jp/statistics/glossary/2061.html
- https://kusuri-jouhou.com/statistics/fkentei.html
- https://note.nkmk.me/python-pandas-get-dummies/
メモ
これで、教材Kernel "COMPREHENSIVE DATA EXPLORATION WITH PYTHON
Pedro Marcelino - February 2017" は終了。
データの観察と前処理について、実際にコードを走らせながら、可視化したデータを眺めながら学ぶことができた。
原文は、dance floor で気になる girl を見つけ、dinner に誘う前に戦略を立てる...という愉快な比喩表現でストーリー化されていて、非常に面白い。
Pedroさんすごい大感謝。
このKernelは「データを見る」ことを解説したものであって、参加タスクの目的「データから予測する」はこの先にある。
次は「予測」に取り組んでいるKernelを読んでいきたいな。
今日も勉強おつかーれさんでした。
ダ鳥獣戯画の兎さん