Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

特徴量エンジニアリング

AutoML は、2 つの重要な特徴量エンジニアリングの手順を実行します。

これらの手順により、データと使用されている機械学習アルゴリズムとの適合性を確保して、パフォーマンスを著しく向上させることができます。

列の型分類

AutoML はまずデータセット内の列を調べて、特定の Python データ型として分類します。DDL データ型から Python データ型への変換の詳細は、"DDL から Python への型変換" を参照してください。

以下に、列の型とその分類の方法を示します。

数値列

数値列は、int8int64float32 など、数値 pandas データ型を持つ列です。以下を除き、この条件を満たす、すべての列が含まれます。

数値データのように見える列が、数値列として不適切に分類されることがあります。例えば、さまざまな項目の ID 番号が含まれる列がある場合、ID 番号 1000 は ID 番号 2000 の “半分” ではありません。VARCHAR 値で数値データを再キャストすることで、これらの列をカテゴリ列として適切に処理することができます。

カテゴリ列

カテゴリ列は、カテゴリカル値を含む列です。つまり、比較的少数の固定数の値が表示されます。以下の条件を満たします。

  • category または object pandas データ型である。

  • 無視される列が含まれていない。

  • リスト列が含まれていない。

  • 一意の値の数は、値の合計数の 10% 未満である。

テキスト列

テキスト列は、値が文章のように見える列です。AutoML は、4 つ以上の語を含む値を探します。以下の条件を満たします。

  • category または object pandas データ型である。

  • 無視される列が含まれていない。

  • カテゴリ列が含まれていない。

  • リスト列が含まれていない。

  • 一意の値の数は、値の合計数の 10% 未満である。

リスト列

リスト列は、リスト値を含む列です。以下の条件を満たします。

  • category または object pandas データ型である。

  • 無視される列が含まれていない。

  • 以下のいずれかの型であるか、これらの型を含む。

    • InterSystems IRIS データ型 %Library.String:list。

    • InterSystems IRIS データ型 %Library.String:array。

    • Python リスト。列の空でない最初の 10 個の値を調べて、各値の型が Python リストかどうかを確認して、判断します。

    • 文字列配列。列の空でない最初の 10 個の値を調べて、各値の型が string で、文字 [, ending character ] で始まり、長さが 2 文字以上かどうかを確認して、判断します。

ブーリアン列

ブーリアン列は、bool pandas データ型を持つ列です。さらに、無視される列を含まないという条件を満たします。

無視される列

無視される列は、無視され、トレーニングの前に削除される列です。これには、以下のものがあります。

  • ID 列

  • ラベル列

  • 一意の値が 1 つのみの列 (datetime pandas データ型の列を除く)

日/時列

日/時列は、datetime pandas データ型を持つ列です。さらに、無視される列を含まないという条件を満たします。

作成されるその他の日/時列については、以下のセクションを参照してください。

DDL から Python への型変換

以下の表に、AutoML がデータ列を分類するために使用する、DDL データ型から Python データ型へのマッピングを示します。

DDL データ型 Python データ型
BIGINT integer
BINARY bytes
BIT Boolean
DATE datetime64 (numpy)
DECIMAL decimal
DOUBLE float
INTEGER integer
NUMERIC float
REAL float
SMALLINT integer
TIME datetime64 (numpy)
TIMESTAMP datetime64 (numpy)
TINYINT integer
VARBINARY bytes
VARCHAR string

DDL データ型および関連する InterSystems IRIS® データ型の詳細は、"InterSystems SQL リファレンス" の “データ型” を参照してください。

データ変換

変換関数は、データセット全体を機械学習モデルで使用される形式に変換します。これは、トレーニング・セットにはトレーニングの前に適用され、将来のデータセットには予測が行われる前に適用されます。

列の追加

追加の日/時列が作成されます。datetime 列ごとに、必要に応じて、以下の別個の列が追加されます。

  • 時間

  • 曜日

AutoML は期間列も作成します。追加される各列は、元の日/時列のいずれかであり、この列の各値は、その特定の日/時列の日付と他のすべての日/時列の日付との間の期間です。例えば、以下の 3 つの日/時列を持つ患者データを考えてみます。

  • 生年月日

  • 入院日

  • 退院日

AutoML はこれらの列から、経過日時 (生年月日と入院日との間の期間) と滞在期間 (入院日と退院日との間の期間) という 2 つの有用な期間列を作成します。

最後に、存在するリスト列ごとに、リストのサイズの列が追加されます。つまり、古い列の対応するリストの長さが、新しい列の値になります。

欠落する値の置き換え

データセットの一部の列の値が欠落していて、不完全なことがよくあります。これを補って、パフォーマンスを向上させるために、AutoML は欠落する値/Null 値に値を入力します。

  • カテゴリカル列と日付列の場合、AutoML は欠落する値を列の最頻値 (最も頻度の高い値) で置き換えます。

  • 数値列と期間列の場合、AutoML は欠落する値を列の平均値 (平均) で置き換えます。

  • リスト列とテキストの場合、AutoML は欠落する値を空の文字列で置き換えます。

数値列の変換

各数値列には、標準のスカラが適合します。これには、元の数値列と、期間列およびリスト・サイズ列が含まれます。

数値列の値もビニングされてから、カテゴリカル値として使用されます。すでに存在する数値列のほかに、これらの新しいカテゴリカル・ビン列が別個に追加されます。各数値列は 4 つのビンに分割され、それぞれがその列の値の四分位数を表します。新規のビニングされた列は、カテゴリカル列として扱われます。

テキスト列とリスト列の変換

各テキスト列とリスト列には、データをトレーニングに必要な形式に変換するためのベクトライザが適合します。これは、SciKit Learn の TFIDF ベクトライザによって行われます。詳細は、こちらのドキュメントOpens in a new tabを参照してください。

次のパラメータが使用されます。

パラメータ
Convert to lowercase True
Stop Words なし
N-Gram Range (1.1)
Max Features 10000
Norm L2
バイナリ列

バイナリ列は 1 と 0 で構成されるように変換され、true 値は 1 にマッピングされます。

カテゴリカル列

カテゴリカル列は、one-hot エンコーディングOpens in a new tabされてからトレーニングに使用されます。

特徴量の削除

トレーニングの前の最後の手順として、冗長性の排除、トレーニング速度の改善、およびモデルの正確性の向上のために、特徴量の削除が実行されます。これは、Scikit Learn の SelectFPROpens in a new tab 関数を使用して行われます。

次のパラメータが使用されます。

パラメータ
スコアリング関数 f_classif
alpha 0.2
FeedbackOpens in a new tab