Log
概要
この演算子は、情報をログテーブルに保存します。この情報は、オペレーターのパラメーター値、オペレーターの適用回数、実行時間など、ほとんど何でもかまいません。保存された情報は、プロセスの実行が完了するとGUIによってプロットできます。さらに、情報をファイルに書き込むこともできます。
詳細
Log演算子は、通常はプロセスの実行中に計算された値を表示する場合に使用されますが、それ以外の場合は表示されません。たとえば、ループ演算子のすべての反復で異なるパラメーターの値を表示したい場合。このようなシナリオでは、理想的なオペレーターはLogオペレーターです。この演算子を使用して、さまざまな情報を保存できます。現在のプロセスのすべてのオペレーターのすべてのパラメーターの値を保存できます。適用回数、CPU時間、実行時間、ループ時間などの他の情報も保存できます。ログテーブルに保存された情報は、結果ビューで表示できます。結果ワークスペースのプロットビューを使用して、さまざまなグラフの形で情報を分析することもできます。 ファイル名パラメーターを使用して、情報をファイルに直接書き込むこともできます。
logパラメーターは、保存する情報を指定するために使用されます。 列名オプションは、ログテーブル(および/またはファイル)の列の名前を指定します。次に、ドロップダウンメニューから任意の演算子を選択できます。演算子を選択したら、2つの選択肢があります。パラメータ値を保存するか、他の値を保存できます。パラメーター値を選択した場合、ドロップダウンメニューから選択した演算子のパラメーターを選択できます。他の値を選択する場合、最後のドロップダウンメニューからapply-count、cpu-timeなどの任意の値を選択できます。
Log演算子が適用されるたびに、 logパラメーターで指定されたすべての値とパラメーターが収集され、データ行に保存されます。プロセスが終了すると、オペレーターは収集されたデータ行をファイルに書き込みます( ファイル名パラメーターに有効なパスがある場合)。 GUIモードでは、2Dまたは3Dプロットが自動的に生成され、結果ワークスペースに表示されます。この演算子の動作を理解するには、添付のプロセス例をご覧ください。
入力
- スルー (IOObject)このポートにオブジェクトを接続することは必須ではありません。このポートで接続されたオブジェクトは、出力ポートを変更せずに配信されます。この演算子は複数の入力を持つことができます。ある入力が接続されると、別の入力(ある場合)を受け入れる準備ができている別の入力ポートを介して使用可能になります。入力の順序は同じままです。 Logオペレーターの最初の入力ポートで提供されたオブジェクトは、最初の出力ポートで使用可能です。
出力
- スルー(IOObject)入力として与えられたオブジェクトは、このポートを介して出力に変更されることなく渡されます。このポートを他のポートに接続することは必須ではありません。 Logオペレーターは複数の出力を持つことができます。 1つの出力が接続されると、出力ポートを介して別の出力が使用可能になり、別の出力(ある場合)を配信する準備が整います。出力の順序は同じままです。 Logオペレーターの最初の入力ポートで配信されたオブジェクトは、最初の出力ポートで配信されます
パラメーター
- filenameこのパラメーターは、保存された値をファイルに書き込む場合に使用されます。ファイルのパスはここで指定されます。 範囲:ファイル名
- logこれは、この演算子の最も重要なパラメーターです。 Logオペレーターが保管する値を指定するために使用されます。 logパラメーターは、保存する情報を指定するために使用されます。 列名オプションは、ログテーブル(および/またはファイル)の列の名前を指定します。次に、ドロップダウンメニューから任意の演算子を選択できます。演算子を選択したら、2つの選択肢があります。パラメータ値を保存するか、他の値を保存できます。パラメーター値を選択した場合、ドロップダウンメニューから選択した演算子のパラメーターを選択できます。他の値を選択する場合、最後のドロップダウンメニューからapply-count、cpu-timeなどの任意の値を選択できます。 範囲:リスト
- sort_typeこのパラメーターは、ログに記録された値を指定されたディメンションに従ってソートする必要があるかどうかを示します。 範囲:選択
- sort_dimensionこのパラメーターは、 ソートタイプパラメーターが「top-k」または「bottom-k」に設定されている場合にのみ使用できます。このパラメーターは、ソートに使用されるディメンションを指定するために使用されます。 範囲:文字列
- sort_kこのパラメーターは、 ソートタイプパラメーターが「top-k」または「bottom-k」に設定されている場合にのみ使用できます。 k個の結果のみが保持されます。 範囲:整数
- persistentこれはエキスパートパラメータです。このパラメーターは、結果を指定されたファイルにすぐに書き込む必要があるかどうかを示します。 範囲:ブール
チュートリアルプロセス
Logオペレーターの概要
このサンプルプロセスは、複雑な前処理でのLogおよびExtract Macro演算子の使用法を示しています。 Log演算子に関連する概念以外に、このプロセスでは、マクロの再定義、マクロのループ値演算子、マクロの抽出演算子の使用など、マクロの多くの概念を扱います。このプロセスは、データの生成に使用されるサブプロセスから始まります。このサブプロセス内で行われていることは、Log演算子の使用とは関係がないため、ここでは説明しません。 ExampleSetを表示できるように、このサブプロセスの後にブレークポイントが挿入されます。 ExampleSetには12の例と2つの属性「att1」および「att2」があることがわかります。 「att1」は公称値であり、3つの可能な値「range1」、「range2」、および「range3」があります。 ‘att2’には実際の値があります。
ループ値演算子は、ExampleSetに適用されます。指定された属性(att1)の値を反復処理し、指定されたExampleSetに内部演算子を適用しますが、現在の値は反復マクロパラメーターで定義されたマクロを介してアクセスできます。反復マクロパラメーターは ‘loop_value’に設定されているため、パラメーター値に%{loop_value}を指定することで現在の値にアクセスできます。 att1には3つの可能な値があるため、ループ値演算子はatt1の可能な値ごとに1回、3回反復します。
ループ値演算子の内部で何が起こるかを説明します。ループ値演算子には、入力としてExampleSetが提供されます。 Filter Examples演算子がそれに適用されます。条件クラスパラメーターは「属性値フィルター」に設定され、パラメーター文字列は「att1 =%{loop_value}」に設定されます。ここでloop_valueマクロの使用に注意してください。 att1の値がloop_valueマクロの値と等しい場合にのみ、これらの例が選択されます。選択した例を表示できるように、ブレークポイントがここに挿入されます。次に、選択した例に集計演算子が適用されます。選択した例のatt2値の平均を取るように構成されています。この平均値は、「average(att2)」という名前の属性の新しいExampleSetに保存されます。ここにブレークポイントが挿入されるため、選択した例のatt2値の平均を確認できます。マクロの抽出演算子がこの新しいExampleSetに適用され、この平均値が「current_average」という名前のマクロに保存されます。最初に選択された例は、「att2_abs_avg」という名前の新しい属性を生成する属性の生成演算子に渡されます。この属性は、式「abs(att2-%{current_average})」によって定義されます。ここでcurrent_averageマクロの使用に注意してください。 current_averageマクロの値は、att2のすべての値から減算され、「att2_abs_avg」という名前の新しい属性に格納されます。結果のExampleSetは、ループ値演算子の出力で提供されます。ここにブレークポイントが挿入されるため、 ‘att2_abs_avg’属性を持つExampleSetを確認できます。この出力は、メインプロセスのAppendオペレーターに送られます。 Append演算子は、すべての反復の結果を単一のExampleSetにマージします。これは、結果ワークスペースでこのプロセスの最後に表示されます。
ループ値演算子のサブプロセスのログ演算子に注意してください。 logパラメーターを使用して3つの列が作成されます。 「平均att2」列には、マクロの抽出演算子のマクロの値が格納されます。 「反復」列には、ループ演算子の反復回数と同じ集計演算子の適用回数が格納されます。 「att1 value」列には、現在の反復のatt1の値が格納されます。プロセスの最後に、Logオペレーターが直接アクセスできない多くの情報を保存していることがわかります。さらに、プロセスの最後に必要な情報がすべて表示されるため、ブレークポイントは不要です。
また、Logオペレーターのファイル名パラメーターが「D:\ log.txt」に設定されていることに注意してください。したがって、「log」という名前のテキストファイルが「D」ドライブに作成されます。このファイルには、このプロセス中にLogオペレーターによって保存された情報が含まれます。
プロセスを実行すると、次のように表示されます。Generate Dataサブプロセスによって生成されたExampleSet。次に、プロセスはループ値演算子に入り、3回反復します。反復1:「att1」値がloop_valueマクロの現在の値と等しいExampleSet、すなわち「range1」選択した例の「att2」値の平均。平均は-1.161です。反復1の ‘att2_abs_avg’属性を持つExampleSet。反復2: ‘att1’値がloop_valueマクロの現在の値と等しいExampleSet、つまり ‘range2’選択した例の ‘att2’値の平均。平均は-1.656です。反復2の ‘att2_abs_avg’属性を持つExampleSet。反復3: ‘att1’値がloop_valueマクロの現在の値と等しいExampleSet、つまり ‘range3’選択した例の ‘att2’値の平均。平均は1.340です。反復3の ‘att2_abs_avg属性’を持つExampleSet。ループ値演算子からプロセスが出て、Append演算子が3つの反復すべての最終ExampleSetを単一のExampleSetにマージし、結果ワークスペースに表示できるようにします。
Logオペレーターの結果を見てみましょう。テーブルビューを使用して、表形式で必要な値をすべて表示できます。ブレークポイントを使用して表示されたすべての値が単一のテーブルで利用できることがわかります。プロットビューでも結果を確認できます。 「D」ドライブに保存されているファイルもご覧ください。このファイルにはまったく同じ情報が含まれています。
ログ演算子を使用したトレーニングとテストのエラー表示
「重み付け」は、Retrieveオペレーターを使用してロードされます。ループパラメータ演算子が適用されます。ループパラメーターオペレーターのパラメーターは、このオペレーターが25回ループするように設定されます。したがって、そのサブプロセスは25回実行されます。すべての反復で、SVM(LibSVM)オペレーターのCパラメーターの値が変更されます。 Cパラメーターの値は、最初の反復では0.001です。値は、最後の反復で100000に達するまで対数的に増加します。
ループパラメーターオペレーターのサブプロセスを見てください。まず、データの分割演算子を使用して、データを2つの等しいパーティションに分割します。 SVM(LibSVM)オペレーターは1つのパーティションに適用されます。結果の分類モデルは、両方のパーティションで2つのモデルの適用演算子を使用して適用されます。テストパーティションとトレーニングパーティションの両方でのSVMモデルの統計的パフォーマンスは、パフォーマンス(分類)演算子を使用して測定されます。最後に、Log演算子を使用して必要な結果を保存します。
Logオペレーターのlogパラメーターには4つのものが保存されます。ループパラメーターオペレーターの反復は、SVMオペレーターのapply-countによってカウントされます。これは「Count」という名前の列に保存されます。トレーニングパーティションに適用されたパフォーマンス(分類)演算子の分類エラーパラメーターの値は、「トレーニングエラー」という名前の列に格納されます。テストパーティションに適用されたパフォーマンス(分類)演算子の分類エラーパラメーターの値は、「テストエラー」という名前の列に格納されます。 SVM(LibSVM)オペレーターのCパラメーターの値は、「SVM C」という名前の列に格納されます。また、保存された情報は、filenameパラメーターで指定されたファイルに書き込まれることに注意してください。
プロセスを実行し、結果ビューを表示します。テーブルビューですべての値を確認できます。この表を使用して、SVM(LibSVM)演算子のCパラメーターの値が増加した場合の、トレーニングおよびテストパーティションの分類エラーの動作を調べることができます。これらの結果をグラフ形式で表示するには、プロットビューに切り替えます。適切なプロッターを選択します。 「インデックス次元」として「SVM-C」を使用して「シリーズマルチ」プロッターを使用できます。 「プロットシリーズ」で「トレーニングエラー」と「テストエラー」を選択します。 「散布図」プロッタも使用できます。これで、パラメーターCの増加に伴うトレーニングおよびテストエラーの動作を分析できます。
RapidMinerバージョン8.0以降、ループパラメーターオペレーターは、a)並列に、b)パラメーターセットとパフォーマンスを自動的に記録するように更新されていることに注意してください。詳細については、そのオペレーターのヘルプを参照してください。