質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1434閲覧

機械学習でのデータ標準化の方法について

plasticgrammer

総合スコア629

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/07/05 10:57

Kaggleにて機械学習の勉強中の初心者です。

特徴量が正規分布に従っていないと、予測に影響があるとのことで、
sklearn.preprocessing.StandardScaler クラスで標準化していました。

別なユーザーが作成したカーネルを見ると、np.log1pを使っていたりもするのですが、
どのような考えで使い分けたらよいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://www.kaggle.com/yww061851/data-preprocessing
http://forums.fast.ai/t/data-pre-processing-for-the-input-having-very-small-values/13656

予測しようとしているデータの分布によるんじゃないですか?

もともとlogで分布しているものから平均と分散をいじっても正規分布にならないじゃないですか。
それでも、モデルに学習させるときに正規分布が必要なので、うまい変換を施します。

x=e^xの変数変換の末に標準分布になるケースがある、ということなら納得できますか?

python

1import numpy as np 2from numpy.random import lognormal 3import matplotlib.pyplot as plt 4fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1) 5 6s = lognormal(size=1000) 7ls = np.log(s) 8ns = (s - s.mean()) / s.std() 9nls = (ls - ls.mean()) / ls.std() 10 11def p(ax, s): 12 ax.hist(s, bins=np.linspace(s.min(), s.max(), 100)) 13p(ax1, s) 14p(ax2, ns) 15p(ax3, ls) 16p(ax4, nls) 17plt.show()

投稿2018/07/05 22:52

編集2018/07/05 23:21
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

plasticgrammer

2018/07/06 02:12

サンプルの提示ありがとうございました。 回答にて理解が進みました。 データの分布がこれだったら何を使うという部分はまだわかっていませんが、 データセットの標準化にはStandardScalerを使用し、 正規分布にするためにはnp.log1pを使う という理解です。
guest

0

一般的な標準化、正規化であればStandardScalerでまったく構いません。

対数を取るというのは、まず思いつくのはデータのスケールが大きいとき使う手です。

また、logの関数自体は色々な分類アルゴリズムの内部では大活躍しています(色々なアルゴリズムの導出を見るとたくさんでてくる)。逆に言うと、自分でわざわざ対数を取ることはあまりありませんが・・・。

あとは、まったくそういうのとは関係なく、データが指数的な性質を持っているときに対数変換して回帰する、というのはあるそうなので、そっちかもしれません。それについては、以下を参考にしてください。

対数変換を行う意味について。回帰分析において対数変換する背景にある前提とは? | アタリマエ!
回帰分析②:線形回帰が使えないときに用いる高度な回帰分析方法 – 医療政策学×医療経済学

投稿2018/07/05 12:04

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問