そもそもデータをそのままアルゴリズムに突っ込むのは正しいのか?
たとえばPCAの場合データの平均を0にしてからPCAにかける必要があります。
ところでデータは不完全な形でやってきます。今回は次のような車のデータを考えます。
LabelEncorder
例えば[dog,cat,dog,mouse,cat]を![Rendered by QuickLaTeX.com [1,2,1,3,2]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-b0d2442501c1daaa4f9575a6145d9b8e_l3.png)
OneHotEncorder
例えばdog cat monkey dogの4つのデータを[dog, cat, monkey]で表しそれぞれ
LabelBinarizer
OneHotEncorderとほぼ同じ。 さて、本題のデータの前処理なんですが、- 標準化(standardization)
- 正規化(normalization)
標準化



正規化

![Rendered by QuickLaTeX.com [0,1]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-25b6d943ab489c05a3dbd5ea29087a48_l3.png)
で、なんでスケーリングする必要があんの?
もちろんです。スケーリングなんかせんでもいい
という場合ももちろんあります。例えば、生徒会長を決めるための投票データは「支持する」or「支持しない」のバイナリになります。この場合スケーリングをする必要がないのは明らかでしょう。他には男女別の五教科の点数のデータを分析する際、僕は前処理をする必要性を感じません。なぜならデータの範囲は![Rendered by QuickLaTeX.com [0,100]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-715f49efbf5d818d0be2dd96a575b180_l3.png)
では、いつスケーリングやねん
これは正直難しい問題だと思います。なにを分析したいのかという状況・目的に大きく左右されると思います。ですが、冒頭でも言ったようにPCAなど特定のアルゴリズムは特定の前処理を必要とします。 僕の経験上、正規化よりも標準化の方がポピュラーです。というか僕は正規化はしたことないです。理由としては標準化にはセンタリングが含まれるからです。また、そもそも世の中のほとんどデータは正規分布に従っているんです。IQのデータとか身長とか標高でさえ正規分布に従うようです。加えて数学の世界にはいい定理があります。「大数の法則」と「中心極限定理」です。- 大数の法則: データ超多かったら、その分布の真の平均と実測値の平均が一致!!
- 中心極限定理: データ超多かったら、正規分布に従うと思ってOK!!

- ロジスティック回帰/ソフトマックス回帰
- ニューラルネットワーク/SVM
- https://www.jeremyjordan.me/batch-normalization/
- https://stats.stackexchange.com/questions/41704/how-and-why-do-normalization-and-feature-scaling-work
- https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data
- https://towardsdatascience.com/encoding-categorical-features-21a2651a065c
- http://mlr.cs.umass.edu/ml/datasets/Automobile