3 Oracle Machine Learningの基礎

Oracle Machine Learningの基本概念を理解します。

3.1 機械学習機能

Oracle Machine Learningの機能について明確に説明します。

Oracle Machine Learningを使用する場合には、機械学習機能およびアルゴリズムの基本を理解している必要があります。

機械学習機能は、モデル化し解決できる問題の種類を表しています。機械学習機能は、一般に教師あり教師なしという2つのカテゴリに分けられます。教師あり学習、教師なし学習という概念は、人工知能の1分野といわれる機械学習学に由来しています。

人工知能とは、自身の知能や動作を自主的に提示するシステムの実装や研究を指します。機械学習において取り組んでいるのは、デバイスが自身の動作から学習して自身の機能を変更できるようにする技術です。

関連項目

3.1.1 教師あり機械学習

教師あり機械学習の概要です。

教師あり学習は、指示あり学習とも呼ばれます。この種の学習プロセスは、既知である従属属性またはターゲットからの指示を受けます。指示ありOracle Machine Learningは、ターゲットの動作を一連の独立属性や予測子の機能として説明するように試みます。

教師あり学習は、通常、予測モデルに帰着します。パターン検出を目的とする教師なし学習とは、この点が異なります。

教師ありモデルの作成には、トレーニングという、ターゲット値が既知である多数のケースをソフトウェアで分析するプロセスが伴います。このトレーニング・プロセスにおいて、モデルは予測を作成するロジックを「学習」します。たとえば、販促に反応しやすい顧客の識別を目的とするモデルは、過去に販促に反応した、または反応しなかったと認識されている多数の顧客の特性を分析することによって、トレーニングされている必要があります。

3.1.1.1 教師あり学習: テスト

予測モデルの作成(トレーニング)とテストには、別々のデータセットが必要です。作成データ(トレーニング・データ)とテスト・データは同じ列構造である必要があります。通常は、1つの大規模な表またはビューを2つのデータセットに分割し、1つをモデルの作成用、もう1つをモデルのテスト用とします。

テスト・データにモデルを適用するプロセスは、選択した1つのサンプルを基に作成されたモデルを他のデータに一般化できるかどうかの判断に役立ちます。これは特に、オーバー・フィットという、モデルのロジックが作成データに適合しすぎているため、ほとんど予測力を持たない場合に発生する可能性のある現象を回避するために有用です。

3.1.1.2 教師あり学習: スコアリング

教師あり学習でのスコアリングについて学習します。

適用データはスコアリング・データとも呼ばれ、モデルの適用対象となる実際の母集団のことを指します。例として、特定の製品を頻繁に購入する顧客の特性を識別するモデルを作成する場合について考えてみます。特定の店舗で買い物をする顧客のうち関連製品を購入する可能性がある顧客の一覧を取得するために、このモデルを当該店舗の顧客データに適用するとします。この場合、店舗の顧客データがスコアリング・データとなります。

教師あり学習のほとんどは、対象とする母集団に適用できます。主要な教師あり機械学習手法(分類および回帰)は、両方ともスコアリングに使用できます。

Oracle Machine Learningでは、もう1つの教師あり機能である属性評価のスコアリング操作はサポートされていません。このタイプのモデルは、対象とする母集団に基づいて作成され、その母集団に関する情報を取得するため、別個のデータには適用できません。属性評価モデルでは、ターゲット値の予測において最も重要な属性が戻され、ランク付けされます。

Oracle Machine Learningでは、次の表に示す教師あり機械学習機能がサポートされています。

表3-1 Oracle Machine Learningの教師あり機能

機能 説明 問題例

属性評価

ターゲット属性の予測において最も重要な属性を識別する。

提携カード・プログラムに対する顧客の反応を指定し、最も重要な予測子を検出する。

分類

個々のクラスに項目を割り当て、ある項目が属するクラスを予測する。

1群の顧客に関する人口統計データを指定し、提携カード・プログラムに対する顧客の反応を予測する。

回帰

連続する値を概算および予測する。

1群の顧客に関する人口統計データおよび購入データを指定し、顧客の年齢を予測する。

3.1.2 教師なし機械学習

教師なし機械学習の概要です。

教師なし学習は、指示を受けません。従属属性と独立属性は区別されません。モデルの作成においてアルゴリズムを導く既知の結果は存在しません。

教師なし学習は、記述目的で使用できます。また、予測の作成にも使用できます。

3.1.2.1 教師なし学習: スコアリング

教師なし学習、サポートされているスコアリング操作、および教師なし機械学習機能を紹介します。

教師なし機械学習ではターゲットを指定しませんが、ほとんどの教師なし学習は、対象とする母集団に適用できます。たとえば、クラスタリング・モデルでは記述的な機械学習手法が使用されますが、それは、そのクラスタ割当てに従ってケースを分類するために適用できます。異常検出は、教師なしですが、通常は、あるデータ・ポイントが一連のケース内で典型的かどうかを予測するために使用されます。

Oracle Machine Learningでは、クラスタリングおよび特徴抽出(両方とも教師なし機械学習機能)でのスコアリング操作がサポートされています。Oracle Machine Learningでは、もう1つの教師なし機能である相関ルールについては、スコアリング操作はサポートされていません。相関モデルは、特定の母集団に関する情報を取得するためにその母集団に基づいて作成されるため、別個のデータには適用できません。相関モデルでは、項目またはイベントが互いにどのように関連付けられるのかを説明するルールが戻されます。相関ルールは統計とともに戻され、この統計を使用して確率に従ってランク付けされます。

OMLでは、次の表に示す教師なし機能がサポートされています。

表3-2 Oracle Machine Learningの教師なし機能

機能 説明 問題例

異常検出

「通常の」データの特徴に合致しない項目(外れ値)を識別する。

1群の顧客に関する人口統計データを指定し、顧客の基準から大きく外れる購買行動を識別する。

相関ルール

データ内で同時発生する傾向にある項目を検出し、その同時発生の原則となるルールを特定する。

一緒に購入される傾向にある項目群を検出し、その関係性を特定する。

クラスタリング

データ内で自然なグループを検出する。

人口統計データを複数のクラスタに分割し、ある個人が特定のクラスタに属する確率をランク付けする

特徴抽出

元の属性の一次結合を使用して、新しい属性(特徴)を作成する。

1群の顧客に関する人口統計データを指定し、顧客の一般的な特徴別に属性をグループ分けする。

3.2 アルゴリズム

アルゴリズムについて明確に説明します。

アルゴリズムとは、特定の種類の問題を解決するための数学的手続きです。Oracle Machine Learningでは、機械学習機能ごとに少なくとも1つのアルゴリズムがサポートされています。一部の機能では、複数のアルゴリズムから選択することも可能です。

機械学習モデルは、特定のアルゴリズムによって生成されます。機械学習の問題には、複数のアルゴリズムを使用したほうが適切に解決できるものもあります。この場合、複数のモデルの開発が必要になります。たとえば、初めに特徴抽出モデルを使用して1組の最適化された予測子を作成し、続いて分類モデルを使用してその結果に対する予測を作成するといった方法があります。

3.2.1 Oracle Machine Learningの教師ありアルゴリズム

Oracle Machine Learning for SQL (OML4SQL)では、次の表に示す教師あり機械学習アルゴリズムがサポートされています。

表3-3 Oracle Machine Learningの教師あり機能用アルゴリズム

アルゴリズム 機能 説明

ディシジョン・ツリー

分類

ディシジョン・ツリーを使用すると、人間が理解可能なルールの形式で予測情報を抽出できる。このルールはif-then-else式で、予測を導く決定を示す。

明示的セマンティック分析

分類

明示的セマンティック分析(ESA)は、テキスト・データの予測を作成するように設計されています。このアルゴリズムは、何十万ものクラスを持つのユース・ケースに対処できます。Oracle Database 12cリリース2では、ESAは特徴抽出アルゴリズムとして導入されました。

指数平滑法

時系列

指数平滑法(ESM)は、時系列データの予測を提供します。予測は、ユーザーが指定した予測期間内の各期間に対して行われます。ESMには、最もよく使用される推定である傾向や季節的影響など、計14種類の時系列モデルが用意されています。モデルの選択は、ユーザー設定で制御されます。ESMは、予測に対する信頼限界を提供します。

一般化線形モデル

分類回帰

一般化線形モデル(GLM)では、2項ターゲットの分類についてはロジスティック回帰が、連続的ターゲットについては線形回帰が実装されています。GLM分類では予測確率の信頼限界がサポートされる。GLM回帰では予測の信頼限界がサポートされる。

最小記述長

属性評価

最小記述長(MDL)は、情報理論モデルの選択原理の1つである。MDLでは、最も単純でコンパクトな表現が、データの説明として最適かつ最も可能性が高いとみなされる。

Naive Bayes

分類

Naive Bayesは、基底の根拠から予測の確率を導き出すBayesの定理を使用して、データで観測された根拠から予測を行う。

ニューラル・ネットワーク

分類回帰

機械学習におけるニューラル・ネットワークは、生物学的なニューラル・ネットワークからヒントを得た人工アルゴリズムであり、多数の一般的な未知入力に依存する関数を推定または近似するために使用されます。ニューラル・ネットワークは、分類および回帰用に設計されています。

ランダム・フォレスト

分類

ランダム・フォレストは、強力な機械学習アルゴリズムです。ランダム・フォレスト・アルゴリズムでは、多数のディシジョン・ツリー・モデルが作成され、ツリーの集合を使用して予測が行われます。

サポート・ベクター・マシン

分類回帰

サポート・ベクター・マシン(SVM)アルゴリズムの個々のバージョンでは、様々なカーネル関数を使用して種々のデータセットが処理されます。線形カーネルおよびガウス(非線形)カーネルがサポートされている。

SVM分類では、可能性のある最大マージンでのターゲット・クラスの分類が試行される。

SVM回帰では、データ・ポイントの最大数がイプシロン幅のチューブ内に収まるような連続関数の検出が試行される。

XGBoost

分類回帰

XGBoostは、XGBoostオープン・ソース・パッケージを利用可能にする、回帰および分類の機械学習アルゴリズムです。Oracle Machine Learning for SQLのXGBoostは、トレーニング・データを準備し、XGBoostを起動し、モデルを作成して保持し、予測のためにモデルを適用します。

3.2.2 Oracle Machine Learningの教師なしアルゴリズム

Oracle Machine Learning for SQL (OML4SQL)では、次の表に示す教師なし機械学習アルゴリズムがサポートされています。

表3-4 Oracle Machine Learningの教師なし機能用アルゴリズム

アルゴリズム 機能 説明

Apriori

相関

Aprioriは、あるセット内で同時発生する項目(高頻度項目セット)を識別することにより、マーケット・バスケット分析を行う。Aprioriでは、指定した最小限のサポートよりも高度なサポート、および指定した最小限の信頼度よりも高度な信頼度を備えたルールが検出される。

CUR行列分解

属性評価

CUR行列分解は、サポート・ベクター・マシン (SVM)および主成分分析(PCA)に取って替わるものであり、探索的データ分析のための重要なツールです。このアルゴリズムは分析処理を実行し、重要な列および行を選び出します。

期待値最大化

クラスタリング

期待値最大化(EM)は、確率的クラスタリングを実行する密度推定アルゴリズムである。密度推定の目的は、所与の母集団がどのように分布しているかを取得する密度関数を構成することです。密度推定値は、母集団のサンプルを表現する観測済データに基づく。

Oracle Machine Learningでは、期待値最大化については、確率的クラスタリングとデータ頻度推定に加え、その他の用途がサポートされています。

明示的セマンティック分析

特徴抽出

明示的セマンティック分析(ESA)は、機能として既存のナレッジ・ベースを使用します。属性ベクターは、各機能または概念を表します。ESAでは、すべての属性をナレッジ・ベースの概念または概念属性相関ベクター値にマップする逆インデックスを作成します。

k-Means

クラスタリング

k-Meansは、事前に指定した数のクラスタにデータを分割する、距離ベースのクラスタリング・アルゴリズムである。各クラスタには、重心(重力の中心)がある。あるクラスタに含まれる各ケース(母集団内の個々の要素)はその重心に近接する。

OML4SQLでは、k-Meansの拡張バージョンがサポートされています。拡張バージョンは従来の実装よりも高度で、クラスタの階層形式の親子関係が定義される。

多変量状態推定技術 - 逐次確率比検定

異常検出

多変量状態推定技術-逐次確率比検定(MSET-SPRT)アルゴリズムは、重要プロセスの監視用に設計された、非線形の、ノンパラメトリックな異常検出機械学習手法です。これは微妙な異常を検出する一方で、生成される不適切警告を最小限に抑えます。

Non-Negative Matrix Factorization

特徴抽出

Non-Negative Matrix Factorization (NMF)は、元の属性の一次結合を使用して新しい属性を生成する。一次結合の係数は非負数。モデル適用の際、NMFモデルでは、モデルによって発見された属性(特徴)の新しいセットに元のデータがマップされる。

1クラス・サポート・ベクター・マシン

異常検出

1クラスのSVMで1クラスのプロファイルを作成する。モデルは、適用されると、そのプロファイルと多少異なるケースを識別する。これにより、必ずしも相互には関連していない頻度の低いケースの検出が可能になる。

直交パーティショニング・クラスタリング

クラスタリング

直交パーティショニング・クラスタリング(O-Cluster)では、階層形式かつグリッドベースのクラスタリング・モデルが作成されます。このアルゴリズムでは、属性空間内の密度の高い領域を定義するクラスタが作成される。基準となる密度レベルはsensitivityパラメータで定義される。

特異値分解および主成分分析

特徴抽出

特異値分解(SVD)および主成分分析(PCA)は、基礎となるデータ分散を取得する場合に最適な直交線形変換である。この特性は、高次元データのディメンション性を減少させ、有益なデータ・ビジュアライゼーションをサポートする場合に非常に役立つ。

ディメンション性の低減に加え、SVDとPCAには、データのノイズ除去(スムージング)、データ圧縮、マトリックス反転、線形方程式系の解決など、他の多くの重要な応用がある。

関連項目

3.3 データ準備

データの準備は、機械学習の問題を解決する上で重要なステップです。

モデルの質は、そのモデルの作成(トレーニング)に使用されるデータの質に大きく左右されます。どのような機械学習プロジェクトでも、多くの時間がデータの準備に費やされます。データは慎重に調査、整備および変換する必要があり、アルゴリズムに適したデータ準備方法を適用する必要があります。

データ準備のプロセスは、テスト用であるかスコアリング用であるかに関係なく、モデルが適用されるあらゆるデータについて、そのモデルのトレーニングに使用されたデータと同じ変換を行う必要があるため、一層複雑になっています。

3.3.1 Oracle Machine Learning for SQLによるデータ準備の簡略化

Oracle Machine Learning for SQLの、データ準備用の様々な機能について学習します。

OML4SQLには、データ準備のプロセスを大幅に単純化する機能がいくつか用意されています。

  • 組込みのデータ準備: モデルのトレーニングに使用される変換は、モデルに組み込まれ、モデルが新しいデータに適用されるたびに自動的に実行されます。モデルの変換を指定する場合、1回指定すれば済みます。

  • 自動データ準備(ADP): Oracle Machine Learning for SQLでは、自動データ準備モードがサポートされています。Oracle Machine Learning for SQLでは、ADPが有効になっている場合は、アルゴリズムによって必要とされるデータ変換は自動的に実行されます。変換の指示は、ユーザーが指定した変換の指示とともにモデルに組み込まれます。

  • 欠損値およびスパース・データの自動管理: Oracle Machine Learning for SQLでは、すべての機械学習アルゴリズムにわたり一貫した方法で、スパース性および欠損値が処理されます。

  • 透明性: Oracle Machine Learning for SQLでは、モデル内部の属性のビューであるモデル詳細が提供されます。ユーザーが解釈可能な形式に変換済属性値をマップする逆変換によって、モデル内部の詳細を調べることができます。可能である場合、属性値は元の列値に逆変換されます。逆変換は、教師ありモデルのターゲットにも適用されるため、スコアリングの結果は、元のターゲットの単位と同じ単位になります。

  • カスタム・データ準備用のツール: Oracle Machine Learning for SQLでは、DBMS_DATA_MINING_TRANSFORM PL/SQLパッケージ内に多くの一般的な変換ルーチンが用意されています。こられのルーチンを使用することも、SQLで独自のルーチンを開発することもできます(両方行うことも可能)。SQL言語は、データベースに変換を実装するために適しています。カスタムの変換指示は、ADPとともに使用することも、ADPのかわりに使用することもできます。

3.3.2 ケース・データ

機械学習におけるケース・データの重要性を学習します。

ほとんどの機械学習アルゴリズムは、各ケースの情報が別個の行に格納されている、単一レコードのケース・データが対象となります。ケースのデータ属性は、列に格納されます。

データがトランザクションに編成される場合、1つのケース(1つのトランザクション)のデータが複数の行に格納されます。トランザクショナル・データの例は、マーケット・バスケット・データです。ネイティブ・トランザクショナル・データを対象とする1つの相関ルールを除き、Oracle Machine Learning for SQLのアルゴリズムでは、単一レコードのケースを編成する必要があります。

3.3.2.1 ネストしたデータ

ネストした列がOracle Machine Learning for SQLにおいてどのように扱われるかを学習します。

OML4SQLでは、ネストした列での属性がサポートされています。トランザクション表は、ネストした列としてキャストし、単一レコード・ケース・データの表に含めることができます。同様に、スター・スキーマもネストした列としてキャストできます。Oracle Machine Learning for SQLでは、ネストしたデータの変換により、複数のソースおよび構成から取得されるデータを効果的にマイニングできます。

3.3.3 テキスト・データ

機械学習用の非構造化テキスト・データを準備および変換します。

Oracle Machine Learning for SQLでは、CLOB列および長いVARCHAR2列は、自動的に非構造化テキストとして解釈されます。また、短いVARCHAR2CHARBLOBおよびBFILEの列を非構造化テキストとして指定できます。非構造化テキストには、Webページ、ドキュメント・ライブラリ、PowerPointプレゼンテーション、製品仕様、電子メール、レポートのコメント・フィールド、コール・センターのメモなどのデータ項目が含まれます。

OML4SQLでは、Oracle Textユーティリティ、および用語の重み付け方針を使用して、分析用に非構造化テキストが変換されます。テキスト変換では、テキスト用語が抽出され、テキスト索引の数値が付与されます。テキスト変換プロセスは、モデルおよび個々の属性に対して構成可能です。変換後、そのテキストをOML4SQLアルゴリズムでマイニングできます。

3.4 データベース内スコアリング

機械学習においてデータベース内スコアリングがどのように役立つかを理解します。

スコアリングとは、機械学習アルゴリズムを新しいデータに適用することです。従来の機械学習では、モデルは、リモート・システム上の特殊なソフトウェアを使用して構築され、スコアリングのために別のシステムに配置されます。これは、面倒でエラーの発生しやすいプロセスであり、セキュリティ違反に対して脆弱で、データ同期に困難が伴います。

Oracle Machine Learningでは、スコアリングは簡単かつ安全に実行できます。スコアリング・エンジンとデータは、両方ともデータベース内に存在します。スコアリングはSQL言語の機能拡張であるため、機械学習の結果は、アプリケーションおよびレポート・システムに簡単に統合できます。

3.4.1 パラレル実行と管理の簡易化

Oracle Machine Learning for SQLのすべてのスコアリング・ルーチンでは、大規模なデータセットをスコアリングするためのパラレル実行がサポートされています。

データベース内スコアリングにはパフォーマンス上の利点があります。Oracle Machine Learning for SQLのすべてのスコアリング・ルーチンでは、パラレル実行がサポートされています。パラレル実行により、複雑な問合せの実行や大規模なデータ・セットのスコアリングに必要な時間が大幅に短縮されます。

データベース内機械学習により、OML4SQLの新たな取り組みをサポートするために必要なIT作業が最小限になります。標準的なデータベース技術を使用して、モデルをより新しいデータに簡単にリフレッシュ(再作成)および再デプロイできます。スコアリング問合せが同じままであるため、データベースで基礎となるモデルが置き換えられるのみであり、デプロイは迅速です。

3.4.2 モデル適用と動的スコアリングのためのSQL関数

Oracle Machine Learning for SQLでは、スコアリングはSQL言語関数によって実行されます。SQL関数を使用した様々なスコアリング方法を理解します。

それらの関数は、予測、クラスタリングおよび特徴抽出を実行します。それらの関数は、2つの異なる方法、つまり、機械学習モデル・オブジェクトを適用する方法(例3-1)または機械学習分析を動的に計算する分析句を実行してそれをデータに適用する方法(例3-2)によって呼び出すことができます。動的スコアリングでは、モデルの必要性がなくなります。動的スコアリングは、機械学習のプロセスで説明されている従来の方法の補完として使用でき、そのかわりに使用することさえもできます。

例3-1では、PREDICTION_PROBABILITY関数によって、例2-1で作成されたモデルsvmc_sh_clas_sampleが適用され、mining_data_apply_vのデータがスコアリングされます。この関数によって、提携カードを使用する可能性の最も高いイタリアの10人の顧客が戻されます。

例3-2では、PREDICTIONおよびPREDICTION_PROBABILITY関数によって、分析構文(OVER ()句)が使用され、mining_data_apply_vのデータが動的にスコアリングされます。この問合せによって、現在提携カードを持っていないが、それを使用する可能性の高い顧客が戻されます。

例3-1 Oracle Machine Learning for SQLモデルの適用によるデータのスコアリング

SELECT cust_id FROM
  (SELECT cust_id, 
        rank() over (order by PREDICTION_PROBABILITY(svmc_sh_clas_sample, 1
                     USING *) DESC, cust_id) rnk
   FROM mining_data_apply_v
   WHERE country_name = 'Italy')
WHERE rnk <= 10
ORDER BY rnk;

   CUST_ID
----------
    101445
    100179
    100662
    100733
    100554
    100081
    100344
    100324
    100185
    101345

例3-2 分析関数の実行によるデータのスコアリング

SELECT cust_id, pred_prob FROM
  (SELECT cust_id, affinity_card, 
    PREDICTION(FOR TO_CHAR(affinity_card) USING *) OVER () pred_card,
    PREDICTION_PROBABILITY(FOR TO_CHAR(affinity_card),1 USING *) OVER () pred_prob
   FROM mining_data_build_v)
WHERE affinity_card = 0
AND pred_card = 1
ORDER BY pred_prob DESC;

   CUST_ID PRED_PROB
---------- ---------
    102434       .96
    102365       .96
    102330       .96
    101733       .95
    102615       .94
    102686       .94
    102749       .93
    .
    .
    .
    101656       .51