一意の値が多数存在する連続的な数値特徴量や、極端な外れ値を含む連続的な数値特徴量は、特に分類タスクにおいてモデルの精度を低下させる可能性があります。特徴量の離散化(Feature Discretization)では、連続的な数値列を離散的なビン(区間)に変換し、カテゴリ型入力を想定するアルゴリズムとの互換性を確保するとともに、外れ値の影響を低減します。
このコンポーネントは、数値データ型の密な特徴量(dense feature)のみを対象とします。疎な特徴量(sparse feature)は自動的にフィルターされます。
サポートされる離散化メソッド
教師なしメソッド
これらのメソッドは、ラベル情報を使わず、データ分布に基づいて値を分割します。
| メソッド | 動作の仕組み | デフォルト |
|---|---|---|
| 等幅離散化 | 値の範囲を等しい幅のビンに分割します。各ビンは同じ範囲の値をカバーします。 | はい |
| 等頻度離散化 | 各ビンに含まれるデータポイント数が等しくなるように値を配分します。値を均等に分散させることで、外れ値の影響を低減します。 | いいえ |
教師ありメソッド
これらのメソッドは、エントロピー利得による探索を用いて、ラベル情報をもとに最適な分割点を特定します。アルゴリズムがデータ全体を走査するため、教師あり離散化は教師なしメソッドと比較して大幅に処理時間が長くなります。
ラベル列のデータ型は ENUM、STRING、または BIGINT である必要があります。教師ありメソッドによって生成されるビンの数は、maxBins パラメーターで制御されません。| メソッド | 動作の仕組み |
|---|---|
| ジニ利得に基づく離散化 | 各ステップでジニ不純度を最小化する分割点を特定します。 |
| エントロピー利得に基づく離散化 | 各ステップで情報利得を最大化する分割点を特定します。 |
離散化メソッドの選択
| シナリオ | 推奨メソッド |
|---|---|
| 列に有効なモデリングが困難なほど多数の一意の値が存在する | 等幅離散化または等頻度離散化 |
| 値に極端な外れ値が存在し、モデルが歪む | 等頻度離散化(値を均等に分散させ、外れ値の影響を低減) |
| ラベルデータがあり、分割点がクラス境界を反映する必要がある | ジニ利得に基づく離散化またはエントロピー利得に基づく離散化 |
| 信用スコアリングやリスクモデリングで証拠重み(Weight of Evidence:WOE)指標が必要 | 代わりに「ビニング」コンポーネントをご利用ください |
コンポーネントの設定
方法 1:パイプラインページから設定(推奨)
Machine Learning Designer(旧称:Machine Learning Studio)のパイプラインページで、特徴量の離散化(Feature Discretization)コンポーネントを設定します。
[フィールド設定] タブ
| パラメーター | 説明 |
|---|---|
| 個別の特徴 | 離散化する特徴量を指定します。 |
| ラベル列 | (任意)ラベル列を指定します。指定した場合、出力に各特徴量とラベルの関係を示す x-y ヒストグラムが表示されます。 |
[パラメーター設定] タブ
| パラメーター | 説明 |
|---|---|
| 離散化メソッド | 使用するメソッドを指定します。有効な値: 等幅離散化、等頻度離散化、ジニ利得に基づく離散化、エントロピー利得に基づく離散化。デフォルト値:等幅離散化。 |
| 離散化間隔 | ビンの数を指定します。1 より大きい正の整数である必要があります。 |
[チューニング] タブ
| パラメーター | 説明 |
|---|---|
| コア数 | 計算に使用するコア数を指定します。正の整数である必要があります。 |
| コアあたりのメモリサイズ | 各コアに割り当てるメモリ量を指定します。 |
方法 2:PAI コマンドを使用
SQL スクリプトコンポーネント経由で PAI コマンドを呼び出します。詳細については、「SQL スクリプト」をご参照ください。
PAI -name fe_discrete_runner_1 -project algo_public
-DdiscreteMethod=SameFrequecy
-Dlifecycle=28
-DmaxBins=5
-DinputTable=pai_dense_10_1
-DdiscreteCols=nr_employed
-DoutputTable=pai_temp_2262_20382_1
-DmodelTable=pai_temp_2262_20382_2;パラメーター
| パラメーター | 必須 | デフォルト | 説明 |
|---|---|---|---|
inputTable | はい | — | 入力テーブル名を指定します。 |
inputTablePartitions | いいえ | すべてのパーティション | トレーニングに使用するパーティションを指定します。フォーマット: Partition_name=value。マルチレベルパーティションの場合は:name1=value1/name2=value2。複数のパーティションを指定する場合は、カンマで区切ります。 |
outputTable | はい | — | 離散化された値を含む出力テーブル。 |
discreteCols | はい | "" | 離散化する特徴量を指定します。疎な特徴量は自動的にフィルターされます。 |
labelCol | いいえ | — | ラベル列を指定します。指定すると、出力に x-y ヒストグラムが有効になります。 |
discreteMethod | いいえ | 等尺性離散化 | 離散化メソッドを指定します。有効な値: 等幅離散化(等幅)、等頻度離散化(等頻度)、ジニ利得に基づく離散化、エントロピー利得に基づく離散化。 |
maxBins | いいえ | 100 | ビンの数を指定します。1 より大きい正の整数である必要があります。教師ありメソッドには適用されません。 |
lifecycle | いいえ | 7 | 出力テーブルのライフサイクル(日数)を指定します。正の整数である必要があります。 |
coreNum | いいえ | システムが決定 | コア数を指定します。memSizePerCore と併用します。正の整数である必要があります。 |
memSizePerCore | いいえ | システムが決定 | コアあたりのメモリサイズ(MB)を指定します。正の整数である必要があります。 |
サンプル
この例では、等幅離散化を用いて単一の数値列を 5 個のビンに離散化します。
入力データの準備
以下の SQL ステートメントを実行して、入力テーブルを作成します:
CREATE TABLE IF NOT EXISTS pai_dense_10_1 AS
SELECT nr_employed
FROM bank_data
LIMIT 10;コンポーネントの設定
入力テーブル:
pai_dense_10_1[フィールド設定] タブ: 離散化対象の特徴量 を
nr_employedに設定します。[パラメーター設定] タブ: 離散化メソッド を 等幅離散化 に、離散化間隔 を
5に設定します。
出力
nr_employed の離散化後の値は以下のとおりです:
| nr_employed |
|---|
| 4.0 |
| 3.0 |
| 1.0 |
| 3.0 |
| 2.0 |
| 4.0 |
| 3.0 |
| 3.0 |
| 2.0 |
| 3.0 |