質問するログイン新規登録

回答編集履歴

2

質問に対する直接の回答になってなかったので追記

2019/04/24 11:07

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,5 +1,20 @@
1
+ > 機械学習における正規化、標準化を行う場合には、
2
+ ①データ全体に対してまとめて正規化、標準化をかけるべきなのか
1
- そもそも、「列ごとに(変数ごとに)スケーリング」される仕様です。逆に配列全体でスケーリングする方法は(`sklearn.preprocessing`のスケーリングモデル使う限りは)自然な使い方をす限りいと思います
3
+ ②データの各columnsごとに正規化、標準化かけべきのか
2
4
 
5
+ 基本的には、columnごと(変数ごと)にスケーリングするべきです。
6
+
7
+ すべての(説明)変数のスケールを同一に揃えることに意義があります。そうすることによって、アルゴリズムによっては収束速度や性能に顕著な性能が現れます。SVMやMLPあたりで実験してみるといいかもしれません。
8
+ (ただし、まったく影響しないアルゴリズムもあるので注意。たとえば決定木など。そういうものを使うのであればスケーリングの必要性は薄い)
9
+
10
+ ただし、たとえば文書ベクトルを作るためにtf-idfを計算してからスケーリング、というのは当然無意味ですし、デカルト座標で取ったデータをスケーリングすると距離が狂うので好ましくない・・・といったケースもあります。その辺りはケースバイケースでよしなに判断する必要があります。
11
+
12
+ また、ここでいうスケーリングとは少し違いますが、行方向で揃えるという操作もあります。新聞記事をたくさん集めてきて特定の単語が何回出現するか・・・といった分析をやりたいときなど、記事によって長さが違うと公平に比較できませんから、文字数か単語数あたりで割っておいて相対的な頻度に変換する訳です。そういうこともある、ということを頭に入れておいてください。
13
+
14
+ ---
15
+
16
+ そもそも、sklearnの`MinMaxScaler`などは「列ごとに(変数ごとに)スケーリング」される仕様です。逆に配列全体でスケーリングする方法は(`sklearn.preprocessing`のスケーリングモデルを使う限りは)自然な使い方をする限りないと思います。
17
+
3
18
  > Transforms features by scaling each feature to a given range.
4
19
 
5
20
  > https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

1

追記

2019/04/24 11:07

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,4 +1,4 @@
1
- そもそも、「列ごとに(変数ごとに)スケーリング」される仕様です。逆に配列全体でスケーリングする方法は(`sklearn.preprocessing`のモデルを使う限りは)自然な使い方をする限りないと思います。
1
+ そもそも、「列ごとに(変数ごとに)スケーリング」される仕様です。逆に配列全体でスケーリングする方法は(`sklearn.preprocessing`のスケーリングモデルを使う限りは)自然な使い方をする限りないと思います。
2
2
 
3
3
  > Transforms features by scaling each feature to a given range.
4
4