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

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

ただいまの
回答率

90.76%

  • 機械学習

    599questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 174

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 10:02

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

    キャンセル

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 09:53

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

    キャンセル

checkベストアンサー

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 09:54

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

    キャンセル

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • 機械学習

    599questions

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