Help us understand the problem. What is going on with this article?

2クラスロジスティック回帰でスケーリングの影響を見る

More than 1 year has passed since last update.

概要

Kerasで2クラスロジスティック回帰をするときにデータのスケーリングを変えて見て、結果がどう変わるか見てみる記事。

スケーリング

スケーリングについては以下の記事に詳細がわかりやすく書かれています。
Feature Scalingはなぜ必要?

各フィーチャーの値の幅がバラついていると、勾配降下法で重みを更新するときの更新幅(偏微分の値)がフィーチャーごとに大きく異なってってしまうので学習が遅くなるよう。

2クラスロジスティック回帰

今回は以下の記事のコードとデータを参考にして実験しました。
Kerasによる2クラスロジスティック回帰

上記サイトでデータのスケーリングをしている箇所がある。

X = preprocessing.scale(X)

ここを変えてみて結果がどう変わるか見てみる。

ちなみにこれは

X = X - x.mean()) / x.std()

と同じ。

試してみるスケーリングパターン

  1. スケーリングなし
  2. 標準偏差除算
  3. 平均値減算
  4. 平均値減算+標準偏差除算

batch=10
Epoch=600
で結果を可視化してみる。

データ分布

1.スケーリングなし
data_normal.png

2.標準偏差除算
data_std.png

3.平均値減算
data_mean.png

4.平均値減算+標準偏差除算
data_scale.png

accuracy

1.スケーリングなし
acc_normal.png
全くだめ。

2.標準偏差除算
acc_std.png
もっとEpoch増やせば上がりそう。

3.平均値減算
acc_mean.png
この中では一番精度がいい。

4.平均値減算+標準偏差除算
acc_scale.png
平均値減算より90%付近に到達するのに時間がかかっている。

loss

1.スケーリングなし
loss_normal.png

2.標準偏差除算
loss_std.png

3.平均値減算
loss_mean.png

4.平均値減算+標準偏差除算
loss_scale.png

decision boundary

1.スケーリングなし
スケーリングなしは全く収束していないので割愛

2.標準偏差除算
graph_std.png
まだロスが下がりきっていないので線がうまく引けていない。

3.平均値減算
graph_mean.png

4.平均値減算+標準偏差除算
graph_scale.png

まとめ

スケーリングありのときの収束過程
test.gif

今回のデータの例に限っては、平均減算が一番速く学習が収束した。スケーリングは今までお決まりの処理として書いていたけど、こうやって実際に違いを見ることでスケーリングの大切さを再認識できた。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away