2 Oracle Machine Learningの基本
2.1 機械学習手法
各機械学習手法は、モデル化して解決できる問題の種類を指定します。
Oracle Machine Learningを使用するには、機械学習の手法およびアルゴリズムについての基本的な知識が必要になります。
機械学習手法は、一般に教師ありと教師なしの2つのカテゴリに分けられます。教師あり学習、教師なし学習という概念は、人工知能の1分野といわれる機械学習学に由来しています。
人工知能とは、自身の知能や動作を自主的に提示するシステムの実装や研究を指します。機械学習においては、デバイスが自身のパフォーマンスから学習して、自らのファンクションを変更できるようにする技術が扱われます。
関連トピック
2.1.1 教師あり機械学習
教師あり機械学習の概要を示します。
教師あり学習は、指示あり学習とも呼ばれます。この種の学習プロセスは、既知である従属属性またはターゲットからの指示を受けます。指示ありのOracle Machine Learningでは、ターゲットの動作を一連の独立属性や予測子のファンクションとして説明するように試行します。
2.1.1.2 教師あり学習: スコアリング
教師あり学習におけるスコアリングについて学習します。
適用データはスコアリング・データとも呼ばれ、モデルの適用対象となる実際の母集団のことを指します。たとえば、特定の製品を頻繁に購入する顧客の特性を識別するモデルを作成する場合について考えてみます。特定の店舗で買い物をする顧客のうち関連製品を購入する可能性がある顧客の一覧を取得するために、このモデルを当該店舗の顧客データに適用するとします。この場合、店舗の顧客データがスコアリング・データとなります。
教師あり学習のほとんどは、対象とする母集団に適用できます。主要な教師あり機械学習の手法である分類と回帰は、どちらもスコアリングに使用できます。
Oracle Machine Learningでは、もう1つの教師あり手法である属性評価のスコアリング操作をサポートしていません。このタイプのモデルは、対象とする母集団に基づいて作成され、その母集団に関する情報を取得するため、別個のデータには適用できません。属性評価モデルでは、ターゲット値の予測において最も重要な属性が戻され、ランク付けされます。
2.1.2 教師なし機械学習
教師なし機械学習の概要を示します。
教師なし学習は、指示を受けません。従属属性と独立属性は区別されません。モデルの作成においてアルゴリズムを導く既知の結果は存在しません。
教師なし学習は、記述目的で使用できます。また、予測の作成にも使用できます。
2.1.2.1 教師なし学習: スコアリング
教師なし学習、サポートされているスコアリング操作および教師なし機械学習手法について概要を示します。
教師なし機械学習ではターゲットを指定しませんが、ほとんどの教師なし学習は対象とする母集団に適用できます。たとえば、クラスタリング・モデルは記述機械学習の手法を使用しますが、クラスタの割当てに従ってケースを分類するために適用できます。異常検出は教師なしですが、通常は、あるデータ・ポイントが一連のケース内で典型的かどうかを予測するために使用されます。
Oracle Machine Learningでは、クラスタリングおよび特徴抽出(どちらも教師なし機械学習手法)に対してスコアリング操作をサポートしています。Oracle Machine Learningは、もう1つの教師なしファンクションである相関ルールのスコアリング操作はサポートしていません。相関モデルは、特定の母集団に関する情報を取得するためにその母集団に基づいて作成されるため、別個のデータには適用できません。相関モデルでは、項目またはイベントが互いにどのように関連付けられるのかを説明するルールが戻されます。相関ルールは統計とともに戻され、この統計を使用して確率に従ってランク付けされます。
OMLでは、次の表に示す教師なし手法をサポートしています。
表2-2 Oracle Machine Learningの教師なし手法
ファンクション | 説明 | 問題例 |
---|---|---|
「通常の」データの特徴に合致しない項目(外れ値)を識別する。 |
1群の顧客に関する人口統計データを指定し、顧客の基準から大きく外れる購買行動を識別する。 |
|
データ内で同時発生する傾向にある項目を検出し、その同時発生の原則となるルールを特定する。 |
一緒に購入される傾向にある項目群を検出し、その関係性を特定する。 |
|
データ内で自然なグループを検出する。 |
人口統計データを複数のクラスタに分割し、ある個人が特定のクラスタに属する確率をランク付けする |
|
1群の顧客に関する人口統計データを指定し、顧客の一般的な特徴別に属性をグループ分けする。 |
関連トピック
2.2 機械学習アルゴリズムとは
アルゴリズムとは、特定の種類の問題を解決するための数学的手続きです。一部の機械学習手法では、複数のアルゴリズムから選択できます。
各アルゴリズムは、様々な特性を持つ特定のタイプのモデルを生成します。機械学習の問題には、複数のアルゴリズムを組み合せて使用すると最適に解決できるものがあります。たとえば、初めに特徴抽出モデルを使用して1組の最適化された予測子を作成し、続いて分類モデルを使用してその結果に対する予測を作成するといった方法があります。
2.2.1 Oracle Machine Learningの教師ありアルゴリズム
Oracle Machine Learning for SQL (OML4SQL)は、次の表で説明する教師ありの機械学習アルゴリズムをサポートしています。
表2-3 教師あり手法に対応するOracle Machine Learningのアルゴリズム
2.2.2 Oracle Machine Learningの教師なしアルゴリズム
Oracle Machine Learning for SQL (OML4SQL)は、次の表で説明する教師なしの機械学習アルゴリズムをサポートしています。
表2-4 教師なし手法に対応するOracle Machine Learningのアルゴリズム
関連トピック
2.3 データ準備
データの準備は、機械学習の問題解決の重要なステップです。
モデルの質は、そのモデルの作成(トレーニング)に使用されるデータの質に大きく左右されます。どのような機械学習プロジェクトでも、その取組みの多くの時間がデータの準備に費やされます。データは慎重に調査、整備および変換する必要があり、アルゴリズムに適したデータ準備方法を適用する必要があります。
データ準備のプロセスは、テスト用であるかスコアリング用であるかに関係なく、モデルが適用されるあらゆるデータについて、そのモデルのトレーニングに使用されたデータと同じ変換を行う必要があるため、一層複雑になっています。
2.3.1 Oracle Machine Learning for SQLを使用したデータ準備の簡略化
Oracle Machine Learning for SQL (OML4SQL)は、組込みのデータ準備、自動データ準備、DBMS_DATA_MINING_TRANSFORM
PL/SQLパッケージによるカスタム・データ準備、モデル詳細を提供し、機械学習アルゴリズム全体で一貫したアプローチを使用して、欠落データとスパース・データを管理します。
OML4SQLには、データ準備プロセスを大幅に簡略化するための複数の機能があります。
-
組込みのデータ準備: モデルのトレーニングに使用される変換は、モデルに組み込まれ、モデルが新しいデータに適用されるたびに自動的に実行されます。モデルの変換を指定する場合、1回指定すれば済みます。
-
自動データ準備(ADP): Oracle Machine Learning for SQLでは、自動データ準備モードをサポートしています。ADPを有効化すると、Oracle Machine Learning for SQLはアルゴリズムで必要とされるデータ変換を自動的に実行します。変換の指示は、ユーザーが指定した変換の指示とともにモデルに組み込まれます。
-
欠損値とスパース・データの自動管理: 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のかわりに使用することもできます。
2.3.2 ケース・データ
機械学習におけるケース・データの重要性について説明します。
ほとんどの機械学習アルゴリズムは、各ケースの情報が個別の行に格納される単一レコード・ケース・データに対して動作します。ケースのデータ属性は、列に格納されます。
データがトランザクションに編成される場合、1つのケース(1つのトランザクション)のデータが複数の行に格納されます。トランザクショナル・データの例は、マーケット・バスケット・データです。ネイティブ・トランザクショナル・データに対する操作が可能な相関ルールを唯一の例外として、Oracle Machine Learning for SQLのアルゴリズムには単一レコード・ケースの編成が必要になります。
2.3.3 テキスト・データ
非構造化テキスト・データを機械学習用に準備および変換します。
Oracle Machine Learning for SQLは、CLOB
列および長いVARCHAR2
列を自動的に非構造化テキストとして解釈します。また、短いVARCHAR2
、CHAR
、BLOB
およびBFILE
の列を非構造化テキストとして指定できます。非構造化テキストには、Webページ、ドキュメント・ライブラリ、PowerPointプレゼンテーション、製品仕様、電子メール、レポートのコメント・フィールド、コール・センターのノートなどのデータ項目が含まれます。
OML4SQLでは、Oracle Textユーティリティおよび用語の重み付け方針を使用して、非構造化テキストを分析用に変換します。テキスト変換では、テキスト用語が抽出され、テキスト索引の数値が付与されます。テキスト変換プロセスは、モデルおよび個々の属性に対して構成可能です。変換後のテキストは、OML4SQLアルゴリズムでマイニングできます。
関連トピック
2.4 データベース内スコアリング
スコアリングとは、新しいデータに機械学習アルゴリズムを適用することです。Oracle Machine Learning for SQLスコアリング・エンジンとデータは、両方ともデータベース内に存在します。
従来の機械学習では、リモート・システム上の特殊なソフトウェアを使用してモデルが構築され、そのモデルはスコアリングのために別のシステムに配置されます。これは、面倒でエラーの発生しやすいプロセスであり、セキュリティ違反に対して脆弱で、データ同期に困難が伴います。
OML4SQLでは、スコアリングは単純でセキュアです。スコアリング・エンジンとデータは、両方ともデータベース内に存在します。スコアリングは、SQL言語の拡張であるため、機械学習の結果はアプリケーションとレポート・システムに簡単に統合できます。
2.4.1 パラレル実行と管理の簡易化
Oracle Machine Learning for SQLのすべてのスコアリング・ルーチンは、大規模データ・セットのスコアリングのためのパラレル実行をサポートしています。
データベース内スコアリングにはパフォーマンス上の利点があります。Oracle Machine Learning for SQLのすべてのスコアリング・ルーチンは、パラレル実行をサポートしています。複雑な問合せや大規模なデータ・セットのスコアリングの実行にかかる時間が大幅に短縮されます。
データベース内機械学習により、OML4SQLの導入をサポートするために必要なIT部門の労力が最小化されます。標準的なデータベース技術を使用して、モデルをより新しいデータに簡単にリフレッシュ(再作成)および再デプロイできます。スコアリング問合せが同じままであるため、データベースで基礎となるモデルが置き換えられるのみであり、デプロイは迅速です。
2.4.2 モデル適用と動的スコアリングのためのSQL関数
Oracle Machine Learning for SQLでは、スコアリングはSQL言語関数によって実行されます。SQL関数を使用した様々なスコアリング方法について説明します。
ファンクションによって、予測、クラスタリングおよび特徴抽出を実行します。関数の呼出し方法は2つあります。機械学習モデル・オブジェクトを適用する方法(例2-1)と、機械学習分析を動的に計算してデータに適用する分析句を実行する方法(例2-2)です。モデルの必要性が排除される動的スコアリングにより、「機械学習のプロセス」に示した従来の方法を補完(または置換)できます。
例2-1では、PREDICTION_PROBABILITY
関数によって、例1-1で作成されたモデルsvmc_sh_clas_sampleが適用され、mining_data_apply_v
のデータがスコアリングされます。この関数によって、提携カードを使用する可能性の最も高いイタリアの10人の顧客が戻されます。
例2-2では、PREDICTION
およびPREDICTION_PROBABILITY
関数によって、分析構文(OVER
()句)が使用され、mining_data_apply_v
のデータが動的にスコアリングされます。この問合せによって、現在提携カードを持っていないが、それを使用する可能性の高い顧客が戻されます。
例2-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
例2-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