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

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

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

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

Q&A

解決済

3回答

991閲覧

機械学習におけるデータのスケーリングについて教えてください

kawauso_shiba

総合スコア18

機械学習

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

0グッド

0クリップ

投稿2018/05/14 03:58

機械学習で,データを"訓練データ(モデル構築用)","検証データ(ハイパーパラメータの選択用)","テストデータ(評価用)"に分割することは重要であることは,関連する書籍から理解しました.
また,"訓練データ"と"検証データ"だけでモデル選択をし,"テストデータ"は最後の評価として使うということも理解しました.

ここで,解決したいことは,データのスケーリングについてです.
全てのデータのスケーリング(平均0,分散1)で平均値と標準偏差を使うにあたり,"テストデータ"の情報を入れてはいけないことは,理解できます.
しかし,全てのデータをスケーリングをするときに,"テストデータ"のみを除く"訓練+検証データ"の情報(平均値,標準偏差)を使うのか,それとも"訓練データ"の情報(平均値,標準偏差)を使うのかはっきりしません.

個人的には,"テストデータ"で最終評価をするので,"訓練+検証データ"の平均値と標準偏差を使って,全てのデータのスケーリングをするのが良いのではないかと考えています.

また,主成分分析を使ってデータを次元縮減するときも,"訓練+検証データ"の平均値と標準偏差を使った方法で良いのか,疑問のままです.

以上の点について詳しい方,教えていただけますと幸いです.
よろしくお願い致します.

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

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

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

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

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

guest

回答3

0

訓練データ、検証データ、テストデータ
の全てが同じ分布であることが望ましいことを考えると個別にやることと一緒にやることは同じであることが望ましいです。

ということから考え始めてはいかがでしょう?

テストデータを含めることは後出しと近いので、避けるべきでしょう。

訓練データと検証データの分布が異なるのであれば、モデルを作る前にデータを見直す必要があります。
Stratifiedを試してみたり。
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html

その辺りをちゃんと整えることができれば、ご提示されている2つの方法の結果は限りなく近づくようになり、悩みになるほどのものではなくなるようになるかもしれません。

データを不正に抜き取っていないのであれば、データが多い方が大数の法則で収束して行くので、良いモデルになるはずですが。
過信は禁物です。

投稿2018/05/14 10:50

mkgrei

総合スコア8560

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

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

kawauso_shiba

2018/05/15 01:02

回答ありがとうございます. StratifiedKFoldは試しました. nested CVで,outer loopとinner loopを構成するときに, outer loopではトレーニングデータ(訓練・検証データ)とテストデータに分け, inner loopでは訓練データと検証データに分けていたので,理解が進まないところがありました. 先に回答のあった方からも書いてありましたように,訓練データで考えるのが良さそうです.
guest

0

スケーリングパラメータもデータから学習するのであれば、学習データのみを使うと思います(訓練データは使わない)。学習するパラメータの更新に検証/テストデータを使ってしまうと、検証/テスト時に予測性能を楽観的に見積もってしまいます。

ただし、スケーリングパラメータがあらかじめ分かっている場合(例えば256階調の画像を[0, 1)にスケーリングする、等)は、学習するものではないので、すべてのステップで共通にするでしょうね。

投稿2018/05/14 04:14

tachikoma

総合スコア3601

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

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

kawauso_shiba

2018/05/15 00:53

回答ありがとうございます. ここで言うスケーリングパラメータは平均値と標準偏差という認識で良いでしょうか. そうなると,確かに学習データのみが良さそうです.
guest

0

ベストアンサー

訓練・検証・テスト用の3つに分割するのであれば、スケーリングや次元削減で用いて良い情報は訓練用データのみです。検証用データはテスト用データに準じた扱いをします。

投稿2018/05/14 04:51

hayataka2049

総合スコア30933

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

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

kawauso_shiba

2018/05/15 00:54

回答ありがとうございます. スケーリングや次元削減で用いて良い情報は,訓練用データのみで理解しました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問