Oracle Machine Learning for SQLのモデルのエクスポートとインポート
機械学習モデルをエクスポートして、別のOracle Databaseインスタンスに(たとえば、開発データベースから本番データベースに)モデルを移動できます。
DBMS_DATA_MININGパッケージには、データベース・インスタンス間で機械学習モデルを移行するためのプロシージャが含まれています。 
                  
EXPORT_MODELでは、単一のモデルまたは複数モデルのリストをダンプ・ファイルにエクスポートして、別のOracle Machine Learningデータベース・インスタンスでインポート、問合せおよびスコアリングできます。 
                  
IMPORT_MODELでは、そのダンプ・ファイルを入力にして、宛先データベースにモデルを作成します。
                
                  
EXPORT_SERMODELでは、単一のモデルが直列化されたBLOBにエクスポートされるため、別のOracle Machine Learningデータベース・インスタンスまたはOMLサービスにインポートしてスコアリングできます。
                  
IMPORT_SERMODELでは、その直列化されたBLOBを入力にして、宛先データベースにモデルを作成します。 
                  
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ユーティリティ』を参照してください
                     
モデルのエクスポートについて
モデルの構築の結果として、評価用のモデル統計など、モデルに関する情報を提供する一連のモデル詳細ビューが各モデルに設定されます。ユーザーは、これらのモデル詳細ビューを問い合せることができます。直列化されたモデルでは、スコアリングに必要なモデル・データおよびメタデータのみを、直列化されたモデルで使用できます。EXPORT_MODELプロシージャによって生成されるダンプ・ファイルよりも、このほうがコンパクトで、宛先環境に高速に転送できます。
                  
完全なモデルの詳細を保持するには、DMBS_DATA_MINING.EXPORT_MODELプロシージャおよびDBMS_DATA_MINING.IMPORT_MODELプロシージャを使用します。直列化されたモデル・エクスポートは、スコアを生成するモデルでのみ機能します。具体的には、属性評価、相関ルール、指数平滑法やO-Clusterがサポートされません(ただし、O-Clusterでのスコアリングは可能です)。完全なモデル詳細が必要な場合は、EXPORT_MODELを使用してこれらのモデルおよびシナリオをエクスポートしてください。
                  
Oracle Machine Learning for SQLモデルのエクスポートとインポート・オプション
機械学習モデルのエクスポートおよびインポート用のオプションをリストします。
機械学習モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。
表8-1 Oracle Machine Learning for SQLのエクスポートおよびインポートのオプション
| タスク | 説明 | 
|---|---|
| データベース全体のエクスポートまたはインポート | (DBAのみ)データベース全体のエクスポートには | 
| スキーマのエクスポートまたはインポート | スキーマのエクスポートには | 
| データベース内またはデータベース間のモデルのエクスポートまたはインポート | 1つ以上のモデルのエクスポートには モデルをインポートするには、 | 
| リモート・データベースに対する個々のモデルのエクスポートまたはインポート | リモート・データベースへの個々のモデルのエクスポートまたはリモート・データベースからの個々のモデルのインポートを行うには、データベース・リンクを使用します。データベース・リンクとは、別のデータベースのオブジェクトへのアクセスを可能にする、あるデータベースのスキーマ・オブジェクトです。このリンクは、 プライベート・データベース・リンクを作成する場合、 | 
| 直列化されたモデルのエクスポートおよびインポート | Oracle Database 18c以降、スコアリングをサポートするための軽量アプローチとして、直列化されたモデル形式が導入されました。 DBMS_DATA_MINING.EXPORT_SERMODELプロシージャでは、単一のモデルが直列化されたBLOBにエクスポートされるため、別のOracle Machine Learning (OML)データベース・インスタンスまたはOMLサービスにインポートしてスコアリングできます。DBMS_DATA_MINING.IMPORT_SERMODELでは、その直列化されたBLOBを入力にして、ターゲット・データベースにモデルを作成します。 | 
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;
関連トピック
EXPORT_MODELおよびIMPORT_MODELの使用
この例は、EXPORT_MODELとIMPORT_MODELを使用した様々なエクスポートおよびインポート・シナリオを示しています。
                  
各例では、例8-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例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 = 'OMLDIR';出力内容は次のようになります。
OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS        OMLDIR                      /home/omluser例8-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です。
                     
例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 => 'OMLDIR');
END;
/
SELECT model_name FROM user_mining_models;出力内容は次のようになります。 
MODEL_NAME
------------------------------
DT_SH_CLAS_SAMPLE
EM_SH_CLUS_SAMPLE例8-4 別のスキーマへのモデルのインポート
この例では、例8-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例8-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シリアライズされたモデルのEXPORTおよびIMPORT
Oracle Databaseリリース18c以降、直列化されたモデルをデータベースに対してエクスポートまたはインポートするために、EXPORT_SERMODELプロシージャとIMPORT_SERMODELプロシージャを使用できます。 
                  
直列化された形式を使用すると、スコアリング用の別のデータベース・インスタンスまたはOMLサービスにモデルを移動できます。直列化されたBLOBにモデルがエクスポートされます。インポート・ルーチンは、BLOBで直列化されたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。
                     
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 (線形回帰またはバイナリ・ロジスティック回帰)である必要があります。