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

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

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

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

Python

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

Q&A

解決済

3回答

600閲覧

機械学習 データ分割方法について

gardsb

総合スコア2

機械学習

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

Python

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

0グッド

0クリップ

投稿2023/07/25 01:23

編集2023/07/26 03:53

実現したいこと

機械学習のデータ分割方法を理解する。

試したこと

機械学習の勉強をしているのですが、モデルの学習を行うためにデータ分割を行う場合は
訓練用・検証用・評価用に3分割するという認識でした。

訓練用:学習時に重みの更新
検証用:ハイパーパラメータのチューニング
評価用:モデルの精度評価

私自身もそのようにしていたのですが、ネットで解説記事を見ていると、データを3分割せずに、
2分割している記事がありました。

データを3分割したり、2分割する場合の違いを教えていただけないでしょうか。
(理由・使い分けの基準など)

備考
言語:Python

追記
大変失礼いたしました。ご指摘いただいた通り参考にしたサイトのリンクを載せます。

データを訓練用・検証用・評価用に分けるという内容について参考にしたサイト
https://nisshingeppo.com/ai/data-split/

学習データとテストデータに分割する(2分割している)サイト
(データ準備の箇所で分割)
https://datawokagaku.com/lightgbm/#i-3

学習データ=訓練データ
評価データ=テストデータ
のような認識をしております。

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

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

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

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

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

fana

2023/07/25 03:57 編集

> ネットで解説記事を見ていると~(中略)~2分割している記事がありました。 とかいう話をし始める際には「その見つけた話では 何と何に/どのように 分割していたのか」っていうことくらい述べるべきではないのか? ?? ???? (ふつーに 学習用データと学習結果の評価用データ の2つに分けるという話なんじゃないのかと想像するが)
jbpb0

2023/07/25 10:54

> 検証用:ハイパーパラメータのチューニング 評価用:モデルの精度評価 検証用:モデルの精度評価 (ハイパーパラメータのチューニングに利用する場合もある) 評価用:モデルの精度評価 (ハイパーパラメータのチューニングに利用する場合もある) で、「検証用」と「評価用」の目的は同じだと思います 「検証用」は学習中に何回も使われるので、精度の推定の誤差が増えるのに目をつぶって、学習が遅くなり過ぎない程度のデータ数にとどめます 「評価用」は学習後に一回しか使われないので、精度の推定の誤差が減るように「検証用」よりもデータ数を増やします もし「評価用」のデータ数が「検証用」のデータ数以下なら、学習後にわざわざ「評価用」データでもう一度精度確認をする意味はないと思います 最終エポックの「検証用」データの精度評価結果を使えばいいだけですので (データ数が多いそちらの方が精度の推定の誤差が小さいため)
meg_

2023/07/25 10:57

> ネットで解説記事を見ていると、データを3分割せずに、2分割している記事がありました。 その記事のURLを質問に追記しましょう。
guest

回答3

1

ベストアンサー

LightGBMを超わかりやすく解説(理論+実装)【機械学習入門33】の補足の欄に下記記述がありました。

今回の例では,splitしたテストデータを検証データとして使ってearly stoppingをしましたが,この場合検証データに対して過学習となっていることに注意してください. 最終的なモデルとして相応しいかどうかは,kfoldCVで汎化性能を測って決めましょう.

上記理由(汎化性能はKfoldで測る)により所謂テストデータは用意していないのだと思います。

投稿2023/07/26 05:55

編集2023/07/26 05:57
meg_

総合スコア10567

gardsb👍を押しています

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

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

0

訓練用:学習時に重みの更新
検証用:ハイパーパラメータのチューニング

なのですから、ハイパーパラメータのチューニングを、データを評価した結果を使ってするのであれば、検証用のデータが必要になります。
ハイパーパラメータのチューニングをしないとか、他の方法を使ってするのであれば、検証用のデータは不要です。

訓練用とか、テスト用のデータをつかってチューニングするここもできますが、同じデータを使ってしまうと効果が減るので、通常はやりません。

投稿2023/07/25 05:29

TakaiY

総合スコア12584

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

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

0

訓練用:学習時に重みの更新
検証用:ハイパーパラメータのチューニング
評価用:モデルの精度評価

【「重み」も「ハイパーパラメータ」も,その処理アルゴリズム(学習器)のパラメータである】と考えるとき,このあなたの区分のうちの上側2項目は1つの項目である.
そしたらデータも2分割になる.
それだけの話なのではないでしょうか?

検証用:ハイパーパラメータのチューニング

「ハイパーパラメータ」と「重み」は独立ではないのだから,そもそもとしてこの区分の存在が変な話と思えます.
十分な(極論,無限の)時間を学習器のチューニングに費やせるならば要らないステップなハズ.
そこらへんの背景事情等によって考え方(というか,やりかた)が変わるのではないでしょうか?


あるいは「ハイパーパラメータ」が定数扱いな世界を考えてみればどうですか?
例えば,最初から「せっかくだから俺はこれこれこういう形の3層のニューラルネットワークをどうの!」とかなんとかいう話においては「ハイパーパラメータ」とか呼んでいるブツを探索する必要が無いわけで.

投稿2023/07/25 04:06

編集2023/07/25 04:33
fana

総合スコア11551

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

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

機械学習

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

Python

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