キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

データセットのパーティションの設定について

ny
青色LED

データセットのパーティション分割を、ランダムではなく、特定の行範囲ごとに分割したいと考えています。

--

 

オートパイロットで学習させた際、訓練データ/検定データ/ホールドアウトに、自動的に分割されますが、このとき、ランダムに行を選択して分割されているように思います。

 

現在学習に使っているデータセットは、複数の情報源から、それぞれ複数のデータを取得したものになっており、同一の情報源から取得したデータ同士は、非常に似通ったデータになっています。

この状態でオートパイロットで学習させると、訓練データと非常に似通ったデータが、検証データやホールドアウトに含まれてしまい、過学習したモデルが生成されてしまいます。

 

データセットは、情報源順でソートされているので、パーティションの分割をランダムではなく、特定の行範囲ごとに分割すれば、過学習が回避できると考えていますが、そのような設定は可能でしょうか?

 

よろしくお願いいたします。

0 件の賞賛
2件の返信2
NaoYamaguchi
青色LED

製造業のお客様では、よくお聞きする課題であり、例えば、製造ロットの単位では、製造条件・設備の日間差が製造ロット内部で似通っている可能性が高く、別ロットでは条件が異なるため、それらのロットのデータをランダムに分割して学習するとリーケージの原因となります。
同じロットのデータが、訓練、検定それぞれに含まれてしまうためです。

 

このような課題に対して、DataRobotで用意されているパーティションの中からグループパーティショニングを利用することで対処することが可能です。

 

グループパーティションは、選択したカラムの値(グループID)を基準とし、同一のグループIDを持つ行を同じパーティションに属するように制御することが可能です。
これにより、同じグループに属する行が、訓練、検定、ホールドアウトのパーティションにまたがらないように制御することが可能となり、リーケージを回避することが可能です。

 

グループパーティションは、選択したカラムの値(グループID)を基準とし、同一のグループIDを持つ行を同じパーティションに属するように制御することが可能です。
これにより、同じグループに属する行が、訓練、検定、ホールドアウトのパーティションにまたがらないように制御することが可能となり、リーケージを回避することが可能です。

 

NaoYamaguchi_0-1620960464166.png

 

今回の場合、複数の情報源からデータを取得されているということですので、例えば、情報源というカラムを追加し、情報源毎に同一のグループIDを代入しておきます(上記図の場合、グループA、グループBなどが情報源毎のデータと考えます)。
これにより、例えばFold1(グループA、B、C、D)は訓練用として利用され、Fold2、3はそれぞれ検定、ホールドアウトで利用されることになりますので、リーケージを回避することが可能です
具体的な手順としては、そのデータをDataRobotにデータ投入し、ターゲットを選定した後に「開始」ボタン下部にある「高度なオプション」ー「パーティション」ー「パーティション手法を選択」から、「グループ」を選択します。

 

グループID特徴量に例えば情報源を表すカラムを選択します。

NaoYamaguchi_1-1620960537611.png

 

グループパーティションを行う場合、全体の件数と比較して、一つのパーティションに多数のグループ(概ね3以上)が前提となっていますので、グループ数が少数の場合は、パーティション特徴量の機能を用いることによって、1行ずつ、属するパーティションを指定することが可能です。

 

また、本トピックに関連した内容で、DataRobot様にて過去セミナーを実施されていますので、お時間がございましたら是非ご参考下さい。

https://community.datarobot.com/t5/%E3%83%93%E3%83%87%E3%82%AA%E3%82%BB%E3%83%B3%E3%83%88%E3%83%A9%E...

 

 

ny
青色LED

詳しく教えていただきありがとうございます。

セミナーの方もご紹介いただきありがとうございます。確認してみます。

0 件の賞賛