DataRobot Prime¶
本機能の提供について
新規にDataRobot Primeモデルを作成する機能は、アプリケーションから削除されました。 これは既存のPrimeモデルやデプロイには影響しません。 将来的にPythonコードをエクスポートするには、任意のRuleFitモデルでPythonコードエクスポート関数を使用します。
DataRobot Primeは、DataRobotアプリケーションの外部で使用するモデルを構築します。DataRobot Primeには多くのメリットがあります。 作成した予測モデルは、PythonモジュールまたはJavaクラスとしてエクスポートして、エクスポートしたスクリプトを実行することができます。
正則化の形式である「知識蒸留」と呼ばれる手法を使用して、DataRobotは、元のリーダーボード(「教師」)モデルの予測をターゲットとして使用して、より小さな(「生徒」)モデルをトレーニングします。 ルールベースのPrimeモデルがリーダーボードに追加されると、その検証スコアをプロジェクト内の教師モデルや他のモデルと比較できます。
詳細:知識蒸留
知識蒸留とは、別のモデルの出力に基づいてモデルをトレーニングすることです。 この場合、初期モデルは「教師」モデルで、DataRobot Primeモデルは「生徒」になります。DataRobot Primeは、リーダーボードで選択したモデルと同等のパフォーマンスを発揮するパラメトリックモデル(有限数のパラメーターを持つモデル)を作成します。 すべての指標は、教師モデルの出力を予測する機能ではなく、ターゲットを予測するモデルの機能に対して計算されます。
知識蒸留は、効果的な正則化手法で、「真実」をより正確に予測するために使用します。真実の意味は、トレーニングデータとモデルのデプロイ後に得られるデータで異なる場合があります。 トレーニングデータでは、ターゲット列が真実です。 予測時には、(まだ不明でも)ターゲット列の値が最終的にどのようになるかを示します。
以下は単純な例です。
コインを投げて表(ヘッド)になる確率を予測するとします。 気温、風速、湿度、時刻、曜日(ワンホットエンコード)などの予測特徴量があります。
標準的なアプローチは、元のデータで予測することです(裏/テールの場合は0、表/ヘッドの場合は1)。 何千ものコイン投げのデータがあっても、モデルは過剰適合します。 たとえば、温度が67.013度、風速が10mphのたびにコインが表(ヘッド)になる場合は、モデルはこれが将来も普遍的に当てはまると結論付けます。
人間なら、コイン投げには温度と風速は影響しないことが分かっています—最良の予測は「ヘッドの確率は50%」です。したがって、その値を反映するようにターゲットを設定し、すべてが50%に設定されているデータでモデルをトレーニングします。 結果として得られる(学生の)モデルは、常に50%を予測します。これは、モデルが経験する唯一のターゲットであるためです。 これは素晴らしいモデルを生み出すでしょう—元のデータを使用したものよりも優れています。
この例は、付随する特徴量が実際には役に立たないことを知っていることが前提の、考案されたシナリオです。 そのポイントは、知識の蒸留を「人間が50%で投入する」方にわずかに移行するアプローチとして説明することですが、より現実的なシナリオに適した方法で説明します。
元のデータにはランダムな見込みが いくらか あります。 教師モデルでは通常、0%または100%の確率の予測を行いません。 代わりに、それは、適切な予測を行う方法の基礎となる構造の一部を明らかにします。 (構造の正確な量はモデルタイプによって異なります。) たとえば、コイン投げの例でツリーベースのモデルを使用した場合、「類似した」コイン投げがグループ化され、予測された結果が0および1にならないようになります—特徴量に基づいてコイン投げをグループ化します。 次に、その予測は各グループでの平均結果です。
たとえば、次のようなグループ化基準を満たすコイン投げを15回行ったとします。
- 午後1時~午後2時の間
- 10mph未満の風速*
- 65~70度の温度
これらの15回のコイン投げのうち、12回(80%)がヘッドで、3回(20%)がテールでした。 それを踏まえると、モデルはこれらの基準を満たす将来の何かについて、ヘッドの確率を80%と予測します。
ここでのポイントは、小さい(ナイーブな)モデルが教師モデルの構造から恩恵を受け、過剰適合が少なくなるということです。
DataRobot Primeモデルは、リーダーボードのほとんどのモデルに対して構築できます。 しかし、このタイプのモデルを作成できない場合があります。 その他の重要情報については、関連する注意事項を参照してください。
DataRobot Primeモデルを作成する¶
DataRobot Primeは、プロジェクトの元の指標に対して最適なバランスであると判断した数の特徴量を使用して、予測を作成します。 DataRobot Primeモデルを作成するには:
-
任意のモデリングモードを使用してデータセットを処理します。
-
DataRobot Primeを適用するモデルを展開します。DataRobot Primeタブをクリックします。
-
表示される画面でDATAROBOT PRIMEを実行をクリックします。 モデリングジョブがワーカーキューに追加され、処理が正常に完了したことを示すメッセージが表示されます。
ジョブが完了した後、新しいDataRobot Primeがモデルリーダーボードで使用できるようになります。 以下の説明では、モデル名に親モデルの名前とモデル番号に加えて、ダウンロード可能なコードで使用されるルールの数が含まれます。
-
新しいDataRobot Primeモデルを展開して、DataRobot Primeタブをクリックし、グラフ(ここを参照)を表示します。このグラフでは、10のルールカウントオプションがそれぞれの結果の指標スコアに対してプロットされます。
ルールカウントを変更する¶
DataRobotの初期設定では、最良のルールカウントに基づいてモデルの構築が行われます。 しかし、ルールカウントを変更する理由があります。 別のルールカウントを使用するには:
- グラフから、選択内容に含まれるルールの数を確認します。
- 該当するラジオボタンをクリックして、新しいルールカウントを選択します。
- 続行をクリックして新しいモデルのリクエストを確認します。 新しいルールカウントで新しいDataRobot Primeモデルが生成され、リーダーボードにエントリーが追加されます。
DataRobot Primeモデルをエクスポートする¶
DataRobot Primeモデルのパフォーマンスが満足できるものであることを確認したら、予測を作成するコードを生成してダウンロードできます。
生成コードをダウンロードする¶
生成コードをダウンロードするには:
-
左下にある言語を選択ドロップダウンを使用して、PythonまたはJavaのいずれかを選択します。
ヒント
生成されたソースコードをPythonで使用する際、UTF-8以外の文字セットを使用する場合はエンコーディングを指定する必要があります。
-
コードの生成とダウンロードをクリックします。 モデルのコードを初めて生成する場合、Prime検定ジョブが起動して、生成するソースコードの整合性のテストと検証が行われます。 ジョブの進捗状況はワーカーキューで監視できます。
-
テストが完了すると、検定が成功したか失敗したかを示すメッセージが表示され、コードをダウンロードするボタンが有効になります。
運用環境で使用するDataRobot Primeモデルコードをダウンロードするには、生成済みコードをダウンロードをクリックして、保存場所を指定します。 これで、コードをDataRobotの外部で使用して予測を作成することができます。
デバッグ情報を使用する¶
コードを作成するとき、DataRobotでは各行の予測が試行されます。例外またはエラーが発生すると、エラーがコード出力(stderr
)に記録されます。 生成コードの実行で問題が発生した場合、これらのメッセージを検索して、生成コードデータの整合性を検証できます。
たとえば、「正常」な生成コードでは以下が返されます。
def predict_dataframe(ds):
return ds.apply(predict, axis=1)
エラーコードの場合、次のような内容が返されます。
def predict_dataframe(ds):
try:
return ds.apply(predict, axis=1)
except TypeError as e:
sys.stderr.write('Error processing column: ' + unicode(e) +'\n')
os._exit(1)
DataRobot Primeモデルを使用する¶
選択した言語でDataRobot Primeモデルをエクスポートした後、エクスポートしたモデルを予測に使用できます。 詳細については、Primeの例のセクションを参照してください。
詳しい情報...¶
このセクションでは、DataRobot Primeモデルに関する追加の詳細情報に加えて、検定が失敗した場合のヒントを提供します。
DataRobot Primeを使用する理由¶
DataRobot Primeは、以下を提供することによってモデルの透明性というDataRobotの目標をサポートします。
- 生成されたモデルおよびスコアリングコード。
- データの整合性を検証する係数モデル。
- 複数言語のサポート。
- DataRobot環境と(プライバシーの理由などで)必ずしも通信できないシステムへのDataRobotの統合。
- リーダーボードにも表示されるPrimeモデルによって立証されるパフォーマンスの証明。
- API呼び出しのオーバーヘッドなしでの低レイテンシースコアリング。 たとえば、リアルタイムの低レイテンシースコアリングプラットフォームでGLMとカスタムコードを使用する場合、C++やJavaなどの高速な言語のルールベースのシステムでは、低レイテンシープラットフォーム上でDataRobotのPrimeコードエクスポートを使用して、API呼び出し時間のオーバーヘッドなしで直接スコアリングを行うことができます。
DataRobot Prime モデルの詳細¶
各グラフの結果の指標スコアに対してルールオプションがプロットされたグラフを表示するには、リーダーボードでDataRobot Primeモデルを展開し、DataRobot Primeタブをクリックします。
既存のPrimeモデルのDataRobot Primeタブページの要素を次の表に示します。
要素 | 説明 |
---|---|
複雑性対 |
元のプロジェクトビルドで使用されたメトリックが表示されます。 |
ルールカウントオプション(2) | 10のルールカウントオプション、およびモデルで使用できる関連付けられたメトリック価が一覧表示されます。 異なるルールカウントで新しいモデルを構築するには、ラジオボタンをクリックします。 |
言語選択(3) | ダウンロード可能なコードの言語を選択する仕組みを提供します。 |
コード生成リンク(4) | DataRobot Primeモデルのエクスポートを行うためのコードの生成(およびダウンロード)プロセスを開始します。 |
ルールカウントを変更する理由¶
DataRobotの初期設定では、最良のルールカウントに基づいてモデルの構築が行われます。 しかし、より良いルールカウントがあることがグラフで確認できた場合、ルールカウントを変更してモデルの簡素化を行うことができます。 たとえば、選択された最良のルールよりも特定のルールカウントに含まれるルールの数が少ない場合、スコアリングペナルティは小さくなります。
ルールカウントを変更すると、新しいDataRobot Primeモデルが構築されて、リーダーボードに追加されます。 ブループリントからの以前のDataRobot Primeモデルも引き続き使用できます。 各モデルで個々にコードを生成してダウンロードする必要があります。
サポート対象の変換¶
特徴量に特徴量の型変換を適用し、変換した特徴量を使用して特徴量セットを作成する場合があります。 特徴量の型変換(DataRobotで検出および割り当てられたタイプからユーザーが選択したタイプへの変換)を使用してDataRobot Primeモデルを作成できます。 生成されたコードを変換された特徴量を含まないデータセット上で実行した場合、DataRobot Primeモデルは、最初の予測結果と同じ結果を返します。 変換では「NaN」値を定義できるので、生成されたコードに含まれる無効な値は、ユーザーが定義した値で置き換えられます。
DataRobot Primeでは、ユーザー定義の変換、対数変換、平方根変換、およびべき変換はサポートされません。 以下の特徴量の型の変換を使用できます。
変換前 | 変換後 |
---|---|
日付 | カテゴリー |
日付 | 数値 |
数値 | カテゴリー |
カテゴリー | 数値 |
カテゴリー | テキスト |
テキスト | カテゴリー |
テキスト | 数値 |
検定が失敗した場合¶
ごく希に、コード生成のリクエストに対する応答の検定でエラーメッセージが表示されることがあります。 このエラーの原因は2つあり、返されるメッセージにエラーの種類が表示されます。 エラーメッセージが表示された場合でもコードのダウンロードは可能です。 DataRobotカスタマーサポートにEメールを送信して問題を報告してください。 失敗の理由を以下に示します。
-
生成されたコードからの予測とDataRobot Primeモデルの予測の近似が十分でない。 この場合でも生成されたコードは引き続き実行できます。
-
データの問題やメモリー不足のエラーなどが原因で、生成されたコードを実行できない。 この場合、生成されたコードは実行できないことがあります。 問題がデータにある場合、コードは実行される可能性は低くなります。 メモリーエラーの場合、ローカルマシンのメモリーが十分であれば(コードを検証しようとするワーカーのメモリーが不十分であっても)コードは実行されることがあります。
状況によって異なる結果が得られると考えられる場合は、検定を再実行できます。 また、DataRobot Primeに関する注意事項を確認してください。 検定ジョブを再実行するには:
- DataRobot Primeモデルを削除します。
- モデルを再度実行します(元のモデルを再度実行するか、DataRobot Primeタブグラフから新しいモデルを生成します)。
- コードの生成とダウンロードをクリックして、検定ジョブを再度実行します。
それでも検定が失敗する場合は、エラーが示されるモデルのリンクをクリックします。 Eメールクライアントが開き、件名およびサポートによる問題のトラブルシューティングに役立つメッセージ本文を含むDataRobotカスタマーセンター宛のメッセージが作成されます。 必要に応じて、情報を追加することができます。
機能に関する注意事項¶
DataRobot Primeに適用される注意事項を以下に示します。
-
以下の場合、DataRobot Primeモデルをビルドできません。
- 画像、位置、日付、または集計されたカテゴリー特徴量、あるいは派生した特徴量が特徴量セットにある場合、または特徴量セットに単一列のテキストリストが含まれている場合。
- 多クラスプロジェクトの一部であるモデル。
-
日付/時刻のパーティショニングは、DataRobot Primeでは使用できません。
-
DataRobot Primeモデルは、元のモデルと同じ特徴量セット(および同じサンプルサイズ)上で実行する必要があります。
-
DataRobot Primeモデルから手動で交差検定を手動で起動することはできません。
-
DataRobot Primeを使用する場合、検定セットを含めるために十分なデータが残っている状態でモデルを実行する必要があります。 つまり、100%のデータでDataRobot Primeモデルの構築や再トレーニングはできません。 代わりに、ホールドアウトセットを0%に設定し、検定セットを小さくすることができます。 ただし、検定セットが小さすぎると、モデルの結果が適切に比較されないことに注意してください。 一般的に、検定セットは10%以上である必要があります。
-
DataRobot Primeでは、その他の予測メカニズムと同じレベルの日付/時刻形式のチェックは使用されません。 その結果、トレーニングデータと予測データの間の日付/時刻形式の不一貫性が原因で、不正確な予測が生成されることがあります(その他のDataRobotの予測メカニズムと同様に、日付値は明示的なエラーではなくNaNの結果になります)。 これが問題の原因とならないように、予測を実行する前に形式が同じであることを確認してください。
-
エクスポージャーおよびオフセットパラメーターが設定されている場合、DataRobot Primeは無効化されます。