39.3 Oracle Machine Learning for SQLモデルのエクスポートとインポート
機械学習モデルをフラット・ファイルにエクスポートして作業途中の操作をバックアップしたり、Oracle Database Enterprise Editionの別のインスタンスに(たとえば、開発データベースからテスト・データベースに)モデルを移動したりできます。
関連トピック
39.3.1 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ユーティリティ』を参照してください
39.3.2 Oracle Machine Learning for SQLモデルのエクスポートとインポート・オプション
機械学習モデルのエクスポートおよびインポート用のオプションをリストします。
機械学習モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。
表39-1 Oracle Machine Learning for SQLのエクスポート・オプションとインポート・オプション
39.3.3 EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト
ディレクトリ・オブジェクトを使用して、ダンプ・ファイル・セットの場所を識別する方法について説明します。
EXPORT_MODELおよびIMPORT_MODELは、ディレクトリ・オブジェクトを使用してダンプ・ファイル・セットの場所を特定します。ディレクトリ・オブジェクトとは、ホスト・コンピュータ上の物理ディレクトリのデータベース内での論理名です。
機械学習モデルをエクスポートするには、ディレクトリ・オブジェクトおよびそれが表すファイル・システム・ディレクトリに対する書込みアクセス権を持っている必要があります。機械学習モデルをインポートするには、ディレクトリ・オブジェクトおよびファイル・システム・ディレクトリに対する読取りアクセス権を持っている必要があります。また、データベース自体にはファイル・システムのディレクトリに対するアクセス権が必要です。ディレクトリ・オブジェクトを作成するにはCREATE ANY DIRECTORY権限が必要です。
次のSQLコマンドを実行すると、oml_user_dirという名前のディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトが表すファイル・システム・ディレクトリは、すでに存在している必要があり、さらにオペレーティング・システムによって付与される共有の読取りおよび書込みアクセス権を所有している必要があります。
CREATE OR REPLACE DIRECTORY oml_user_dir AS '/dm_path/dm_mining';
次のSQLコマンドを実行すると、oml_user_dirへの読取りおよび書込みアクセス権の両方がユーザーoml_userに付与されます。
GRANT READ,WRITE ON DIRECTORY oml_user_dir TO oml_user;
関連トピック
39.3.4 EXPORT_MODELおよびIMPORT_MODELの使用
この例は、EXPORT_MODELとIMPORT_MODELを使用した様々なエクスポートおよびインポート・シナリオを示しています。
各例では、例39-1に示すディレクトリ・オブジェクトdmdirと、2つのスキーマdm1およびdm2を使用します。どちらのスキーマも機械学習の権限を持っています。dm1には2つのモデルがあります。dm2には1つのモデルがあります。
EM_SH_CLUS_SAMPLEモデルは、oml4sql-clustering-expectation-maximization.sqlの例で作成します。DT_SH_CLAS_SAMPLEモデルは、oml4sql-classification-decision-tree.sqlの例で作成します。SVD_SH_SAMPLEモデルは、oml4sql-singular-value-decomposition.sqlの例で作成します。
SELECT owner, model_name, mining_function, algorithm FROM all_mining_models; 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
例39-1 ディレクトリ・オブジェクトの作成
-- connect as system user CREATE OR REPLACE DIRECTORY dmdir AS '/scratch/oml_user/expimp'; GRANT READ,WRITE ON DIRECTORY dmdir TO dm1; GRANT READ,WRITE ON DIRECTORY dmdir TO dm2; SELECT * FROM all_directories WHERE directory_name IN 'DMDIR'; OWNER DIRECTORY_NAME DIRECTORY_PATH ---------- -------------------------- ---------------------------------------- SYS DMDIR /scratch/oml_user/expimp
例39-2 DM1からのすべてのモデルのエクスポート
-- connect as dm1
BEGIN
dbms_data_mining.export_model (
filename => 'all_dm1',
directory => 'dmdir');
END;
/
ログ・ファイルとダンプ・ファイルは、dmdirに関連付けられている物理ディレクトリ/scratch/oml_user/expimpで作成されます。ログ・ファイルの名前はdm1_exp_11.logです。ダンプ・ファイルの名前はall_dm101.dmpです。
例39-3 元のDM1へのモデルのインポート
例39-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例39-4 別のスキーマへのモデルのインポート
この例では、例39-2でdm1からエクスポートされたモデルが、dm2にインポートされます。dm1スキーマではexample表領域を使用し、dm2スキーマではsysaux表領域を使用します。
-- CONNECT as sysdba
BEGIN
dbms_data_mining.import_model (
filename => 'all_d101.dmp',
directory => 'DMDIR',
schema_remap => 'DM1:DM2',
tablespace_remap => 'EXAMPLE:SYSAUX');
END;
/
-- CONNECT as dm2
SELECT model_name from user_mining_models;
MODEL_NAME
--------------------------------------------------------------------------------
SVD_SH_SAMPLE
EM_SH_CLUS_SAMPLE
DT_SH_CLAS_SAMPLE例39-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 /scratch/oml_user/expimp
-- 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 /scratch/oml_user/expimp
-- 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 /scratch/oml_user/expimp39.3.5 シリアライズされたモデルのEXPORTおよびIMPORT
Oracle Databaseリリース18c以降、EXPORT_SERMODELプロシージャとIMPORT_SERMODELプロシージャは、シリアライズされたモデルのエクスポートとインポートに使用できます。
シリアライズされた形式を使用すると、スコアリングのために別のプラットフォーム(データベースの外部)にモデルを移動できます。モデルはBFILEに保存可能なBLOBでエクスポートされます。インポート・ルーチンは、BLOBでシリアライズされたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。
39.3.6 PMMLからのインポート
Predictive Model Markup Language (PMML)で表現された回帰モデルをインポートできます。
PMMLは、Data Mining Group(http://www.dmg.org)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Machine Learning for SQLは、回帰のモデルに対してPMML 3.1のコア機能をサポートしています。
PMMLで表現された回帰モデルをインポートできます。モデルのタイプは、RegressionModel (線形回帰またはバイナリ・ロジスティック回帰)である必要があります。