7.3 Oracle Machine Learning for SQLモデルのエクスポートとインポート
機械学習モデルをエクスポートして、別のOracle Databaseインスタンスに(たとえば、開発データベースから本番データベースに)モデルを移動できます。
DBMS_DATA_MINING
パッケージには、データベース・インスタンス間で機械学習モデルを移行するためのプロシージャが含まれています。
EXPORT_MODEL
は、単一のモデルまたはモデルのリストをダンプ・ファイルにエクスポートして、別のOracle Machine Learningデータベース・インスタンスでインポート、問合せおよびスコアリングできるようにします。
IMPORT_MODEL
はダンプ・ファイルを取得し、宛先データベースにモデルを作成します。
EXPORT_SERMODEL
は、単一のモデルをシリアライズされたBLOB
にエクスポートするため、別のOracle Machine Learningデータベース・インスタンスまたはOML Servicesにインポートおよびスコアリングできます。
IMPORT_SERMODEL
は、シリアライズされたBLOB
を取得し、宛先データベースにモデルを作成します。
7.3.1 モデルのエクスポートについて
モデルの構築の結果、各モデルには、評価用のモデル統計など、モデルに関する情報を提供する一連のモデル詳細ビューが含まれます。ユーザーは、これらのモデル詳細ビューを問い合せることができます。シリアライズされたモデルでは、スコアリングに必要なモデル・データおよびメタデータのみがシリアライズされたモデルで使用できます。これは、EXPORT_MODEL
プロシージャによって生成されるダンプ・ファイルよりもコンパクトで、宛先環境に高速に転送されます。
完全なモデルの詳細を保持するには、DMBS_DATA_MINING.EXPORT_MODEL
プロシージャおよびDBMS_DATA_MINING.IMPORT_MODEL
プロシージャを使用します。シリアライズされたモデルのエクスポートは、スコアを生成するモデルでのみ機能します。具体的には、属性重要度、相関ルール、指数平滑法またはO-Clusterはサポートされません(ただし、O-Clusterではスコアリングが可能です)。完全なモデル詳細が必要な場合は、EXPORT_MODEL
を使用してこれらのモデルおよびシナリオをエクスポートします。
7.3.2 Oracle Data Pumpについて
Oracle Data Pumpのコマンドライン・クライアントを使用して、スキーマまたはデータベースをエクスポートおよびインポートします。
Oracle Data Pumpは、2つのコマンドライン・クライアントと2つのPL/SQLパッケージで構成されています。コマンドライン・クライアント(expdp
およびimpdp
)により、データ・ポンプ・エクスポートおよびインポート・ユーティリティに対する使いやすいインタフェースが提供されます。expdp
とimpdp
を使用して、スキーマ全体またはデータベース全体をそれぞれエクスポートおよびインポートできます。
データ・ポンプ・エクスポート・ユーティリティは、機械学習モデルを構成する表およびメタデータを含むスキーマ・オブジェクトを、ダンプ・ファイル・セットに書き出します。データ・ポンプ・インポート・ユーティリティは、ダンプ・ファイル・セットからモデル表およびメタデータを含むスキーマ・オブジェクトを取得し、それらをターゲット・データベースにリストアします。
expdp
およびimpdp
は、個々の機械学習モデルのエクスポートおよびインポートには使用できません。
関連項目:
Oracle Data Pumpと、expdp
およびimpdp
ユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください
7.3.3 Oracle Machine Learning for SQLモデルのエクスポートとインポートのオプション
機械学習モデルのエクスポートおよびインポート用のオプションをリストします。
機械学習モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。
表7-1 Oracle Machine Learning for SQLのエクスポートおよびインポートのオプション
タスク | 説明 |
---|---|
データベース全体のエクスポートまたはインポート |
(DBAのみ)データベース全体のエクスポートには |
スキーマのエクスポートまたはインポート |
スキーマのエクスポートには |
データベース内またはデータベース間のモデルのエクスポートまたはインポート |
1つ以上のモデルのエクスポートには モデルをインポートするには、 |
リモート・データベースに対する個々のモデルのエクスポートまたはインポート |
リモート・データベースへの個々のモデルのエクスポートまたはリモート・データベースからの個々のモデルのインポートを行うには、データベース・リンクを使用します。データベース・リンクとは、別のデータベースのオブジェクトへのアクセスを可能にする、あるデータベースのスキーマ・オブジェクトです。このリンクは、 プライベート・データベース・リンクを作成する場合、 |
シリアライズされたモデルのエクスポートおよびインポート |
Oracle Database 18c以降、スコアリングをサポートする軽量のアプローチとして、シリアライズされたモデル形式が導入されました。DBMS_DATA_MINING.EXPORT_SERMODEL プロシージャは、単一のモデルをシリアライズされたBLOB にエクスポートするため、別のOracle Machine Learning (OML)データベース・インスタンスまたはOML Servicesにインポートおよびスコアリングできます。DBMS_DATA_MINING.IMPORT_SERMODEL は、シリアライズされたBLOB を取得し、ターゲット・データベースにモデルを作成します。
|
7.3.4 EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト
ディレクトリ・オブジェクトを使用して、モデルを含むダンプ・ファイル・セットの場所を識別する方法を学習します。
EXPORT_MODEL
およびIMPORT_MODEL
は、ディレクトリ・オブジェクトを使用してダンプ・ファイル・セットの場所を特定します。ディレクトリ・オブジェクトとは、ホスト・コンピュータ上の物理ディレクトリのデータベース内での論理名です。
機械学習モデルをエクスポートするには、ディレクトリ・オブジェクトおよびそれが表すファイル・システム・ディレクトリに対する書込みアクセス権を持っている必要があります。機械学習モデルをインポートするには、ディレクトリ・オブジェクトおよびファイル・システム・ディレクトリに対する読取りアクセス権を持っている必要があります。また、データベース自体にはファイル・システムのディレクトリに対するアクセス権が必要です。ディレクトリ・オブジェクトを作成するにはCREATE ANY DIRECTORY
権限が必要です。
次のSQLコマンドを実行すると、omldir
という名前のディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトが表すファイル・システム・ディレクトリは、すでに存在している必要があり、さらにオペレーティング・システムによって付与される共有の読取りおよび書込みアクセス権を所有している必要があります。たとえば、ディレクトリ・パスが/home/omluser
の場合、コマンドは次のようになります:
CREATE OR REPLACE DIRECTORY omldir AS '/home/omluser';
次のSQLコマンドを実行すると、omldir
への読取りおよび書込みアクセス権の両方がユーザーomluser
に付与されます。
GRANT READ,WRITE ON DIRECTORY omldir TO OMLUSER;
関連トピック
7.3.5 EXPORT_MODELおよびIMPORT_MODELの使用
この例は、EXPORT_MODEL
とIMPORT_MODEL
を使用した様々なエクスポートおよびインポート・シナリオを示しています。
各例では、例7-1に示すディレクトリ・オブジェクトOMLDIR
と、2つのスキーマDM1
およびDM2
を使用します。どちらのスキーマにも機械学習権限があります。DM1
には2つのモデルがあります。DM2
には1つのモデルがあります。
DM1
スキーマには、次のモデルがあります:
-
EM_SH_CLUS_SAMPLE
モデルは、oml4sql-clustering-expectation-maximization.sql
の例によって作成されます。 -
DT_SH_CLAS_SAMPLE
モデルは、oml4sql-classification-decision-tree.sql
の例によって作成されます。
DM2
スキーマにはSVD_SH_SAMPLE
モデルがあり、oml4sql-singular-value-decomposition.sql
によって作成されます。次のコードでは、DM1
スキーマのモデルが表示されます。
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
例7-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 = 'OMLDIR';出力内容は次のようになります。
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS OMLDIR /home/omluser
例7-2 DM1からのすべてのモデルのエクスポート
-- connect as DM1 BEGIN dbms_data_mining.export_model ( filename => 'all_DM1', directory => 'OMLDIR'); END; /
ログ・ファイルとダンプ・ファイルは、OMLDIR
に関連付けられている物理ディレクトリ/home/omluser
で作成されます。ログ・ファイルの名前はdm1_exp_11.log
です。ダンプ・ファイルの名前はall_dm101.dmp
です。
例7-3 元のDM1へのモデルのインポート
例7-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 => 'OMLDIR'); END; / SELECT model_name FROM user_mining_models;出力内容は次のようになります。
MODEL_NAME
------------------------------
DT_SH_CLAS_SAMPLE
EM_SH_CLUS_SAMPLE
例7-4 別のスキーマへのモデルのインポート
この例では、例7-2でDM1
からエクスポートされたモデルが、DM2
にインポートされます。DM1
スキーマではUSER1
表領域を使用し、DM2
スキーマではUSER2
表領域を使用します。
-- CONNECT as sysdba BEGIN dbms_data_mining.import_model ( filename => 'all_d101.dmp', directory => 'OMLDIR', 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
例7-5 特定のモデルのエクスポート
単一のモデル、モデルのリストまたは特定の特性を共有するモデルのグループをエクスポートできます。
-- Export the model named dt_sh_clas_sample EXECUTE dbms_data_mining.export_model ( filename => 'one_model', directory =>'OMLDIR', model_filter => 'name in (''DT_SH_CLAS_SAMPLE'')'); -- one_model01.dmp and dm1_exp_37.log are created in /home/omluser -- Export Decision Tree models EXECUTE dbms_data_mining.export_model( filename => 'algo_models', directory => 'OMLDIR', model_filter => 'ALGORITHM_NAME IN (''DECISION_TREE'')'); -- algo_model01.dmp and dm1_exp_410.log are created in /home/omluser -- Export clustering models EXECUTE dbms_data_mining.export_model( filename =>'func_models', directory => 'OMLDIR', model_filter => 'FUNCTION_NAME = ''CLUSTERING'''); -- func_model01.dmp and dm1_exp_513.log are created in /home/omluser
7.3.6 シリアライズ・モデルのエクスポートおよびインポート
Oracle Databaseリリース18c以降、EXPORT_SERMODEL
プロシージャとIMPORT_SERMODEL
プロシージャが、データベースとの間でシリアライズされたモデルのエクスポートまたはインポートに使用できます。
シリアライズ形式を使用すると、モデルをスコアリング用の別のデータベース・インスタンスまたはOMLサービスに移動できます。モデルは、シリアライズされたBLOB
にエクスポートされます。インポート・ルーチンは、BLOB
でシリアライズされたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。
7.3.7 PMMLからのインポート
Predictive Model Markup Language (PMML)で表現された回帰モデルをインポートできます。
PMMLは、Data Mining Group (https://www.dmg.org
)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Machine Learning for SQLでは、回帰モデルに対応するPMML 3.1のコア機能をサポートしています。
PMMLで表現された回帰モデルをインポートできます。モデルのタイプは、RegressionModel
(線形回帰またはバイナリ・ロジスティック回帰)である必要があります。