36.2.4 パーティション化されたモデルについて

複数のモデルを編成および表現するパーティション化されたモデルについて説明します。

Oracle Machine Learning for SQLでは、永続的なOML4SQLパーティション化モデルの作成をサポートしています。パーティション化されたモデルでは、複数のモデルが単一のモデル・エンティティ内のパーティションとして編成され表現されるため、独立したデータのスライスにあわせてモデルを簡単に作成および管理できます。永続的とは、パーティション化されたモデルがディスク上の表現を持つことを意味します。OML4SQLにより、パーティション化されたモデルの編成が管理され、パーティション化されたモデルのスコアリング・プロセスが簡略化されます。スコアリング時、USING句の一部としてパーティション列を含める必要があります。GROUPINGヒントは、パーティション化されたモデルをスコアリングするときに、機械学習スコアリング関数に適用されるオプションのヒントです。

パーティション化されたモデルのパーティション名、キー値および構造は、ALL_MINING_MODEL_PARTITIONSビューで得られます。

参照:

GROUPINGヒントの使用方法は、『Oracle Database SQL言語リファレンス』を参照してください。

36.2.4.1 パーティション化されたモデルの作成プロセス

Oracle Machine Learning for SQLでパーティション化されたモデルを作成するには、パーティション化キーが必要です。

パーティション化キーとは、入力データ・セットからの1つ以上列(最大16)で構成されるカンマ区切りリストです。パーティション化キーは、パーティション化キーの離散値に基づいて、入力データを水平方向にスライスします。つまり、パーティション化は、連続した値に対する範囲のパーティション化とは対照的に、リスト値として実行されます。パーティション化キーは、NUMBERおよびVARCHAR2のデータ型の列のみをサポートしています。

作成プロセス中、入力データ・セットは、指定されたキーの個別値に基づいてパーティション化されます。各データ・スライス(一意のキー値)が、その独自のモデル・パーティションとなります。結果として作成されるモデル・パーティションは分かれておらず、スタンドアロン・モデルとして表示されません。パーティション化されたモデルのパーティションの最大数のデフォルト値は、1000パーティションです。異なるパーティション値を設定することもできます。入力データ・セットのパーティション数が、定義された最大数を超えている場合、OML4SQLによって例外がスローされます。

パーティション化されたモデルでは、すべてのパーティションに共通の特徴、およびパーティション固有の特徴が編成されます。共通の特徴は、次のメタデータで構成されます。

  • モデル名

  • 機械学習ファンクション

  • 機械学習アルゴリズム

  • すべてのパーティションによって参照される、すべてのmachine learningモデル属性のスーパー・セット(シグネチャ)

  • ユーザー定義列変換の共通セット

  • グローバルと解釈されるユーザー指定またはデフォルトの作成設定。たとえば、Auto Data Preparation (ADP)設定

36.2.4.2 パーティション化されたモデル内のDDL

パーティション化されたモデルのDDL操作を使用したメンテナンスについて説明します。

パーティション化されたモデルは、次のDDL操作を通じて管理されます。

36.2.4.2.1 モデルの削除またはパーティションの削除

Oracle Machine Learning for SQLは、特定のパーティション名の単一のモデル・パーティションの削除をサポートしています。

1つのパーティションしか残っていない場合、そのパーティションを明示的に削除することはできません。かわりに、そのパーティションを削除する前に別のパーティションを追加するか、モデル自体の削除を選択できます。パーティション化されたモデルを削除する場合、すべてのパーティションは、単一のアトミック操作で削除されます。パフォーマンスの観点から、DROP_PARTITIONオプションは効率的に動作するため、REPLACEオプションを使用するのではなく、DROP_PARTITIONADD_PARTITIONの順に実行することをお薦めします。

36.2.4.2.2 パーティションの追加

Oracle Machine Learning for SQLは、単一のパーティションまたは複数のパーティションの既存のパーティション化されたモデルへの追加をサポートしています。

追加は、入力データ・セットおよび既存のパーティション化されたモデルの名前に基づいて発生します。操作は、入力データ・セットおよび既存のパーティション化されたモデルをパラメータとして使用します。パーティション・キーは、入力データ・セットから抽出され、モデル・パーティションは入力データ・セットに対して作成されます。このパーティションは、パーティション化されたモデルとして追加されます。新規パーティションのパーティション・キーがモデル内の既存パーティションと競合する場合、次の3つの手法から選択して競合を解決できます。

  • ERROR: パーティションを追加することなくADD操作を終了します。

  • REPLACE: 競合するキーが検出された既存のパーティションを置き換えます。

  • IGNORE: 競合するキーがある行を排除します。

入力データ・セットに複数のキーが含まれている場合、複数のパーティションが作成されます。モデル内のパーティションの合計数が、モデルの作成時に指定したユーザー定義最大数を超えると、エラーが発生します。パーティション数のデフォルトしきい値は1000です。

36.2.4.3 パーティション化されたモデルのスコアリング

パーティション化されたモデルのスコアリングについて説明します。

パーティション化されたモデルのスコアリングは、パーティション化されていないモデルのそれと同じです。機械学習ファンクションの構文は同じですが、オプションのヒントを提供するように拡張されています。オプションのヒントは、パーティション化されたモデルのスコアリングを含む問合せのパフォーマンスに影響を及ぼす可能性があります。

パーティション化されたモデルのスコアリングでは、パーティショニング・キーの作成中に使用されるシグネチャ列が、スコアリング・データセットに存在している必要があります。この列は、一意のパーティション・キーを形成するために組合されます。この一意のキーは、特定の基底となるモデル・パーティションにマップされ、識別されたモデル・パーティションがその行のスコアリングに使用されます。

スコアリングに必要なパーティション化オブジェクトが、問合せの実行時にオンデマンドでロードされ、システム・グローバル領域(SGA)メモリーに応じて有効期限が切れます。