手動変換¶
このセクションでは、ユーザー作成の手動による特徴量変換について説明します。 変換された特徴量によって元の特徴量が置換されることはありません。変換された特徴量は、モデル構築用の新しい追加特徴量として提供されます。
備考
変換された特徴量(ユーザー定義関数として作成された数値特徴量を含む)は、ウェイト、オフセット、エクスポージャー、およびイベント数などの特殊な特徴量には使用できません。
変換の作成¶
DataRobotは、数値データに対する自然対数への変換、積算、関数の実行など、データに適用する各種変換に対応しています。 (特徴量の特徴量の型を変更することもできます。) これらの変換は、特徴量のタイプに適切な場合にのみ使用できます。 以下のステップは、ユーザー変換の作成方法を示します。
-
変換可能な特徴量の上にカーソルを置き、特徴量名の左側に表示されているオレンジ色の矢印をクリックして変換メニューを表示します。
-
変換を選択します。 自然対数
log(<feature>)
または積算<feature>^2
オプションを選択した場合、変換が直ちに計算され、派生した特徴量が新規作成されます。 -
関数オプション
f(<feature>)
を選択した場合、新しい変換を追加するダイアログが表示されます。- 新しい特徴量の名前フィールドに、この変換の名前を入力します。 1つの特徴量に対して関数ベースの変換を複数作成することができます。
- サポートされている構文を使用して関数と特徴量を入力します。
- 作成をクリックして変換を作成します。
この機能には、メニューからアクセスすることもできます。
変換された特徴量がデータページに元の特徴量の下に表示されます(すべての特徴量)。 変換された特徴量は、新しい特徴量セットに含めることやモデリングに使用することができます。 予測用に変換された特徴量を含むモデルを使用する場合、DataRobotはアップロードされたデータセットに新しい特徴量を自動的に含めます。
他の特徴量と同様に、特徴量の名前をクリックして、ヒストグラム、チャート化された頻度の高い値、および値の表を表示できます。 しかし、追加の特徴量の型変換を行う代わりに、変換された特徴量と元となった特徴量が比較されます。
特徴量の型変換¶
DataRobotでの特徴量の型割り当てはEDAの間に見られた値に基づきます。データセットに含まれる各特徴量の特徴量の型がデータページの一覧表示されます。 しかし、特徴量の型を変更する必要がある場合もあるでしょう。 たとえば、市外局番は数値として解釈されますが、カテゴリーとしてマップすることが好ましい場合があります。 または、カテゴリー特徴量が数値としてエンコードされることがあります(1=yes, 2=no
などのように特徴量値にマップする場合)。この場合、変換なしでは数値として解釈されます。
特定のケースでは、特徴量の型変換は使用できません。 これらのケースには、整数値と浮動小数点値の両方に関してDataRobotで特殊列として識別された列が含まれます。 (日付列は特殊なケースであり、変換をサポートします。 単一特徴量の変換を参照してください。) さらに、単一の一意の非数値を除くすべての数値の列は、特殊なものとして扱われます。 この場合、DataRobotでは、一意の値がNaNに変換され、その値が失われることを防止するために変換が無効化されます。
備考
数値特徴量の型からカテゴリー特徴量に変換する場合、小数点以下の値は切り捨てられることに注意してください。 値は整数に丸められます。 また、欠損値を含む浮動小数点値をカテゴリー特徴量に変換する場合、新しい特徴量に変換されますが、丸め処理は行われません。 たとえば、9.9は10ではなく、9になります。
ヒント
DataRobotで予測を行う場合、予測データに含まれる列は元のデータと同じであることが予期されます。 モデルで元の変数と変換された変数を使用する場合、予測データでは、元の特徴量の名前を使用する必要があります。 DataRobotの内部で派生した特徴量が生成されます。
複数の特徴量の特徴量の型を同時に変換するか、1回で1つの特徴量を変換することができます。
複数の特徴量の変換¶
複数の特徴量の特徴量の型を単一のバッチ操作として変更するには、メニューから特徴量の型を変更オプションを使用します。 このオプションは、1つの特徴量の型のすべての特徴量を変換する場合などに便利です。
すべての特徴量または複数の特徴量を特定の特徴量の型から別の特徴量の型に変換できます。 たとえば、すべてのカテゴリー特徴量をテキストに変換することや、特定のカテゴリー特徴量だけを選択してテキストに変換することができます。 バッチ特徴量型変換を使用して作成されたすべての新しい特徴量は、データページのすべての特徴量セットから利用できます(任意の特徴量セットから特徴量を変換できますが、バッチ変換が完了したら、データページですべての特徴量を表示する必要があります)。 新しい特徴量をその他の特徴量セットに追加できます。
備考
複数の特徴量を一度に変換する場合は、以下の点に注意してください。
- 以前の変換操作の結果として作成された特徴量は変換できません。
- バッチ変換に選択したすべての特徴量は同じ特徴量の型である必要があります。
DataRobotで特徴量を変換できない場合は、特徴量のリストを修正してから変換を再試行してください。
-
最初に、次のいずれかの方法で変換する特徴量を選択します。
- 特徴量を手動で選択する場合:変換する各特徴量を選択します(1)。 以前に変換された特徴量が選択されていないこと(2)、および選択したすべての特徴量の特徴量の型が同じであること(3)を確認します。
- 特定の特徴量の型のすべての特徴量を選択する場合:メニューの特徴量の型で特徴量を選択から、データセットで変換する特徴量の型を選択します。 選択できるのはデータセットに含まれる特徴量の型だけです。
その特徴量の型のすべての特徴量が選択済みとしてデータページに表示されます(左側のボックスがチェックされます)。
-
メニューのアクションで特徴量の型を変えるをクリックします。 (リンクが無効化されている場合、選択した特徴量に問題があります。 無効化されたリンクの上にカーソルを置くと、DataRobotが選択した特徴量を変換できない理由が表示されます。 詳細については、オプションと構文の変換を参照してください。)
特徴量の型を変えるダイアログが表示されます。
備考
DataRobotでは、1回の操作で最大500の特徴量を変換できます。 変換に500以上の特徴量が選択されていることを示すメッセージが表示された場合、いくつかの特徴量の選択を解除する必要があります。
-
選択した特徴量の型で新しい特徴量を作成する方法を設定します。
コンポーネント | 説明 |
---|---|
選択された特徴量(1) | 選択した特徴量の数、特徴量の型、および変換に選択されたすべての特徴量の名前が識別されます。 |
特徴量の型変更オプション(2) | 選択した特徴量が表示され、変換のターゲット特徴量の型を選択するよう求めるメッセージが表示されます。 DataRobotで数値特徴量の型の特定の変換が実行されます。 |
新しい特徴量の接頭辞(3) | 元の特徴量名に適用して変換後の特徴量の名前を作成する接頭辞を指定します。 デフォルトの接頭辞(更新された_)を使用するか、独自の接頭辞を作成することができます。 プレフィックスを作成する場合は、- " . { } / \ を含めないようにしてください。 { } / `. サフィックスを定義した場合、プレフィックスは必須ではありません。 |
新しい特徴量の接尾辞(4) | 元の特徴量名に適用して変換後の特徴量の名前を作成する接尾辞を指定します。 デフォルトのサフィックス(新しい特徴量の型)を使用するか、独自のサフィックスを作成することができます。 (サフィックスを作成する場合は、- " . { } / \ を含めないようにしてください。 { } / ` . プレフィックスを定義した場合、サフィックスは必須ではありません。 |
新しい特徴量の名前(5) | 新しい(変換済み)特徴量の命名方法を示します:prefix_[original feature name]_suffix (実際の接頭辞とサフィックスが使用されます)。 |
変更(6) | 選択されたすべての特徴量から設定したターゲット特徴量の型で新しい特徴量が作成されます。 |
変更をクリックすると、選択した特徴量のリストが作成され、特徴量の型変換に送信されます。 特徴量が選択され、変換が開始されたことを示すメッセージが表示されます。
バックグラウンドで変換済み特徴量が作成されます。 処理が完了した新しい(変換済み)特徴量は、データページに表示されます(すべての特徴量)。 変換に選択した特徴量の数によっては、変換処理が終了してすべての新しい特徴量が使用可能になるまでに数分かかることがあります。 すべての変換が完了したことを示すメッセージが表示されます。
特徴量の変換の制限¶
DataRobotでは、一度に最大500の特徴量の変換がサポートされます。500を超える数の特徴量が選択されている場合、特徴量の型を変えるダイアログにメッセージが表示されます。
その場合、いくつかの特徴量の選択を解除して、選択されている特徴量の数を500以下にする必要があります。 特徴量の選択を解除するには、ダイアログを閉じて、データページで特徴量の選択を解除します。
変換に選択した特徴量の数が500以下になったことを確認して、特徴量の型を変更を選択します。
単一の特徴量の変換¶
単一の特徴量の特徴量の型を変更するには、次のいずれかの方法を使用します。
- 特徴量の変換メニューを表示し、特徴量の型の変更、または
- 特徴量のヒストグラムを表示し、特徴量の型変換をクリックします。
いずれの方法でも同じダイアログが開きますが、ダイアログは選択した特徴量の特徴量の型に応じて異なります。
カテゴリー特徴量の変換の設定を次の表に示します。
コンポーネント | 説明 |
---|---|
現在の特徴量の型変換(1) | 特徴量に関連付けられた現在の特徴量の型が表示されます。 |
変換オプション(2) | ドロップダウンを使用して、現在の特徴量で使用可能な特徴量の型から新しい特徴量の型を選択します。 DataRobotで数値およびカテゴリー特徴量の型の特定の変換が実行されます。 |
新しい特徴量の名前(3) | 新しい特徴量の名前を入力するフィールドが提供されます。 デフォルトでは、新しい特徴量の型が追加された既存の特徴量名が使用されます。 |
特徴量セットの適用(4) | 新しい特徴量を追加する特徴量セットを選択します。 「すべての特徴量」に追加するか、ドロップダウン(5)を使用して特定のリストに追加します。 |
特徴量セットの選択(5) | プロジェクトから特徴量セットを選択するドロップダウンが提供され、特徴量を追加するセットを選択できます。 |
特徴量の作成(6) | 新しい特徴量を作成します。 データページで新しい特徴量が元の特徴量の下に表示されます。 |
同じ特徴量から任意の数の変換を作成できます。 デフォルトでは、各変換に一意の名前が適用されます。 間違って作成された重複した特徴量は、重複としてマークされ、処理において無視されます。
日付変換の例を以下に示します。日付固有の派生を選択できます。 また、結果をカテゴリーとして扱うか数値として扱うかを選択することもできます。
数値特徴量からカテゴリー型特徴量への変換の例を以下に示します。
オプションと構文の変換をクリックします。¶
PythonのNumexpパッケージを使用して列値(特徴量)のユーザー変換が作成されます。 変換メニューから関数オプション、f()
を選択すると、ユーザー変換の構文を入力するダイアログが表示されます。 以下に、DataRobotのNumexpr
のアプリケーションについて説明し、いくつかの例を示します。
備考
DataRobot APIは、特徴量型の変換のみをサポートしています。
変換を作成するには、特徴量名を中カッコ{}
で囲んで入力し、適切な関数および演算子を適用します。 DataRobotでは、特徴量名でオートコンプリート機能が提供されます。最初の中カッコの後ろをクリックすると、選択される特徴量のリストから選択できます。
以下の点に注意してください。
- 特徴量名では大文字と小文字が区別されます。
- 日付型の特徴量を変換することはできません。 代わりに、派生した特徴量などから新しい特徴量を作成できます(
Timestamp (Hour of Day
など)。 - ターゲットで特徴量の変換を行うことはできません。
使用できる機能 | 説明 |
---|---|
log({feature}) |
自然対数 |
sqrt({feature}) |
平方根 |
abs({feature}) |
絶対値 |
where({feature1} operator {feature2}, value-if-true, value-if-false) |
If-Then-Else(条件分岐)機能 |
使用できる2進算術演算子の一覧を以下に示します。 (1 + 2) * (3 + 4)
のようにカッコを使用して演算子のグループ化と順序設定を行います。 単一の変換で複数の特徴量を呼ぶことができます({number_inpatient} + {num_medications}
など)。
サポートされる算術演算子を以下に示します。
- +(加算)
- –(減算)
- *(乗算)
- / (除算)
- **(べき乗)
比較演算子も使用できますが、where()
関数(where({feature1} operator {feature2}, value-if-true, value-if-false)
など)内にラップする必要があります。 サポートされる比較演算子を以下に示します。
- <、>(より小さい、より大きい)
- == (等しい)
- ! = (等しくない)
- <=、>=(より小さいまたは等しい、より大きいまたは等しい)
欠損値を含む比較演算子¶
データセットに欠損値(NaN)がある場合、特徴量値と入力値を比較する変換を適用するには、特に配慮が必要です。 NaN値との比較演算子を使用してステートメントを作成した場合(元の特徴量がNaNであれば、目標が派生した特徴量がNaNを返すことである場合)、必ず想定された動作と結果を比較してください。
たとえば、次のステートメントを使用した特徴量sales
からexcellent_sales
への変換では、売上がNaNである場合、常にFalseが返されます。 特徴量sales
のデータに欠損値がある場合であっても、欠損値は結果で返されません。
Excellent_Sales = where({Sales}>300000,1,0)
これが目的の結果でない場合、次のような式を検討してください。
Excellent_Sales = where(~({Sales} > 300000) & ~({Sales} <= 300000), {Sales}, where({Sales} > 300000, 1,0))
以下に変換の例をいくつか示します。
OrderOfMag = log({NumberOfLabs})
Success = sqrt({sales} + 10)
CostBreakdown = abs({sales} - {costs})
IsRich = where({YearlyIncome} > 1000000, 1, 0)