1 Oracle Machine Learning for SQLの概要
様々な機械学習のタスクを実行するOracle Machine Learning for SQLの概要について説明します。
1.1 Oracle Machine Learning for SQLについて
Oracle Machine Learning for SQLの使用方法と、様々な機械学習の手法について学習します。
OML4SQLは、強力な最先端の機械学習機能をOracle Databaseで実現します。OML4SQLは、予測的および記述的機械学習アプリケーションの作成および配置、既存のアプリケーションへのインテリジェント機能の追加、データ探査のための予測問合せの生成に使用できます。
OML4SQLでは、様々な機械学習のタスク(分類、回帰、異常検出、特徴抽出、クラスタリング、マーケット・バスケット分析など)を実行するためのインデータベース・アルゴリズムの幅広いセットを提供しています。このアルゴリズムは、標準的なケース・データ、トランザクション・データ、スター・スキーマおよび非構造化テキスト・データで機能します。OML4SQLは、巨大なデータセットの分析に最適なものです。
Oracle Machine Learning for SQLは、Oracle Machine Learning for RおよびOracle Machine Learning for Pythonとともに、特にインデータベース機械学習用の3つの強力なAPIを提供するOracle Machine Learningのコンポーネントです。
1.2 データベース・カーネルのOracle Machine Learning for SQL
Oracle DatabaseカーネルのOracle Machine Learning for SQL (OML4SQL)の実装とその利点について学習します。
OML4SQLは、Oracle Databaseカーネルに実装されています。OML4SQLのモデルは、最初のクラス・データベース・オブジェクトです。Oracle Machine Learning for SQLのプロセスは、Oracle Databaseの組込み機能を使用することでスケーラビリティを最大化して、効率的にシステム・リソースを利用します。
Oracle Database内のOML4SQLには、次のような多くの利点があります。
- 
                        データ移動なし: 一部の機械学習製品では、企業のデータベースからデータをエクスポートして、特別な形式に変換する必要があります。OML4SQLを使用すると、データの移動や変換が不要になります。このため、プロセス全体の簡略化、作業時間の短縮、エラー発生頻度の抑制が実現し、非常に大規模なデータセットの分析が可能になります。 
- 
                        セキュリティ: データはOracle Databaseの広範なセキュリティ・メカニズムで保護されます。さらに、機械学習の様々なアクティビティには特定のデータベース権限が必要になります。適切な権限を持つユーザーのみが、機械学習モデル・オブジェクトを定義、操作または適用できます。 
- 
                        データ準備および管理: ほとんどのデータは、マイニング前に様々な方法での整備、フィルタリング、正規化、サンプリング、変換を必要とします。機械学習プロジェクトの取組みのうち、その80%までがデータの準備に費やされることもよくあります。OML4SQLでは、データ準備プロセスの主要なステップを自動的に管理できます。また、Oracle Databaseでも、データ準備および管理用の豊富な管理ツール群が提供されています。 
- 
                        データ・リフレッシュの簡易化: Oracle Database内の機械学習プロセスは、リフレッシュ済のデータにすぐにアクセスできます。OML4SQLでは、現在のデータに基づく機械学習の結果を簡単に配信できるため、最大限の適時性と適合性が得られます。 
- 
                        Oracle Database Analytics: Oracle Databaseには、高度な分析やビジネス・インテリジェンス用の機能が多数用意されています。機械学習は、その他のデータベースの分析機能(統計的分析やOLAPなど)と簡単に統合できます。 
- 
                        Oracle Technology Stack: オラクル社に集積されたテクノロジのあらゆる側面を利用して、ビジネス・インテリジェンスや科学調査といった、より大規模なフレームワーク内に機械学習を統合できます。 
- 
                        ドメイン環境: 機械学習のモデルは、適切なアプリケーション・ドメイン環境で作成、テスト、検証、管理および配置する必要があります。機械学習の結果には、永続リポジトリまたはデータ・ウェアハウスに格納する前に、ドメイン固有の計算(推定リスクや反応確率の計算など)の一部として後処理を必要とするものもあります。OML4SQLでは、機械学習アクティビティの前処理と後処理をすべて同じ環境で実行できます。 
- 
                        アプリケーション・プログラミング・インタフェース: PL/SQL APIおよびSQL言語の演算子を利用することで、Oracle Database内のOML4SQL機能に直接アクセスできます。 
関連トピック
1.3 Oracle ExadataのOracle Machine Learning for SQL
Oracle Exadataを使用して複雑なスコアリングやアルゴリズムの処理を実行する方法について説明します。
スコアリングとは、OML4SQLモデルをデータに適用して予測を生成するプロセスのことです。スコアリング・プロセスには、システム・リソースがかなり必要になることがあります。状況によっては、膨大な量のデータが関係するため、アルゴリズムの処理は非常に複雑になります。
OML4SQLでは、スコアリングの負荷を処理が非常に高速でインテリジェントなOracle Exadata Storage Serverに移行できます。
Oracle Exadata Storage Serverは、オラクル社の高性能なストレージ・ソフトウェアとオラクル社の業界標準仕様のハードウェアを組み合せて、業界最高レベルのデータベース・ストレージ・パフォーマンスを実現します。Oracle Exadataの詳細は、Oracle Technology Networkにアクセスしてください。
1.4 パーティション化されたモデルについて
複数のモデルを編成および表現するパーティション化されたモデルについて説明します。
データ・セットでモデルを作成し、新規データに適用する場合、予測が一般的であり、新規データや進化するデータに対して実行するとパフォーマンスが低下する可能性があります。これを解決するために、いくつかの特性に基づいてデータ・セットを異なる部分に分割できます。Oracle Machine Learning for SQLは、パーティション化されたモデルをサポートしています。パーティション化されたモデルを使用すると、ユーザーは各データ・パーティションに1つのタイプのアンサンブル・モデルを構築できます。最上位モデルには、自動的に生成されるサブ・モデルがあります。サブ・モデルは属性オプションに基づいています。たとえば、データ・セットに4つの値を持つMARITALという属性があり、それをパーティション化属性として定義したとします。その場合、この属性に4つのサブ・モデルが作成されます。サブ・モデルは、単一のモデルとして自動的に管理されて使用されます。パーティション化されたモデルは、一般的な機械学習タスクを自動化し、複数のターゲット・モデルを通じて精度が向上する可能性があります。
パーティション化されたモデルとそのサブ・モデルは、最初のクラスの永続データベース・オブジェクトとして存在します。永続的とは、パーティション化されたモデルがディスク上の表現を持つことを意味します。
パーティション化されたモデルを作成するには、ODMS_PARTITION_COLUMNS設定を含めます。パーティションの数を定義するには、ODMS_MAX_PARTITIONS設定を含めます。予測を行う場合は、最上位モデルを使用する必要があります。正しいサブ・モデルは、属性、属性オプションおよびパーティション設定に基づいて自動的に選択されます。スコアリング時、USING句の一部としてパーティション列を含める必要があります。GROUPINGヒントは、パーティション化されたモデルをスコアリングするときに、機械学習スコアリング関数に適用されるオプションのヒントです。 
                  
パーティション化されたモデルのパーティション名、キー値および構造は、ALL_MINING_MODEL_PARTITIONSビューで得られます。
                  
関連トピック
参照:
GROUPINGヒントの使用方法は、『Oracle Database SQL言語リファレンス』を参照してください。
                     パーティション化されたモデルの詳細は、Oracle Machine Learning for SQLユーザーズ・ガイドを参照してください。
1.5 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パッケージとして実装されます。
1.5.1 PL/SQL API
Oracle Machine Learning for SQL用のPL/SQLパッケージを組み込みます。
OML4SQL PL/SQL APIは、機械学習モデルの作成、テストおよび維持のためのルーチンを含むDBMS_DATA_MINING PL/SQLパッケージで実装されます。バッチ適用操作もこのパッケージに含まれます。
                     
次の例に、SVMC_SH_Clas_sampleというSVM分類モデルを作成するための単純なPL/SQLスクリプトの一部を示します。モデルの作成では、重み付け表で指定される重みと、設定表で指定される設定が使用されます。重みは、ターゲット・クラスの重み付けに影響します。設定は、デフォルトの動作に優先します。モデルでは、自動データ準備(prep_auto_on設定)が使用されます。モデルは、mining_data_build_vのデータに対してトレーニングされます。
                     
例1-1 分類モデルの作成
-----------------------  CREATE AND POPULATE A CLASS WEIGHTS TABLE  ------------
CREATE TABLE svmc_sh_sample_class_wt (
  target_value NUMBER,
  class_weight NUMBER);
INSERT INTO svmc_sh_sample_class_wt VALUES (0,0.35);
INSERT INTO svmc_sh_sample_class_wt VALUES (1,0.65);
COMMIT;
-----------------------  CREATE AND POPULATE A SETTINGS TABLE ------------------
CREATE TABLE svmc_sh_sample_settings (
  setting_name  VARCHAR2(30),
  setting_value VARCHAR2(4000));
BEGIN
INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
  (dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
  (dbms_data_mining.svms_kernel_function, dbms_data_mining.svms_linear);
INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
  (dbms_data_mining.clas_weights_table_name, 'svmc_sh_sample_class_wt');
INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
  (dbms_data_mining.prep_auto, dbms_data_mining.prep_auto_on);
END;
/
------------------------  CREATE THE MODEL -------------------------------------
BEGIN
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name          => 'SVMC_SH_Clas_sample',
    mining_function     => dbms_data_mining.classification,
    data_table_name     => 'mining_data_build_v',
    case_id_column_name => 'cust_id',
    target_column_name  => 'affinity_card',
    settings_table_name => 'svmc_sh_sample_settings');
END;
/1.5.2 SQL関数
Oracle Machine Learning for SQLでは、予測、クラスタリングおよび特徴抽出を実行するためのSQL関数をサポートしています。
これらの関数は、OML4SQLモデル・オブジェクトを適用するか、動的スコアリングを実行する分析句を実行することで、データをスコアリングします。
次の例に、分類モデルsvmc_sh_clas_sampleをビューmining_data_apply_vのデータに適用する問合せを示します。この問合せによって、提携カードを使用する可能性の高い顧客の平均年齢が戻されます。結果は性別によって分類されます。
                     
例1-2 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関連トピック
1.5.3 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モデルの作成、評価、適用のプロセスを取得、ドキュメント化および自動化します。ワークフロー内で、データ変換の指定、複数のモデルの作成と評価、および複数のデータセットのスコアリングを行うことができます。その後、ワークフローを保存して他のユーザーと共有できます。
インストール手順を含むOracle Data Minerの詳細は、Oracle Technology Networkを参照してください。
関連トピック
1.5.4 予測分析
予測分析は、Oracle Machine Learning for SQLのプロセスを単純なルーチンで取得する手法です。
「ワン・クリック機械学習」と呼ばれることもある予測分析により、機械学習プロセスが単純化および自動化されます。
予測分析にはOML4SQLテクノロジを使用しますが、予測分析を使用する際にOML4SQLに関する知識は不要です。ユーザーは、データに対して実行する操作を指定することで予測分析を実行できます。OML4SQLモデルを作成する必要も使用する必要もありません。また、「Oracle Machine Learning for SQLの基本」にまとめたOML4SQLの関数やアルゴリズムについての知識も不要です。
Oracle Machine Learning for SQLの予測分析の操作については、次の表を参照してください。
表1-1 Oracle Predictive Analyticsによる操作
| 操作 | 説明 | 
|---|---|
| 
 | ターゲット列の値の偏差に対して個々の予測子(列)がどのように影響するかを説明する。 | 
| 
 | 各ケース(行)について、ターゲット列の値を予測する。 | 
| 
 | 同じターゲット値を想定するケース(行)に対するルールのセットを作成する。 | 
Oracle Predictive Analyticsによる操作は、DBMS_PREDICTIVE_ANALYTICS PL/SQLパッケージに実装されています。これらは、Oracle Data Minerでも利用できます。
                     
関連トピック
1.6 データベース分析の概要
Oracle Databaseでサポートされているネイティブ分析の概要を示します。
Oracle Databaseは、多数のネイティブな分析機能をサポートしています。これらの機能はすべて共通サーバーの一部であるため、効率的に組み合せることができます。分析処理の結果は、Oracle Business Intelligence Suite Enterprise EditionなどのBIツールやアプリケーションに統合できます。
様々な分析は、ほとんど制限なく組み合せることができます。例1-3に、単一のSQL問合せ内に含まれたOracle Machine Learning for SQLとテキスト処理を示します。この問合せでは、自然減する傾向が強く(確率が80%を超える)、有望な顧客であり(顧客価値率が90%を超える)、かつChecking Plusアカウントに関して最近カスタマ・サービスに問合せのあった顧客がすべて選択されます。自然減傾向の情報は、tree_modelというOML4SQLモデルを使用して計算されます。Checking Plusアカウントに関するコール・センターのノートを検索するために、Oracle TextのCONTAINS演算子が使用されています。
                  
Oracle Databaseでサポートされるネイティブ分析の一部を次の表で説明します。
表1-2 Oracle Databaseのネイティブ分析
| 分析機能 | 説明 | 参照先ドキュメント | 
|---|---|---|
| 複合データの変換 | データ変換は、分析用アプリケーションやETL (抽出、変換およびロード)の重要な側面である。データ変換の実装には、SQL式または 
 | |
| Oracle Databaseでは多数のSQL統計関数が提供され、仮説検定(t検定、F検定など)、相関関数(ピアソン相関など)、クロスタブ統計および記述統計(中央値、最頻値など)がサポートされる。 | 『Oracle Database SQL言語リファレンス』および『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 | |
| ウィンドウ関数と分析SQL関数 | Oracle Databaseでは、累積集計、移動集計および集中集計を計算するためのウィンドウ関数および分析関数がサポートされる。集計ウィンドウ関数群では、 | |
| 線形代数 | 
 | |
| OLAP | Oracle OLAPは多次元分析をサポートし、多次元問合せのパフォーマンスを向上するために使用できる。これまでは特殊なOLAPデータベースのみに存在した機能も提供されている。Oracle OLAPでは、ドリルダウンやロールアップにとどまらず、時系列分析、モデリングおよび予測の機能もサポートされる。 | |
| 空間分析 | Oracle Spatialでは、ハイエンドGISおよびLBSソリューションをサポートする高度な空間機能が提供される。Oracle Spatialの分析および機械学習機能には、ビニング、地域パターンの検出、空間相関、関連機械学習、空間クラスタリングなどの機能があります。 また、Oracle Spatialでは、トポロジおよびネットワーク・データのモデルと分析もサポートされる。Oracle Spatialのトポロジ・データ・モデルを使用すると、トポロジ内のノード、エッジおよびフェイスに関するデータと連携できる。最短経路、最小コストの全域木、隣接分析、巡回セールスマン問題の計算など様々なネットワーク分析機能が含まれる。 | |
| グラフ | プロパティ・グラフは、Oracle Databaseの高度なグラフ問合せ機能および分析機能を提供します。インメモリー・グラフ・サーバー(PGX)は、グラフ化された機械学習アルゴリズムをサポートする機械学習ライブラリを提供します。機械学習ライブラリは、DeepWalk、教師ありGraphWiseおよびPg2vecアルゴリズムをサポートしています。 | |
| テキスト分析 | Oracle Textでは、Oracleデータベース、ファイルおよびWeb上に格納されているテキストおよびドキュメントの索引付け、検索および分析のために標準SQLが使用される。Oracle Textによって、一群のドキュメントの自動分類およびクラスタリングもサポートされる。Oracle Textの分析機能の多くは、Oracle Machine Learning機能の最上位に用意されています。 | 
例1-3 Oracle Machine Learning for SQLとOracle Textを組み合せたSQL問合せ
SELECT A.cust_name, A.contact_info FROM customers A WHERE PREDICTION_PROBABILITY(tree_model, 'attrite' USING A.*) > 0.8 AND A.cust_value > 90 AND A.cust_id IN (SELECT B.cust_id FROM call_center B WHERE B.call_date BETWEEN '01-Jan-2005' AND '30-Jun-2005' AND CONTAINS(B.notes, 'Checking Plus', 1) > 0);
