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

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

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

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

Python

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

Q&A

解決済

2回答

3336閲覧

特徴量選択の方法について

退会済みユーザー

退会済みユーザー

総合スコア0

機械学習

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

Python

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

0グッド

0クリップ

投稿2020/10/03 09:28

編集2020/10/03 13:30

分からないこと: nested cross validationの時、どのようにデータを分割し特徴量を選択すればよいかが分からない。
特徴量選択時、一般的に、データをtrainとtestに分割し、相関係数などを指標にtrainで特徴量を選択すると思います。
では、nested cross validationでは、どのように特徴量を選択すればよいでしょうか。
全データを使って特徴量選択を行い、その後にnested cross validationを行えばよいのでしょうか。

追記:
特徴量選択時、情報のリークを避けるため、データをtrainとtestに分割し、trainで特徴量選択を行うに対し、
nested cross validationではどうすればよいか、という質問です。
例えば、outer loopが5-foldである時、trainとtestの各組で特徴長選択を行うべきでしょうか。
( 5回繰り返すのでしょうか。 )
それとも、全データで特徴量選択を行い、その後にnested cross validationで性能評価を行えばよいでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

バリデーションの段階で特徴量の選択は行いません。ましてや、クロスバリデーションの1つ1つの評価において、特徴量を選択しなおすということは行いません。

機械学習の全体の流れを、再度見直すとよいでしょう。以下がわかりやすいと思いますが、書籍なども確認しましょう。
実践データサイエンス─サンプルコードと図表で学ぶ、前処理・モデル評価・パラメータチューニング

以下の流れになっていることがわかります。

(0) 分析を始める前の準備(データセットの用意等)
1 データを理解する
2 特徴量の作成
3 モデルの評価方法を決める
4 モデルの訓練
5 ハイパーパラメータの調整
6 テストデータで確認する

nested cross validationが効いてくるのは項3〜項4です。一方、特徴量は項2でエンジニアリング的に決定します。そして、項6まで来てもっと改善必要だとなったら、適宜前の項目に戻って改善を図ります。この大きなループの中で、特徴量を再検討します。よって、「nested cross validationで特徴量を選択する」という質問そのものが、成立しません。

投稿2020/10/03 23:09

編集2020/10/03 23:10
toast-uz

総合スコア3266

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

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

退会済みユーザー

退会済みユーザー

2020/10/04 01:28 編集

ご回答ありがとうございます。 nested cross validationを以下のように理解しています。 1. outer loopでデータをtrain-outerとtest-outerに分割 2. inner loopでtrain-outerをさらにtrain-innerとvalid-innerに分割 3. train-innerとvalid-innerでハイパーパラメータ調整 4. test-outerで性能を評価 この理解は正しいでしょうか。 この場合、nested cross validationを行う前の、全データを使って、特徴量選択を行ってよいのか、という質問です。
toast-uz

2020/10/04 02:01

「全データを使って、特徴量選択を行う」という言葉の意味がわかりません。 「特徴量選択」とは「データセットの中から、目的変数を推論するのに適切と思われる、この値とか、この値とあの値の平均とか、いくつかを、説明変数として選び出すこと」です。 よって、特徴量選択は既にバリデーションの前に終わっており、バリデーションの中では特徴量選択はしません。
退会済みユーザー

退会済みユーザー

2020/10/04 06:46

ご回答ありがとうございます。 例えば、データ数が100だっとします。 特徴量選択を行う際に、100のデータで目的変数を推論するのに適切と思われる特徴量を選択してよいのか、という質問です。 必ずしも、データをtrainとtestに分けておいて、trainで特徴量を選択しなければならいない、というわけではないのでしょうか。 ( 特徴量選択時にデータの分割が必要でないのであれば、nested cross validationでどうやって特徴量選択をするのか、という質問は解決いたします )
toast-uz

2020/10/04 07:02

特徴量という用語が一致していないのではないでしょうか? nested cross validationの中で特徴量の選択は行われません。モデルやハイパーパラメータの選択は行われます。 よって、特徴量選択を行う際に、という仮定は無意味です。 以上が私の理解ですが、逆に、nested cross validationの中で特徴量の選択をしているようなWebドキュメントがあれば、教えて頂けるよう、お願いします。
退会済みユーザー

退会済みユーザー

2020/10/04 09:12

ご回答ありがとうございます。 nested cross validationの中で特徴量選択を行う、という方法は見たことがありません。 では、 1. 特徴量選択をする 2. nested cross validationでハイパーパラメータ調整及び性能評価をする という流れを考えたときに、1. では、特にデータを分割することを考えることなく、特徴量選択を行えば良いのでしょうか。
退会済みユーザー

退会済みユーザー

2020/10/04 11:34

ご回答ありがとうございました。 ベストアンサーとさせていただきます。
guest

0

質問の意味が今ひとつわかりません。
おそらく 学習(学習と検証)、テスト のあたりを誤解なさっているのかと

Python: パラメータ選択を伴う機械学習モデルの交差検証について
この記事のあたりが参考になるかと思います。

あと、明らかに機械学習のご質問なので機械学習タグを付けたほうが回答を得られやすくなりますね。

PythonだとWeb開発、アルゴリズム自体、機械学習いろいろなご質問があり、機械学習の方でも見逃してしまう可能性があるので

投稿2020/10/03 10:19

aokikenichi

総合スコア2240

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

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

退会済みユーザー

退会済みユーザー

2020/10/03 13:20 編集

ご回答ありがとうございます。 質問を編集し直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問