RapidMiner(ラピッドマイナー)はデータ可視化、データ加工、モデル作成、評価、運用まで一括サポートする機械学習プラットフォームです。KSKアナリティクスはRapidMinerの正規販売代理店です。

Cross Validation

概要

この演算子は、相互検証を実行して、学習モデルの統計的パフォーマンスを推定します。

詳細

主に、特定の学習オペレーターが学習したモデルが実際にどの程度正確に実行されるかを推定するために使用されます。

相互検証演算子は、ネストされた演算子です。トレーニングサブプロセスとテストサブプロセスの2つのサブプロセスがあります。トレーニングサブプロセスは、モデルのトレーニングに使用されます。トレーニングされたモデルは、テストサブプロセスに適用されます。モデルのパフォーマンスは、テスト段階で測定されます。

入力ExampleSetは、同じサイズのk個のサブセットに分割されます。 k個のサブセットのうち、単一のサブセットがテストデータセットとして保持されます(つまり、Testingサブプロセスの入力)。残りのk-1サブセットは、トレーニングデータセットとして使用されます(つまり、トレーニングサブプロセスの入力)。次に、クロス検証プロセスがk回繰り返され、 k個のサブセットのそれぞれがテストデータとして1回だけ使用されます。 k回の反復から得られたkの結果は、単一の推定値を生成するために平均(または結合)されます。値k、折り数パラメーターを使用して調整できます。

独立したテストセットでのモデルのパフォーマンスの評価により、未表示のデータセットでのパフォーマンスを適切に推定できます。また、「過剰適合」が発生するかどうかも示します。これは、モデルがテストデータを非常によく表しているが、新しいデータに対しては一般化されていないことを意味します。したがって、テストデータのパフォーマンスは大幅に低下する可能性があります。

分化

Split Validation

この演算子は相互検証演算子に似ていますが、データを1つのトレーニングと1つのテストセットに分割するだけです。したがって、クロス検証の1つの反復に似ています。

Split Data

この演算子は、ExampleSetを異なるサブセットに分割します。検証を手動で実行するために使用できます。

Bootstrapping Validation

この演算子は相互検証演算子に似ています。入力ExampleSetを異なるサブセットに分割する代わりに、Bootstrapping Validation Operatorはブートストラップサンプリングを使用してトレーニングデータを取得します。ブートストラップサンプリングは、交換によるサンプリングです。

Wrapper Split Validation

この演算子は、分割検証演算子に似ています。属性の重み付け方法を個別に評価するための追加の属性重み付けサブプロセスがあります。

Wrapper-X-Validation

この演算子は相互検証演算子に似ています。属性の重み付け方法を個別に評価するための追加の属性重み付けサブプロセスがあります。

入力

  • サンプルセット (IOObject)この入力ポートは、クロス検証を適用するExampleSetを受け取ります。

出力

  • モデル(モデル)このポートは、ExampleSet全体でトレーニングされた予測モデルを提供します。このポートは、本当にこのモデルが必要な場合にのみ接続する必要があることに注意してください。そうしないと、生成がスキップされます。
  • パフォーマンス(IOObject)これは拡張可能なポートです。任意のパフォーマンスベクトル(パフォーマンスオペレーターの結果)を、内部テストサブプロセスの結果ポートに接続できます。 Cross Validation Operatorのパフォーマンス出力ポートは、フォールド反復回数にわたるパフォーマンスの平均を提供します。
  • サンプルセット(IOObject)このポートは、入力として指定されたのと同じExampleSetを返します。
  • テスト結果セット(IOObject)このポートは、内部テストサブプロセスのテストセット結果ポートが接続されている場合、ExampleSetのみを配信します。その場合、テストセットは1つのExampleSetにマージされ、このポートによって配信されます。たとえば、この出力ポートを使用すると、モデルの適用演算子の結果とともに、ラベル付きテストセットを取得できます。

パラメーター

  • split_on_batch_attributeこのパラメーターが有効になっている場合、データをランダムに分割する代わりに、特別なロール「バッチ」を持つ属性を使用してデータをパーティション分割します。これにより、各フォールドでモデルをトレーニングするために使用される正確な例を制御できます。この場合、他のすべての分割パラメーターは使用できません。範囲:
  • leave_one_outこのパラメーターが有効な場合、テストセット(つまり、Testingサブプロセスの入力)は、元のExampleSetからの1つの例にすぎません。残りの例は、トレーニングデータとして使用されます。これが繰り返され、ExampleSetの各例がテストデータとして1回使用されます。したがって、「n」回繰り返されます。「n」は、ExampleSet内のサンプルの総数です。クロス検証は、トレーニングとテストのサブプロセスが例の数だけ繰り返されるため、非常に時間がかかる場合があります。 trueに設定されている場合、 折り数パラメーターは使用できません。範囲:
  • number_of_foldsこのパラメーターは、ExampleSetを分割するフォールドの数(サブセットの数)を指定します。各サブセットには同数のサンプルがあります。また、行われる反復の数は、フォールドと同じです。モデル出力ポートが接続されている場合、トレーニングサブプロセスがすべての例でもう一度繰り返され、最終モデルが構築されます。範囲:
  • sampling_type相互検証演算子は、サブセットを構築するためにいくつかのタイプのサンプリングを使用できます。次のオプションが利用可能です。
    • linear_sampling:線形サンプリングは、例の順序を変更せずにExampleSetをパーティションに分割します。例が連続したサブセットが作成されます。
    • shuffled_sampling:シャッフルサンプリングは、ExampleSetのランダムなサブセットを構築します。例は、サブセットを作成するためにランダムに選択されます。
    • stratified_sampling:成層サンプリングはランダムなサブセットを構築します。サブセット内のクラス分布(ラベル属性で定義)がExampleSet全体と同じであることを保証します。たとえば、二項分類の場合、層化サンプリングでは、各サブセットにラベルAttributeの2つの値のほぼ同じ割合が含まれるように、ランダムなサブセットが構築されます。
    • automatic:自動モードでは、デフォルトで層別サンプリングが使用されます。 ExampleSetに名義ラベルが含まれていない場合など、適用できない場合は、代わりにシャッフルサンプリングが使用されます。

    範囲:

  • use_local_random_seedこのパラメーターは、サブセットの例をランダム化するためにローカルランダムシードを使用する必要があるかどうかを示します。 ローカルランダムシードの同じ値を使用すると、同じサブセットが生成されます。このパラメーターの値を変更すると、例がランダム化される方法が変更されるため、サブセットには異なる例のセットが含まれます。このパラメーターは、シャッフルサンプリングまたは成層サンプリングが選択されている場合にのみ使用できます。ランダム化を必要としないため、線形サンプリングには使用できません。例は順番に選択されます。範囲:
  • local_random_seed[ ローカルランダムシード使用]パラメーターがオンの場合、このパラメーターはローカルランダムシードを決定します。同じ値が使用される場合、毎回同じサブセットが作成されます。範囲:
  • enable_parallel_executionこのパラメーターは、内部プロセスの並列実行を有効にします。メモリの問題が発生した場合は、並列実行を無効にしてください。範囲:

チュートリアルプロセス

モデルを検証する理由

このチュートリアルプロセスでは、独立したデータセットで学習モデルを常に検証する必要がある理由を示します。

「ソナー」データセットは、Samplesフォルダーから取得されます。データの分割演算子は、2つの異なるサブセットに分割します(例の90%と10%)。決定木は、より大きなデータセットでトレーニングされます(トレーニングデータと呼ばれます)。

決定木は、トレーニングデータとテストデータの両方に適用され、パフォーマンスは両方について計算されます。その下で、クロス検証演算子を使用して、Sonarデータの決定木のパフォーマンスをより洗練された方法で計算します。

計算されたすべてのパフォーマンスは、プロセスの結果ポートに配信されます。

トレーニングデータのパフォーマンス:精度は86.63%と比較的高く、テストデータのパフォーマンス:精度はわずか61.90%です。これは、意思決定ツリーがトレーニングデータにうまく適合するようにトレーニングされているが、テストデータではパフォーマンスが低下していることを示しています。この効果は「過剰適合」と呼ばれます。相互検証のパフォーマンス:精度は62.12%+/- 9.81%です。クロス検証は、見えないデータに対するモデルのパフォーマンスの良い推定だけでなく、この推定の標準偏差も提供します。上記のテストデータのパフォーマンスはこの推定の範囲内にありますが、トレーニングデータのパフォーマンスはそれを上回り、「オーバーフィット」によって影響を受けます。

相互検証を使用したモデルの検証

このチュートリアルプロセスでは、サンプルフォルダーの「Deals」データセットでの相互検証演算子の基本的な使用方法を示します。

クロス検証演算子は、ExampleSetを3つのサブセットに分割します。サンプリングタイプパラメータは線形サンプリングに設定されているため、サブセットには連続した例があります(ID属性を確認してください)。意思決定ツリーは、相互検証演算子のトレーニングサブプロセス内の3つのサブセットのうち2つでトレーニングされます。

次に、テストサブプロセスの残りのサブセットで決定木のパフォーマンスが計算されます。

これは3回繰り返され、各サブセットがテストセットとして1回使用されました。

計算されたパフォーマンスは、3回の反復で平均され、プロセスの結果ポートに配信されます。また、すべての例でトレーニングされた決定ツリーが結果ポートに配信されます。マージされたテストセット(相互検証演算子のテスト結果セット出力ポート)は、プロセスの3番目の結果です。

相互検証演算子のパラメーターをいじってみてください。折り畳みの数パラメーターはサブセットの数を制御し、入力ExampleSetは分割されます。したがって、クロス検証の反復回数でもあります。サンプリングタイプは、サブセットの作成方法を変更します。

線形サンプリングが使用される場合、サブセットの例のIDは連続した値になります。シャッフルサンプリングが使用される場合、サブセット内の例のIDはランダム化されます。層別サンプリングが使用される場合、例のIDもランダム化されますが、サブセットのクラス分布は「Deals」データセット全体とほぼ同じになります。

スルーポートを使用しトレーニングからテストサブプロセスに結果を渡す

このプロセスは、クロスポートオペレーターのトレーニングサブプロセスからテストサブプロセスにRapidMinerオブジェクトをパススルーするスルーポートの使用法を示しています。

このプロセスでは、線形回帰がトレーニングされる前に属性の選択が実行されます。属性の重みは、テストサブプロセスに渡されます。また、2つの異なるパフォーマンスオペレーターを使用して、モデルのパフォーマンスを計算します。それらの結果は、テストサブプロセスの拡張可能なパフォーマンスポートに接続されています。

両方のパフォーマンスは、クロス検証の10回の繰り返しで平均され、プロセスの結果ポートに配信されます。

バッチ属性を使用してトレーニングデータを分割

このプロセスは、相互検証演算子のバッチ属性パラメーターの分割の使用方法を示しています。

Titanic TrainingデータセットはSamplesフォルダーから取得され、Passenger Class Attributeは ‘batch’ロールに設定されます。クロス検証演算子のバッチ属性パラメーターの分割がtrueに設定されているため、データセットは3つのサブセットに分割されます。各サブセットには、1つのPassengerクラスの例のみがあります。

トレーニングサブプロセスでは、2つのサブセットを使用して決定木をトレーニングします。テストサブプロセスでは、残りのサブセットを使用して決定木をテストします。

したがって、決定ツリーは2つの乗客クラスのすべての乗客でトレーニングされ、残りのクラスでテストされます。 3つの組み合わせすべてのパフォーマンスが平均化され、プロセスの結果ポートに配信されます。

API認証に失敗しました メールまたはパスワードが正しくありません メールアドレスは必須です パスワードは必須です
キャンセル