ターゲット式のカスタマイズ¶
ターゲット式をカスタマイズすることによって、Eureqaモデルをカスタムチューニングすることができます。 式は、Eureqaモデルの構築ブロックのネストされた組み合わせである場合があります。 たとえば、a、b、およびcが入力特徴量である場合、式の例には次が含まれる可能性があります。
- Target = 10 * a + b * c
- Target = if( a > 10, b, c) + 15
ターゲット式の概要¶
ターゲット式を使用して、作成するモデルのタイプを指定できます。 デフォルトでは、ターゲット式は、すべての入力特徴量の関数としてターゲット特徴量をモデル化する方程式です。
実際のターゲット特徴量名に関係なく、ターゲット式はform "Target = "の形式で作成する必要があります。 たとえば、ターゲット特徴量loan_is_bad(またはdefault_rate、Sales、purchase_priceなど)のターゲット式を作成するには、"Target = f(...)"の形式を使用します。 DataRobotでは、データセットで定義されたデフォルトのターゲット特徴量および入力特徴量を使用して、選択されたEureqaモデルタイプのターゲット式が提供されます。 ターゲット特徴量Targetおよびxの1~nの入力特徴量に対して、各検索テンプレートのデフォルトのターゲット式は次のようになります。
- 数値検索テンプレート:ターゲット = f(x1 ... xn)
- 分類検索テンプレート:ターゲット = logistic(f0() + f2() * f1(x1 ... xn))
- 指数検索テンプレート:Target = exp(f0(x1 ... xn)) + f1()
上級ユーザーは複雑な式を使用して、多項方程式や二値分類のモデリングを始めとする複雑な関係性を指定および検索できます。
Target Expressionパラメーター(target_expression_string)は、予測モデルのパラメーター内で使用することができ、Eureqaモデルのチューニングの一環として変更できます。
指数検索テンプレート¶
Eureqaモデル用のデータセットで指数トレンドが検出されると、exp()関数が適用されます。 このプロセスの一環として、全ての入力特徴量のlog()が取得され、変換された特徴量が操作されて最終的なターゲット値が取得された後、exp()を使用してログ変換が反転されます。
exp()構築ブロックはデフォルトで無効化されます。 指数トレンドを含むデータのあるプロジェクト内のモデルのターゲット式をカスタマイズする場合、モデルに対してexp()を有効にして、DataRobotでのモデル構築中にexp()を有効にすることができます。
ヒント
Eureqa GAMモデルの場合のみ:exp()サポートを有効にした場合、exponentialをEUREQA_target_expression_formatパラメーターの特徴量として選択することをお勧めします。
式の例¶
ここでは、ターゲット式として作成できる基本的な式と高度な式の例をいくつか示します。 次の例では、データセットにw、x、y、およびzという名前の4つの特徴量が含まれると仮定します。
基本的な例¶
ターゲット特徴量を特徴量xの関数としてモデル化します。
Target = f(x)
ターゲット特徴量を2つの特徴量(xおよびz)の関数としてモデル化します。
Target = f(x, z)
ターゲット特徴量をxおよび式sin(z)の関数としてモデル化します。
Target = f(x, sin(z))
備考
この例に示すように、sin(z)を含め、zを除外した場合、DataRobotは、サイン関数の後でなければ特徴量z内のデータにアクセスできなくなります。
複数の関数¶
複数の関数をターゲット式で使用するには、f0()から始まる数字付き関数を使用します。 例:
Target = f0(x) + f1(w, z)
ターゲット特徴量をx、w、およびべき乗則の関係性がある関数としてモデル化します。
Target = f(x, w, x^f1(), w^f2())
2つの既知のモデルでメカニズムが変化したことを確認します。
Target = if(x > f1(),exp(f2() * x), exp(f3() * x))
ターゲット式形式の制約(GAMのみ)¶
GAMモデルの場合、EUREQA_target_expression_formatパラメーターを有効にして、モデルの式形式を制約できます。 デフォルトでは、式形式の制約はありません。
- exponential は、次のようにターゲット式を指数形式に制約します。
Target = exp(f(...))
たとえば、次のデフォルトのターゲット式の場合:Target = f(var1, var2, var3)を指数形式に制約すると、Target = exp(f(var1, var2, var3))になります。
- feature_interactionはターゲット式を制約し、特徴量間で検出された交互作用を関数として含めます。 その結果、特徴量の相互作用(インタラクション)が明示的に宣言されます。 たとえば、モデルで特徴量xおよびyのインタラクションが検出された場合、式は次のようになります。
Target = n + f(x, y)
(ここで、nはデータセットのその他の特徴量を識別します)
係数の適合¶
不明な定数または係数を引数なしの関数、f()として表すことができます。 f1()のように引数なしの関数をいくつか使用して、任意の非線形方程式の係数に適合させることができます。 たとえば、次のような形式の多項式を探している場合を考えてみます。
Target = a * x + b * x^2 + c * x^3
この場合、次のターゲット式を使用します。
Target = f0() * x + f1() * x^2 + f2() * x^3
ネストされた関数¶
ターゲット特徴量を連続値または反復関数として3の深度でモデル化します。
Target = f(f(f(x)))
二値分類¶
yが0と1で補填された二値特徴量である場合、ロジスティック関数のようなスカッシング関数を使用してモデル化します。 DataRobotを分類に使用した場合、いくつかの利点があります。
- モデルを検索する際に必要なデータの量が少ない
- モデルは非常に適切に補完されることがある
- 検出されたモデルはシンプルで分析、再フィッティング、および再使用が可能
- モデルの構造は分類問題のインサイトを提供するので、予測に加えて、分類がどのように機能するかについて知ることができる
基本的な二値分類¶
ターゲット特徴量をxおよびwのバイナリ関数としてモデル化します。
Target = logistic(f(x, w))
ロジスティック関数は0~1の中間値(0.77や0.0001など)を生成するので、最終的な0または1の出力を取得するために値にしきい値を設定する必要があることに注意してください。
モデルの制約¶
ターゲット式を使用してモデル出力に制約を加えることもできます。 ターゲット式にrequireおよびcontains関数を含めて、特定のモデル構築または出力動作を強制することができます。
ヒント
require およびcontainsは非常に高度な「実験的」設定なので、DataRobotで解を見つけることが困難になり、モデル検索の速度が顕著に遅くなることがあります。 これらの設定を使用する場合は、出力の動作が保証されないのでDataRobotに支援を要請することを強くお勧めします。
特徴量または用語の追加¶
特定の特徴量または条件をEureqaモデルに表示する必要がある場合、requireまたはcontains関数をネストする条件を追加します。
yをxの関数として、x^2条件を含む必要のあるすべてのプロジェクトでモデル化します。
Target = f(x) + 0 * require(contains(f(x),x^2))
これが機能するには、contains演算子の最初の条件が適合させようとする関数条件(この例ではf(x))に完全に一致する必要があります。 2番目の条件を0で乗算することによって、特定の解f(x)によって生成される値に影響することを防止します。
制約を追加する¶
準拠する必要のある特定の要件がある場合(「価格 > 原価」など)、モデル出力で制約を強制することもできます その場合、require関数を含む条件を追加します。
yをxの関数として、出力値が0よりも大きい必要のあるすべての解でモデル化します。
Target = f(x) + require( f(x) > 0 )
高速な代替方法を以下に示します。
Target = max( f(x), 0 )
条件を強制する¶
データを完全に説明しない既知の関係性がデータ内に存在することがあります。 たとえば、学術的理論に基づいて生成されたモデルがある場合、DataRobotを使用して、その既知のモデルと実際のデータの間の残差を適合させることができます。
Targetをxの関数としてモデル化します。x^2の関係性の既存のナレッジを使用し、残差をモデル化します。
Target = f0(a, b, c, d, e) + f1() * x^2
DataRobotではf1()が係数として解釈され、条件が適切にフィッティングされます。