多クラス分類評価 コンポーネントは、2 クラスを超える分類タスクにおけるモデルのパフォーマンスを評価します。正解率、再現率、F1 スコア、混同行列などのメトリックを算出し、クラスごとのモデルの分類性能を定量化します。混同行列は予測ラベルと実際のラベルの関係を示し、その他のメトリックはクラスごとの分類性能の詳細を提供します。これらのメトリックを使用して、クラス単位でモデルのパフォーマンスを把握し、さらなる最適化に役立てることができます。
コンポーネント設定
方法 1:コンソール
Designer で、[多クラス分類評価] コンポーネントをワークフローに追加し、右側のパネルでそのパラメーターを設定します。
|
パラメータタイプ |
パラメータ |
説明 |
|
[フィールド設定] |
[元の分類結果列] |
実際のラベルを含む列を選択します。クラス数は 1,000 を超えることはできません。 |
|
[予測分類結果列] |
予測ラベルを含む列を選択します。デフォルトでは、この列名は |
|
|
[高度なオプション] |
[高度なオプション] チェックボックスを選択して、[予測結果確率列] パラメーターを有効にします。 |
|
|
[予測結果確率列] |
モデルの log loss を計算するための列を指定します。このパラメータはランダムフォレスト モデルでのみ有効で、他のモデルで使用するとエラーの原因となる場合があります。デフォルトでは、この列名は |
|
|
[チューニング] |
[コア数] |
[コアあたりのメモリ] と連携して動作します。デフォルトでは、システムがリソースを自動的に割り当てます。 |
|
[コアあたりのメモリ] |
各コアのメモリ量 (MB) です。デフォルトでは、システムが自動的にリソースを割り当てます。 |
方法 2:PAI コマンド
PAI コマンドで [多クラス分類評価] コンポーネントを設定するには、[SQL スクリプトコンポーネント] でコマンドを実行します。 詳細については、「シナリオ 4: SQL スクリプトコンポーネントで PAI コマンドを実行する」をご参照ください。
PAI -name MultiClassEvaluation -project algo_public
-DinputTableName="test_input"
-DoutputTableName="test_output"
-DlabelColName="label"
-DpredictionColName="prediction_result"
-Dlifecycle=30;
|
パラメータ |
必須 |
デフォルト |
説明 |
|
inputTableName |
はい |
なし |
入力テーブルの名前です。 |
|
inputTablePartitions |
いいえ |
テーブル全体 |
入力テーブルから使用するパーティションです。 |
|
outputTableName |
はい |
なし |
出力テーブルの名前です。 |
|
labelColName |
はい |
なし |
実際のラベルを含む列の名前です。 |
|
predictionColName |
はい |
なし |
予測ラベルを含む列の名前です。 |
|
predictionDetailColName |
いいえ |
なし |
予測クラス確率を含む列です。例: |
|
lifecycle |
いいえ |
なし |
出力テーブルのライフサイクル (日) です。 |
|
coreNum |
いいえ |
システムによる自動割り当て |
ジョブのコア数です。 |
|
memSizePerCore |
いいえ |
システムによる自動割り当て |
各コアのメモリ量 (MB) です。 |
使用例
-
[SQL スクリプトコンポーネント] を追加し、次の SQL 文を入力してトレーニングデータを生成します。
drop table if exists multi_esti_test; create table multi_esti_test as select * from ( select '0' as id,'A' as label,'A' as prediction,'{"A": 0.6, "B": 0.4}' as detail union all select '1' as id,'A' as label,'B' as prediction,'{"A": 0.45, "B": 0.55}' as detail union all select '2' as id,'A' as label,'A' as prediction,'{"A": 0.7, "B": 0.3}' as detail union all select '3' as id,'A' as label,'A' as prediction,'{"A": 0.9, "B": 0.1}' as detail union all select '4' as id,'B' as label,'B' as prediction,'{"A": 0.2, "B": 0.8}' as detail union all select '5' as id,'B' as label,'B' as prediction,'{"A": 0.1, "B": 0.9}' as detail union all select '6' as id,'B' as label,'A' as prediction,'{"A": 0.52, "B": 0.48}' as detail union all select '7' as id,'B' as label,'B' as prediction,'{"A": 0.4, "B": 0.6}' as detail union all select '8' as id,'B' as label,'A' as prediction,'{"A": 0.6, "B": 0.4}' as detail union all select '9' as id,'A' as label,'A' as prediction,'{"A": 0.75, "B": 0.25}' as detail )tmp; -
別の [SQL スクリプトコンポーネント] を追加し、次の PAI コマンドを入力して評価を実行します。
drop table if exists ${o1}; PAI -name MultiClassEvaluation -project algo_public -DinputTableName="multi_esti_test" -DoutputTableName=${o1} -DlabelColName="label" -DpredictionColName="prediction" -Dlifecycle=30; -
前のステップのコンポーネントを右クリックして [データを表示 > SQL スクリプトの出力] を選択すると、評価結果が表示されます。
| result | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | { "ActualLabelFrequencyList": [5, 5], "ActualLabelProportionList": [0.5, 0.5], "ConfusionMatrix": [[4, 1], [2, 3]], "LabelList": ["A", "B"], "LabelMeasureList": [{ "Accuracy": 0.7, "F1": 0.7272727272727273, "FalseDiscoveryRate": 0.3333333333333333, "FalseNegative": 1, "FalseNegativeRate": 0.2, "FalsePositive": 2, "FalsePositiveRate": 0.4, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.75, "Precision": 0.6666666666666666, "Sensitivity": 0.8, "Specificity": 0.6, "TrueNegative": 3, "TruePositive": 4}, { "Accuracy": 0.7, "F1": 0.6666666666666666, "FalseDiscoveryRate": 0.25, "FalseNegative": 2, "FalseNegativeRate": 0.4, "FalsePositive": 1, "FalsePositiveRate": 0.2, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.6666666666666666, "Precision": 0.75, "Sensitivity": 0.6, "Specificity": 0.8, "TrueNegative": 4, "TruePositive": 3}], "LabelNumber": 2, "OverallMeasures": { "Accuracy": 0.7, "Kappa": 0.3999999999999999, "LabelFrequencyBasedMicro": { "Accuracy": 0.7, "F1": 0.696969696969697, "FalseDiscoveryRate": 0.2916666666666666, "FalseNegative": 1.5, "FalseNegativeRate": 0.3, "FalsePositive": 1.5, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7083333333333333, "Precision": 0.7083333333333333, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 3.5, "TruePositive": 3.5}, "MacroAveraged": { "Accuracy": 0.7, "F1": 0.6969696969697, "FalseDiscoveryRate": 0.2916666666666666, "FalseNegative": 1.5, "FalseNegativeRate": 0.3, "FalsePositive": 1.5, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7083333333333333, "Precision": 0.7083333333333333, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 3.5, "TruePositive": 3.5}, "MicroAveraged": { "Accuracy": 0.7, "F1": 0.7, "FalseDiscoveryRate": 0.3, "FalseNegative": 3, "FalseNegativeRate": 0.3, "FalsePositive": 3, "FalsePositiveRate": 0.3, "Kappa": 0.3999999999999999, "NegativePredictiveValue": 0.7, "Precision": 0.7, "Sensitivity": 0.7, "Specificity": 0.7, "TrueNegative": 7, "TruePositive": 7}}, "PredictedLabelFrequencyList": [6, 4], "PredictedLabelProportionList": [0.6, 0.4], "ProportionMatrix": [[0.8, 0.2], [0.4, 0.6]]} |
付録
コンポーネントをビジュアルモードで実行する場合、コンポーネントを右クリックして [ビジュアル分析] を選択すると、詳細な結果を表示できます。左側のビジュアルノードのリストで、多クラス分類評価-1 ノードを選択し、右側の メトリクス タブに移動して結果を表示します。主要なメトリクスは次のとおりです。精度 = 0.7 およびカッパ ≈ 0.4。マクロ平均メトリクスは次のとおりです。F1 スコア ≈ 0.697、適合率 ≈ 0.708、感度 = 0.7、特異度 = 0.7、偽陽性率 = 0.3、偽陰性率 = 0.3、真陽性 = 3.5、および真陰性 = 3.5。
結果ページには、[Metrics]、[Confusion Matrix]、[Distribution Statistics] の 3 つのタブがあります。[Confusion Matrix] タブでは、各クラスの予測結果がヒートマップとして表示されます。縦軸は実際のクラス、横軸は予測クラスを表します。行列内のセルにカーソルを合わせると、そのセルの値 (Value) と比率 (Ratio) を確認できます。
結果ページの [Distribution Statistics] タブには、各クラスの分類評価メトリックが表形式で表示されます。これには、真陽性 (TP)、真陰性 (TN)、偽陽性 (FP)、偽陰性 (FN)、感度、特異度、適合率、正解率、F1 スコア、カッパ係数 が含まれます。たとえば、クラス A のメトリックは、TP = 4、TN = 3、FP = 2、FN = 1、感度 = 0.8、特異度 = 0.6、適合率 = 0.6667、正解率 = 0.7、F1 スコア = 0.7273、カッパ係数 = 0.4 です。クラス B のメトリックは、TP = 3、TN = 4、FP = 1、FN = 2、感度 = 0.6、特異度 = 0.8、適合率 = 0.75、正解率 = 0.7、F1 スコア = 0.6667、カッパ係数 = 0.4 です。