8.3 マイニング・モデルのエクスポートおよびインポート

機械学習モデルをエクスポートして、別のOracle Databaseインスタンスに(たとえば、開発データベースから本番データベースに)モデルを移動できます。

DBMS_DATA_MININGパッケージには、データベース・インスタンス間で機械学習モデルを移行するためのプロシージャが含まれています。

EXPORT_MODELは、単一のモデルまたはモデルのリストをダンプ・ファイルにエクスポートして、別のOracle Machine Learningデータベース・インスタンスでインポート、問合せおよびスコアリングできるようにします。

IMPORT_MODELはダンプ・ファイルを取得し、宛先データベースにモデルを作成します。

EXPORT_SERMODELは、単一のモデルをシリアライズされたBLOBにエクスポートするため、別のOracle Data Miningデータベース・インスタンスまたはOML Servicesにインポートおよびスコアリングできます。

IMPORT_SERMODELは、シリアライズされたBLOBを取得し、宛先データベースにモデルを作成します。

8.3.1 モデルのエクスポートについて

モデルの構築の結果、各モデルには、評価用のモデル統計など、モデルに関する情報を提供する一連のモデル詳細ビューが含まれます。ユーザーは、これらのモデル詳細ビューを問い合せることができます。シリアライズされたモデルでは、スコアリングに必要なモデル・データおよびメタデータのみがシリアライズされたモデルで使用できます。これは、EXPORT_MODELプロシージャによって生成されるダンプ・ファイルよりもコンパクトで、宛先環境に高速に転送されます。

完全なモデルの詳細を保持するには、DMBS_DATA_MINING.EXPORT_MODELプロシージャおよびDBMS_DATA_MINING.IMPORT_MODELプロシージャを使用します。シリアライズされたモデルのエクスポートは、スコアを生成するモデルでのみ機能します。具体的には、属性重要度、相関ルール、指数平滑法またはO-Clusterはサポートされません(ただし、O-Clusterではスコアリングが可能です)。完全なモデル詳細が必要な場合は、EXPORT_MODELを使用してこれらのモデルおよびシナリオをエクスポートします。

8.3.2 Oracle Data Pumpについて

Oracle Data Pumpのコマンドライン・クライアントを使用して、スキーマまたはデータベースをエクスポートおよびインポートします。

Oracle Data Pumpは、2つのコマンドライン・クライアントと2つのPL/SQLパッケージで構成されています。コマンドライン・クライアント(expdpおよびimpdp)により、データ・ポンプ・エクスポートおよびインポート・ユーティリティに対する使いやすいインタフェースが提供されます。expdpimpdpを使用して、スキーマ全体またはデータベース全体をそれぞれエクスポートおよびインポートできます。

データ・ポンプ・エクスポート・ユーティリティは、データ・マイニング・モデルを構成する表およびメタデータを含むスキーマ・オブジェクトを、ダンプ・ファイル・セットに書き出します。データ・ポンプ・インポート・ユーティリティは、ダンプ・ファイル・セットからモデル表およびメタデータを含むスキーマ・オブジェクトを取得し、それらをターゲット・データベースにリストアします。

expdpおよびimpdpは、個々のデータ・マイニング・モデルのエクスポートおよびインポートには使用できません。

関連項目:

Oracle Data Pumpと、expdpおよびimpdpユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください

8.3.3 マイニング・モデルのエクスポートおよびインポート用オプション

マイニング・モデルのエクスポートおよびインポート用のオプションをリストします。

マイニング・モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。

表8-1 Oracle Data Mining for SQLのエクスポートおよびインポートのオプション

タスク 説明

データベース全体のエクスポートまたはインポート

(DBAのみ)データベース全体のエクスポートにはexpdpを、データベース全体のインポートにはimpdpを使用します。データベース内のすべてのデータ・マイニング・モデルが含まれます。

スキーマのエクスポートまたはインポート

スキーマのエクスポートにはexpdpを、スキーマのインポートにはimpdpを使用します。スキーマ内のすべてのデータ・マイニング・モデルが含まれます。

データベース内またはデータベース間のモデルのエクスポートまたはインポート

1つ以上のモデルのエクスポートにはDBMS_DATA_MINING.EXPORT_MODELを使用し、1つ以上のモデルのインポートにはDBMS_DATA_MINING.IMPORT_MODELを使用します。これらのプロシージャは、単一のデータ・マイニング・モデル、すべてのデータ・マイニング・モデルまたは特定の基準に一致するデータ・マイニング・モデルをエクスポートおよびインポートできます。

モデルをインポートするには、CREATE TABLECREATE VIEWおよびCREATE MINING MODEL権限が必要です。

リモート・データベースに対する個々のモデルのエクスポートまたはインポート

リモート・データベースへの個々のモデルのエクスポートまたはリモート・データベースからの個々のモデルのインポートを行うには、データベース・リンクを使用します。データベース・リンクとは、別のデータベースのオブジェクトへのアクセスを可能にする、あるデータベースのスキーマ・オブジェクトです。このリンクは、EXPORT_MODELまたはIMPORT_MODELを実行する前に作成する必要があります。

プライベート・データベース・リンクを作成する場合、CREATE DATABASE LINKシステム権限が必要です。パブリック・データベース・リンクを作成する場合、CREATE PUBLIC DATABASE LINKシステム権限が必要です。また、リモートのOracle Databaseに対するCREATE SESSION権限が必要です。なお、ローカルとリモートの両方のOracle Databaseに、Oracle Netをインストールしておく必要があります。

シリアライズされたモデルのエクスポートおよびインポート

Oracle Database 18c以降、スコアリングをサポートする軽量のアプローチとして、シリアライズされたモデル形式が導入されました。DBMS_DATA_MINING.EXPORT_SERMODELプロシージャは、単一のモデルをシリアライズされたBLOBにエクスポートするため、別のOracle Data Miningデータベース・インスタンスでインポートおよびスコアリングできます。DBMS_DATA_MINING.IMPORT_SERMODELは、シリアライズされたBLOBを取得し、ターゲット・データベースにモデルを作成します。

8.3.4 EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト

ディレクトリ・オブジェクトを使用して、モデルを含むダンプ・ファイル・セットの場所を識別する方法を学習します。

EXPORT_MODELおよびIMPORT_MODELは、ディレクトリ・オブジェクトを使用してダンプ・ファイル・セットの場所を特定します。ディレクトリ・オブジェクトとは、ホスト・コンピュータ上の物理ディレクトリのデータベース内での論理名です。

データ・マイニング・モデルをエクスポートするには、ディレクトリ・オブジェクトおよびそれが表すファイル・システム・ディレクトリに対する書込みアクセス権を持っている必要があります。データ・マイニング・モデルをインポートするには、ディレクトリ・オブジェクトおよびファイル・システム・ディレクトリに対する読取りアクセス権を持っている必要があります。また、データベース自体にはファイル・システムのディレクトリに対するアクセス権が必要です。ディレクトリ・オブジェクトを作成するにはCREATE ANY DIRECTORY権限が必要です。

次のSQLコマンドを実行すると、dmdirという名前のディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトが表すファイル・システム・ディレクトリは、すでに存在している必要があり、さらにオペレーティング・システムによって付与される共有の読取りおよび書込みアクセス権を所有している必要があります。たとえば、ディレクトリ・パスが/home/dmuserの場合、コマンドは次のようになります。

CREATE OR REPLACE DIRECTORY dmdir AS '/home/dmuser';

次のSQLコマンドを実行すると、dmuser_dirへの読取りおよび書込みアクセス権の両方がユーザーdmuserに付与されます。

GRANT READ,WRITE ON DIRECTORY dmdir TO dmuser;

8.3.5 EXPORT_MODELおよびIMPORT_MODELの使用

この例は、EXPORT_MODELIMPORT_MODELを使用した様々なエクスポートおよびインポート・シナリオを示しています。

各例では、例8-1に示すディレクトリ・オブジェクトdmdirと、2つのスキーマdm1およびdm2を使用します。どちらのスキーマもデータ・マイニング権限を持っています。dm1には2つのモデルがあります。dm2には1つのモデルがあります。

SELECT owner, model_name, mining_function, algorithm FROM all_mining_models where OWNER='DM1';

出力内容は次のようになります。

OWNER      MODEL_NAME           MINING_FUNCTION      ALGORITHM
---------- -------------------- -------------------- --------------------------
DM1        EM_SH_CLUS_SAMPLE    CLUSTERING           EXPECTATION_MAXIMIZATION
DM1        DT_SH_CLAS_SAMPLE    CLASSIFICATION       DECISION_TREE
DM2        SVD_SH_SAMPLE        FEATURE_EXTRACTION   SINGULAR_VALUE_DECOMP

例8-1 ディレクトリ・オブジェクトの作成

-- connect as system user
CREATE OR REPLACE DIRECTORY OMLDIR AS '/home/oracle';
GRANT READ, WRITE ON DIRECTORY OMLDIR TO DM1;
GRANT READ, WRITE ON DIRECTORY OMLDIR TO DM2;
SELECT * FROM all_directories WHERE directory_name = 'DMDIR';

出力内容は次のようになります。


OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS        DMDIR                      /home/dmuser

例8-2 DM1からのすべてのモデルのエクスポート

-- connect as DM1
BEGIN
  dbms_data_mining.export_model (
                   filename =>   'all_DM1',
                   directory =>  'DMDIR');
END;
/
 

ログ・ファイルとダンプ・ファイルは、DMDIRに関連付けられている物理ディレクトリ/home/dmuserで作成されます。ログ・ファイルの名前はdm1_exp_11.logです。ダンプ・ファイルの名前はall_dm101.dmpです。

例8-3 元のDM1へのモデルのインポート

例8-2でエクスポートされたモデルが、まだdm1に存在しています。インポートにより同じ名前のモデルが上書きされることはないため、モデルを同じスキーマに戻す前に、同じ名前のモデルを削除する必要があります。

BEGIN
  dbms_data_mining.drop_model('EM_SH_CLUS_SAMPLE');
  dbms_data_mining.drop_model('DT_SH_CLAS_SAMPLE');
  dbms_data_mining.import_model(
                   filename => 'all_dm101.dmp',
                   directory => 'DMDIR');
END;
/
SELECT model_name FROM user_mining_models;
 

出力内容は次のようになります。

MODEL_NAME
------------------------------
DT_SH_CLAS_SAMPLE
EM_SH_CLUS_SAMPLE

例8-4 別のスキーマへのモデルのインポート

この例では、例8-2DM1からエクスポートされたモデルが、DM2にインポートされます。DM1スキーマではUSER1表領域を使用し、DM2スキーマではUSER2表領域を使用します。

-- CONNECT as sysdba 
BEGIN
  dbms_data_mining.import_model (
                   filename => 'all_d101.dmp',
                   directory => 'DMDIR',
                   schema_remap => 'DM1:DM2',
                   tablespace_remap => 'USER1:USER2');
END;
/
-- CONNECT as DM2
SELECT model_name from user_mining_models;
 

MODEL_NAME
--------------------------------------------------------------------------------
SVD_SH_SAMPLE
EM_SH_CLUS_SAMPLE
DT_SH_CLAS_SAMPLE

例8-5 特定のモデルのエクスポート

単一のモデル、モデルのリストまたは特定の特性を共有するモデルのグループをエクスポートできます。

-- Export the model named dt_sh_clas_sample
EXECUTE dbms_data_mining.export_model (
             filename => 'one_model', 
             directory =>'DMDIR',
             model_filter => 'name in (''DT_SH_CLAS_SAMPLE'')');
-- one_model01.dmp and dm1_exp_37.log are created in /home/dmuser

-- Export Decision Tree models
EXECUTE dbms_data_mining.export_model(
             filename => 'algo_models',
             directory => 'DMDIR',
             model_filter => 'ALGORITHM_NAME IN (''DECISION_TREE'')');
-- algo_model01.dmp and dm1_exp_410.log are created in /home/dmuser

-- Export clustering models 
EXECUTE dbms_data_mining.export_model(
             filename =>'func_models',
             directory => 'DMDIR',
             model_filter => 'FUNCTION_NAME = ''CLUSTERING''');
-- func_model01.dmp and dm1_exp_513.log are created in /home/dmuser

8.3.6 シリアライズされたモデルのEXPORTおよびIMPORT

Oracle Databaseリリース18c以降、EXPORT_SERMODELプロシージャとIMPORT_SERMODELプロシージャが、データベースとの間でシリアライズされたモデルのエクスポートまたはインポートに使用できます。

シリアライズ形式を使用すると、モデルをスコアリング用の別のデータベース・インスタンスまたはOMLサービスに移動できます。モデルは、シリアライズされたBLOBにエクスポートされます。インポート・ルーチンは、BLOBでシリアライズされたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。

8.3.7 PMMLからのインポート

Predictive Model Markup Language (PMML)で表現された回帰モデルをインポートできます。

PMMLは、Data Mining Group (https://dmg.org/)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Data Miningでは、回帰モデルに対応するPMML 3.1のコア機能をサポートしています。

PMMLで表現された回帰モデルをインポートできます。モデルのタイプは、RegressionModel (線形回帰またはバイナリ・ロジスティック回帰)である必要があります。