Oracle Machine Learning for SQLに対するインタフェース

Oracle Machine Learning for SQLに対してサポートされているインタフェースについて説明します。

Oracle Machine Learning for SQLのプログラム・インタフェースは、モデルの作成および維持のためのPL/SQLと、スコアリングのためのSQL関数群です。OML4SQLでは、Oracle SQL Developerの機能拡張として実装されるグラフィカル・ユーザー・インタフェースもサポートされています。

Oracle Predictive Analytics (簡略化されたOML4SQLルーチンのセット)は、OML4SQLを基盤として構築されたもので、PL/SQLパッケージとして実装されます。

Oracle Machine Learningのモデリング、変換および利便性関数

PL/SQLインタフェースにアクセスして、データ・モデリング、変換および予測分析を実行できます。

次の表に、Oracle Machine LearningのPL/SQLパッケージを示します。リリース21cより前のOracle Databaseリリースでは、Oracle Machine LearningOracle Data Miningという名前でした。

表3-1 Oracle Machine LearningのPL/SQLパッケージ

パッケージ名 説明

DBMS_DATA_MINING

機械学習モデルの作成と管理を行うためのルーチン

DBMS_DATA_MINING_TRANSFORM

機械学習のデータを変換するためのルーチン

DBMS_PREDICTIVE_ANALYTICS

予測分析を実行するルーチン

DBMS_DATA_MINING

DBMS_DATA_MININGパッケージには、機械学習モデルの作成、モデルに対する操作の実行、モデルの問合せを行うためのルーチンが含まれています。

このパッケージには、次の操作を実行するためのルーチンが含まれています。

  • 機械学習モデルの作成と削除およびマイニング・モデルに対する他のDDL操作の実行

  • モデル内部で使用されるモデルの属性やルールなどの詳細情報(モデルの詳細)の取得

  • 分類モデルのテスト・メトリックの計算

  • 分類モデルのコストの指定

  • モデルのエクスポートおよびインポート

  • Oracle Machine Learningのネイティブ・アルゴリズムおよびRで記述されたアルゴリズムを使用したモデルの作成

Oracle Machine Learningモデルについて

機械学習モデルとは、機械学習手法を実行するデータベース・スキーマ・オブジェクトのことです。

すべてのスキーマ・オブジェクトと同様に、機械学習モデルへのアクセスは、データベース権限によって制御されます。モデルはエクスポートとインポートが可能です。コメントがサポートされており、Oracle Database監査システムで追跡できます。

機械学習モデルは、DBMS_DATA_MINING PL/SQLパッケージのCREATE_MODEL2またはCREATE_MODELプロシージャによって作成されます。モデルは特定の機械学習手法に対して作成され、その機能を実行するために特定のアルゴリズムを使用します。機械学習手法とは、解決する機械学習の問題のクラスを表す用語です。機械学習手法の例としては、回帰分類属性評価クラスタリング異常検出および特徴選択が挙げられます。OML4SQLでは、機械学習手法ごとに1つ以上のアルゴリズムをサポートしています。

CREATE_MODEL2プロシージャでは、機械学習手法とともに、モデルのアルゴリズムおよびその他の特性を指定できます。CREATE_MODELでは、設定表を指定して、モデルのアルゴリズムやその他の特性を指定できます。設定には、一般的な設定と、機械学習手法およびアルゴリズムに固有の設定があります。

ノート:

ほとんどのタイプの機械学習モデルは、データのスコアリングに使用できます。ただし、モデルを適用せずにデータをスコアリングすることもできます。動的スコアリングと予測分析では、ユーザーが提供するモデルなしでスコアリング結果を戻します。この場合、表示されない一時モデルを作成して適用します。

DBMS_DATA_MINING_TRANSFORM

DBMS_DATA_MINING_TRANSFORMパッケージには、ビニング、正規化、外れ値の処理などのデータ変換を実行するルーチンが含まれています。

このパッケージには、次の操作を実行するためのルーチンが含まれています:

  • 機械学習モデルに組み込むことができる形式で変換を指定します。

  • リレーショナル・ビュー(機械学習モデルのオブジェクトの外部)としての変換の指定

  • 作成データの列に対する個別プロパティの指定。たとえば、列が非構造化テキストとして解釈される必要があることや、列が自動データ準備から除外される必要があることを指定できます。

DBMS_DATA_MINING_TRANSFORMの変換手法

DBMS_DATA_MINING_TRANSFORMパッケージのデータを変換するための手法をまとめます。

表3-2 DBMS_DATA_MINING_TRANSFORMの変換手法

変換手法 説明

XFORMインタフェース

CREATEINSERTおよびXFORMルーチンが、外部ビューの変換を指定する。

STACKインタフェース

CREATEINSERTおよびXFORMルーチンが、モデルへの組込み用の変換を指定する。

SET_TRANSFORM

モデルへの組込み用の変換を指定する。

次の例の文は、コメント属性を非構造化テキスト・データとして処理する組込み変換を含むT_SVM_Clas_sampleというサポート・ベクター・マシン(SVM)分類モデルを作成します。T_SVM_CLAS_SAMPLEモデルは、oml4sql-classification-text-mining-svm.sqlの例で作成します。

例3-1 組込み変換の例

DECLARE
  xformlist dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
  dbms_data_mining_transform.SET_TRANSFORM(
    xformlist, 'comments', null, 'comments', null, 'TEXT');
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name          => 'T_SVM_Clas_sample',
    mining_function     => dbms_data_mining.classification,
    data_table_name     => 'mining_build_text',
    case_id_column_name => 'cust_id',
    target_column_name  => 'affinity_card',
    settings_table_name => 't_svmc_sample_settings',
    xform_list => xformlist);
END;
/ 

予測分析

予測分析は、Oracle Machine Learning for SQLのプロセスを単純なルーチンで取得する手法です。

ワンクリック機械学習と呼ばれることもあり、予測分析により機械学習プロセスが簡略化され自動化されます。

予測分析にはOML4SQLテクノロジを使用しますが、予測分析を使用する際にOML4SQLに関する知識は不要です。ユーザーは、データに対して実行する操作を指定することで予測分析を実行できます。OML4SQLモデルを作成する必要も使用する必要もありません。また、「Oracle Machine Learning for SQLの基本」にまとめたOML4SQLの関数やアルゴリズムについての知識も不要です。

Oracle Machine Learning for SQLの予測分析の操作については、次の表を参照してください。

表3-3 Oracle Predictive Analyticsによる操作

操作 説明

EXPLAIN

ターゲット列の値の偏差に対して個々の予測子(列)がどのように影響するかを説明する。

PREDICT

各ケース(行)について、ターゲット列の値を予測する。

PROFILE

同じターゲット値を想定するケース(行)に対するルールのセットを作成する。

Oracle Predictive Analyticsによる操作は、DBMS_PREDICTIVE_ANALYTICS PL/SQLパッケージに実装されています。これらは、Oracle Data Minerでも利用できます。

DBMS_PREDICTIVE_ANALYTICS

DBMS_PREDICTIVE_ANALYTICSパッケージには、予測分析とも呼ばれる機械学習の自動化された形式を実行するルーチンが含まれています。予測分析を使用する場合、モデルの作成やスコアリングを意識する必要はありません。すべての機械学習アクティビティは、プロシージャによって内部的に処理されます。

DBMS_PREDICTIVE_ANALYTICSパッケージには、次のルーチンが含まれています。

  • EXPLAIN: ターゲット列の説明における各属性の影響度をランク付けします。

  • PREDICT: 入力データの値に基づいてターゲット列の値を予測します。

  • PROFILE: 入力データからケースを説明するルールを生成します。

次の例のEXPLAIN文は、affinity_cardの予測における重要度の順にmining_data_build_vビューの属性をリストします。

例3-2 EXPLAIN文の例

BEGIN 
    DBMS_PREDICTIVE_ANALYTICS.EXPLAIN( 
        data_table_name      => 'mining_data_build_v', 
        explain_column_name  => 'affinity_card', 
        result_table_name    => 'explain_results'); 
END; 
/

Oracle Machine Learningのデータ・ディクショナリ・ビュー

Oracle Machine Learningのデータ・ディクショナリ・ビューの一覧を示します。

次の表に、Oracle Machine Learningのデータ・ディクショナリ・ビューを示します。ビューのデータベース管理者(DBA)およびUSERバージョンも使用可能です。

表3-4 Oracle Machine Learningのデータ・ディクショナリ・ビュー

ビュー名 説明

ALL_MINING_MODELS

アクセス可能なすべての機械学習モデルに関する情報を示します

ALL_MINING_MODEL_ATTRIBUTES

アクセス可能なすべての機械学習モデルの属性に関する情報を示します

ALL_MINING_MODEL_PARTITIONS

アクセス可能なすべてのパーティション化された機械学習モデルのパーティションに関する情報を示します

ALL_MINING_MODEL_SETTINGS

アクセス可能なすべての機械学習モデルの構成設定に関する情報を示します

ALL_MINING_MODEL_VIEWS

アクセス可能なすべての機械学習モデルのモデル・ビューに関する情報を示します

ALL_MINING_MODEL_XFORMS

アクセス可能なすべての機械学習モデルに埋め込まれたユーザー指定の変換を示します。

SQL関数

Oracle Machine Learning for SQLでは、予測、クラスタリングおよび特徴抽出を実行するためのSQL関数をサポートしています。

これらの関数は、OML4SQLモデル・オブジェクトを適用するか、動的スコアリングを実行する分析句を実行することで、データをスコアリングします。

次の例に、分類モデルsvmc_sh_clas_sampleをビューmining_data_apply_vのデータに適用する問合せを示します。この問合せによって、提携カードを使用する可能性の高い顧客の平均年齢が戻されます。結果は性別によって分類されます。

例3-3 PREDICTION関数

SELECT cust_gender,
       COUNT(*) AS cnt,
       ROUND(AVG(age)) AS avg_age
  FROM mining_data_apply_v
 WHERE PREDICTION(svmc_sh_clas_sample USING *) = 1
GROUP BY cust_gender
ORDER BY cust_gender;
出力内容は次のようになります。

C        CNT    AVG_AGE
- ---------- ----------
F         59         41
M        409         45

Oracle Machine Learning for SQLのスコアリング関数

OML4SQL関数のスコア・データを使用します。関数は、機械学習モデルのスキーマ・オブジェクトをデータに適用することも、分析句を使用して動的にデータをマイニングすることもできます。すべてのOML4SQLスコアリング・アルゴリズムにSQL関数が存在します。

次の表に示すすべてのOML4SQL関数は、対応するOML4SQL関数を使用して、R機械学習モデルで動作します。ただし、関数は、ここにリストされているものに限られません。

表3-5 OML4SQL 関数

関数 説明

CLUSTER_ID

予測対象のクラスタのIDを戻す。

CLUSTER_DETAILS

予測対象のクラスタに関する詳細情報を戻す。

CLUSTER_DISTANCE

予測対象のクラスタの重心からの距離を戻す。

CLUSTER_PROBABILITY

特定のクラスタに属するケースの確率を戻す。

CLUSTER_SET

特定のケースが属している可能性のあるすべてのクラスタのリストと、ケースが含まれている確率を戻す。

FEATURE_COMPARE 2つの異なるドキュメントまたはキーワード・フレーズ、あるいはその両方の組合せからの類似または非類似のテキスト・セットを比較する

FEATURE_ID

最も高い係数値を持つ特徴のIDを戻す。

FEATURE_DETAILS

予測対象の特徴に関する詳細情報を戻す。

FEATURE_SET

考え得るすべての特徴が含まれているオブジェクトのリストとその係数を戻す。

FEATURE_VALUE

予測対象の特徴の値を戻す。

ORA_DM_PARTITION_NAME パーティション化されたモデルのパーティション名を戻す

PREDICTION

ターゲットの最適な予測を戻す。

PREDICTION_BOUNDS

(GLMのみ)予測値(線形回帰)または確率(ロジスティック回帰)が収まる区間の上限と下限を戻す。

PREDICTION_COST

不正確な予測のコストの測度を戻す。

PREDICTION_DETAILS

予測に関する詳細情報を戻す。

PREDICTION_PROBABILITY

予測の確率を戻す。

PREDICTION_SET

分類モデルの結果を戻す(各ケースについての予測および関連する確率を含む)。

VECTOR_EMBEDDING

様々なデータ型の単一のベクトル埋込みを生成する

次の例では、CLUSTER_ID関数の結果を戻す問合せを示しています。この問合せでは、特定の特性を共有する顧客のグループを検出するモデルem_sh_clus_sampleを適用します。この問合せでは、クラスタの識別子および各クラスタの顧客数が戻されます。em_sh_clus_sampleモデルは、oml4sql-clustering-expectation-maximization.sqlの例によって作成されます。

例3-4 CLUSTER_ID関数

-- -List the clusters into which the customers in this
-- -data set have been grouped.
--
SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt 
  FROM mining_data_apply_v
GROUP BY CLUSTER_ID(em_sh_clus_sample USING *)
ORDER BY cnt DESC;


-- List the clusters into which the customers in this
-- data set have been grouped.
--
SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt
FROM mining_data_apply_v
GROUP BY CLUSTER_ID(em_sh_clus_sample USING *)
ORDER BY cnt DESC;
 

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


      CLUS        CNT
---------- ----------
         9        311
         3        294
         7        215
        12        201
        17        123
        16        114
        14         86
        19         64
        15         56
        18         36

Oracle Machine Learning for SQL統計関数

Oracle Databaseでは、様々なSQL統計関数を使用してデータを調査および分析できます。

Oracle Databaseでは、SQLを介して様々なスケーラブルな統計関数にアクセスできます。これらの統計関数は、SQL関数として実装されています。SQL統計関数を使用すると、データに関するMEANMAXMINMEDIANMODEおよび標準偏差などの標準的な可変統計を計算できます。ユーザーは、テスト、f-test、集計関数、分析関数、ANOVAなど、その他の様々な統計関数を実行することもできます。次の表に示す関数は、SQLから使用できます。

表3-6 OML4SQLでサポートされているSQL統計関数

関数 説明
APPROX_COUNT 式の近似カウントを返します
APPROX_SUM 式の近似合計を返します
APPROX_RANK 値のグループの近似値を返します
CORR 数値の組の集合に対する相関係数
CORR_S Spearmanの順位相関係数(Spearman's rho)を計算します
CORR_K Kendallの順位相関係数(Kendall's tau-b)を計算します
COVAR_POP 数値の組の集合について母集団分散を返します
COVAR_SAMP 数値の組の集合について標本分散を返します。
LAG LAGは分析ファンクションです。これは、自己結合せずに、表の2つ以上の行へ同時アクセスを行います。
LEAD LEADは分析ファンクションです。これは、自己結合せずに、表の2つ以上の行へ同時アクセスを行います。
STATS_BINOMIAL_TEST STATS_BINOMIAL_TESTは、有効な値が2つのみである二値変数に使用する直接確立法です。
STATS_CROSSTAB STATS_CROSSTABは、2つの名義変数を分析するために使用する方法です。
STATS_F_TEST STATS_F_TESTは、2つの分散に有意差があるかどうかをテストします。
STATS_KS_TEST STATS_KS_TESTは、2つの標本を比較して、それらが同じ母集団に属しているか、または同じ分布を持つ母集団に属しているかをテストするKolmogorov-Smirnovファンクションです。
STATS_MODE 引数として値の集合を取り、最も出現頻度の高い値を返します
STATS_MW_TEST Mann-Whitney検定では、2つの独立した標本を比較して、2つの母集団が同じ分布ファンクションを持つという帰無仮説を、2つの分布ファンクションは異なるという対立仮説に対してテストします。
STATS_ONE_WAY_ANOVA 2種類の差異の見積りを比較することで、統計的重要性の(グループまたは変数の)差異をテストします。
STATS_T_TEST_* t検定は、平均値の差の有意性を測定します
STATS_T_TEST_ONE 1標本 t検定
STATS_T_TEST_PAIRED 2標本、対応のあるt検定(交差したt検定とも呼ばれます)
STATS_T_TEST_INDEPおよびSTATS_T_TEST_INDEPU 同じ分散を持つ(合併分散) 2つの独立したグループのt検定

分散が等しくない(分散は非合併)2つの独立したグループのt検定

STDDEV 数値の集合について標本標準偏差を返します
STDDEV_POP 母集団標準偏差を計算し、母集団分散の平方根を返します
STDDEV_SAMP 標本累積標準偏差を計算し、標本分散の平方根を返します
SUM 値の合計を返します

DBMS_STAT_FUNCS PL/SQLパッケージは、ユーザーに対しても使用可能です。

Oracle Data Miner

Oracle Machine Learning for SQLは、Oracle Data Minerというグラフィカル・インタフェースをサポートしています。

Oracle Data MinerはOML4SQLへのグラフィカル・インタフェースです。Oracle Data Minerは、Oracle Technology Networkで無償ダウンロードできるOracle SQL Developerの拡張です。

Oracle Data Minerは、ワークフロー・パラダイムを使用して、OML4SQLモデルの作成、評価、適用のプロセスを取得、ドキュメント化および自動化します。ワークフロー内で、データ変換の指定、複数のモデルの作成と評価、および複数のデータセットのスコアリングを行うことができます。その後、ワークフローを保存して他のユーザーと共有できます。

図3-1 Oracle Data Minerのワークフロー

図3-1の説明が続きます。
「図3-1 Oracle Data Minerのワークフロー」の説明

インストール手順を含むOracle Data Minerの詳細は、Oracle Technology Networkを参照してください。

関連トピック