離散特徴分析は、限られた数の別個のカテゴリを有する特徴を処理および分析するために使用される技術である。 このアプローチは、離散的特徴の分布を評価し、各離散的特徴のgini指数およびエントロピーなどのメトリックを計算し、そして、Gini利得、情報利得、および情報利得比などのメトリックを使用することによって特徴重要性を評価する。 これらの評価は、モデルのパフォーマンスに大きな影響を与えるフィーチャの特定に役立ちます。
コンポーネントの設定
次のいずれかの方法を使用して、離散特徴分析コンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
Machine Learning Designerのパイプラインの詳細ページで、離散機能分析コンポーネントをパイプラインに追加し、次の表に示すパラメーターを設定します。
パラメーター | 説明 |
フィーチャー列 | トレーニングサンプルのデータの特徴を表す列。 |
ラベル列 | ラベル列。 |
スパース行列 | 入力テーブルのデータがスパース形式の場合、フィーチャはキーと値のペア形式でなければなりません。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「シナリオ4: SQLスクリプトコンポーネント内でPAIコマンドを実行する」をご参照ください。
PAI
-name enum_feature_selection
-project algo_public
-DinputTableName=enumfeautreselection_input
-DlabelColName=label
-DfeatureColNames=col0,col1
-DenableSparse=false
-DoutputCntTableName=enumfeautreselection_output_cntTable
-DoutputValueTableName=enumfeautreselection_output_valuetable
-DoutputEnumValueTableName=enumfeautreselection_output_enumvaluetable;パラメーター | 必須 / 任意 | デフォルト値 | 説明 |
inputTableName | 対象 | デフォルト値なし | 入力テーブルの名前。 |
inputTablePartitions | 非対象 | フルテーブル | トレーニング用に入力テーブルから選択されたパーティション。 次の形式がサポートされています。
説明 複数のパーティションを指定する場合は、コンマ (,) で区切ります。 |
featureColNames | 非対象 | デフォルト値なし | トレーニング用に入力テーブルから選択されたフィーチャ列。 |
labelColName | 非対象 | デフォルト値なし | 入力テーブルのラベル列の名前。 |
enableSparse | 非対象 | false | 入力データがスパース形式かどうかを指定します。 有効な値: trueとfalse。 |
kvFeatureColNames | 非対象 | フルテーブル | キーと値のペア形式のフィーチャ列の名前。 |
kvDelimiter | 非対象 | : | 入力テーブルのデータがスパース形式の場合、keyとvalueを区切るために使用される区切り文字。 |
itemDelimiter | 非対象 | , | 入力テーブルのデータがスパース形式の場合、キーと値のペアを区切るために使用される区切り文字。 |
outputCntTableName | 非対象 | 非該当 | 離散フィーチャの列挙値を含む出力分布テーブル。 |
outputValueTableName | 非対象 | 非該当 | 離散フィーチャのgini値とエントロピー値を含む出力テーブル。 |
outputEnumValueTableName | 非対象 | 非該当 | 離散的な特徴の列挙されたginiおよびエントロピー値を含む出力テーブル。 |
ライフサイクル | 非対象 | デフォルト値なし | テーブルのライフサイクル。 |
coreNum | 非対象 | システムによって決定される | コンピューティングで使用されるコアの数。 値は正の整数である必要があります。 |
memSizePerCore | 非対象 | システムによって決定される | 各コアのメモリサイズ。 有効な値: 1 ~ 65536 単位:MB。 |
例:
次のSQL文を実行して入力データを生成します。
drop table if exists enum_feature_selection_test_input;
create table enum_feature_selection_test_input
as
select
*
from
(
select
'00' as col_string,
1 as col_bigint,
0.0 as col_double
from dual
union all
select
cast(null as string) as col_string,
0 as col_bigint,
0.0 as col_double
from dual
union all
select
'01' as col_string,
0 as col_bigint,
1.0 as col_double
from dual
union all
select
'01' as col_string,
1 as col_bigint,
cast(null as double) as col_double
from dual
union all
select
'01' as col_string,
1 as col_bigint,
1.0 as col_double
from dual
union all
select
'00' as col_string,
0 as col_bigint,
0.0 as col_double
from dual
) tmp;入力データ:
+------------+------------+------------+
| col_string | col_bigint | col_double |
+------------+------------+------------+
| 01 | 1 | 1.0 |
| 01 | 0 | 1.0 |
| 01 | 1 | NULL |
| NULL | 0 | 0.0 |
| 00 | 1 | 0.0 |
| 00 | 0 | 0.0 |
+------------+------------+------------+PAIコマンド
コマンド
drop table if exists enum_feature_selection_test_input_enum_value_output; drop table if exists enum_feature_selection_test_input_cnt_output; drop table if exists enum_feature_selection_test_input_value_output; PAI -name enum_feature_selection -project algo_public -DitemDelimiter=":" -Dlifecycle="28" -DoutputValueTableName="enum_feature_selection_test_input_value_output" -DkvDelimiter="," -DlabelColName="col_bigint" -DfeatureColNames="col_double,col_string" -DoutputEnumValueTableName="enum_feature_selection_test_input_enum_value_output" -DenableSparse="false" -DinputTableName="enum_feature_selection_test_input" -DoutputCntTableName="enum_feature_selection_test_input_cnt_output";コマンド出力
enum_feature_selection_test_input_cnt_output
+------------+------------+------------+------------+ | colname | colvalue | labelvalue | cnt | +------------+------------+------------+------------+ | col_double | NULL | 1 | 1 | | col_double | 0 | 0 | 2 | | col_double | 0 | 1 | 1 | | col_double | 1 | 0 | 1 | | col_double | 1 | 1 | 1 | | col_string | NULL | 0 | 1 | | col_string | 00 | 0 | 1 | | col_string | 00 | 1 | 1 | | col_string | 01 | 0 | 1 | | col_string | 01 | 1 | 2 | +------------+------------+------------+------------+enum_feature_selection_test_input_value_output
+------------+------------+------------+------------+------------+---------------+ | colname | gini | entropy | infogain | ginigain | infogainratio | +------------+------------+------------+------------+------------+---------------+ | col_double | 0.3888888888888889 | 0.792481250360578 | 0.20751874963942196 | 0.1111111111111111 | 0.14221913160264427 | | col_string | 0.38888888888888884 | 0.792481250360578 | 0.20751874963942196 | 0.11111111111111116 | 0.14221913160264427 | +------------+------------+------------+------------+------------+---------------+enum_feature_selection_test_input_enum_value_output
+------------+------------+------------+------------+ | colname | colvalue | gini | entropy | +------------+------------+------------+------------+ | col_double | NULL | 0.0 | 0.0 | | col_double | 0 | 0.22222222222222224 | 0.4591479170272448 | | col_double | 1 | 0.16666666666666666 | 0.3333333333333333 | | col_string | NULL | 0.0 | 0.0 | | col_string | 00 | 0.16666666666666666 | 0.3333333333333333 | | col_string | 01 | 0.2222222222222222 | 0.4591479170272448 | +------------+------------+------------+------------+