Learningこんにちは。今回はデータの正規化についてです。いろんな文脈で様々な意味で使われている「正規化」っていう言葉ですが、今回は統計や機械学習で扱う数量のデータに対して行うことに絞り、まとめていきたいと思います。Introductionデータの正規化とはこちらの記事を読んでいたところ、Wikipediaを引用されていたので、Wikipediaの正規化のページも合わせてみることにしました。すると、正規化とはデータ等々を一定のルール(規則)に基づいて変形し、利用しやすくすること。別の言い方をするならば、正規形でないものを正規形(比較・演算などの操作のために望ましい性質を持った一定の形)に変形することをいう。有名なのは後でも紹介するz-scoreだと思いますが、それでイメージしちゃえばわかりやすいかなと。文章の正規化とかもありますね。「データを一定の方法で変形し、例えば身長と体重みたいな次元が違うものに対しても、なんとかして同じような単位で取り扱えるようにして、計算や比較しやすくしよう」、というのが正規化の狙いと言えます。jnobuyukiのブログデータの正規化手法ここからは様々なデータの正規化手法についてまとめていきたいと思います。順番で紹介していきたいと思います。(標準化)標準化と言い換えられることも多い、z-scoreです。これは、元データを平均0、標準偏差が1のものに変換する正規化法のことをさします。上限、下限がない場合は、z-scoreを使うとよい■条件データの分布形状がガウス分布になっていること■定義z-scoreの定義は以下の通り。それぞれ平均と標準偏差になります。Scikit-learnの3つのパッケージで実装されています。ぶっちゃけそんなにたいしたことをしていないので、numpyの配列を以下の関数にぶちこめば一応計算はできます。正規分布に従っているデータは結構多いので、これが一番使われている印象だし、普通に使うことが多いです。何でもかんでもぶち込むのはあれだけど...。}$$■実装これも実装はめちゃめちゃ簡単で、以下のような感じで書けます。x_norm■所感もともと母集団レベルで最大値と最小値の範囲が決まっているときなどはmin-maxを扱う方が計算しやすいです。データが一様に分布していないと、結構この正規化だとずれが出てくるので、簡単だけど使いどころが難しいなぁと。normalizationの違いについてこれについては以下の記事で説明されています。基本的には、上であげたとおり、データに仮定を置く分布形状が違うという点が異なっています。jnobuyukiのブログ正規化を行う際には、解析者が正規化を行う前に、各次元の特徴量がどのような分布形状になっているかを確認し、その上で仮定をおいて使うべきです。正規化を行ったことによる効果について、ロジスティック回帰を用いて検証している例がありました。コード7区この例は、もうちょっと次元毎に分布とかを変えたら結果が変わるのかなと思いましたがどうなんでしょうか...そのうちやるかもしれません...。別に自分で関数を作っても問題ないレベルの内容ですが、Numpyなどで実装されています。以下でそれぞれの内容についてみることができます。ついてTweet関連記事2018-09-30決定木の可視化ライブラリ「dtreeviz」が凄かったのでまとめるこんにちは。