Oracle® Data Mining

ユーザーズ・ガイド

12cリリース1 (12.1)

B72967-05(原本部品番号:E53115-05)

2017年5月

Oracle Data Miningユーザーズ・ガイド 12c リリース1 (12.1)

B72967-05

Copyright © 2005, 2017, Oracle and/or its affiliates.  All rights reserved.

原本著者: Sarika Surampudi

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleとJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- 関連ドキュメント

- Oracle Technology Network上のOracle Data Miningリソース

- アプリケーション開発およびデータベース管理ドキュメント

- ドキュメントのアクセシビリティについて

- 表記規則

Oracle Data Miningユーザーズ・ガイドのこのリリースでの変更点

- このリリースで初版となるOracle Data Miningユーザーズ・ガイド

- Oracle Data Mining 12cリリース1 (12.1)での変更点

- 新機能

- サポート対象外機能

- その他の変更点

1 SQLによるデータ・マイニング

- データ・マイニングAPIの特徴

- 例: 販売促進の候補のターゲット設定

- 例: 優良顧客の分析

- 例: 顧客データのセグメント化

2 データ・マイニングAPIについて

- マイニング・モデルについて

- データ・マイニングのデータ・ディクショナリ・ビュー

- ALL_MINING_MODELS

- ALL_MINING_MODEL_ATTRIBUTES

- ALL_MINING_MODEL_SETTINGS

- データ・マイニングPL/SQLパッケージ

- DBMS_DATA_MINING

- DBMS_DATA_MININGのDDL

- DBMS_DATA_MINING_TRANSFORM

- DBMS_DATA_MINING_TRANSFORMの変換手法

- DBMS_PREDICTIVE_ANALYTICS

- データ・マイニングSQLスコアリング関数

3 データの準備

- データ要件

- 列のデータ型

- 分類および回帰用のデータ・セット

- スコアリング要件

- 属性について

- データ属性とモデル属性

- ターゲット属性

- 量的、質的および非構造化テキスト

- モデルのシグネチャ

- モデル属性の名前の詳細

- モデルの詳細

- ネストしたデータの使用

- ネストしたオブジェクト型

- 例: マイニング用のトランザクショナル・データの変換

- マーケット・バスケット・データの使用

- 例: マーケット・バスケット分析用のネストした列の作成

- 欠損値の処理

- 例: 欠損値とスパース・データの識別基準

- 売上表のスパース性

- 顧客データの表の欠損値

- Oracle Data Miningにおける欠損値の扱い

- 欠損値処理の変更

4 データの変換

- 変換について

- ケース表の準備

- ネストした列の作成

- 列のデータ型の変換

- テキスト変換

- ビジネスおよび分野に依存した変換について

- 自動データ準備の理解

- ビニング

- 正規化

- 外れ値の処理

- ADPによるデータの変換方法

- モデルへの変換の組込み

- 属性の変換指示の指定

- 式のレコード

- 属性指定

- 変換リストの作成

- SET_TRANSFORM

- STACKインタフェース

- GET_MODEL_TRANSFORMATIONSおよびGET_TRANSFORM_LIST

- 変換リストおよび自動データ準備

- Oracle Data Miningの変換ルーチン

- ビニング・ルーチン

- 正規化ルーチン

- 外れ値の処理のルーチン

- 逆変換の理解

5 モデルの作成

- モデルを作成する前の作業

- CREATE_MODELプロシージャ

- マイニング機能の選択

- アルゴリズムの選択

- 変換の指定

- 変換リストの作成

- 変換リストおよび自動データ準備

- モデルの設定の指定

- コストの指定

- 事前確率の指定

- クラスの重みの指定

- データ・ディクショナリにおけるモデルの設定

- モデルの詳細の表示

6 スコアリングと配置

- スコアリングと配置について

- データ・マイニングSQL関数の使用

- 予測子の選択

- 単一レコードのスコアリング

- 予測の詳細

- クラスタの詳細

- 特徴の詳細

- 予測の詳細

- リアルタイムのスコアリング

- 動的スコアリング

- コスト重視の意思決定

- DBMS_DATA_MINING.Apply

7 非構造化テキストのマイニング

- 非構造化テキストについて

- テキスト・マイニングとOracle Textについて

- テキスト・マイニングを含むモデルの作成

- テキスト・ポリシーの作成

- テキスト属性の構成

8 Oracle Data Miningの管理タスク

- データ・マイニング用のデータベースのインストールおよび構成

- インストールについて

- データベース・オプションの有効化または無効化

- データ・マイニング用のデータベース・チューニングに関する考慮事項

- Oracle Data Miningのアップグレードまたはダウングレード

- アップグレード前の手順

- Javaで作成されたモデルの削除

- Oracle Data Miner Classicで作成されたマイニング操作の削除

- Oracle Data Miningのアップグレード

- Database Upgrade Assistantを使用したOracle Data Miningのアップグレード

- リリース10gからのアップグレード

- リリース11gからのアップグレード

- エクスポートとインポートを使用したデータ・マイニング・モデルのアップグレード

- リリース10gのデータ・マイニング・モデルのエクスポートとインポート

- リリース11gのデータ・マイニング・モデルのエクスポートとインポート

- アップグレード後の手順

- Oracle Data Miningのダウングレード

- マイニング・モデルのエクスポートおよびインポート

- Oracle Data Pumpについて

- マイニング・モデルのエクスポートおよびインポート用オプション

- EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト

- EXPORT_MODELおよびIMPORT_MODELの使用

- PMMLからのインポート

- マイニング・モデルおよびデータへのアクセスの制御

- データ・マイニング・ユーザーの作成

- データ・マイニングの権限の付与

- データ・マイニングのシステム権限

- マイニング・モデルのオブジェクト権限

- マイニング・モデルに対する監査およびコメントの追加

- マイニング・モデルへのコメントの追加

- マイニング・モデルの監査

A データ・マイニングのサンプル・プログラム

- データ・マイニングのサンプル・プログラムについて

- データ・マイニングのサンプル・プログラムのインストール

- データ・マイニングのサンプル・データ

索引

はじめに

このガイドでは、Oracle Data Miningへのプログラム・インタフェースの使用方法およびOracle Data Miningを管理するためのOracle Databaseの機能の使用方法について説明します。このガイドでは、『Oracle Data Mining概要』に記載されている概念を実装するためのツールおよびプロシージャを提供します。

「はじめに」では、次の項目について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

このマニュアルは、SQLプログラミングおよびOracle Database管理を理解し、データ・マイニングの概念について基本的な知識を持っているアプリケーション開発者およびデータベース管理者を対象としています。

関連ドキュメント

Oracle Advanced AnalyticsのコンポーネントであるOracle Data Miningは、Oracle Databaseオンライン・ドキュメント・ライブラリの「Data Warehousing and Business Intelligence」のページにあります。

http://www.oracle.com/pls/topic/lookup?ctx=db121&id=dwbitab

次のマニュアルでOracle Data Miningについて説明しています。

- Oracle Data Mining概要

- 『Oracle Data Miningユーザーズ・ガイド』(このガイド)

- 『Oracle Data Mining APIガイド』

注意:

Virtual Bookでは、Data Miningのマニュアルの主要な手順と、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』、『Oracle Database SQL言語リファレンス』および『Oracle Databaseリファレンス』の関連する参照ドキュメントを示しています。

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』(PL/SQLパッケージ)

- DBMS_DATA_MINING

- DBMS_DATA_MINING_TRANSFORM

- DBMS_PREDICTIVE_ANALYTICS

- 『Oracle Databaseリファレンス』(ALL_、USER_およびDBA_のデータ・ディクショナリ・ビュー)

- ALL_MINING_MODELS

- ALL_MINING_MODEL_ATTRIBUTES

- ALL_MINING_MODEL_SETTINGS

- 『Oracle Database SQL言語リファレンス』(データ・マイニング関数)

- CLUSTER_DETAILS、CLUSTER_DISTANCE、CLUSTER_ID、CLUSTER_PROBABILITY、CLUSTER_SET

- FEATURE_DETAILS、FEATURE_ID、FEATURE_SET、FEATURE_VALUE

- PREDICTION、PREDICTION_BOUNDS、PREDICTION_COST、PREDICTION_DETAILS、PREDICTION_PROBABILITY、PREDICTION_SET

Oracle Technology Network上のOracle Data Miningリソース

Oracle Technology Network (OTN)の「Oracle Data Mining」ページでは、ホワイト・ペーパー、デモ、ブログ、ディスカッション・フォーラム、Oracle By Exampleチュートリアルなどの有用な情報を提供しています。

http://www.oracle.com/pls/topic/lookup?ctx=db121&id=datmin

Oracle Data Miner (Oracle Data Miningへのグラフィカル・ユーザー・インタフェース)は、次のサイトでダウンロードできます。

http://www.oracle.com/pls/topic/lookup?ctx=db121&id=datminGUI

アプリケーション開発およびデータベース管理ドキュメント

データベース・アプリケーションの開発およびOracle Databaseの管理に関しては次のドキュメントを参照してください。

- Oracle Databaseの概念

- Oracle Database管理者ガイド

- Oracle Database開発ガイド

ドキュメントのアクセシビリティ

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracleサポートへのアクセス

サポートを購入したオラクル社のお客様は、My Oracle Supportを介して電子的なサポートにアクセスできます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

表記

このドキュメントでは次の表記規則を使用します。

表記

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

Oracle Data Miningユーザーズ・ガイドのこのリリースでの変更点

Oracle Data Miningユーザーズ・ガイドのこのリリースでの変更点。

このリリースで初版となるOracle Data Miningユーザーズ・ガイド

- このガイドは、リリース12cから作成されました。以前のリリースで提供されていた2つのマニュアル(『Oracle Data Mining管理者ガイド』と『Oracle Data Miningアプリケーション開発者ガイド』)は、『Oracle Data Miningユーザーズ・ガイド』になりました。

- Oracle Data Miningのデータベース管理に関する情報は、「Oracle Data Miningの管理タスク」に統合されました。このガイドの以降の章では、アプリケーション開発について説明します。

- データ・マイニングのサンプル・プログラムに関する情報は、「データ・マイニングのサンプル・プログラム」で説明されています。

Oracle Data Mining 12cリリース1 (12.1)での変更点

『Oracle Data Miningユーザーズ・ガイド12cリリース1(12.1)』では、次の変更点について説明しています。

新機能

このリリースの新機能は次のとおりです。

- 予測の詳細の拡張
PREDICTION_DETAILS関数によって、すべての予測アルゴリズムがサポートされ、予測子の詳細が戻されるようになりました。新しい関数のCLUSTER_DETAILSおよびFEATURE_DETAILSが導入されています。

「予測の詳細」を参照してください。

- 動的スコアリング
データ・マイニング用のSQL関数によって、事前定義されたモデルなしで動的にデータをスコアリングするための分析句がサポートされるようになりました。

「動的スコアリング」を参照してください。

- テキスト・マイニングの大幅な拡張
この拡張によって、入力に非構造化テキストが存在する場合のデータ・マイニング・プロセス(モデルの作成、配置およびスコアリング)が大幅に簡素化されました。

- テキスト・データの手動での前処理は不要になりました。

- テキスト索引を作成する必要はありません。

- CLOB、BLOB、BFILEのデータ型が追加でサポートされています。

- 文字データを質的な値またはテキストとして指定できます。

「非構造化テキストのマイニング」を参照してください。

- 新しいクラスタリング・アルゴリズム: 期待値最大化
次を参照してください。

- 表4-1

- 例1-6

- 例1-7

- 例1-8

- 例6-6

- データ・マイニングのサンプル・プログラムについて

- 新しい特徴抽出アルゴリズム: 特異値分解と主成分分析
次を参照してください。

- 表4-1

- 例6-7

- データ・マイニングのサンプル・プログラムについて

- 一般化線形モデルは、特徴の選択と作成をサポートするために拡張されました。
「データ・マイニングのサンプル・プログラム」を参照してください。

サポートが終了した機能

次の機能は、Oracleではサポートされなくなりました。このリリースでサポート対象外となった機能の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

- Oracle Data Mining Java API

- Adaptive Bayes Network (ABN)アルゴリズム

その他の変更点

このリリースでのその他の新機能を次に示します。

- 新しいSQL関数CLUSTER_DISTANCEが導入されました。CLUSTER_DISTANCEは、各行とクラスタの重心との間の行の距離を戻します。
「スコアリングと配置」を参照してください。

- ネイティブDOUBLEデータ型(BINARY_DOUBLEおよびBINARY_FLOAT)を新しくサポートすることによって、SQLスコアリング関数のパフォーマンスが向上しました。
「データの準備」を参照

- ディシジョン・ツリー・アルゴリズムが、ネストしたデータをサポートするようになりました。
「データの準備」を参照

1 SQLによるデータ・マイニング

ここでは、Oracle Data Miningアプリケーション・プログラミング・インタフェース(API)を使用して、ビジネス上の課題を解く方法を学びます。

- データ・マイニングAPIの特徴

- 例: 販売促進の候補のターゲット設定

- 例: 優良顧客の分析

- 例: 顧客データのセグメント化

データ・マイニングAPIの特徴

Oracle Data Miningアプリケーション・プログラミング・インタフェース(API)の特長を学びます。

データ・マイニングは、多くのアプリケーション・ドメインで有益なテクノロジです。これは、業務を最適化して競争力を維持するためのツールとして、民間部門で徐々に欠かせないものになってきました。また、公共部門や科学研究でも重要なデータ・マイニングのアプリケーションがあります。ただし、データ・マイニング・アプリケーションの開発の複雑さと、データの大規模ストアの管理および保護に固有の複雑さによって、データ・マイニング・テクノロジの採用が制限されることがあります。

これらの問題に対処するには、Oracle Data Miningが最も適しています。データ・マイニング・エンジンがデータベース・カーネルに実装され、データの管理と保護にはOracle Databaseの堅牢な管理機能を使用できます。そのAPIは、広範なデータ・マイニングのアルゴリズムとプロシージャをサポートすると同時に、データ・マイニング・アプリケーションの開発を簡素化する機能も備えています。

Oracle Data Mining APIは、Oracle SQL (Oracle Databaseのネイティブ言語)に対する拡張機能で構成されています。このAPIには、次の利点があります。

- SQL問合せのコンテキスト内のスコアリング。スコアリングは動的に実行することも、データ・マイニング・モデルの適用により実行することもできます。

- 自動データ準備(ADP)と組込み変換。

- モデルの透明性。アルゴリズム固有の問合せでは、モデルの作成に使用された属性に関する詳細が戻されます。

- スコアリングの透明性。予測、クラスタリングまたは特徴抽出の操作に関する詳細をスコアとともに戻すことができます。

- 予測分析を実行するためのシンプルなルーチン。

- Oracle SQL Developer内のワークフローベースのグラフィカル・ユーザー・インタフェース(GUI)。SQL Developerは次のサイトから無料でダウンロードできます。
http://www.oracle.com/pls/topic/lookup?ctx=db121&id=datminGUI

注意:

Oracle Databaseには、データ・マイニングのサンプル・プログラムのセットが付属しています。このマニュアルの例は、これらのサンプルから抜粋しています。

関連トピック

- データ・マイニングのサンプル・プログラム

- Oracle Data Mining概要

例: 販売促進の候補のターゲット設定

この例では、クーポンとアフィニティ・カードを提供する特別な販促に対してブラジルの顧客をターゲット設定します。問合せでは、未婚/既婚、学歴および所得に関するデータを使用し、インセンティブを利用する可能性が最も高い顧客を予測します。問合せでは、dt_sh_clas_sampleというディシジョン・ツリー・モデルを適用して、顧客データをスコアリングします。

例1-1 アフィニティ・カードの最適な候補の予測

SELECT cust_id
FROM mining_data_apply_v
WHERE
PREDICTION(dt_sh_clas_sample
USING cust_marital_status, education, cust_income_level ) = 1
AND country_name IN 'Brazil';

CUST_ID
----------
100404
100607
101113

同じ問合せですが、不適切なネガティブより不適切なポジティブを優先するバイアスを使用したものを次に示します。

SELECT cust_id
FROM mining_data_apply_v
WHERE
PREDICTION(dt_sh_clas_sample COST MODEL
USING cust_marital_status, education, cust_income_level ) = 1
AND country_name IN 'Brazil';

CUST_ID
----------
100139
100163
100275
100404
100607
101113
101170
101463

COST MODELキーワードを使用すると、モデルに関連付けられたコスト・マトリックスが予測作成に使用されます。コスト・マトリックス(dt_sh_sample_costsという表に格納)は、不適切なネガティブは不適切なポジティブの8倍のコストがかかることを指定します。可能性の高い販促の候補の見落しは、可能性の低い候補を含めてしまう場合より、はるかにコストがかかります。

SELECT * FROM dt_sh_sample_cost;

ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE       COST
------------------- ---------------------- ----------
0                      0          0
0                      1          1
1                      0          8
1                      1          0

例: 優良顧客の分析

この項の例では、アフィニティ・カードを使用する顧客またはアフィニティ・カードを使用しそうな顧客に関する情報がわかります。例は次のとおりです。

例1-2 優良顧客に関する人口統計データ情報の検出

この問合せでは、典型的なアフィニティ・カード保有者の性別、年齢および居住期間が戻されます。異常検出モデル(SVMO_SH_Clas_sample)は、一般的なケースの場合には1を、異常なケースの場合には0を戻します。人口統計データは、典型的な顧客のみについて予測されます(外れ値はサンプルに含まれません)。

SELECT cust_gender, round(avg(age)) age,
round(avg(yrs_residence)) yrs_residence,
count(*) cnt
FROM mining_data_one_class_v
WHERE PREDICTION(SVMO_SH_Clas_sample using *) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

CUST_GENDER         AGE YRS_RESIDENCE        CNT
------------ ---------- ------------- ----------
F                    40             4         36
M                    45             5        304

例1-3 優良顧客と共通点のある顧客の動的な特定

この問合せでは、現在はアフィニティ・カードを持っていないが、アフィニティ・カード保有者と多くの特徴を共有する顧客を特定します。PREDICTION関数およびPREDICTION_PROBABILITY関数では、事前定義のモデルのかわりにOVER句を使用して顧客を分類します。予測と確率は動的に計算されます。

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
.
.
.
.
102580       .52
102269       .52
102533       .51
101604       .51
101656       .51

226 rows selected.

例1-4 新規顧客が優良顧客になる可能性の予測

この問合せでは、新規顧客が優良顧客(アフィニティ・カード保有者)になる確率を計算します。この問合せは、販売時にリアルタイムで実行できます。

新規顧客は、44歳のアメリカ人重役で、学士の学位を持ち、年収は$300,000です。結婚していて、3人家族で暮らしており、過去6年間同じ住宅に住んでいます。この顧客が典型的なアフィニティ・カード保有者になる確立はわずか5.8%です。

SELECT PREDICTION_PROBABILITY(SVMO_SH_Clas_sample, 1 USING
44 AS age,
6 AS yrs_residence,
'Bach.' AS education,
'Married' AS cust_marital_status,
'Exec.' AS occupation,
'United States of America' AS country_name,
'M' AS cust_gender,
'L: 300,000 and above' AS cust_income_level,
'3' AS houshold_size
) prob_typical
FROM DUAL;

PROB_TYPICAL
------------
5.8

例1-5 予測分析を使用した最上位の予測子の検出

DBMS_PREDICTIVE_ANALYTICS PL/SQLパッケージには、事前定義のモデルなしで簡単なデータ・マイニング操作を実行するルーチンが含まれています。この例では、EXPLAINルーチンによって、アフィニティ・カードの所有に関する最上位の予測子が計算されます。結果には、世帯規模、未婚/既婚および年齢が、最上位となる3つの予測子であることが示されます。

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

SELECT * FROM cust_explain_result
WHERE rank < 4;

ATTRIBUTE_NAME           ATTRIBUTE_SUBNAME    EXPLANATORY_VALUE       RANK
------------------------ -------------------- ----------------- ----------
HOUSEHOLD_SIZE                                       .209628541          1
CUST_MARITAL_STATUS                                  .199794636          2
AGE                                                  .111683067          3

例: 顧客データのセグメント化

この項の例では、期待値最大化クラスタリング・モデルを使用し、共通の特徴に基づいて顧客データをセグメント化します。この項の例は次のとおりです。

例1-6 顧客セグメントの計算

この問合せでは、顧客の自然なグループが計算され、各グループの顧客数が戻されます。

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

例1-7 最大セグメントに含まれる可能性が最も高い顧客の検出

例1-6の問合せは、セグメント9が最も多くの顧客を含むことを示しています。次の問合せでは、セグメント9に含まれる可能性が最も高い5人の顧客がリストされます。

SELECT cust_id
FROM (SELECT cust_id, RANK() over (ORDER BY prob DESC, cust_id) rnk_clus2
FROM (SELECT cust_id,
ROUND(CLUSTER_PROBABILITY(em_sh_clus_sample, 9 USING *),3) prob
FROM mining_data_apply_v))
WHERE rnk_clus2 <= 5
ORDER BY rnk_clus2;

CUST_ID
----------
100002
100012
100016
100019
100021

例1-8 最大クラスタ内の代表的な顧客の主要な特徴の検出

例1-7の問合せでは、セグメント9に含まれる可能性が高い顧客のリストの最初に顧客100002が挙げられています。次の問合せでは、20%を超える確率で顧客100002のセグメントへの割当てを判断した場合に(この顧客の場合はセグメント9のみ)、最も重要な5つの特徴を戻します。

SELECT S.cluster_id, probability prob,
CLUSTER_DETAILS(em_sh_clus_sample, S.cluster_id, 5 using T.*) det
FROM
(SELECT v.*, CLUSTER_SET(em_sh_clus_sample, NULL, 0.2 USING *) pset
FROM mining_data_apply_v v
WHERE cust_id = 100002) T,
TABLE(T.pset) S
ORDER BY 2 desc;

CLUSTER_ID    PROB DET
---------- ------- --------------------------------------------------------------------------------
9  1.0000 <Details algorithm="Expectation Maximization" cluster="9">
<Attribute name="YRS_RESIDENCE" actualValue="4" weight="1" rank="1"/>
<Attribute name="EDUCATION" actualValue="Bach." weight="0" rank="2"/>
<Attribute name="AFFINITY_CARD" actualValue="0" weight="0" rank="3"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight="0" rank="4"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight="0" rank="5"/>
</Details>

2 データ・マイニングAPIについて

Oracle Data Miningアプリケーション・プログラミング・インタフェース(API)コンポーネントの概要。

- マイニング・モデルについて

- データ・マイニングのデータ・ディクショナリ・ビュー

- データ・マイニングPL/SQLパッケージ

- データ・マイニングSQLスコアリング関数

マイニング・モデルについて

マイニング・モデルは、データ・マイニングを実行するデータベース・スキーマ・オブジェクトです。すべてのスキーマ・オブジェクトと同様に、マイニング・モデルへのアクセスは、データベース権限によって制御されます。モデルはエクスポートとインポートが可能です。モデルではコメントをサポートしており、またデータベース監査システムでモデルを追跡することもできます。

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

注意:

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

関連項目:

- 動的スコアリング

- DBMS_PREDICTIVE_ANALYTICS

- モデルの作成

- Oracle Data Miningの管理タスク

データ・マイニングのデータ・ディクショナリ・ビュー

Oracle Data Miningのデータ・ディクショナリ・ビューの一覧を次の表に示します。データベース管理者(DBA)用バージョンおよびUSER用バージョンのビューもあります。

表2-1 Oracle Data Miningのデータ・ディクショナリ・ビュー

ビュー名

説明

ALL_MINING_MODELS

アクセス可能なすべてのマイニング・モデルに関する情報を表示します

ALL_MINING_MODEL_ATTRIBUTES

アクセス可能なすべてのマイニング・モデルの属性に関する情報を表示します

ALL_MINING_MODEL_SETTINGS

アクセス可能なすべてのマイニング・モデルの構成に関する情報を表示します

ALL_MINING_MODELS

次の例で、ALL_MINING_MODELSについて述べ、サンプルの問合せを示します。

例2-1 ALL_MINING_MODELS

describe ALL_MINING_MODELS
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                     NOT NULL VARCHAR2(128)
MODEL_NAME                                NOT NULL VARCHAR2(128)
MINING_FUNCTION                                    VARCHAR2(30)
ALGORITHM                                          VARCHAR2(30)
CREATION_DATE                             NOT NULL DATE
BUILD_DURATION                                     NUMBER
MODEL_SIZE                                         NUMBER
PARTITIONED                                        VARCHAR2(3)
COMMENTS                                           VARCHAR2(4000)

次の問合せで、サポート・ベクター・マシン・アルゴリズムを使用する、アクセス可能なモデルが返されます。

SELECT mining_function, model_name
FROM all_mining_models
WHERE algorithm = 'SUPPORT_VECTOR_MACHINES'
ORDER BY mining_function, model_name;

MINING_FUNCTION           MODEL_NAME
------------------------- --------------------
CLASSIFICATION            PART2_CLAS_SAMPLE
CLASSIFICATION            PART_CLAS_SAMPLE
CLASSIFICATION            SVMC_SH_CLAS_SAMPLE
CLASSIFICATION            SVMO_SH_CLAS_SAMPLE
CLASSIFICATION            T_SVM_CLAS_SAMPLE
REGRESSION                SVMR_SH_REGR_SAMPLE

関連項目:

- モデルの作成

- 『Oracle Databaseリファレンス』のALL_MINING_MODELSに関する説明

ALL_MINING_MODEL_ATTRIBUTES

次の例では、ALL_MINING_MODEL_ATTRIBUTESについて述べ、サンプルの問合せを示します。属性とは、モデルの作成とデータのスコアリングに使用された予測子または条件です。

例2-2 ALL_MINING_MODEL_ATTRIBUTES

describe ALL_MINING_MODEL_ATTRIBUTES
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                     NOT NULL VARCHAR2(128)
MODEL_NAME                                NOT NULL VARCHAR2(128)
ATTRIBUTE_NAME                            NOT NULL VARCHAR2(128)
ATTRIBUTE_TYPE                                     VARCHAR2(11)
DATA_TYPE                                          VARCHAR2(106)
DATA_LENGTH                                        NUMBER
DATA_PRECISION                                     NUMBER
DATA_SCALE                                         NUMBER
USAGE_TYPE                                         VARCHAR2(8)
TARGET                                             VARCHAR2(3)
ATTRIBUTE_SPEC                                     VARCHAR2(4000)

次の問合せにより、T_SVM_CLAS_SAMPLEという名前の付いたSVM分類モデルの属性が返されます。このモデルは質的属性と量的属性の両方を持ち、非構造化テキストである属性を1つ含んでいます。

SELECT attribute_name, attribute_type, target
FROM all_mining_model_attributes
WHERE model_name = 'T_SVM_CLAS_SAMPLE'
ORDER BY attribute_name;

ATTRIBUTE_NAME            ATTRIBUTE_TYPE       TAR
------------------------- -------------------- ---
AFFINITY_CARD             CATEGORICAL          YES
AGE                       NUMERICAL            NO
BOOKKEEPING_APPLICATION   NUMERICAL            NO
BULK_PACK_DISKETTES       NUMERICAL            NO
COMMENTS                  TEXT                 NO
COUNTRY_NAME              CATEGORICAL          NO
CUST_GENDER               CATEGORICAL          NO
CUST_INCOME_LEVEL         CATEGORICAL          NO
CUST_MARITAL_STATUS       CATEGORICAL          NO
EDUCATION                 CATEGORICAL          NO
FLAT_PANEL_MONITOR        NUMERICAL            NO
HOME_THEATER_PACKAGE      NUMERICAL            NO
HOUSEHOLD_SIZE            CATEGORICAL          NO
OCCUPATION                CATEGORICAL          NO
OS_DOC_SET_KANJI          NUMERICAL            NO
PRINTER_SUPPLIES          NUMERICAL            NO
YRS_RESIDENCE             NUMERICAL            NO
Y_BOX_GAMES               NUMERICAL            NO

関連項目:

- データ・マイニングAPIについて

- 『Oracle Databaseリファレンス』のALL_MINING_MODEL_ATTRIBUTESに関する説明

ALL_MINING_MODEL_SETTINGS

次の例で、ALL_MINING_MODEL_SETTINGSについて述べ、サンプルの問合せを示します。設定はモデルの動作に影響します。アルゴリズムやマイニング機能に固有の設定である場合と、一般的な設定である場合があります。

例2-3 ALL_MINING_MODEL_SETTINGS

describe ALL_MINING_MODEL_SETTINGS
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                     NOT NULL VARCHAR2(128)
MODEL_NAME                                NOT NULL VARCHAR2(128)
SETTING_NAME                              NOT NULL VARCHAR2(30)
SETTING_VALUE                                      VARCHAR2(4000)
SETTING_TYPE                                       VARCHAR2(7)

次の問合せにより、SVD_SH_SAMPLEという名前のモデルに対する設定が返されます。このモデルは、特徴抽出用に特異値分解アルゴリズムを使用します。

SELECT setting_name, setting_value, setting_type
FROM all_mining_model_settings
WHERE model_name = 'SVD_SH_SAMPLE'
ORDER BY setting_name;

SETTING_NAME                   SETTING_VALUE                  SETTING
------------------------------ ------------------------------ -------
ALGO_NAME                      ALGO_SINGULAR_VALUE_DECOMP     INPUT
ODMS_MISSING_VALUE_TREATMENT   ODMS_MISSING_VALUE_AUTO        DEFAULT
ODMS_SAMPLING                  ODMS_SAMPLING_DISABLE          DEFAULT
PREP_AUTO                      OFF                            INPUT
SVDS_SCORING_MODE              SVDS_SCORING_SVD               DEFAULT
SVDS_U_MATRIX_OUTPUT           SVDS_U_MATRIX_ENABLE           INPUT

関連項目:

- モデルの設定の指定

- 『Oracle Databaseリファレンス』のALL_MINING_MODEL_SETTINGSに関する説明

データ・マイニングPL/SQLパッケージ

Oracle Data MiningのPL/SQLインタフェースは、次の表に示す3つのパッケージで実装されています。

表2-2 データ・マイニングPL/SQLパッケージ

パッケージ名

説明

DBMS_DATA_MINING

マイニング・モデルの作成と管理を行うためのルーチン

DBMS_DATA_MINING_TRANSFORM

マイニング用にデータを変換するためのルーチン

DBMS_PREDICTIVE_ANALYTICS

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

関連項目:

- DBMS_DATA_MINING

- DBMS_DATA_MINING_TRANSFORM

- DBMS_PREDICTIVE_ANALYTICS

DBMS_DATA_MINING

DBMS_DATA_MININGパッケージには、マイニング・モデルの作成、マイニング・モデルに対する操作の実行およびマイニング・モデルの問合せを行うためのルーチンが含まれています。このパッケージには、次の操作を実行するためのルーチンが含まれています。

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

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

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

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

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

関連項目:

Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス

DBMS_DATA_MININGのDDL

表2-3では、マイニング・モデルのDDL操作について説明しています。

表2-3 マイニング・モデルのDDL

DDL

DBMS_DATA_MINING

説明

モデルの作成

CREATE_MODEL

モデルを作成します

モデルの削除

DROP_MODEL

モデルを削除します

モデルの名前の変更

RENAME_MODEL

モデルの名前を変更します

コスト・マトリックスの追加

ADD_COST_MATRIX

分類モデルにコスト・マトリックスを追加します

コスト・マトリックスの削除

REMOVE_COST_MATRIX

分類モデルからコスト・マトリックスを削除します

逆変換式の変更

ALTER_REVERSE_EXPRESSION

モデルに関連付けられている逆変換式を変更します

DBMS_DATA_MININGパッケージには、マイニング・モデルに関する情報を戻す多数の関数が含まれています。たとえば、例2-4の問合せでは、NMF_SH_Sampleという特徴抽出モデルの特徴1に関する詳細が戻されます。

例2-4 モデルの詳細の問合せの例

SELECT F.feature_id,
A.attribute_name,
A.attribute_value,
A.coefficient
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF('NMF_SH_Sample')) F,
TABLE(F.attribute_set) A
WHERE feature_id = 1
AND attribute_name in ('AFFINITY_CARD','AGE','COUNTRY_NAME')
ORDER BY feature_id,attribute_name,attribute_value;

関連項目:

- モデルの作成

- 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_DATA_MININGに関する項

DBMS_DATA_MINING_TRANSFORM

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

- マイニング・モデルに組込み可能な形式での変換の指定

- リレーショナル・ビュー(マイニング・モデル・オブジェクトの外部).としての変換の指定

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

関連項目:

- データの変換

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING_TRANSFORM に関する説明

DBMS_DATA_MINING_TRANSFORMの変換手法

表2-4 DBMS_DATA_MINING_TRANSFORMの変換手法

変換手法

説明

XFORMインタフェース

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

STACKインタフェース

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

SET_TRANSFORM

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

次の例に示す文により、コメント属性を非構造化テキスト・データとして処理する組込み変換を含むT_SVM_Clas_sampleというサポート・ベクター・マシン(SVM)分類モデルが作成されます。

例2-5 組込み変換の例

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;
/

DBMS_PREDICTIVE_ANALYTICS

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

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

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

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

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

例2-6 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 Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_PREDICTIVE_ANALYTICSに関する説明

データ・マイニングSQLスコアリング関数

データ・マイニングSQL言語関数は、Oracle Data Miningを使用してデータをスコアリングします。これらの関数は、マイニング・モデルのスキーマ・オブジェクトをデータに適用することも、分析句の実行によって動的にデータをマイニングすることもできます。SQL関数は、スコアリング操作をサポートするすべてのデータ・マイニング・アルゴリズムに使用できます。表2-5では、データ・マイニングSQL関数をリストしています。

表2-5 データ・マイニングSQL関数

関数

説明

CLUSTER_ID

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

CLUSTER_DETAILS

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

CLUSTER_DISTANCE

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

CLUSTER_PROBABILITY

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

CLUSTER_SET

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

FEATURE_ID

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

FEATURE_DETAILS

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

FEATURE_SET

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

FEATURE_VALUE

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

PREDICTION

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

PREDICTION_BOUNDS

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

PREDICTION_COST

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

PREDICTION_DETAILS

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

PREDICTION_PROBABILITY

予測の確率を戻す。

PREDICTION_SET

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

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

例2-7 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;

SQL> -- List the clusters into which the customers in this
SQL> -- data set have been grouped.
SQL> --
SQL> SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt
2    FROM mining_data_apply_v
3  GROUP BY CLUSTER_ID(em_sh_clus_sample USING *)
4  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

関連項目:

- スコアリングと配置

- データ・マイニングSQL関数に関する詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

3 データの準備

ここでは、モデルの作成に使用できる表またはビューを作成する方法を学びます。

- データ要件

- 属性について

- ネストしたデータの使用

- マーケット・バスケット・データの使用

- 欠損値の処理

データ要件

データ・マイニング操作では、1つの表またはビュー内で定義されたデータが必要です。各レコードの情報は別個の行に格納する必要があります。このデータ・レコードは一般的にケースと呼ばれます。各ケースは、必要に応じて一意のケースIDで識別されます。表またはビュー自体は、ケース表と呼ばれます。

マイニングに使用できる表の例として、SHスキーマのCUSTOMERS表があります。各顧客のすべての情報は、1つの行に格納されています。CUST_ID列にケースIDが格納されます。次の例でリスト表示されている行は、SH.CUSTOMERSから選択されています。

注意:

Oracle Data Miningでは、ネイティブ・トランザクショナル・データで構築できる相関モデルを除き、すべての種類のモデルに単一レコード・ケースのデータが必要です。

例3-1 ケース表の例

SQL> select cust_id, cust_gender, cust_year_of_birth,
cust_main_phone_number from sh.customers where cust_id < 11;

CUST_ID CUST_GENDER CUST_YEAR_OF_BIRTH CUST_MAIN_PHONE_NUMBER
------- ----------- ---- ------------- -------------------------
1        M               1946          127-379-8954
2        F               1957          680-327-1419
3        M               1939          115-509-3391
4        M               1934          577-104-2792
5        M               1969          563-667-7731
6        F               1925          682-732-7260
7        F               1986          648-272-6181
8        F               1964          234-693-8728
9        F               1936          697-702-2618
10       F               1947          601-207-4099

関連項目:

マーケット・バスケット・データの使用

列のデータ型

ケース表の列には、各ケースを説明する属性が含まれます。例3-1で、属性はCUST_GENDER、CUST_YEAR_OF_BIRTHおよびCUST_MAIN_PHONE_NUMBERです。属性は、監視ありモデルの予測子または監視なしモデルの記述子です。ケースIDのCUST_IDは、特別な属性として表示できます(これは予測子または記述子ではありません)。

Oracle Data Miningでは、標準のOracleデータ型と次のコレクション型をサポートしています。

- DM_NESTED_CATEGORICALS

- DM_NESTED_NUMERICALS

- DM_NESTED_BINARY_DOUBLES

- DM_NESTED_BINARY_FLOATS

関連項目:

- Oracle Data Miningのネストした型の詳細は、「ネストしたデータの使用」を参照してください

- 非構造化テキスト・データとして処理できるデータ型の詳細は、「非構造化テキストのマイニング」を参照してください。

- Oracleのデータ型については、『Oracle Database SQL言語リファレンス』を参照してください。

分類および回帰用のデータ・セット

分類モデルと回帰モデルを作成して検証するには、ケース表が2つ必要です。1つの行セットはモデルのトレーニング用、もう1つの行セットはモデルのテスト用に使用されます。作成データおよびテスト・データは多くの場合、同じデータ・セットから導出すると便利です。たとえば、モデルのトレーニング用に行の60%をランダムに選択し、残りの40%をモデルのテストに使用できます。

その他のマイニング機能を実装するモデル(属性評価、クラスタリング、相関または特徴抽出)では、別個のテスト・データは使用しません。

スコアリング要件

データ・マイニング・モデルの多くは、スコアリングと呼ばれるプロセスで別個のデータに適用できます。Oracle Data Miningでは、分類、回帰、異常検出、クラスタリングおよび特徴抽出のスコアリング操作をサポートします。

スコアリング・プロセスでは、スコアリング・データ内の列名と、モデルの作成に使用された列の名前とがマッチングされます。スコアリング・プロセスでは、スコアリング・データ内にすべての列が存在している必要はありません。データ型が一致しない場合、Oracle Data Miningでは型の強制が試行されます。たとえば、PRODUCT_RATINGという列がトレーニング・データ内ではVARCHAR2型であるのに対し、スコアリング・データ内ではNUMBER型である場合、Oracle Data MiningではTO_CHAR()関数が効果的に適用され、スコアリング・データ内の列の型が変換されます。

テスト・データまたはスコアリング・データ内の列には、作成データ内の対応する列と同じ変換を行う必要があります。たとえば、作成データ内のAGE列が数値から値CHILD、ADULTおよびSENIORに変換された場合、スコアリング・データ内のAGE列にも同じ変換を実行して、モデルが適切に評価できるようにする必要があります。

注意:

Oracle Data Miningでは、ユーザーが指定した変換指示をモデルに組み込んで、モデルの適用時は常にその変換指示が再適用されるようにすることが可能です。変換指示がモデルに組み込まれているときは、テスト・データセットまたはスコアリング・データセットに対してその変換指示を指定する必要はありません。

Oracle Data Miningは、自動データ準備(ADP)もサポートしています。ADPを有効にすると、アルゴリズムで必要とされる変換が自動的に実行され、ユーザーが指定した変換とともにモデル内に組み込まれます。

関連項目:

自動および組込みのデータ変換に関する詳細は、「データの変換」を参照してください

属性について

属性は、データ・マイニングで使用されるデータの項目です。予測モデルでは、属性は、特定の結果に影響を及ぼす予測子です。記述モデルでは、属性は自然なグループまたは相関を見つけるために分析される情報項目です。例として従業員データの表を考えると、そこには肩書き、雇用日、給与、年齢、性別などの属性が含まれます。

データ属性とモデル属性

データ属性とは、モデルの作成、テストまたはスコアリングに使用されるデータセットの列のことです。モデル属性とは、モデルによって内部的に使用されるデータ表現のことです。

データ属性とモデル属性が同一である場合もあります。たとえば、SIZEという名前の列と、値S、MおよびLは、いずれもモデルを作成するアルゴリズムで使用される属性です。モデル属性SIZEは、内部的にはその導出元であるデータ属性と同じである可能性が最も高いと考えられます。

一方、ある製品グループの売上高が格納されているネストした列SALES_PRODは、モデル属性と対応しません。データ属性がSALES_PRODの可能性はありますが、各製品および対応する売上高(ネストした列の各行)がモデル属性です。

変換によっても、データ属性とモデル属性の不一致が起こります。たとえば、変換で2つのデータ属性に対し計算を適用し、結果を新しい属性以下苦悩することができます。この新しい属性は、対応するデータ属性を持たないモデル属性です。ビニング、正規化および外れ値の処理などの変換では、ケース表のデータ属性とモデルの属性表現の不一致が起こります。

関連項目:

- ネストしたデータの使用

- 変換の詳細は、「データの変換」を参照してください。

ターゲット属性

監視ありモデルのターゲットは特別な属性です。トレーニング・データのターゲット列には、モデルのトレーニングに使用される履歴値が格納されます。テスト・データのターゲット列には、予測の比較対象になる履歴データが格納されます。スコアリングでは、ターゲットの予測が生成されます。

ターゲットは、クラスタリング・モデル、特徴抽出モデル、相関モデルおよび異常検出モデルでは使用されません。

ネストした列および非構造化データ(BFILE、CLOB、BLOBなど)の列は、ターゲットとして使用できません。ターゲット属性には単純なデータ型を使用する必要があります。

表3-1 ターゲットのデータ型

マイニング機能

ターゲットのデータ型

分類

VARCHAR2、CHAR

NUMBER、FLOAT

BINARY_DOUBLE、BINARY_FLOAT

回帰

NUMBER、FLOAT

BINARY_DOUBLE、BINARY_FLOAT

*_MINING_MODEL_ATTRIBUTESビューを問い合わせて、与えられたモデルのターゲットを見つけることができます。

関連項目:

ALL_MINING_MODEL_ATTRIBUTES

量的、質的および非構造化テキスト

モデル属性は、量的、質的または非構造化(テキスト)です。データ属性(ケース表の列)は、Oracleデータ型を持ちます(「列のデータ型」を参照)。

量的属性は、論理上は無限の数の値を持つことができます。これらの値には暗黙的な順序があり、値間の差も順序付けられます。Oracle Data Miningでは、NUMBER、FLOAT、BINARY_DOUBLE、BINARY_FLOAT、DM_NESTED_NUMERICALS、DM_NESTED_BINARY_DOUBLESおよびDM_NESTED_BINARY_FLOATSは、量的と解釈されます。

質的属性は、有限数の離散的カテゴリまたはクラスを特定する値を持ちます。値には、暗黙的な順序は関連付けられていません。一部のカテゴリは2値(yesまたはno、maleまたはfemaleなど)であり、取り得る値が2つのみです。その他のカテゴリは多クラスであり、3つ以上の値(small、mediumおよびlargeなど)を持ちます。

Oracle Data Miningでは、デフォルトでCHARおよびVARCHAR2を質的として解釈しますが、これらの列は非構造化データ(テキスト)の列として識別される場合もあります。Oracle Data Miningでは、DM_NESTED_CATEGORICALSの列を質的として解釈します。CLOB、BLOBおよびBFILEの列には、常に非構造化データが含まれます。

分類モデルのターゲットは質的です。(分類モデルのターゲットが量的である場合、このターゲットは質的として解釈されます。)一方、回帰モデルのターゲットは量的です。属性評価モデルのターゲットは、質的または量的のいずれかです。

関連項目:

- 列のデータ型

- 非構造化テキストのマイニング

モデルのシグネチャ

モデルのシグネチャは、モデルの作成に使用されたデータ属性のセットです。シグネチャの属性の一部またはすべては、スコアリング用に存在している必要があります。モデルは、可能なかぎり欠損している列も埋めようとします。名前は同じだがデータ型が異なる列が存在している場合、モデルではそのデータ型の変換が試行されます。余分な未使用の列が存在している場合、それらは無視されます。

必ずしも作成データのすべての列がモデルのシグネチャに含まれるとはかぎりません。アルゴリズム固有の基準により、モデルが特定の列を無視することがあります。その他の列が変換で除外されることもあります。モデルの作成で実際に使用されたデータ属性のみがシグネチャに含まれます。

ターゲット列およびケースID列はシグネチャに含まれません。

モデル属性の名前の詳細

モデル属性の名前は、1つの列名と1つのサブ列名から構成されます。

column_name[.subcolumn_name]

column_name構成要素は、データ属性の名前です。モデル属性の名前には必ず含まれます。ネストした属性およびテキスト属性には、次の例に示すとおり、subcolumn_name構成要素も含まれます。

例3-2 ネストした列から導出されたモデル属性

ネストした列SALESPRODは次の3つの行を持ちます。

SALESPROD(ATTRIBUTE_NAME, VALUE)
--------------------------------
((PROD1, 300),
(PROD2, 245),
(PROD3, 679))

データ属性の名前はSALESPRODです。関連するモデル属性は次のようになります。

SALESPROD.PROD1
SALESPROD.PROD2
SALESPROD.PROD3

モデルの詳細

モデルの詳細によって、モデル属性、およびアルゴリズムによるモデル属性の処理に関する情報がわかります。アルゴリズムにはそれぞれ別個のGET_MODEL_DETAILSルーチンが存在します。かわりにモデルの詳細ビューを利用することをお薦めします。

モデル属性には変換式や逆変換式が関連付けられます。変換はモデルを作成するアルゴリズムの処理の前にデータ属性に適用されます。逆変換はモデルの作成後にモデル属性に適用されますので、モデルの詳細は元のデータ属性の形式または可能なかぎりそれに近い形式で表されます。

逆変換では、モデルの透明性がサポートされます。逆変換は、アルゴリズムによって内部的に処理されるデータを、ユーザーが解釈可能な形式で表示します。

例3-3に、属性評価モデルに対するGET_MODEL_DETAILSファンクションの定義を示します。

例3-3 属性評価モデルのモデルの詳細

属性評価モデルに対するGET_MODEL_DETAILSファンクションの構文は次のとおりです。

DBMS_DATA_MINING.GET_MODEL_DETAILS_AI (
model_name             VARCHAR2)
RETURN DM_RANKED_ATTRIBUTES PIPELINED;

このファンクションは、仮想表DM_RANKED_ATTRIBUTESを戻します。これらの列がモデルの詳細です。指定したモデルの各モデル属性に対応する個別の行が存在します。これらの列は、次のように示されます。

attribute_name          VARCHAR2(4000)
attribute_subname       VARCHAR2(4000)
importance_value        NUMBER
rank                    NUMBER(38)

ネストしたデータの使用

Oracle Data Miningでは、各レコードが個別の行に含まれた、単一レコード・ケース形式のケース表が必要です。データの一部または全部が複数レコード・ケース形式で、各レコードが複数の行に含まれている場合はどうなるでしょうか。1つの属性で一連の値または値の集合(学生のテスト・スコアや顧客に購入された製品)を表す場合はどうなるでしょうか。

このような1対多の関係は通常、表間の結合として実装します。たとえば、顧客表を売上表と結合し、各顧客に購入商品のリストを関連付けることができます。

Oracle Data Miningでは、ネストした列を通じてディメンション化されたデータをサポートしています。ケース表にディメンション化されたデータを含めるには、ビューを作成し、データ・マイニングのネストした表タイプの1つに結合データをキャストします。ネストした列の各行は、属性の名前と値のペアから構成されます。ネストした各行は、別個の属性として内部的に処理されます。

注意:

O-Clusterは、ネストしたデータをサポートしていない唯一のアルゴリズムです。

関連項目:

例: マーケット・バスケット分析用のネストした列の作成

ネストしたオブジェクト型

Oracle Databaseでは、実在するエンティティをデータベース内のオブジェクトとしてモデル化できる、ユーザー定義のデータ型がサポートされています。コレクション型は、複数値属性をモデル化するためのオブジェクト・データ型です。ネストした表はコレクション型です。ネストした表は、他のデータ型が使用できる場所であればどこでも使用できます。

Oracle Data Miningでは、次のネストしたオブジェクト型をサポートしています。

- DM_NESTED_BINARY_DOUBLES

- DM_NESTED_BINARY_FLOATS

- DM_NESTED_NUMERICALS

- DM_NESTED_CATEGORICALS

ネストした型の説明は、この例を参照してください。

例3-4 Oracle Data Miningのネストしたデータ型

describe dm_nested_binary_double
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              BINARY_DOUBLE

describe dm_nested_binary_doubles
DM_NESTED_BINARY_DOUBLES TABLE OF SYS.DM_NESTED_BINARY_DOUBLE
Name                                       Null?    Type
------------------------------------------ -------- ---------------------------
ATTRIBUTE_NAME                                      VARCHAR2(4000)
VALUE                                               BINARY_DOUBLE

describe dm_nested_binary_float
Name                                      Null?    Type
----------------------------------------- -------- ---------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              BINARY_FLOAT

describe dm_nested_binary_floats
DM_NESTED_BINARY_FLOATS TABLE OF SYS.DM_NESTED_BINARY_FLOAT
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              BINARY_FLOAT

describe dm_nested_numerical
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              NUMBER

describe dm_nested_numericals
DM_NESTED_NUMERICALS TABLE OF SYS.DM_NESTED_NUMERICAL
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              NUMBER

describe dm_nested_categorical
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              VARCHAR2(4000)

describe dm_nested_categoricals
DM_NESTED_CATEGORICALS TABLE OF SYS.DM_NESTED_CATEGORICAL
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTRIBUTE_NAME                                     VARCHAR2(4000)
VALUE                                              VARCHAR2(4000)

関連項目:

コレクション・タイプの詳細は、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください

例: マイニング用のトランザクショナル・データの変換

例3-5は、ある売上表のビューのデータです。4つの地域で販売された製品のうちの3種類の売上が表示されています。このデータは、各ケース(製品)の売上が複数の行に格納されているため、製品レベルでのマイニングには適していません。

例3-6では、マイニング用にこのデータをどのように変換できるかが示されています。ケースID列は、PRODUCTです。SALES_PER_REGION (DM_NESTED_NUMERICALS型のネストした列)がデータ属性です。この表は、各ケースの情報が単一行に格納されているため、製品ケース・レベルでのマイニングに適しています。

Oracle Data Miningでは、ネストした各行は例3-7のように別々のモデル属性として扱われます。

注意:

この例で示されている内容はあくまで概念的なものです。実際には、データは処理前にピボットされません。

例3-5複数レコード・ケース形式の地域ごとの製品売上

PRODUCT   REGION         SALES
-------   --------   ----------
Prod1       NE           556432
Prod2       NE           670155
Prod3       NE             3111
.
.
Prod1       NW            90887
Prod2       NW           100999
Prod3       NW           750437
.
.
Prod1       SE            82153
Prod2       SE            57322
Prod3       SE            28938
.
.
Prod1       SW          3297551
Prod2       SW          4972019
Prod3       SW           884923
.
.

例3-6 単一レコード・ケース形式の地域ごとの製品売上

PRODUCT      SALES_PER_REGION
(ATTRIBUTE_NAME, VALUE)
------    --------------------------
Prod1      ('NE' ,     556432)
('NW' ,      90887)
('SE' ,      82153)
('SW' ,    3297551)
Prod2      ('NE' ,     670155)
('NW' ,     100999)
('SE' ,      57322)
('SW' ,    4972019)
Prod3      ('NE' ,       3111)
('NW' ,     750437)
('SE' ,      28938)
('SW' ,     884923)
.
.

例3-7 SALES_PER_REGIONから導出されたモデル属性

PRODUCT    SALES_PER_REGION.NE    SALES_PER_REGION.NW    SALES_PER_REGION.SE    SALES_PER_REGION.SW
-------    ------------------    -------------------    ------------------    -------------------
Prod1                 556432                 90887                  82153                3297551
Prod2                 670155                100999                  57322                4972019
Prod3                   3111                 750437                 28938                 884923
.
.

マーケット・バスケット・データの使用

マーケット・バスケット・データは、一連のバスケットまたはトランザクションで販売された商品群を表します。Oracle Data Miningでは、マーケット・バスケット分析に相関マイニング機能が提供されます。

相関モデルで使用されるAprioriアルゴリズムでは、ある商品が別の商品と同時に購入される傾向を記述する相関ルールが生成されます。たとえば、ピーナッツ・バターを購入する顧客は80%の確率でジャムも購入するという結果が、相関ルールによって示される場合があります。

マーケット・バスケット・データは通常、トランザクショナルです。トランザクショナルなデータでは、1つのケースが1回の取引(トランザクション)を表し、トランザクションのデータは複数の行に格納されます。Oracle Data Miningの相関モデルはトランザクショナル・データまたは単一レコード・ケースのデータで構築できます。ODMS_ITEM_ID_COLUMN_NAMEおよびODMS_ITEM_VALUE_COLUMN_NAMEの設定では、相関ルールのデータがトランザクショナル形式かどうかを指定できます。

注意:

相関モデルは、ネイティブ・トランザクショナル・データで構築できる唯一のモデルです。その他すべての種類のモデルについて、Oracle Data Miningでは、単一レコード・ケース形式で存在するデータが必要です。

Aprioriアルゴリズムでは、データがトランザクショナルで、データに多数の欠損値が含まれていることが想定されます。Aprioriは、すべての欠損値をスパース・データとして解釈し、スパース・データを処理するための独自のネイティブ・メカニズムを持っています。

関連項目:

ODMS_ITEM_ID_COLUMN_NAME設定およびODMS_ITEM_VALUE_COLUMN_NAME設定の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

例: マーケット・バスケット分析用のネストした列の作成

相関モデルは、ネイティブ・トランザクショナル・データまたはネストしたデータで構築できます。次の例に、マーケット・バスケット分析用のネストした列を定義する方法を示します。

次のSQL文は、SALES_TRANS_CUST_NESTEDというビューで、このデータをDM_NESTED_NUMERICALS型の列に変換します。このビューは、マイニング用のケース表として使用できます。

CREATE VIEW sales_trans_cust_nested AS
SELECT trans_id,
CAST(COLLECT(DM_NESTED_NUMERICAL(
prod_name, 1))
AS DM_NESTED_NUMERICALS) custprods
FROM sales_trans_cust
GROUP BY trans_id;

この問合せは、変換されたデータから2つの行を戻します。

SELECT * FROM sales_trans_cust_nested
WHERE trans_id < 101000
AND trans_id > 100997;

TRANS_ID  CUSTPRODS(ATTRIBUTE_NAME, VALUE)
-------  ------------------------------------------------
100998   DM_NESTED_NUMERICALS
(DM_NESTED_NUMERICAL('O/S Documentation Set - English', 1)
100999   DM_NESTED_NUMERICALS
(DM_NESTED_NUMERICAL('CD-RW, High Speed Pack of 5', 1),
DM_NESTED_NUMERICAL('External 8X CD-ROM', 1),
DM_NESTED_NUMERICAL('SIMM- 16MB PCMCIAII card', 1))

例3-8 ネストした列への変換

ビューSALES_TRANS_CUSTは、各マーケット・バスケットを識別するトランザクションIDと、各バスケット内の製品のリストを表示します。

describe sales_trans_cust
Name                                                  Null?    Type
----------------------------------------------------- -------- ----------------
TRANS_ID                                              NOT NULL NUMBER
PROD_NAME                                             NOT NULL VARCHAR2(50)
QUANTITY                                                       NUMBER

関連項目:

欠損値の処理

欠損値の処理

Oracle Data Miningでは、スパース・データと、ランダムな欠損値の含まれるデータとが区別されます。後者は、一部の属性値が不明であることを意味します。一方、スパース・データには、データ内には表されていないが既知であるとみなされる値が含まれます。

スパース・データの典型例はマーケット・バスケット・データです。何百または何千個もある取扱い商品の中で、個々のケース(バスケットまたはトランザクション)に含まれる商品はわずかです。商品の値はすべて既知ですが、すべての商品がバスケットの中に存在するわけではありません。存在する商品に対しては特定の数量がありますが、存在していない商品についてはスパース(既知の数量は0(ゼロ))です。

Oracle Data Miningでは、欠損データは次のように解釈されます。

- ランダムな欠損: 単純な(ネストしていない)データ型の列内の欠損値は、ランダムに欠損しているとみなされます。

- スパース: ネストした列内の欠損値は、スパース性を示します。

例: 欠損値とスパース・データの識別基準

この項の例では、データがスパースであるのかランダムに欠損しているのかをOracle Data Miningがどのように識別するかについて説明します。

売上表のスパース性

ある売上表には、一定期間内に複数の店舗で顧客に販売された製品グループのPOSデータが格納されます。それぞれの顧客は、少数の製品しか購入しません。顧客が購入しなかった製品は、売上表の行として表示されません。

1人の顧客が各製品に支払った金額を求める場合、購入されなかった製品の金額は0(ゼロ)と推論されます。表に行が表示されなくても、この値はランダムな欠損でも未知でもなくゼロになります。

なお、売上データは(製品、店舗、顧客、時間で)ディメンション化され、多くの場合、マイニング用のネストしたデータとして表されます。

ネストした列の欠損値は常にスパース性を示すため、マイニング対象のデータに関してこの解釈が適切であることを確認する必要があります。たとえば、大規模な映画データベースのユーザーによる映画評価が格納されている複数レコード・ケースのデータセットをマイニングしようとする場合、欠損している評価は未知の(ランダムに欠損している)値ですが、Oracle Data Miningではこのデータをスパースとして扱い、欠損値については評価を0(ゼロ)と推定します。

顧客データの表の欠損値

顧客に関する人口統計データが格納されている顧客データの表があるとします。ケースID列は顧客IDです。属性は、年齢、学歴、職業、性別、世帯人員などです。データがすべてそろっていない顧客もいます。欠損値がある場合は、ランダムに欠損しているとみなされます。たとえば、顧客1の年齢と顧客2の職業がデータにない場合、その情報は単に不明なだけです。スパース性を示すことにはなりません。

この顧客データはディメンション化されないことに注意してください。ケースとその各属性の間には1対1のマッピングが存在します。どの属性もネストしていません。

Oracle Data Miningにおける欠損値の扱い

欠損値の処理方法は、アルゴリズムおよびデータの性質(質的または量的、スパースまたはランダムな欠損)によって異なります。欠損値の処理方法を次の表で要約します。

注意:

Oracle Data Miningでは、自動データ準備が使用されているかどうかにかかわらず、同じ欠損値処理が実行されます。

表3-2 アルゴリズムによる欠損値処理

欠損データ

EM、GLM、NMF、k-Means、SVD、SVM

DT、MDL、NB、OC

Apriori

ランダムな欠損値(量的)

欠損している量的な値はアルゴリズムにより平均値に置換される。

期待値の最大化(EM)では、ガウス分布でモデル化された列のみ置換される。

欠損値はそのままランダムな欠損として処理される。

すべての欠損データがスパースとして解釈される。

ランダムな欠損値(質的)

一般化線形モデル(GLM)、Non-Negative Matrix Factorization (NMF)、k-Meansおよびサポート・ベクター・マシン(SVM)により、欠損している質的データがモードに置換される。

特異値分解(SVD)は、質的データに対応していない。

EMは欠損している質的な値を置換しない。EMはNULLを、独自の頻度カウントとともに、個別値として扱う。

欠損値はそのままランダムな欠損として処理される。

すべての欠損データがスパースとして解釈される。

スパース・データ(量的)

スパースな量的データはアルゴリズムにより0(ゼロ)に置換される。

O-Clusterはネストしたデータをサポートしないため、スパース・データもサポートされない。ディシジョン・ツリー(DT)、最小記述長(MDL)およびNaive Bayes (NB)により、スパースな量的データが0に置換される。

スパース・データは処理される。

スパース・データ(質的)

SVD以外のすべてのアルゴリズムは、スパースな質的データをゼロ・ベクターで置換する。SVDは質的データをサポートしない。

O-Clusterはネストしたデータをサポートしないため、スパース・データもサポートされない。DT、MDLおよびNBでは、スパースな質的データはDM$SPARSEという特別な値に置換される。

スパース・データは処理される。

欠損値処理の変更

Oracle Data Miningで、欠損データを、ランダムな欠損としてではなくスパースとして、またはスパースとしてではなくランダムな欠損として処理する必要がある場合、モデルを作成する前に変換を行う必要があります

欠損値をスパースとして処理する必要があるにもかかわらず、Oracle Data Miningでその欠損値がランダムな欠損値として解釈される場合、NVLなどのSQL関数を使用すると、NULLを「NA」などの値に置換できます。Oracle Data Miningでは、特定の値が存在する場合、欠損値処理は行われません。

欠損しているネストした属性をランダムな欠損として処理する場合は、ネストした行を、別々の列に格納された物理的な属性に変換できます(ただし、ケース表の列数がデータベースによる制限(1000列以内)を超えない場合に限ります)。存在しうる属性の名前をすべて入力し、それらをNULLとして指定してください。あるいは、存在していないすべての商品について、ネストした列に行を挿入し、各行に平均値やモードなどの値を割り当ててください。

関連項目:

NVL関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください

4 データの変換

ここでは、データを変換してモデルを構築したりスコア付けをしたりする方法を理解します。

- 変換について

- ケース表の準備

- 自動データ準備の理解

- モデルへの変換の組込み

- 逆変換の理解

変換について

変換とは、1つ以上の列のデータを変更するSQL式のことです。データを使用してモデルを作成するには、通常、事前にそれらのデータに特定の変換を行う必要があります。多くのデータ・マイニング・アルゴリズムに特定の変換要件が存在します。スコアリングされるデータは、トレーニング・データが変換されたのと同じ方法で事前に変換される必要があります。

Oracle Data Miningでは、アルゴリズムで必要とされる変換を自動的に実装する自動データ準備(ADP)をサポートしています。変換がモデル内に組み込まれ、モデルの適用時には常にその変換が自動的に実行されます。

追加の変換が必要な場合は、それらの変換をSQL式として指定し、モデルの作成時に入力として提供することができます。これらの変換は、ADPを使用する場合と同じようにモデルに組み込まれます。

自動の組込みデータ変換を使用すると、データ準備のほとんどの作業が自動的に処理されます。モデルの作成と複数のデータ・セットのスコアリングを、次の少ない手順で行うことができます。

1. ケース表に含める列を特定します。

2. ネストした列を作成します(トランザクショナル・データを含める場合)。

3. ADPで処理されない変換のSQL式を記述します。

4. モデルを作成し、SQL式を提供し(指定する場合)、テキスト・データを含む列を特定します。

5. スコアリング・データの一部またはすべての列が、モデルのトレーニングに使用された列と同じ名前と型を持つことを確認します。

関連項目:

スコアリング要件

ケース表の準備

マイニング用のデータを準備する際の最初の手順は、ケース表の作成です。すべてのデータが単一の表内にあり、各ケース(レコード)のすべての情報が単一の行に含まれている場合(単一レコード・ケース)、このプロセスは完了しています。データが複数の表に存在している場合、データソースの作成には、ビューの作成が伴います。ここでは簡易的に、「ケース表」という用語は、表またはビューを指すものとします。

関連項目:

データの準備

ネストした列の作成

データソースにトランザクショナル・データが含まれる場合(複数レコード・ケース)、ネストした列でトランザクションをケース・レベルに集計する必要があります。トランザクショナル・データでは、各ケースの情報が複数の行に含まれています。例として、本番レベルでのマイニング時のスター・スキーマにおける売上データがあります。売上は、その製品が多数の店舗で多数の顧客に対してある期間にわたって販売されるため、単一の製品(ケース)の多数の行に格納されます。

関連項目:

トランザクショナル・データのネストした列への変換の詳細は、「ネストしたデータの使用」を参照してください

列のデータ型の変換

列のデータ型は、その型がOracle Data Miningで誤認識される場合、変換する必要があります。たとえば、郵便番号は様々な郵便区を識別しますが、順番は示しません。郵便番号は数値列に格納されている場合、量的属性として解釈されます。この場合、列データがモデルによって質的属性として使用されるように、データ型を変換する必要があります。これには、TO_CHAR関数を使用して1から9の数字を変換し、LPAD関数を使用して先頭の0 (ある場合)を保持します。

LPAD(TO_CHAR(ZIPCODE),5,'0')

テキスト変換

Oracle Data Miningではテキストをマイニングできます。ケース表内のテキスト列は、適切に変換すると、マイニングできるようになります。

テキスト列は、ビューではなく、表内に存在している必要があります。変換プロセスでは、いくつかのOracle Textの機能が使用され、表の各行のテキストがそれぞれ別個のドキュメントとして処理されます。各ドキュメントは、数値およびテキスト・ラベルを持つ用語と呼ばれるテキスト・トークンのセットに変換されます。テキスト列は、DM_NESTED_NUMERICALSのネストした列に変換されます。

関連項目:

詳細は、『Oracle Data Miningユーザーズ・ガイド』を参照してください。

ビジネスおよび分野に依存した変換について

一部の変換は、ビジネス上の問題の定義によって決まります。たとえば、高い利益を生む顧客を予測するモデルを作成する場合を考えます。現在の顧客の利益データはドルなどの通貨で表されているため、どの程度が「高い利益」なのかを定義する必要があります。この場合、モデルを作成する前に、これまでの経験から導かれたいくつかの式を使用して、利益属性を「低」、「中」および「高」の範囲に再コード化できます。

その他の一般的なビジネス上の変換には、データ情報の経過時間への変換があります。たとえば、出生日は年齢に変換できます。

専門知識は、データをどのように準備するのかを決める上で非常に重要になることがあります。たとえば、一部のアルゴリズムでは、通常の範囲から遠く外れた値がデータに含まれていると、信頼できない結果が生成されます。ある場合は、これらの値は誤差または異常値を表します。別の場合では、これらの値が意味のある情報を提供することもあります。

関連項目:

外れ値の処理

自動データ準備の理解

ほとんどのアルゴリズムでは、なんらかの形のデータ変換が必要となります。Oracle Data Miningは、モデルの作成プロセス時にアルゴリズムで必要とされる変換を自動的に実行できます。ユーザーは、この自動変換に独自の変換を追加したり、すべての変換を独自に管理できます。

自動変換を計算する際、Oracle Data Miningでは、経験則を使用して特定のアルゴリズムの一般的な要件を見つけます。多くの場合、このプロセスによってモデルの質がある程度確保されます。

ビニング、正規化および外れ値の処理は、データ・マイニング・アルゴリズムで一般的に必要とされる変換です。

関連項目:

Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス

ビニング

ビニングは離散化とも呼ばれ、連続データおよび離散データのカーディナリティを減らすための手法です。ビニングでは、関連する複数の値をビンにグループ化して、個別値の数を減らします。

ビニングを行うと、モデルの質をほとんど落とすことなく、リソースの使用率やモデル作成の応答時間を大幅に向上させることが可能です。ビニングを行うと、属性間の関係が補強され、モデルの質が向上する場合があります。

監視ありビニングは、データの重要な特性を使用してビン境界を判断する高い知能を備える形式のビニングです。監視ありビニングでは、ターゲットとの結合分布を考慮した単一予測子のディシジョン・ツリーによってビン境界が特定されます。監視ありビニングは、量的属性と質的属性の両方に使用できます。

正規化

正規化は、数値データの範囲を狭くする最も一般的な手法です。ほとんどの正規化手法では、1つの変数の範囲が別の範囲(通常は0から1)にマップされます。

外れ値の処理

列内の他の値から大幅に外れている値は、外れ値とみなされます。外れ値が存在すると、データに歪効果が現れ、正規化やビニングなどの変換の有効性が抑制される場合があります。

トリミングやクリッピングなど外れ値の処理手法を行うと、外れ値の影響を最小限に抑えることができます。

外れ値は、機器の異常に起因する不正確な読取りなど、問題のあるデータを表しています。ただし、特にビジネス分野などの一部のケースでは、外れ値は完全に有効です。たとえば、人口調査のデータにおいて、富裕層に属する一部の個人の収入は一般層とは大きく異なる可能性があります。この情報はデータの重要な部分であるため、外れ値として処理しないでください。外れ値の処理を決定するには専門知識が必要です。

ADPによるデータの変換方法

ADPにより、各アルゴリズムに対してデータがどのように準備されるかを、次の表に示します。

表4-1 ADPとOracle Data Miningのアルゴリズム

アルゴリズム

マイニング機能

ADPによる処理

Apriori

相関ルール

ADPは相関ルールに対して効果がない。

ディシジョン・ツリー

分類

ADPはディシジョン・ツリーに対して効果がない。データ準備はアルゴリズムによって処理される。

期待値の最大化

クラスタリング

外れ値に敏感な正規化によって、ガウス分布を使用してモデル化された単一列の(ネストしていない)数値列が正規化される。ADPは他の種類の列に対して効果がない。

GLM

分類および回帰

外れ値に敏感な正規化によって量的属性が正規化される。

k-Means

クラスタリング

外れ値に敏感な正規化によって量的属性が正規化される。

MDL

属性評価

監視ありビニングによってすべての属性がビニングされる。

Naive Bayes

分類

監視ありビニングによってすべての属性がビニングされる。

NMF

特徴抽出

外れ値に敏感な正規化によって量的属性が正規化される。

O-Cluster

クラスタリング

属性ごとのビン数を自動的に計算する特別な形式の等幅ビニングによって量的属性がビニングされる。すべてNULLまたは単一の値を持つ数値列は除外される。

SVD

特徴抽出

外れ値に敏感な正規化によって量的属性が正規化される。

SVM

分類、異常検出および回帰

外れ値に敏感な正規化によって量的属性が正規化される。

関連項目:

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING_TRANSFORMの変換に関する説明

- アルゴリズム固有のデータ準備の詳細は、『Oracle Data Mining概要』の第III部を参照してください。

モデルへの変換の組込み

独自の変換を指定してモデルに組み込むには、変換リストを作成してDBMS_DATA_MINING.CREATE_MODELに渡します。

PROCEDURE create_model(
model_name           IN VARCHAR2,
mining_function      IN VARCHAR2,
data_table_name      IN VARCHAR2,
case_id_column_name  IN VARCHAR2,
target_column_name   IN VARCHAR2 DEFAULT NULL,
settings_table_name  IN VARCHAR2 DEFAULT NULL,
data_schema_name     IN VARCHAR2 DEFAULT NULL,
settings_schema_name IN VARCHAR2 DEFAULT NULL,
xform_list           IN TRANSFORM_LIST DEFAULT NULL);

属性の変換指示の指定

変換リストは、変換レコードの表として定義されます。各レコード(transform_rec)は、属性の変換指示を指定します。

TYPE transform_rec IS RECORD (
attribute_name      VARCHAR2(30),
attribute_subname   VARCHAR2(4000),
expression          EXPRESSION_REC,
reverse_expression  EXPRESSION_REC,
attribute_spec      VARCHAR2(4000));

変換レコードのフィールドは、次の表で説明します。

表4-2 属性の変換レコードのフィールド

フィールド

説明

attribute_nameおよびattribute_subname

これらのフィールドは属性を特定します(「モデル属性の名前の詳細」を参照)。

expression

属性を変換するためのSQL式。たとえば、次の式では、age属性をchildとadultという2つのカテゴリに変換します(0から19までが子供で、19を超えると大人)。

CASE WHEN age < 19 THEN 'child' ELSE 'adult'

式および逆変換式は、expression_recオブジェクトに格納されます。詳細は、「式のレコード」を参照してください。

reverse_expression

変換を元に戻すためのSQL式。たとえば、次の式では、age属性の変換を元に戻します。

DECODE(age,'child','(-Inf,19)','[19,Inf)')

attribute_spec

属性の特別な処理を指定します。attribute_specフィールドは、NULLを設定するか、または次の値うちの1つ以上を設定できます。

- FORCE_IN: GLMで、 ftr_selection_enable設定が有効な場合、モデル作成に属性を強制的に含めます(ftr_selection_enableはデフォルトで無効です)。モデルがGLMではない場合は、この値の効果はありません。FORCE_INは、ネストした属性またはテキストに指定できません。

- NOPREP: ADPが有効な場合、属性の自動変換を阻止します。ADPが有効になっていない場合は、この値による影響はありません。NOPREPは、ネストした属性に対しては指定できますが、ネストした属性の個別のサブ名(行)に対しては指定できません。

- TEXT: 属性に非構造化テキストが含まれていることを示します。ADPはこの設定に対して効果がありません。TEXTには、必要に応じてPOLICY_NAME、TOKEN_TYPEおよびMAX_FEATURESのサブ設定が含まれます。

関連項目:

- モデル属性の名前の詳細

- 式のレコード

- 例4-1

- 例4-2

式のレコード

変換レコードの変換式は、expression_recオブジェクトです。

TYPE expression_rec IS RECORD (
lstmt       DBMS_SQL.VARCHAR2A,
lb          BINARY_INTEGER DEFAULT 1,
ub          BINARY_INTEGER DEFAULT 0);

TYPE varchar2a IS TABLE OF VARCHAR2(32767)
INDEX BY BINARY_INTEGER;

lstmtフィールドには、VARCHAR2A (変換式をVARCHAR2の複数の行に分割できるため、非常に長い変換式を使用可能)が格納されます。expression_recを作成するには、DBMS_DATA_MINING_TRANSFORM.SET_EXPRESSIONを使用します。

属性指定

変換レコードの属性指定は、この属性に固有の特性を定義します。NULLである場合を除き、属性指定にはFORCE_IN、NOPREPまたはTEXTの値を含めることができます(表4-2を参照)。

例4-1 複数のキーワードを使用した属性指定

複数の属性指定キーワードが適用される場合には、そうしたキーワードをカンマ区切りリストで指定することができます。次の式は、GLMモデルでの属性指定です。ftr_selection_enable設定が有効な場合、この式によって、属性がモデルに強制的に含まれます。ADPが有効になっている場合、属性の自動変換は実行されません。

"FORCE_IN,NOPREP"

例4-2 テキスト属性指定

テキスト属性の場合、必要に応じてPOLICY_NAME、TOKEN_TYPEおよびMAX_FEATURESのサブ設定を指定できます。サブ設定は、テキスト変換に固有の構成情報を提供します。次の例では、テキスト内容に対する変換指示がmy_policyというテキスト・ポリシーで定義され、トークン・タイプとしてTHEMEが指定されます。抽出した特徴の最大数は3000です。

"TEXT(POLICY_NAME:my_policy)(TOKEN_TYPE:THEME)(MAX_FEATURES:3000)"

関連項目:

テキスト属性の構成

変換リストの作成

変換リストは、変換レコードの集合です。新しい変換レコードを追加すると、変換リストの一番上に追加されます。変換リストを作成する場合は、次の手法のいずれかを使用できます。

- DBMS_DATA_MINING_TRANSFORMのSET_TRANFORMプロシージャ

- DBMS_DATA_MINING_TRANSFORMのSTACKインタフェース

- DBMS_DATA_MININGのGET_MODEL_TRANSFORMATIONSファンクションおよびGET_TRANSFORM_LISTファンクション

SET_TRANSFORM

SET_TRANSFORMプロシージャは、1つの変換レコードを変換リストに追加します。

DBMS_DATA_MINING_TRANSFORM.SET_TRANSFORM (
xform_list               IN OUT NOCOPY TRANSFORM_LIST,
attribute_name           VARCHAR2,
attribute_subname        VARCHAR2,
expression               VARCHAR2,
reverse_expression       VARCHAR2,
attribute_spec           VARCHAR2 DEFAULT NULL);

SET_TRANSFORMを使用して指定するSQL式は、VARCHAR2に収まる必要があります。より長い式を指定するには、VARCHAR2配列に行を追加することにより式を作成するSET_EXPRESSIONを使用します。

STACKインタフェース

STACKインタフェースは、変換指示の表から変換レコードを作成し、変換リストに追加します。

STACKインタフェースは、指定したタイプの属性のすべてまたは一部を同じ方法で変換する必要があることを指定します。たとえば、STACK_BIN_CATは、質的属性のビニング指示を変換リストに追加します。STACKインタフェースは、次の3つの手順で構成されます。

1. CREATEプロシージャにより、変換定義表を作成します。たとえば、CREATE_BIN_CATは、質的ビニングの指示を保持する表を作成します。この表には、属性の名前、属性の値および値のビン割当てを格納するための列があります。

2. INSERTプロシージャにより、1つ以上の属性のビン境界を計算し、定義表を移入します。たとえば、INSERT_BIN_CAT_FREQは、データ・ソースの一部またはすべての質的属性に対して頻度ベースのビニングを実行し、CREATE_BIN_CATにより作成された表を移入します。

3. STACKプロシージャにより、定義表の情報から変換レコードを作成し、その変換レコードを変換リストに追加します。たとえば、STACK_BIN_CATは、質的ビニングの定義表に格納されている情報に対する変換レコードを作成し、その変換レコードを変換リストに追加します。

GET_MODEL_TRANSFORMATIONSおよびGET_TRANSFORM_LIST

これら2つのファンクションは、既存のモデルに組み込まれている変換から新しい変換リストを作成する場合に使用できます。

GET_MODEL_TRANSFORMATIONSファンクションは、組み込まれた変換のリストを戻します。

DBMS_DATA_MINING.GET_MODEL_TRANSFORMATIONS (
model_name     IN VARCHAR2)
RETURN DM_TRANSFORMS PIPELINED;

GET_MODEL_TRANSFORMATIONSは、dm_transformオブジェクトの表を戻します。各dm_transformは、次のフィールドを持ちます。

attribute_name       VARCHAR2(4000)
attribute_subname    VARCHAR2(4000)
expression           CLOB
reverse_expression   CLOB

変換リストの構成要素は、dm_transformではなく、transform_recです。transform_recのフィールドについては、表4-2で説明しています。GET_MODEL_TRANSFORMATIONSをコールして、dm_transformオブジェクトのリストをtransform_recオブジェクトに変換し、各 transform_recを変換リストに追加することができます。

DBMS_DATA_MINING.GET_TRANSFORM_LIST (
xform_list           OUT NOCOPY TRANSFORM_LIST,
model_xforms         IN  DM_TRANSFORMS);

関連項目:

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の「使用上の注意」のGET_MODEL_TRANSFORMATIONSに関する説明

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING_TRANSFORM.SET_TRANSFORMに関する説明

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING.CREATE_MODELに関する説明

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING.GET_MODEL_TRANSFORMATIONSに関する説明

変換リストおよび自動データ準備

ADPを有効化し、変換リストを指定すると、その変換リストがシステムによって生成された自動の変換とともに組み込まれます。変換リストは、自動変換の前に実行されます。

ADPを有効化し、変換リストを指定しないと、自動変換のみがモデルに組み込まれます。

ADPを無効化し(デフォルト)、変換リストを指定すると、カスタム変換がモデルに組み込まれます。自動変換は実行されません。

ADPを無効化し(デフォルト)、変換リストを指定しないと、モデルには変換が組み込まれません。この場合、必要に応じてトレーニング・データセット、テスト・データセットおよびスコアリング・データセットを手動で変換する必要があります。各データセットには同じ変換を適用してください。

Oracle Data Miningの変換ルーチン

Oracle Data Miningには、DBMS_DATA_MINING_TRANSFORMパッケージの様々な変換手法を実装するルーチンが用意されています。

関連項目:

パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください

ビニング・ルーチン

ビニング計画の決定には、多数の要因が関与します。通常、値の数を少なくするとモデルがコンパクトになり、短時間でモデルを作成できるようになりますが、精度が低下する可能性もあります。

ビンの境界を適切に選択すると、モデルの質が大幅に向上する場合があります。たとえば、年齢をビンに分ける適切な手段としては、0から13は子供、13から19は10代、19から24は青年、24から35は社会人というように、対象とするグループに分割する方法があります。

次の表には、Oracle Data Miningで利用できるビニングの手法をリストで示します。

表4-3 DBMS_DATA_MINING_TRANSFORMのビニング手法

ビニング方法

説明

上位N個の最頻出項目

この手法は、質的属性のビニングに使用できます。ユーザーはビンの数を指定します。発生頻度が最も高い値が最初のビンとしてラベル付けされ、発生頻度が2番目に高い値が2番目のビンとしてラベル付けされる、などとなります。残りの値はすべて追加のビンに含まれます。

監視ありビニング

監視ありビニングは高い知能を備える形式のビニングであり、ビンの境界はデータの重要な特性から導かれる。監視ありビニングでは、単一予測子のディシジョン・ツリーが作成され、ターゲットに関して特徴的なビンの境界が検出される。これは、量的属性または質的属性に使用できる。

等幅ビニング

等幅ビニングは、量的属性に使用できます。最大値から最小値を差し引いて値の範囲を計算し、その値の範囲が等間隔に分割されます。ビンの数は、ユーザーが指定することも、自動的に計算することもできます。等幅ビニングは通常、外れ値の処理とともに使用する必要があります。

分位ビニング

分位ビニングは量的なビニングの手法です。分位の計算には、SQL分析関数のNTILEが使用されます。ビンの境界は、各分位の最小値に基づいて計算されます。左右の境界が等しいビンはビンとして形成されないため、必要な数よりも少ないビン数となる可能性があります。

関連項目:

外れ値の処理のルーチン

正規化ルーチン

正規化のほとんどの手法では、1つの属性の範囲を別の範囲(通常は0から1または-1から+1)にマップします。

正規化は外れ値に対して非常に敏感です。外れ値の処理をしない場合、値の多くがきわめて小さな範囲にマップされ、情報の多くが失われてしまいます。

表4-4 DBMS_DATA_MINING_TRANSFORMの正規化手法

変換

説明

Min-Max正規化

この手法では、最小値と最大値を使用して属性の正規化が計算される。シフト量には最小値が、スケールには最大値と最小値の差が使用される。

スケール正規化

この正規化手法でも、最小値と最大値が使用される。スケール正規化の場合、シフト量が0で、スケールがmax{abs(max), abs(min)}となる。

Z-スコア正規化

この手法では、平均値と標準偏差を使用して属性の正規化が計算される。シフト量には平均値が、スケールには標準偏差が使用される。

関連項目:

外れ値の処理のルーチン

外れ値の処理のルーチン

外れ値は極端な値であり、通常は平均値から標準偏差の数倍離れた値のことを指します。外れ値の影響を最小限に抑えるには、データをウィンザライズするかトリミングします。

ウィンザライズでは、属性の両端の値を特定の指定値に設定します。たとえば、ウィンザライズを90%とする場合、値の下位5%は5パーセンタイルの最小値と同じ値に設定され、値の上位5%は95パーセンタイルの最大値に一致する値に設定されます。

トリミングでは、末端値をNULLに設定します。これらの値はアルゴリズムで欠損値として処理されます。

外れ値が及ぼす影響はアルゴリズムによって異なります。通常、外れ値は、等幅ビニングおよびmin-max正規化において歪みを生じさせます。

表4-5 DBMS_DATA_MINING_TRANSFORMの外れ値の処理手法

変換

説明

トリミング

この手法では、非NULL値をソートし、一定の割合に基づいて末端値を計算し、その末端値をNULLに置き換えることによって数値列の外れ値を取り除く。

ウィンザライズ

この手法では、非NULL値をソートし、一定の割合に基づいて末端値を計算し、その末端値を指定値に置き換えることによって数値列の外れ値を取り除く。

逆変換の理解

逆変換では、モデルによって戻される情報は、モデルのトレーニングに使用されたデータの形式に似た形式または同じ形式で表されます。内部変換は、モデルの詳細およびスコアリング結果で元に戻されます。

モデルで使用される属性の一部は、作成データ内の列に対応します。ただし、アルゴリズム、ネストしたデータおよび変換に固有のロジックがあるため、一部の属性は列に対応しません。

たとえば、モデルでは、トレーニング・データ内のネストした列は属性として解釈されません。Oracle Data Miningではモデルの作成時に、ネストした列が展開され、各行(属性の名前と値のペア)が1つの属性となります。

サポート・ベクター・マシン(SVM)や一般化線形モデル(GLM)などのように、量的属性に対してのみ有効なアルゴリズムがあります。SVMの場合、作成データ内の非数値列は2項属性に展開されます(列内の各個別値に対して1つ)。GLMでは、元の列内の最頻値に対して新しい属性は生成されません。これらの2項属性は、ケースの列値がその2項属性に関連付けられた値と等しい場合にのみ、1に設定されます。

係数を生成するアルゴリズムは、結果の解釈性に関する課題を示しています。SVMやNon-Negative Matrix Factorization (NMF)などがそれに当たります。これらのアルゴリズムは、変換された属性と組み合せて使用される係数を生成します。これらの係数は、元のデータのスケールではなく、変換されたスケール上のデータに関連があります。

こうしたことすべてが理由となって、モデルの詳細にリストされる属性は、モデルのトレーニングに使用されるデータ列と似ていません。ただし、自動データ準備(ADP)で開始されるかユーザーが指定した変換リストで開始されるかにかかわらず、組込みの変換が行われる属性は、元の列値とできるだけ近い変換前の状態でモデルの詳細に表示されます。属性は、モデルによって使用される際に変換されますが、モデルの詳細ではユーザーが解釈できる形式で表示されます。

関連項目:

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のGET_MODEL_DETAILS、GET_MODEL_TRANSFORMATIONSおよびALTER_REVERSE_EXPRESSIONに関する説明

5 モデルの作成

ここでは、データ・マイニング・モデルを作成する方法と、モデルの詳細を問い合せる方法を説明します。

- モデルを作成する前の作業

- CREATE_MODELプロシージャ

- モデルの設定の指定

- モデルの詳細の表示

モデルを作成する前の作業

「モデルのマイニングについて」で説明されているように、モデルはデータ・マイニングを実行するデータベース・スキーマ・オブジェクトです。DBMS_DATA_MINING PL/SQLパッケージは、マイニング・モデル(モデルの詳細)の作成、構成、評価および問合せを行うAPIです。

モデルを作成する前に、そのモデルで実行する処理を決定する必要があります。トレーニング・データを特定し、変換が必要かどうかを判断する必要があります。モデルの設定を指定して、モデルの動作に影響を与えることができます。その準備の手順は、次の表にまとめられています。

表5-1 マイニング・モデルを作成する準備

準備手順

説明

マイニング機能の選択

「マイニング機能の選択」を参照

アルゴリズムの選択

「アルゴリズムの選択」を参照

作成(トレーニング)データの特定

「データの準備」を参照

テスト・データの特定(分類モデルの場合)

「分類および回帰用のデータ・セット」を参照

データ変換の方針の決定

「データの変換」を参照

設定表の作成と移入(必要な場合)

「モデルの設定の指定」を参照

関連項目:

- マイニング・モデルについて

- DBMS_DATA_MINING

CREATE_MODELプロシージャ

DBMS_DATA_MININGパッケージのCREATE_MODELプロシージャは、指定されたデータを使用して、指定された名前およびマイニング機能を持つマイニング・モデルを作成します。モデルは、構成設定とユーザー指定の変換を使用して作成できます。

PROCEDURE CREATE_MODEL(
model_name            IN VARCHAR2,
mining_function       IN VARCHAR2,
data_table_name       IN VARCHAR2,
case_id_column_name   IN VARCHAR2,
target_column_name    IN VARCHAR2 DEFAULT NULL,
settings_table_name   IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL,
settings_schema_name  IN VARCHAR2 DEFAULT NULL,
xform_list            IN TRANSFORM_LIST DEFAULT NULL);

マイニング機能の選択

マイニング機能は、CREATE_MODELプロシージャに必須の引数です。データ・マイニング機能によって、モデル化や解決の対象となり得る問題のクラスが特定されます。

データ・マイニング機能は、監視あり学習または監視なし学習のいずれかを実装しています。監視あり学習では、独立属性のセットを使用して従属属性の値またはターゲットを予測します。監視なし学習では従属属性と独立属性は区別されません。監視あり機能は予測的です。監視なし機能は記述的です。

注意:

データ・マイニングの用語では、機能(function)とは、特定のデータ・マイニング・アプローチを使用して解決される問題の一般的な種類です。SQL言語の用語では、関数(function)は値を戻す演算子です。

Oracle Data Miningのドキュメントでは、機能(function)またはマイニング機能(mining function)という用語は、データ・マイニング機能を表し、SQL関数(SQL function)またはSQLデータ・マイニング関数(SQL Data Mining function)という用語は、スコアリング(データ・マイニング・モデルの適用)用のSQL関数を表します。

CREATE_MODELのmining_functionパラメータには、次の表にあるいずれの値も指定できます。

表5-2 マイニング・モデルの機能

Mining_Functionの値

説明

ASSOCIATION

相関は、記述マイニング機能の一種です。相関モデルによって、データ・セット内に存在する関係とその発生確率が識別されます(相関ルール)。

相関モデルではAprioriアルゴリズムが使用されます。

ATTRIBUTE_IMPORTANCE

属性評価(Attribute Importance)は、予測マイニング機能の一種です。属性評価モデルにより、特定の結果を予測する中で属性の相対的な重要度が識別されます。

属性評価モデルでは、最小記述長アルゴリズムが使用されます。

CLASSIFICATION

分類(Classification)は、予測マイニング機能の一種です。分類モデルでは、質的ターゲットの予測に履歴データが使用されます。

分類モデルでは、Naive Bayes、ディシジョン・ツリー、ロジスティック回帰またはサポート・ベクター・マシンが使用されます。デフォルトはNaive Bayesです。

分類機能は、異常検出にも使用可能です。この場合、ターゲットがNULLであるSVMアルゴリズムが使用されます(1クラスSVM)。

CLUSTERING

クラスタリングは、記述マイニング機能の一種です。クラスタリング・モデルにより、データセット内の自然なグループ分けが識別されます。

クラスタリング・モデルでは、k-Means、O-Clusterまたは期待値最大化が使用されます。デフォルトはk-Meansです。

FEATURE_EXTRACTION

特徴抽出(Feature Extraction)は、記述マイニング機能の一種です。特徴抽出モデルにより、最適化された属性のセットが作成されます。

特徴抽出モデルでは、Non-Negative Matrix Factorizationまたは特異値分解(主成分分析にも使用可能)が使用されます。デフォルトはNon-Negative Matrix Factorizationです。

REGRESSION

回帰(Regression)は、予測マイニング機能の一種です。回帰モデルでは、量的ターゲットの予測に履歴データが使用されます。

回帰モデルでは、サポート・ベクター・マシンまたは線形回帰の使用が可能です。デフォルトはサポート・ベクター・マシンです。

関連項目:

マイニング機能の概要は、『Oracle Data Mining概要』を参照してください。

アルゴリズムの選択

ALGO_NAME設定では、モデルのアルゴリズムを指定できます。マイニング機能に対してデフォルトのアルゴリズムを使用する場合、または使用できるアルゴリズムが1つしかない場合は、ALGO_NAME設定を指定する必要はありません。モデルの設定を指定する手順については、「モデルの設定の指定」を参照してください。

表5-3 データ・マイニングのアルゴリズム

ALGO_NAMEの値

アルゴリズム

デフォルトかどうか

マイニング・モデルの機能

ALGO_AI_MDL

最小記述長

-

属性評価

ALGO_APRIORI_ASSOCIATION_RULES

Apriori

-

相関

ALGO_DECISION_TREE

ディシジョン・ツリー

-

分類

ALGO_EXPECTATION_MAXIMIZATION

期待値の最大化

ALGO_GENERALIZED_LINEAR_MODEL

一般化線形モデル

-

分類、回帰

ALGO_KMEANS

k-Means

はい

クラスタリング

ALGO_NAIVE_BAYES

Naive Bayes

はい

分類

ALGO_NONNEGATIVE_MATRIX_FACTOR

Non-Negative Matrix Factorization

はい

特徴抽出

ALGO_O_CLUSTER

O-Cluster

-

クラスタリング

ALGO_SINGULAR_VALUE_DECOMP

特異値分解(主成分分析にも使用可能)

-

特徴抽出

ALGO_SUPPORT_VECTOR_MACHINES

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

はい

デフォルトの回帰アルゴリズム

回帰、分類、異常検出(ターゲットのない分類)

関連項目:

- モデルの設定の指定

- Oracle Data Miningでサポートされているアルゴリズムの概要は、『Oracle Data Mining概要』を参照してください。

変換の指定

必要に応じて、CREATE_MODELのxform_listパラメータで作成データに対する変換を指定できます。変換の指示がモデル内に組み込まれ、新しいデータへのモデルの適用時には常にその変換指示が再適用されます。

変換リストの作成

変換リストを作成するには次の2つの方法があります。

- DBMS_DATA_MINING_TRANSFORMのSTACKインタフェース。
STACKインタフェースは、属性または属性のグループに適用可能な事前定義された変換のセットを提供します。たとえば、すべての質的属性に対して監視ありビニングを指定することができます。

- DBMS_DATA_MINING_TRANSFORMのSET_TRANSFORMプロシージャ。
SET_TRANSFORMプロシージャは、指定されたSQL式を指定された属性に適用します。たとえば、次の文では、country_idの変換指示を、my_xformsという変換リストに追加します。変換指示は、アルゴリズムの処理が開始される前にcountry_idを10で割ります。逆変換はcountry_idに10を掛けます。

dbms_data_mining_transform.SET_TRANSFORM (my_xforms,
'country_id', NULL, 'country_id/10', 'country_id*10');

逆変換はモデルの詳細で適用されます。country_idが監視ありモデルのターゲットである場合、逆変換はスコアリングされるターゲットにも適用されます。

変換リストおよび自動データ準備

CREATE_MODELに対する変換リスト引数は、自動データ準備(ADP)を制御するPREP_AUTO設定と次のように相互作用します。

- ADPが有効で、変換リストを指定した場合、ユーザー指定の変換は自動変換とともに適用されてモデルに組み込まれます。指定した変換は、自動変換の前に実行されます。

- ADPが無効で、変換リストを指定した場合、ユーザー指定の変換が適用されてモデルに組み込まれますが、システム生成の変換は実行されません。

- ADPが有効で、変換リストを指定しなかった場合、システム生成の変換が適用されてモデルに組み込まれます。

- ADPが無効で、変換リストも指定しなかった場合、変換はモデルに組み込まれません。モデルの作成、テストおよびスコアリングに使用するデータセットは別個に準備する必要があります。

関連項目:

- モデルへの変換の組込み

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING_TRANSFORMに関する「使用上の注意」

モデル設定の指定

データ・マイニング・モデルは、作成時に多数の構成設定を使用して構成できます。設定を指定するには、次の表に示す列を持つ設定表を作成し、その表をCREATE_MODELに渡します。

表5-4 設定表に必要な列

列名

データ型

setting_name

VARCHAR2(30)

setting_value

VARCHAR2(4000)

例5-1では、サポート・ベクター・マシン(SVM)分類モデルの設定表が作成されます。SVMはデフォルトの分類機能ではないため、ALGO_NAME設定を使用してこのアルゴリズムを指定します。SVMS_KERNEL_FUNCTIONをSVMS_LINEARに設定することにより、モデルは線形カーネルを使用して作成されます。カーネル関数を指定しない場合、アルゴリズムがデータの属性の数に基づいてカーネルを選択します。

通常はモデルに適用される設定と、アルゴリズムに固有の設定があります。モデルの設定は表5-5および表5-6を参照してください。

表5-5 一般的なモデルの設定

設定

説明

マイニング機能の設定

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のマイニング機能の設定に関する説明を参照

アルゴリズムの名前

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズム名に関する説明を参照

グローバルなモデルの特性

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のグローバルな設定に関する説明を参照

自動データ準備

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の自動データ準備に関する説明を参照

表5-6 アルゴリズム固有のモデルの設定

アルゴリズム

説明

ディシジョン・ツリー

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: ディシジョン・ツリーに関する説明を参照

期待値の最大化

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: 期待値最大化に関する説明を参照

一般化線形モデル

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: 一般化線形モデルに関する説明を参照

k-Means

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: k-Meansに関する説明を参照

Naive Bayes

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: Naive Bayesに関する説明を参照

Non-Negative Matrix Factorization

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: Non-Negative Matrix Factorizationに関する説明を参照

O-Cluster

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: O-Clusterに関する説明を参照

特異値分解

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: 特異値分解に関する説明を参照

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

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のアルゴリズムの設定: サポート・ベクター・マシンに関する説明を参照

例5-1 SVM分類モデルの設定表の作成

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);
COMMIT;
END;
/

関連項目:

詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください

コストの指定

CLAS_COST_TABLE_NAME設定は、ディシジョン・ツリー・モデルの作成に使用するコスト・マトリックス表の名前を指定します。コスト・マトリックスは、分類モデルにバイアスをかけて、コストのかかる分類ミスを最小化します。コスト・マトリクス表には、次の表に示す列が含まれている必要があります。

表5-7 コスト・マトリックス表に必要な列

列名

データ型

actual_target_value

有効なターゲット・データ型

predicted_target_value

有効なターゲット・データ型

cost

NUMBER

ディシジョン・ツリーは、作成時にコスト・マトリックスを指定できる唯一のアルゴリズムです。ただし、スコアリングの際には、どの分類モデルにもコスト・マトリックスを作成して関連付けることができます。

スコアリングにコストを使用する場合は、表5-7に示す列を持つ表を作成し、DBMS_DATA_MINING.ADD_COST_MATRIXプロシージャを使用してコスト・マトリックス表をモデルに追加します。PREDICTION関数を呼び出すときに、コスト・マトリックスをインラインで指定することもできます。

関連項目:

- コストの詳細は、『Oracle Data Mining概要』を参照してください。

- ターゲットとして有効なデータ型は、表3-1を参照してください。

事前確率の指定

CLAS_PRIORS_TABLE_NAME設定は、Naive Bayesモデルの作成に使用する事前確率表の名前を指定します。事前確率は、作成データと実際の母集団の間の分布の差を埋めるために使用されます。事前確率表には、次の列があります。

表5-8 事前確率表に必要な列

列名

データ型

target_value

有効なターゲット・データ型

prior_probability

NUMBER

関連項目:

- ターゲット属性

- 事前確率の詳細は、『Oracle Data Mining概要』を参照してください。

クラスに対する重みの指定

CLAS_WEIGHTS_TABLE_NAMEの設定では、クラスに対する重みを規定する表の名前を指定します。重みにより、ロジスティック回帰(一般化線形モデルによる分類)またはサポート・ベクター・マシン(SVM)分類モデルにバイアスがかかり、重み付けの高いクラスほど優先されるようになります。重みの表には、次の表に示す列があります。

表5-9 クラスの重みの表に必要な列

列名

データ型

target_value

有効なターゲット・データ型

class_weight

NUMBER

関連項目:

- ターゲット属性

- クラスの重みの詳細は、『Oracle Data Mining概要』を参照してください。

データ・ディクショナリにおけるモデルの設定

マイニング・モデルの設定に関する情報は、データ・ディクショナリ・ビューALL/USER/DBA_MINING_MODEL_SETTINGSから取得できます。ALL接頭辞を使用した場合、このビューは、現在のユーザーがアクセスできるモデルの設定に関する情報を戻します。USER接頭辞を使用した場合は、ユーザー・スキーマ内のモデルの設定に関する情報を戻します。DBA接頭辞を使用できるのはDBAのみです。

ALL_MINING_MODEL_SETTINGSの列は次のとおりです。各列の説明は、次の表を参照してください。

SQL> describe all_mining_model_settings
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER                                     NOT NULL VARCHAR2(30)
MODEL_NAME                                NOT NULL VARCHAR2(30)
SETTING_NAME                              NOT NULL VARCHAR2(30)
SETTING_VALUE                                      VARCHAR2(4000)
SETTING_TYPE                                       VARCHAR2(7)

表5-10 ALL_MINING_MODEL_SETTINGS

列

説明

owner

マイニング・モデルの所有者。

model_name

マイニング・モデルの名前。

setting_name

設定の名前。

setting_value

設定の値。

setting_type

INPUT: 値がユーザーによって指定される場合。DEFAULT: 値がシステムによって生成される場合。

次の問合せでは、サポート・ベクター・マシン(SVM)分類モデル SVMC_SH_CLAS_SAMPLEの設定が一覧表示されます。ALGO_NAME、CLAS_WEIGHTS_TABLE_NAMEおよびSVMS_KERNEL_FUNCTIONの設定はユーザーが指定しています。これらの設定は、モデルの設定表で指定されています。

例5-2 ALL_MINING_MODEL_SETTINGS

SQL> COLUMN setting_value FORMAT A35
SQL> SELECT setting_name, setting_value, setting_type
FROM all_mining_model_settings
WHERE model_name in 'SVMC_SH_CLAS_SAMPLE';

SETTING_NAME                   SETTING_VALUE                       SETTING
------------------------------ ----------------------------------- -------
SVMS_ACTIVE_LEARNING           SVMS_AL_ENABLE                      DEFAULT
PREP_AUTO                      OFF                                 DEFAULT
SVMS_COMPLEXITY_FACTOR         0.244212                            DEFAULT
SVMS_KERNEL_FUNCTION           SVMS_LINEAR                         INPUT
CLAS_WEIGHTS_TABLE_NAME        svmc_sh_sample_class_wt             INPUT
SVMS_CONV_TOLERANCE            .001                                DEFAULT
ALGO_NAME                      ALGO_SUPPORT_VECTOR_MACHINES        INPUT

関連項目:

モデル設定の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

モデル詳細の表示

モデルの詳細とは、モデルの属性、ルール、統計などのモデルに関する情報を記述したものです。DBMS_DATA_MININGパッケージでは、各アルゴリズム用の個別のGET_MODEL_DETAILSファンクションをサポートしています。一般化線形モデル、期待値最大化、単一値分解および相関ルールについては、グローバル詳細も使用することができます。

モデルの詳細は、属性に適用された変換を元に戻すため、情報がユーザーにとって理解しやすくなります。モデルに組み込まれた変換を取得するには、DBMS_DATA_MINING.GET_MODEL_TRANSFORMATIONSファンクションを呼び出します。

例5-3の問合せでは、GLMR_SH_Regr_sampleというGLM回帰モデルの複数の属性値に対する係数が戻されます。このアルゴリズムに追加できる詳細には、標準エラー、テスト統計、p値、標準係数、係数の下限、係数の上限などがあります。

例5-4の問合せでは、同じモデルのグローバル詳細が戻されます。

例5-3 GLM回帰のモデルの詳細

SELECT attribute_name, attribute_value, coefficient
FROM TABLE(dbms_data_mining.get_model_details_glm('GLMR_SH_Regr_sample'))
WHERE attribute_name IN ('AFFINITY_CARD','BULK_PACK_DISKETTES','COUNTRY_NAME')
ORDER BY class, attribute_name, attribute_value;

ATTRIBUTE_NAME       ATTRIBUTE_VALUE      COEFFICIENT
-------------------- -------------------- -----------
AFFINITY_CARD                              -.58234968
BULK_PACK_DISKETTES                        -.99684665
COUNTRY_NAME         Argentina             -1.2032688
COUNTRY_NAME         Australia             .000541598
COUNTRY_NAME         Brazil                5.29534224
COUNTRY_NAME         Canada                4.02414761
COUNTRY_NAME         China                 .878394982
COUNTRY_NAME         Denmark               -2.9852215
COUNTRY_NAME         France                -1.0946872
COUNTRY_NAME         Germany               -1.6345684
COUNTRY_NAME         Italy                 -1.2749328
COUNTRY_NAME         Japan                  -6.259627
COUNTRY_NAME         New Zealand           5.07675762
COUNTRY_NAME         Poland                2.20458524
COUNTRY_NAME         Saudi Arabia          .443146197
COUNTRY_NAME         Singapore             -4.9472244
COUNTRY_NAME         South Africa          .493327068
COUNTRY_NAME         Spain                 -3.0895076
COUNTRY_NAME         Turkey                -5.9014625
COUNTRY_NAME         United Kingdom        2.25154714

例5-4 GLM回帰のグローバル詳細

SELECT *
FROM TABLE(dbms_data_mining.get_model_details_global('GLMR_SH_Regr_sample'))
ORDER BY global_detail_name;

GLOBAL_DETAIL_NAME             GLOBAL_DETAIL_VALUE
------------------------------ -------------------
ADJUSTED_R_SQUARE                             .732
AIC                                       5943.057
COEFF_VAR                                   18.165
CORRECTED_TOTAL_DF                        1499.000
CORRECTED_TOT_SS                        278740.504
DEPENDENT_MEAN                              38.892
ERROR_DF                                  1420.000
ERROR_MEAN_SQUARE                           49.908
ERROR_SUM_SQUARES                        70869.218
F_VALUE                                     52.291
GMSEP                                       52.722
HOCKING_SP                                    .035
J_P                                         52.570
MODEL_CONVERGED                              1.000
MODEL_DF                                    79.000
MODEL_F_P_VALUE                               .000
MODEL_MEAN_SQUARE                         2609.739
MODEL_SUM_SQUARES                       206169.407
NUM_PARAMS                                  80.000
NUM_ROWS                                  1500.000
ROOT_MEAN_SQ                                 7.065
R_SQ                                          .746
SBIC                                      6368.114
VALID_COVARIANCE_MATRIX                       .000

6 スコアリングと配置

Oracle Data Miningのスコアリングと配置の機能について説明しています。

- スコアリングと配置について

- データ・マイニングSQL関数の使用

- 予測の詳細

- リアルタイムのスコアリング

- 動的スコアリング

- コスト重視の意思決定

- DBMS_DATA_MINING.Apply

スコアリングと配置について

スコアリングとは、新しいデータにモデルを適用することです。Oracle Data Miningでは、スコアリングはSQL言語関数によって実行されます。予想関数により、分類、回帰または異常の検出が行われます。クラスタリング関数により、クラスターに行が割り当てられます。特徴抽出関数により、インプット・データが高次予測のセットへ変換されます。DBMS_DATA_MINING PL/SQLパッケージでは、スコアリング・プロシージャも使用可能です。

配置とは、ターゲット環境でモデルを使用することです。モデルを作成した後は、最適な結果を得るためにそれらのモデルを配置し、本番環境内でメンテナンスすることが課題となります。配置は、次のいずれかが可能です。

- バッチまたはリアルタイム処理によるデータのスコアリング。スコアには、予測、確率、ルールおよびその他の統計を含めることができます。

- モデルの詳細の抽出とレポートの作成。(例: クラスタリング・ルール、ディシジョン・ツリー・ルール、属性評価モデルの属性のランク付けなど)。

- アプリケーションや業務系システムにマイニング結果を組み込むことによるデータ・ウェアハウスのビジネス・インテリジェンス・インフラストラクチャの強化。

- モデルを作成したデータベースからスコアリング用データベースへのモデルの移動(エクスポートとインポート)

Oracle Data Miningでは、これらの配置シナリオすべてをサポートしています。

注意:

Oracle Data Miningのスコアリング操作はパラレル実行をサポートします。パラレル実行を有効にすると、複数のCPUおよびI/Oリソースを1つのデータベース操作の実行に適用することができます。

パラレル実行は、通常意思決定支援システム(DSS)およびデータ・ウェアハウスに関連付けられている複雑な問合せや大規模データベースを使用する操作では特に、パフォーマンスを大幅に向上させます。

関連項目:

- 『Oracle Database VLDBおよびパーティショニング・ガイド』のパラレル実行の使用に関する説明

- 『Oracle Data Mining概要』のインデータベース・スコアリングに関する説明

- マイニング・モデルのエクスポートおよびインポート

データ・マイニングSQL関数の使用

データ・マイニングSQL関数には、次のメリットがあります。

- 既存のSQLアプリケーションのコンテキストで、モデルを簡単に配置できます。

- スコアリング操作では、既存の問合せ実行機能を利用します。これにより、パフォーマンスが向上します。

- スコアリング結果がパイプライン化され、実体化を行わずに行を処理することができます。

データ・マイニング関数は、選択した各行のスコアを生成します。これらの関数は、マイニング・モデルのスキーマ・オブジェクトを適用してスコアを計算することも、事前定義されたモデルを使用せずに動的なスコアリングを行うこともできます(「動的スコアリング」を参照)。

関連項目:

- 動的スコアリング

- スコアリング要件

- データ・マイニング関数のリストについては、表2-5を参照してください。

- データ・マイニングSQL関数の構文については、『Oracle Database SQL言語リファレンス』を参照してください。

予測子の選択

データ・マイニング関数では、スコアリングに使用する属性を指定するUSING句をサポートしています。選択した属性の一部またはすべてを指定でき、また式を指定することができます。次の例では、すべてPREDICTION関数を使用してアフィニティ・カードを使用しそうな顧客を検出していますが、各例で異なる予測子のセットを使用しています。

例6-1の問合せでは、すべての予測子を使用しています。

例6-2の問合せでは、予測子として性別、未婚/既婚、職業および所得のみを使用しています。

例6-3の問合せでは、予測子として3つの属性と1つの式を使用しています。予測は、性別、未婚/既婚、職業に加えて、すべての顧客が最高額所得者階層に属するという前提に基づいて行われています。

例6-1 すべての予測子を使用した場合

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION(dt_sh_clas_sample USING *) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         25         38
M        213         43

例6-2 一部の予測子を使用した場合

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION(dt_sh_clas_sample USING
cust_gender,cust_marital_status,
occupation, cust_income_level) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         30         38
M        186         43

例6-3 一部の予測子と1つの式を使用した場合

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION(dt_sh_clas_sample USING
cust_gender, cust_marital_status, occupation,
'L: 300,000 and above' AS cust_income_level) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         30         38
M        186         43

単一レコード・スコアリング

データ・マイニング関数は、単一レコードのスコアを生成できます(例6-4および例6-5を参照)。

例6-4では、分類モデルNB_SH_Clas_sampleを適用することによって、顧客102001に対する予測が戻されます。結果として生成されるスコアは0 (この顧客がアフィニティ・カードを使用する可能性は低い)です。

例6-5では、テキスト・マイニング・モデルT_SVM_Clas_sampleを適用することによって、コメント属性として「Affinity card is great」を使用した場合の予測が返されます。結果として生成されるスコアは1 (この顧客がアフィニティ・カードを使用する可能性は高い)です。

例6-4 単一の顧客または単一のテキスト式のスコアリング

SELECT PREDICTION (NB_SH_Clas_Sample USING *)
FROM sh.customers where cust_id = 102001;

PREDICTION(NB_SH_CLAS_SAMPLEUSING*)
-----------------------------------
0

例6-5 単一のテキスト式のスコアリング

SELECT
PREDICTION(T_SVM_Clas_sample USING 'Affinity card is great' AS comments)
FROM DUAL;

PREDICTION(T_SVM_CLAS_SAMPLEUSING'AFFINITYCARDISGREAT'ASCOMMENTS)
-----------------------------------------------------------------
1

予測の詳細

予測の詳細は、スコアに関する情報を提供するXML文字列です。すべてのタイプのスコアリング(クラスタリング、特徴抽出、分類、回帰および異常検出)に対して詳細を使用できます。詳細は、スコアリングが動的であるかモデル適用の結果であるかに関係なく使用できます。

詳細関数CLUSTER_DETAILS、FEATURE_DETAILSおよびPREDICTION_DETAILSでは、スコアリングに使用された属性の実測値およびスコアの判断における属性の相対的な重要度が戻されます。これらの関数では、デフォルトで5つの最も重要な属性が重要度が高い順に戻されます。

クラスタの詳細

顧客100955に関し、最も可能性の高いクラスタ割当て(割当ての確率が20%超)について、次の問合せにより、可能性の高いクラスタごとに最も大きな影響を与える属性が5つ生成されます。クラスタリング関数により、mining_data_apply_vから選択したデータにem_sh_clus_sampleという期待値最大化モデルが適用されます。デフォルトで5つの属性が戻されるため、CLUSTER_DETAILSで指定されている「5」は必須ではありません。

例6-6 クラスタの詳細

SELECT S.cluster_id, probability prob,
CLUSTER_DETAILS(em_sh_clus_sample, S.cluster_id, 5 USING T.*) det
FROM
(SELECT v.*, CLUSTER_SET(em_sh_clus_sample, NULL, 0.2 USING *) pset
FROM mining_data_apply_v v
WHERE cust_id = 100955) T,
TABLE(T.pset) S
ORDER BY 2 DESC;

CLUSTER_ID  PROB DET
---------- ----- ----------------------------------------------------------------------------
14 .6761 <Details algorithm="Expectation Maximization" cluster="14">
<Attribute name="AGE" actualValue="51" weight=".676" rank="1"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".557" rank="2"/>
<Attribute name="FLAT_PANEL_MONITOR" actualValue="0" weight=".412" rank="3"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".171" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION"actualValue="1" weight="-.003"
rank="5"/>
</Details>

3 .3227 <Details algorithm="Expectation Maximization" cluster="3">
<Attribute name="YRS_RESIDENCE" actualValue="3" weight=".323" rank="1"/>
<Attribute name="BULK_PACK_DISKETTES" actualValue="1" weight=".265" rank="2"/>
<Attribute name="EDUCATION" actualValue="HS-grad" weight=".172" rank="3"/>
<Attribute name="AFFINITY_CARD" actualValue="0" weight=".125" rank="4"/>
<Attribute name="OCCUPATION" actualValue="Crafts" weight=".055" rank="5"/>
</Details>

特徴の詳細

次の例に示す問合せでは、顧客101501に対する主成分分析(PCA)で最上位の投影に最も大きく影響する3つの属性が返されます。FEATURE_DETAILS関数では、svd_sh_sample_build_numから選択したデータにsvd_sh_sampleという特異値分解モデルが適用されます。

例6-7 特徴の詳細

SELECT FEATURE_DETAILS(svd_sh_sample, 1, 3 USING *) proj1det
FROM svd_sh_sample_build_num
WHERE CUST_ID = 101501;

PROJ1DET
--------------------------------------------------------------------------------
<Details algorithm="Singular Value Decomposition" feature="1">
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".352" rank="1"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".249" rank="2"/>
<Attribute name="AGE" actualValue="41" weight=".063" rank="3"/>
</Details>

予測の詳細

次に示す例の問合せでは、顧客100010の年齢の予測で最も重要な属性が返されます。予測関数では、mining_data_apply_vから選択されたデータにGLMR_SH_Regr_sampleという名前が付けられた一般化線形モデルの回帰モデルが適用されます。

例6-8 回帰用の予測の詳細

SELECT cust_id,
PREDICTION(GLMR_SH_Regr_sample USING *) pr,
PREDICTION_DETAILS(GLMR_SH_Regr_sample USING *) pd
FROM mining_data_apply_v
WHERE CUST_ID = 100010;

CUST_ID    PR PD
------- ----- -----------
100010 25.45 <Details algorithm="Generalized Linear Model">
<Attribute name="FLAT_PANEL_MONITOR" actualValue="1" weight=".025" rank="1"/>
<Attribute name="OCCUPATION" actualValue="Crafts" weight=".019" rank="2"/>
<Attribute name="AFFINITY_CARD" actualValue="0" weight=".01" rank="3"/>
<Attribute name="OS_DOC_SET_KANJI" actualValue="0" weight="0" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight="-.004" rank="5"/>
</Details>

次の例に示す問合せでは、技術サポートで働いている、アフィニティ・カードを使用する可能性が高い(85%より高い確率)顧客が返されます。予測関数では、mining_data_apply_vから選択されたデータにsvmc_sh_clas_sampleというスーパー・ベクター・マシン(SVM)分類モデルが適用されます。問合せには、学歴が最も重要な予測子であることを示す予測の詳細が含まれています。

例6-9 分類用の予測の詳細

SELECT cust_id, PREDICTION_DETAILS(svmc_sh_clas_sample, 1 USING *) PD
FROM mining_data_apply_v
WHERE PREDICTION_PROBABILITY(svmc_sh_clas_sample, 1 USING *) > 0.85
AND occupation = 'TechSup'
ORDER BY cust_id;

CUST_ID PD
------- ---------------------------------------------------------------------------------------
100029 <Details algorithm="Support Vector Machines" class="1">
<Attribute name="EDUCATION" actualValue="Assoc-A" weight=".199" rank="1"/>
<Attribute name="CUST_INCOME_LEVEL" actualValue="I: 170\,000 - 189\,999" weight=".044"
rank="2"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".028" rank="3"/>
<Attribute name="BULK_PACK_DISKETTES" actualValue="1" weight=".024" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight=".022" rank="5"/>
</Details>

100378 <Details algorithm="Support Vector Machines" class="1">
<Attribute name="EDUCATION" actualValue="Assoc-A" weight=".21" rank="1"/>
<Attribute name="CUST_INCOME_LEVEL" actualValue="B: 30\,000 - 49\,999" weight=".047"
rank="2"/>
<Attribute name="FLAT_PANEL_MONITOR" actualValue="0" weight=".043" rank="3"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".03" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight=".023" rank="5"/>
</Details>

100508 <Details algorithm="Support Vector Machines" class="1">
<Attribute name="EDUCATION" actualValue="Bach." weight=".19" rank="1"/>
<Attribute name="CUST_INCOME_LEVEL" actualValue="L: 300\,000 and above" weight=".046"
rank="2"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".031" rank="3"/>
<Attribute name="BULK_PACK_DISKETTES" actualValue="1" weight=".026" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight=".024" rank="5"/>
</Details>

100980 <Details algorithm="Support Vector Machines" class="1">
<Attribute name="EDUCATION" actualValue="Assoc-A" weight=".19" rank="1"/>
<Attribute name="FLAT_PANEL_MONITOR" actualValue="0" weight=".038" rank="2"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".026" rank="3"/>
<Attribute name="BULK_PACK_DISKETTES" actualValue="1" weight=".022" rank="4"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight=".02" rank="5"/>
</Details>

次の例に示す問合せでは、他の顧客と最も異なる2人の顧客が返されます。予測関数により、mining_data_apply_vから選択したデータにSVMO_SH_Clas_sampleという異常検出モデルが適用されます。異常検出では、1クラスSVM分類子が使用されます。

例6-10 異常検出用の予測の詳細

SELECT cust_id, pd FROM
(SELECT cust_id,
PREDICTION_DETAILS(SVMO_SH_Clas_sample, 0 USING *) pd,
RANK() OVER (ORDER BY prediction_probability(
SVMO_SH_Clas_sample, 0 USING *) DESC, cust_id) rnk
FROM mining_data_one_class_v)
WHERE rnk <= 2
ORDER BY rnk;

CUST_ID PD
---------- -----------------------------------------------------------------------------------
102366 <Details algorithm="Support Vector Machines" class="0">
<Attribute name="COUNTRY_NAME" actualValue="United Kingdom" weight=".078" rank="1"/>
<Attribute name="CUST_MARITAL_STATUS" actualValue="Divorc." weight=".027" rank="2"/>
<Attribute name="CUST_GENDER" actualValue="F" weight=".01" rank="3"/>
<Attribute name="HOUSEHOLD_SIZE" actualValue="9+" weight=".009" rank="4"/>
<Attribute name="AGE" actualValue="28" weight=".006" rank="5"/>
</Details>

101790 <Details algorithm="Support Vector Machines" class="0">
<Attribute name="COUNTRY_NAME" actualValue="Canada" weight=".068" rank="1"/>
<Attribute name="HOUSEHOLD_SIZE" actualValue="4-5" weight=".018" rank="2"/>
<Attribute name="EDUCATION" actualValue="7th-8th" weight=".015" rank="3"/>
<Attribute name="CUST_GENDER" actualValue="F" weight=".013" rank="4"/>
<Attribute name="AGE" actualValue="38" weight=".001" rank="5"/>
</Details>

リアルタイムのスコアリング

Oracle Data MiningのSQL関数では、稼働中の本番システムや業務系システムに簡単に組み込むことが可能な、予測、クラスタリングおよび特徴抽出の分析を行うことができます。マイニング結果はSQL問合せ内で戻されるため、リアルタイムでマイニングを実行できます。

リアルタイムのスコアリングでは、販売時点のデータベース・トランザクションをマイニングできます。現場の従業員がより適切な分析的判断を下すために役立つ予測やルール・セットを生成することが可能です。リアルタイムのスコアリングによって、不正の検知、潜在的負債の判別、マーケティングや販売の好機の把握ができるようになります。

次の例に示す問合せでは、dt_sh_clas_sampleという名前のディシジョン・ツリー・モデルを使用して、顧客101488がアフィニティ・カードを使用する確率を予測しています。顧客担当者は、電話でこの顧客と会話しているときに、リアルタイムでこの情報を取得できます。この問合せの結果によると、顧客がカードを使用する確率は73%であることから、担当者は付加価値の高いカードを提案することができます。

例6-11 予測確率を求めるリアルタイムの問合せ

SELECT PREDICTION_PROBABILITY(dt_sh_clas_sample, 1 USING *) cust_card_prob
FROM mining_data_apply_v
WHERE cust_id = 101488;

CUST_CARD_PROB
--------------
.72764

動的スコアリング

データ・マイニングSQL関数は、2つのモード(事前定義されたモデルの適用または分析句の実行)で実行されます。モデル名ではなく分析句を指定すると、関数では1つ以上の一時モデルを作成し、これらのモデルを使用してデータをスコアリングします。

事前定義されたモデルを使用せずに動的なデータのスコアリングを行う機能によって、基本的な組込みデータ・マイニング手法が、モデルを使用できない環境にまで拡張して適用されます。ただし、動的スコアリングには制限があります。動的スコアリング中に作成された一時モデルは、検査や細かいチューニングには使用できません。モデルの検査、スコアリング結果とモデルとの相関、特別なアルゴリズム設定、または同じモデルを使用する複数のスコアリング問合せが必要なアプリケーションでは、事前定義されたモデルが必要です。

次の例は、動的なスコアリング問合せです。この例では、特異な顧客の年齢値を含む入力データの行を特定します。

例6-12 動的予測

SELECT cust_id, age, pred_age, age-pred_age age_diff, pred_det FROM
(SELECT cust_id, age, pred_age, pred_det,
RANK() OVER (ORDER BY ABS(age-pred_age) DESC) rnk FROM
(SELECT cust_id, age,
PREDICTION(FOR age USING *) OVER () pred_age,
PREDICTION_DETAILS(FOR age ABS USING *) OVER () pred_det
FROM mining_data_apply_v))
WHERE rnk <= 5;

CUST_ID  AGE   PRED_AGE AGE_DIFF PRED_DET
------- ---- ---------- -------- --------------------------------------------------------------
100910   80 40.6686505    39.33 <Details algorithm="Support Vector Machines">
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1"
weight=".059" rank="1"/>
<Attribute name="Y_BOX_GAMES" actualValue="0"
weight=".059" rank="2"/>
<Attribute name="AFFINITY_CARD" actualValue="0"
weight=".059" rank="3"/>
<Attribute name="FLAT_PANEL_MONITOR" actualValue="1"
weight=".059" rank="4"/>
<Attribute name="YRS_RESIDENCE" actualValue="4"
weight=".059" rank="5"/>
</Details>

101285   79 42.1753571    36.82 <Details algorithm="Support Vector Machines">
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1"
weight=".059" rank="1"/>
<Attribute name="HOUSEHOLD_SIZE" actualValue="2" weight=".059"
rank="2"/>
<Attribute name="CUST_MARITAL_STATUS" actualValue="Mabsent"
weight=".059" rank="3"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
rank="4"/>
<Attribute name="OCCUPATION" actualValue="Prof." weight=".059"
rank="5"/>
</Details>

100694   77 41.0396722    35.96 <Details algorithm="Support Vector Machines">
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1"
weight=".059" rank="1"/>
<Attribute name="EDUCATION" actualValue="&lt; Bach."
weight=".059" rank="2"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
rank="3"/>
<Attribute name="CUST_ID" actualValue="100694" weight=".059"
rank="4"/>
<Attribute name="COUNTRY_NAME" actualValue="United States of
America" weight=".059" rank="5"/>
</Details>

100308   81 45.3252491    35.67 <Details algorithm="Support Vector Machines">
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1"
weight=".059" rank="1"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
rank="2"/>
<Attribute name="HOUSEHOLD_SIZE" actualValue="2" weight=".059"
rank="3"/>
<Attribute name="FLAT_PANEL_MONITOR" actualValue="1"
weight=".059" rank="4"/>
<Attribute name="CUST_GENDER" actualValue="F" weight=".059"
rank="5"/>
</Details>

101256   90 54.3862214    35.61 <Details algorithm="Support Vector Machines">
<Attribute name="YRS_RESIDENCE" actualValue="9" weight=".059"
rank="1"/>
<Attribute name="HOME_THEATER_PACKAGE" actualValue="1"
weight=".059" rank="2"/>
<Attribute name="EDUCATION" actualValue="&lt; Bach."
weight=".059" rank="3"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
rank="4"/>
<Attribute name="COUNTRY_NAME" actualValue="United States of
America" weight=".059" rank="5"/>
</Details>

コストを考慮した意思決定

コストは、分類にバイアスをかけるためにユーザーが指定する数値です。コストのより低い結果に対してコストのより高い結果にペナルティを課すために、アルゴリズムでは正の数を使用します。数値が大きいほどコストが高いことを示します。一方、利益のより低い結果に対して利益のより高い結果を支持するためには負の数が使用されます。負の数が小さいほど利益が高いことを示します。

すべての分類アルゴリズムで、スコアリング用のコストを使用できます。コスト・マトリックス表でコストを指定するか、スコアリング時にインラインでコストを指定します。インラインでコストを指定したのに、モデルにもコスト・マトリックスが関連付けられている場合は、インラインで指定したコストのみが使用されます。PREDICTION関数、PREDICTION_SET関数およびPREDICTION_COST関数がコストをサポートしています。

コストを使用してモデル作成にバイアスをかけることができるのは、ディシジョン・ツリー・アルゴリズムのみです。コストを使用するディシジョン・ツリー・モデルを作成する場合は、コスト・マトリックス表を作成し、モデルのCLAS_COST_TABLE_NAME設定にその表の名前を指定します。モデルの作成時にコストを指定すると、モデルの作成に使用したコスト・マトリックスがスコアリング時に使用されます。スコアリング用に別のコスト・マトリックス表を使用する場合は、既存のコスト・マトリックス表を削除してから新しいコスト・マトリックス表を追加します。

次の表に、コスト・マトリックス表の例を示します。コスト・マトリックスは、2項ターゲットのコストを指定しています。このマトリックスから、このアルゴリズムでは、誤って0に分類されると、誤って1に分類された場合の2倍のコストがかかるものとして処理されることがわかります。

表6-1 コスト・マトリックスの例

ACTUAL_TARGET_VALUE

PREDICTED_TARGET_VALUE

コスト

0

0

0

0

1

2

1

0

1

1

1

0

関連項目:

例1-1

例6-13 コストを使用した問合せの例

表nbmodel_costsには、表6-1で説明されているコスト・マトリックスが含まれています。

SELECT * from nbmodel_costs;

ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE       COST
------------------- ---------------------- ----------
0                      0          0
0                      1          2
1                      0          1
1                      1          0

次の文では、コスト・マトリックスをnbmodelという名前のNaive Bayesモデルに関連付けます。

BEGIN
dbms_data_mining.add_cost_matrix('nbmodel', 'nbmodel_costs');
END;
/

次の問合せでは、mining_data_apply_vのスコアリング時にコスト・マトリックスが考慮されます。出力は、1を予測するほうが0を予測するよりコストが低い行に制限されます。

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION (nbmodel COST MODEL
USING cust_marital_status, education, household_size) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         25         38
M        208         43

スコアリング関数を呼び出すときに、コストをインラインで指定できます。インラインでコストを指定したのに、モデルにもコスト・マトリックスが関連付けられている場合は、インラインで指定したコストのみが使用されます。インラインで指定した異なるコストを使用している同じ内容の問合せを次に示します。コスト・マトリックス表(表6-1)で示されている「2」のかわりに、インラインで指定したコストでは「10」が指定されています。

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION (nbmodel
COST (0,1) values ((0, 10),
(1, 0))
USING cust_marital_status, education, household_size) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         74         39
M        581         43

コストのかわりに確率に基づいた同じ内容の問合せを次に示します。

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION (nbmodel
USING cust_marital_status, education, household_size) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         73         39
M        577         44

DBMS_DATA_MINING.Apply

DBMS_DATA_MININGのAPPLYプロシージャは、スコアリングの結果を表に直接書き込むバッチでの適用操作です。表の列は、マイニング機能によって異なります。

APPLYによるスコアリングでは、SQLスコアリング関数によるスコアリングと同じ結果が生成されます。たとえば、分類では各ケースの予測と確率が生成され、クラスタリングでは各ケースのクラスタIDと確率が生成されます。異なっているのは、スコアリング結果の取得方法と、その取得に使用できるメカニズムです。

APPLYにより、次の表に示す列を含む出力表が作成されます。

表6-2 APPLY出力表

マイニング機能

出力列

分類

CASE_ID

PREDICTION

PROBABILITY

回帰

CASE_ID

PREDICTION

異常検出

CASE_ID

PREDICTION

PROBABILITY

クラスタリング

CASE_ID

CLUSTER_ID

PROBABILITY

特徴抽出

CASE_ID

FEATURE_ID

MATCH_QUALITY

APPLYの出力はスコアリング・データとは別に保存されるため、スコアリング結果の行を含めた問合せをサポートするには、出力とスコアリング・データを結合する必要があります。したがって、APPLYで使用されるモデルにはケースIDが必要となります。

ケースIDは、SQLスコアリング関数で適用されるモデルでは必要とされません。同様に、スコアリング結果はSQL問合せ内でリアルタイムに生成および使用されるため、保存や結合も不要です。

APPLYを使用した異常検出の例を次に示します。このAPPLY出力表の問合せは、表の最初の10名の顧客を戻します。各顧客について、典型的(1)または異常(0)である確率が示されます。

例6-14 DBMS_DATA_MINING.APPLYを使用した異常検出

EXEC dbms_data_mining.apply
('SVMO_SH_Clas_sample','svmo_sh_sample_prepared',
'cust_id', 'one_class_output');

SELECT * from one_class_output where rownum < 11;

CUST_ID PREDICTION PROBABILITY
---------- ---------- -----------
101798          1  .567389309
101798          0  .432610691
102276          1  .564922469
102276          0  .435077531
102404          1   .51213544
102404          0   .48786456
101891          1  .563474346
101891          0  .436525654
102815          0  .500663683
102815          1  .499336317

関連項目:

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING.APPLYに関する説明

7 非構造化テキストのマイニング

ここでは、Oracle Data Miningを使用して非構造化テキストをマイニングする方法について説明します。

- 非構造化テキストについて

- テキスト・マイニングとOracle Textについて

- テキスト・マイニングを含むモデルの作成

- テキスト・ポリシーの作成

- テキスト属性の構成

非構造化テキストについて

データ・マイニングのアルゴリズムは、量的データまたは質的データに対して動作します。量的データは順序付けされます。これは、NUMBERやFLOATなどの数値データ型の列に格納されます。質的データは、カテゴリまたは分類によって識別されます。これは、VARCHAR2やCHARなどの文字データ型の列に格納されます。

非構造化テキスト・データは、量的でも質的でもありません。非構造化テキストには、Webページ、ドキュメント・ライブラリ、PowerPointプレゼンテーション、製品仕様、電子メール、レポートのコメント・フィールド、コール・センターのメモなどの項目が含まれます。非構造化テキストは、企業のすべてのデータの4分の3以上を占めると言われています。非構造化テキストから意味のある情報を抽出することは、ビジネスの成功にとって不可欠となります。

テキスト・マイニングとOracle Textについて

テキスト・マイニングとは、データ・マイニング手法をテキスト用語(テキストの特徴またはテキスト・トークンとも呼ばれる)に適用するプロセスです。テキスト用語とは、テキスト・ドキュメントから抽出して、量的な重みを割り当てられた単語または単語のグループです。テキスト用語は、操作および分析の対象となるテキストの基本単位です。

Oracle Textとは、用語抽出、単語とテーマの検索およびその他のテキスト問合せ用ユーティリティを提供するデータベース・テクノロジです。トレーニング・データにテキストの列が存在する場合、Oracle Data MiningはOracle Textのユーティリティと用語の重み付け方針を使用して、テキストをマイニング用に変換します。Oracle Data Miningでは、与えられた構成情報がOracle Textへ渡され、その結果がモデル作成プロセスで使用されます。

関連項目:

『Oracle Textアプリケーション開発者ガイド』

テキスト・マイニングを含むモデルの作成

次の表に示されているように、Oracle Data Miningは、VARCHAR2、CHAR、CLOB、BLOBおよびBFILEの列に格納された非構造化テキストをサポートしています。

表7-1 非構造化テキストを格納できる列のデータ型

データ型

説明

BFILEおよびBLOB

Oracle Data Miningでは、モデルの作成時にBLOBおよびBFILEの列をテキストとして特定した場合のみ、これらの列をテキストとして解釈します。列をテキストとして特定していない場合は、CREATE_MODELがエラーを戻します。

CLOB

Oracle Data Miningでは、CLOBをテキストとして解釈します。

CHAR

Oracle Data Miningでは、デフォルトではCHARを質的として解釈します。モデルの作成時に、CHARの列をテキストとして特定することができます。

VARCHAR2

Oracle Data Miningでは、4000より長いデータを持つVARCHAR2をテキストとして解釈します。

Oracle Data Miningでは、デフォルトでは長さが4000以下のデータを持つVARCHAR2を質的として解釈します。モデルの作成時に、これらの列をテキストとして特定することができます。

注意:

テキストは、ネストした列ではサポートされておらず、また監視ありデータ・マイニングでターゲットとして使用することはできません。

次の表に示す設定により、モデルのテキスト属性に対する用語抽出プロセスが制御されます。モデルの設定を指定する方法は、「モデルの設定の指定」を参照してください。

表7-2 テキスト用のモデルの設定

設定名

データ型

設定値

説明

ODMS_TEXT_POLICY_NAME

VARCHAR2(4000)

CTX_DDL.CREATE_POLICYで作成されたOracle Textのポリシー・オブジェクトの名前。

非構造化テキストからの個々のトークンの抽出方法に影響を与える。「テキスト・ポリシーの作成」を参照。

ODMS_TEXT_MAX_FEATURES

INTEGER

1 <= 値 <= 100000

CREATE_MODELに渡される(各テキスト列のすべてのドキュメントの)ドキュメント・セットから使用する特徴の最大数。

デフォルトは3000です。

モデルには1つ以上のテキスト属性を含めることができます。テキスト属性を持つモデルには、質的属性と量的属性を含めることもできます。

テキスト属性を含むモデルを作成するには、次の手順を実行します。

1. Oracle Textのポリシー・オブジェクトを作成します(「テキスト・ポリシーの作成」を参照)。

2. 表7-2で説明されているモデルの構成設定を指定します。

3. テキストとして処理する必要がある列を指定し、必要に応じて、個々の属性に対してテキスト変換の方法を指定します。「テキスト属性の構成」を参照してください。

4. モデルの設定とテキスト変換指示をDBMS_DATA_MINING.CREATE_MODELに渡します。「モデルへの変換の組込み」を参照してください。

注意:

O-Clusterを除くすべてのアルゴリズムでは、非構造化テキストの列をサポートできます。

相関ルール(Apriori)では非構造化テキストを使用しないことをお薦めします。

テキスト・ポリシーの作成

Oracle Textのポリシーは、テキスト内容をどのように解釈する必要があるのかを指定します。モデル、属性、またはモデルと個々の属性の両方を制御するテキスト・ポリシーを提供できます。モデル固有のポリシーが存在し、1つ以上の属性が独自のポリシーを持つ場合、Oracle Data Miningでは、指定された属性に対しては属性のポリシーを使用し、その他の属性に対してはモデル固有のポリシーを使用します。

テキスト・ポリシーの作成は、CTX_DDL.CREATE_POLICYプロシージャで行います。

CTX_DDL.CREATE_POLICY(
policy_name    IN VARCHAR2,
filter         IN VARCHAR2 DEFAULT NULL,
section_group  IN VARCHAR2 DEFAULT NULL,
lexer          IN VARCHAR2 DEFAULT NULL,
stoplist       IN VARCHAR2 DEFAULT NULL,
wordlist       IN VARCHAR2 DEFAULT NULL);

CTX_DDL.CREATE_POLICYのパラメータを、次の表で説明します。

表7-3 CTX_DDL.CREATE_POLICYプロシージャのパラメータ

パラメータ名

説明

policy_name

新しいポリシー・オブジェクトの名前。Oracle Textのポリシーとテキスト索引は、同じネームスペースを共有します。

filter

索引付けのためにドキュメントをプレーン・テキストに変換する方法を指定します。例としては、キャラクタ・セット用のCHARSET_FILTERや、プレーン・テキスト、HTMLおよびXML用のNULL_FILTERがあります。

filter値については、『Oracle Textリファレンス』のフィルタ型に関する説明を参照してください。

section_group

ドキュメント内のセクションを特定します。たとえば、HTML_SECTION_GROUPはHTMLドキュメント内のセクションを定義します。

section_group値については、『Oracle Textリファレンス』のセクション・グループ型に関する説明を参照してください。

注意: CONTEXT索引でサポートされている任意のセクション・グループを指定できます。

lexer

索引付けされている言語を特定します。たとえば、BASIC_LEXERは、空白で区切られた単語を使用する言語(英語やほとんどの西ヨーロッパ言語など)のテキストから用語を抽出するためのレクサーです。

lexer値については、『Oracle Textリファレンス』のレクサー型に関する説明を参照してください。

stoplist

用語抽出から除外する単語とテーマを指定します。たとえば、英語言語のドキュメントの場合、単語の「the」は通常ストップリストに含まれます。

デフォルトではシステム提供のストップリストが使用されます。

『Oracle Textリファレンス』のストップリストに関する説明を参照してください。

wordlist

ステミング問合せおよびファジー問合せの拡張方法を指定します。ステムは、異なる文法形式で単一表現を持つことができるように単語の原形を定義します。ファジー問合せには、単語の表現における一般的なスペルミスが含まれます。

『Oracle Textリファレンス』のBASIC_WORDLISTに関する説明を参照してください。

関連項目:

『Oracle Textリファレンス』のCTX_DDL.CREATE_POLICYに関する説明

テキスト属性の構成

表7-1に示したとおり、CHAR、短いVARCHAR2 (<=4000)、BFILEおよびBLOBの列は、テキスト属性として特定できます。CHARおよび短いVARCHAR2の列が明示的に非構造化テキストとして特定されていない場合、CREATE_MODELは、これらの列を質的属性として処理します。BFILEおよびBLOBの列が明示的に非構造化テキストとして特定されていない場合、CREATE_MODELはエラーを戻します。

列をテキスト属性として特定するには、属性指定でキーワードTEXTを与えます。属性指定とは、変換レコード(transform_rec)のフィールド(attribute_spec)です。変換レコードは、CREATE_MODELに渡すことのできる変換リスト(xform_list)の構成要素です。

注意:

属性指定には、テキストに関係のない情報も含めることができます。属性指定を作成する手順については、「データの変換」の「モデルへの変換の組込み」を参照してください。

任意のテキスト属性に対して変換指示を与えるには、属性指定のTEXTキーワードを次の表で説明するサブ設定を使用して修飾します。

表7-4 属性固有のテキスト変換指示

サブ設定名

説明

例

POLICY_NAME

CTX_DDL.CREATE_POLICYで作成されたOracle Textのポリシー・オブジェクトの名前。

(POLICY_NAME:my_policy)

TOKEN_TYPE

サポートされている値は次のとおりです。

- NORMAL (デフォルト)

- STEM

- THEME

「属性指定のトークン・タイプ」を参照。

(TOKEN_TYPE:THEME)

MAX_FEATURES

属性から使用する特徴の最大数。

(MAX_FEATURES:3000)

注意:

CLOBおよび長いVARCHAR2 (4000より長い場合)に対しては、変換指示を指定する場合のみ、TEXTキーワードが必要となります。CHAR、短いVARCHAR2、BFILEおよびBLOBに対しては、変換指示を指定するかどうかにかかわらず、TEXTキーワードが常に必要となります。

ヒント:

『Oracle Databaseリファレンス』に示すように、データ・ディクショナリ・ビューALL_MINING_MODEL_ATTRIBUTESで属性指定を表示できます。

属性指定のトークン・タイプ

トークン・タイプとしてステムまたはテーマを指定する場合は、テキスト・ポリシーのレクサー・プリファレンスでこれらのタイプのトークンがサポートされている必要があります。

次の例では、BASIC_LEXERにテーマと英語のステムを追加します。

BEGIN
CTX_DDL.CREATE_PREFERENCE('my_lexer', 'BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE('my_lexer', 'index_stems', 'ENGLISH');
CTX_DDL.SET_ATTRIBUTE('my_lexer', 'index_themes', 'YES');
END;

例7-1 テキスト用の属性指定の例

次の式では、属性に対するテキスト変換でmy_policyという名前のテキスト・ポリシーを使用する必要があることを指定します。トークン・タイプはTHEMEであり、特徴の最大数は3000です。

"TEXT(POLICY_NAME:my_policy)(TOKEN_TYPE:THEME)(MAX_FEATURES:3000)"

関連項目:

- モデルへの変換の組込み

- データの変換

- 属性の変換指示の指定

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING.SET_TRANSFORMに関する説明

8 Oracle Data Miningの管理タスク

ここでは、Oracle Data Miningに関連する管理タスクの実行方法について説明します。

- データ・マイニング用のデータベースのインストールおよび構成

- Oracle Data Miningのアップグレードまたはダウングレード

- マイニング・モデルのエクスポートおよびインポート

- マイニング・モデルおよびデータへのアクセスの制御

- マイニング・モデルに対する監査およびコメントの追加

データ・マイニング用のデータベースのインストールおよび構成

データ・マイニング用データベースのインストール方法および構成方法を学びます。

- インストールについて

- データベース・オプションの有効化または無効化

- データ・マイニング用のデータベース・チューニングに関する考慮事項

インストールについて

Oracle Data Miningは、Oracle Database Enterprise EditionのオプションであるOracle Advanced Analyticsの構成要素です。Oracle Databaseをインストールするには、ご使用のプラットフォームのインストール手順に従ってください。インストール時に「データ・ウェアハウス」構成を選択します。

Oracle Data Minerは、Oracle Data Miningのグラフィカル・ユーザー・インタフェースで、Oracle SQL Developerの拡張です。SQL DeveloperのダウンロードおよびData Minerリポジトリのインストールの手順は、Oracle Technology Networkを参照してください。

http://www.oracle.com/pls/topic/lookup?ctx=db121&id=datminGUI

例8-7で説明しているように、データ・マイニング操作を実行するには、Oracleデータベースにログオンが可能で、ユーザーIDがデータベース権限を持っている必要があります。

関連項目:

- ご使用のプラットフォームに固有のインストール手順については、Oracle Databaseドキュメント・ライブラリ(http://www.oracle.com/pls/db121/homepage)のインストールおよびアップグレードに関するページを参照してください

- 例8-7

データベース・オプションの有効化または無効化

Oracle Advanced Analyticsオプションは、Oracle Database Enterprise Editionのインストール時にデフォルトで有効化されます。インストール後には、コマンドライン・ユーティリティchoptを使用して、データベース・オプションを有効化または無効化できます。手順については、ご使用のプラットフォームに対応したインストール・ガイドでデータベース・オプションの有効化または無効化に関する説明を参照してください。たとえば、次のようなガイドを参照します。

- 『Oracle Databaseインストレーション・ガイド for Linux』

- 『Oracle Databaseインストレーション・ガイドfor Microsoft Windows』

データ・マイニング用のデータベース・チューニングに関する考慮事項

Oracle Data Miningをサポートしている本番データベースを管理するDBAは、『Oracle Database管理者ガイド』に記載されている標準的な管理方法に従う必要があります。

データ・マイニング・モデルの作成およびマイニング・モデルのバッチ・スコアリングは、システムに対してDSSに似た負荷をかける傾向があります。単一行のスコアリングは、システムに対してOLTPに似た負荷をかける傾向があります。

データベース・メモリーの管理は、データ・マイニングに大きな影響を与える場合があります。モデルの作成、複合問合せおよびバッチ・スコアリングでは、プログラム・グローバル領域(PGA)メモリーのサイズ指定を適切に行うことが非常に重要です。データ・マイニングの観点から見ると、システム・グローバル領域(SGA)は、一般的にそれほど重要ではありません。ただし、SGAは、SGAの共有カーソルにモデルをロードするリアルタイムのスコアリングに対応できるサイズに設定する必要があります。ほとんどの場合は、自動的にメモリーを管理するようにデータベースを構成できます。これを行うには、チューニング・パラメータMEMORY_TARGETで最大合計メモリー・サイズを指定します。自動メモリー管理を使用すると、Oracle Databaseは、必要に応じてSGAとインスタンスPGAとの間で動的にメモリーを交換し、処理需要を満たします。

ほとんどのデータ・マイニング・アルゴリズムで、パラレル実行を利用できます(データベースでパラレル実行が有効化されている場合)。INIT.ORAのパラメータは、パラレル実行の動作を制御します。

関連項目:

- Oracle Database管理者ガイド

- スコアリングと配置

- Oracle Database管理者ガイド

- 『 Databaseパフォーマンス・チューニング・ガイド』のデータベース・パフォーマンスの基礎に関する説明およびデータベース・メモリーのチューニングに関する説明

- 『Oracle Database VLDBおよびパーティショニング・ガイド』

Oracle Data Miningのアップグレードまたはダウングレード

ここでは、Oracle Data Miningのアップグレードとダウングレードの方法を理解します。

- アップグレード前の手順

- Oracle Data Miningのアップグレード

- アップグレード後の手順

- Oracle Data Miningのダウングレード

アップグレード前の手順

アップグレード前に、Javaで作成したデータ・マイニング・モデルおよびOracle Data Miner Classic (以前のバージョンのOracle Data Miner)で作成したマイニング操作を削除する必要があります。

警告:

Oracle Database 12cでは、Oracle Data MiningはJava APIをサポートしておらず、Oracle Data Miner ClassicをOracle Database 12cに対して実行することはできません。

Javaで作成されたモデルの削除

10gまたは11gデータベースにJavaで作成されたモデルが含まれている場合は、データベースのアップグレード前に、DBMS_DATA_MINING.DROP_MODELルーチンを使用してモデルを削除します。

Oracle Data Miner Classicで作成されたマイニング操作の削除

データベースにOracle Data Miner Classicからのマイニング操作が含まれている場合は、データベースのアップグレード前に、マイニング操作の削除とリポジトリの削除を行います。次の手順に従います。

1. Data Miner Classicユーザー・インタフェースを使用して、マイニング操作を削除します。

2. SQL*PlusまたはSQL Developerで、次の表を削除します。

DM4J$ACTIVITIES
DM4J$RESULTS
DM4J$TRANSFORMS

さらに次のビューも削除します。

DM4J$MODEL_RESULTS_V
DM4J$RESULTS_STATE_V

これらの手順の完了後、データベースのスキーマ内に、接頭辞DM4J$を使用する表またはビューが存在しないようにします。

Oracle Data Miningのアップグレード

アップグレード前の手順を完了すると、11gまたは10gのどちらのリリースからのアップグレードの場合でも、すべてのモデルとマイニング・メタデータはOracle Databaseのアップグレード・プロセスに完全に統合されます。

アップグレードされたモデルは、引き続き以前のリリースの場合と同様に機能します。アップグレードされたモデルおよびアップグレードされた環境で作成した新しいモデルの両方が、新しいリリースで導入された新しいマイニング機能を利用できます。

データベースのアップグレードには、Database Upgrade Assistant (DBUA)を使用することも、エクスポートおよびインポート・ユーティリティを使用して手動アップグレードを実行することもできます。

関連項目:

- アップグレード前の手順

- データベースの完全なアップグレード手順については、『Oracle Databaseアップグレード・ガイド』を参照してください。

Database Upgrade Assistantを使用したOracle Data Miningのアップグレード

Oracle Database Upgrade Assistantには、アップグレード・プロセスをインタラクティブに順を追って説明するグラフィカル・ユーザー・インタフェースが用意されています。

Windowsプラットフォームでは、次の手順に従ってUpgrade Assistantを起動します。

1. Windowsの「スタート」メニューに移動し、Oracleホーム・ディレクトリを選択します。

2. 「コンフィグレーションおよび移行ツール」メニューを選択します。

3. Upgrade Assistantを起動します。

Linuxプラットフォームでは、DBUAユーティリティを使用してOracle Databaseをアップグレードします。

リリース10gからのアップグレード

Oracle Data Mining 10gでは、データ・マイニング・メタデータおよびPL/SQLパッケージはDMSYSスキーマに格納されます。Oracle Data Mining 11gおよび12cにはDMSYSが存在せず、データ・マイニング・メタデータ・オブジェクトはSYSに格納されます。

Oracle Database 10gを12cにアップグレードする場合、すべてのデータ・マイニング・メタデータ・オブジェクトおよびPL/SQLパッケージは、DMSYSからSYSに移行されます。DMSYSスキーマとその関連オブジェクトは、移行が成功すると削除されます。DMSYSが削除されると、SYS.DBA_REGISTRYビューには、コンポーネントとしてOracle Data Miningがリストされなくなります。

Oracle Database 12cへのアップグレード後は、Data Mining Scoring Engine (DMSE)に切り替えられなくなります。スコアリング・エンジンは、Oracle Database 11gまたは12cには存在しません。

リリース11gからのアップグレード

Oracle Database 11gをOracle Database 12cにアップグレードする際に、データベースが以前にOracle Database 10gからアップグレードしたものである場合は、DMSYSスキーマがまだ存在している可能性があります。アップグレード・プロセスでDMSYSが検出されると、警告メッセージが表示され、アップグレード中にDMSYSが削除されます。

エクスポートとインポートを使用したデータ・マイニング・モデルのアップグレード

必要に応じて、自動化の程度を下げた方法でデータ・マイニング・モデルをアップグレードできます。以前のリリースのOracle Databaseで作成したモデルをエクスポートし、それらをOracle Database 12cのインスタンスにインポートできます。

警告:

Javaで作成されたデータ・マイニング・モデルはインポートしないでください。これらはOracle Database 12cでサポートされていません。

リリース10gのデータ・マイニング・モデルのエクスポートとインポート

モデルをOracle Database 10gのインスタンスからダンプ・ファイルへエクスポートするには、「マイニング・モデルのエクスポートおよびインポート」の手順に従いますダンプ・ファイルからモデルをインポートする前に、DMEIDMSYSスクリプトを実行して、Oracle Database 12cにDMSYSスキーマを作成します。

SQL>CONNECT / as sysdba;
SQL>@ORACLE_HOME\RDBMS\admin\dmeidmsys.sql
SQL>EXIT;

注意:

TEMP表領域がすでにOracle Database 12gデータベースに存在している必要があります。DMEIDMSYSスクリプトは、TEMP表領域およびSYSAUX表領域を使用してDMSYSスキーマを作成します。

Oracle Database 12cデータベースにダンプ・ファイルをインポートするには、次のようにします。

%ORACLE_HOME\bin\impdp system\<password>
dumpfile=<dumpfile_name>
directory=<directory_name>
logfile=<logfile_name> .....
SQL>CONNECT / as sysdba;
SQL>EXECUTE dmp_sys.upgrade_models();
SQL>ALTER SYSTEM FLUSH SHARED_POOL;
SQL>ALTER SYSTEM FLUSH BUFFER_CACHE;
SQL>EXIT;

upgrade_modelsスクリプトにより、すべてのデータ・マイニング・メタデータ・オブジェクトおよびPL/SQLパッケージがDMSYSからSYSへ移行し、モデルのアップグレード前にDMSYSが削除されます。

関連項目:

マイニング・モデルのエクスポートおよびインポート

リリース11gのデータ・マイニング・モデルのエクスポートとインポート

モデルをOracle Database 11gのインスタンスからダンプ・ファイルへエクスポートするには、「マイニング・モデルのエクスポートおよびインポート」の手順に従います

警告:

Javaで作成されたデータ・マイニング・モデルはインポートしないでください。これらはOracle Database 12cでサポートされていません。

Oracle Database 12cデータベースにダンプ・ファイルをインポートするには、次のようにします。

%ORACLE_HOME\bin\impdp system\<password>
dumpfile=<dumpfile_name>
directory=<directory_name>
logfile=<logfile_name> .....
SQL>CONNECT / as sysdba;
SQL>EXECUTE dmp_sys.upgrade_models();
SQL>ALTER SYSTEM flush shared_pool;
SQL>ALTER SYSTEM flush buffer_cache;
SQL>EXIT;

アップグレード後の手順

データベースのアップグレード後、アップグレードされたデータベースのDBA_MINING_MODELSビューをチェックします。このビューに、新しくアップグレードされたマイニング・モデルがリストされていることを確認します。

アップグレードを検証し、ダウングレードの必要がないことを確認した後、初期化パラメータCOMPATIBLEを12.1に設定してください。

注意:

マイニング・モデルの作成に使用されるデータ・マイニング・ユーザー・アカウントには、CREATE MINING MODEL権限が付与されている必要があります。

関連項目:

- データ・マイニング・ユーザーの作成

- マイニング・モデルおよびデータへのアクセスの制御

Oracle Data Miningのダウングレード

Oracle Database 12cデータベースを以前のリリースにダウングレードする前に、特異値分解モデルまたは期待値最大化モデルが存在しないことを確認します。これらのアルゴリズムは、Oracle Database 12cでのみ使用できます。ダウングレードする前に、DBMS_DATA_MINING.DROP_MODELルーチンを使用して、これらのモデルを削除します。これを行わない場合、データベースのダウングレード・プロセスは終了します。

SYSで次のSQL文を発行して、ダウングレードを検証します。

SQL>SELECT o.name FROM sys.model$ m, sys.obj$ o
WHERE m.obj#=o.obj# AND m.version=2;

マイニング・モデルのエクスポートおよびインポート

データ・マイニング・モデルをフラット・ファイルにエクスポートして作業途中の操作をバックアップしたり、Oracle Database Enterprise Editionの別のインスタンスに(たとえば、開発データベースからテスト・データベースに)モデルを移動したりできます。モデルをエクスポートおよびインポートする方法は、いずれもOracle Data Pumpのテクノロジに基づいています。

DBMS_DATA_MININGパッケージには、個々のマイニング・モデルのエクスポートとインポートを行うためのEXPORT_MODELプロシージャとIMPORT_MODELプロシージャが含まれています。EXPORT_MODELとIMPORT_MODELでは、Oracle Data Pumpのエクスポート機能とインポート機能を使用します。

- Oracle Data Pumpについて

- マイニング・モデルのエクスポートおよびインポート用オプション

- EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト

- EXPORT_MODELおよびIMPORT_MODELの使用

- PMMLからのインポート

関連項目:

- EXPORT_MODEL

- IMPORT_MODEL

Oracle Data Pumpについて

Oracle Data Pumpは、2つのコマンドライン・クライアントと2つのPL/SQLパッケージで構成されています。コマンドライン・クライアント(expdpおよびimpdp)により、データ・ポンプ・エクスポートおよびインポート・ユーティリティに対する使いやすいインタフェースが提供されます。expdpとimpdpを使用して、スキーマ全体またはデータベース全体のエクスポートとインポートを行うことができます。

データ・ポンプ・エクスポート・ユーティリティは、マイニング・モデルを構成する表およびメタデータを含むスキーマ・オブジェクトを、ダンプ・ファイル・セットに書き出します。データ・ポンプ・インポート・ユーティリティは、ダンプ・ファイル・セットからモデル表およびメタデータを含むスキーマ・オブジェクトを取得し、それらをターゲット・データベースにリストアします。

expdpおよびimpdpは、個々のマイニング・モデルのエクスポートおよびインポートには使用できません。

関連項目:

Oracle Data Pumpと、expdpおよびimpdpユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください

マイニング・モデルのエクスポートおよびインポート用オプション

マイニング・モデルのエクスポートおよびインポート用オプションについて、次の表で説明します。

表8-1 Oracle Data Miningのエクスポートおよびインポート・オプション

タスク

説明

データベース全体のエクスポートまたはインポート

(DBAのみ)データベース全体のエクスポートにはexpdpを、データベース全体のインポートにはimpdpを使用します。データベース内のすべてのマイニング・モデルが含まれます。

スキーマのエクスポートまたはインポート

スキーマのエクスポートにはexpdpを、スキーマのインポートにはimpdpを使用します。スキーマ内のすべてのマイニング・モデルが含まれます。

データベース内の個々のモデルのエクスポートまたはインポート

個々のモデルのエクスポートにはDBMS_DATA_MINING.EXPORT_MODELを、個々のモデルのインポートにはDBMS_DATA_MINING.IMPORT_MODELを使用します。これらのプロシージャは、単一のマイニング・モデル、すべてのマイニング・モデルまたは特定の基準に一致するマイニング・モデルのエクスポートとインポートを行うことができます。

デフォルトでは、IMPORT_MODELは、モデルのエクスポート元のスキーマにモデルをインポートします。モデルを別のスキーマにインポートする場合は、schema_remapパラメータを指定できます。モデルを別の表領域を使用するスキーマにインポートする場合は、schema_remapと共にtablespace_remapを指定できます。

モデルを別のスキーマにインポートするために、データベース内の特別な権限が必要になる場合があります。これらの権限は、EXP_FULL_DATABASEロールおよびIMP_FULL_DATABASEロールによって付与され、特権ユーザー(SYSユーザー、またはDBAロールを持つユーザーなど)のみが使用できます。独自のスキーマ内でモデルのエクスポートとインポートを行う場合は、これらのロールは必要ありません。

モデルをインポートするには、ダンプ・ファイル・セットを作成したユーザーと同じデータベース権限を付与されている必要があります。そうでない場合は、完全なシステム権限を持つDBAがモデルのインポートを行います。

リモート・データベースに対する個々のモデルのエクスポートまたはインポート

リモート・データベースへの個々のモデルのエクスポートまたはリモート・データベースからの個々のモデルのインポートを行うには、データベース・リンクを使用します。データベース・リンクとは、別のデータベースのオブジェクトへのアクセスを可能にする、あるデータベースのスキーマ・オブジェクトです。このリンクは、EXPORT_MODELまたはIMPORT_MODELを実行する前に作成する必要があります。

プライベート・データベース・リンクを作成する場合、CREATE DATABASE LINKシステム権限が必要です。パブリック・データベース・リンクを作成する場合、CREATE PUBLIC DATABASE LINKシステム権限が必要です。また、リモートのOracle Databaseに対するCREATE SESSION権限が必要です。なお、ローカルとリモートの両方のOracle Databaseに、Oracle Netをインストールしておく必要があります。

関連項目:

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_DATA_MINING.IMPORT_MODELに関する説明

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDMBS_DATA_MINING.EXPORT_MODELに関する説明

- 『Oracle Database SQL言語リファレンス』のCREATE DATABASE LINKに関する説明

EXPORT_MODELおよびIMPORT_MODELのディレクトリ・オブジェクト

EXPORT_MODELおよびIMPORT_MODELは、ディレクトリ・オブジェクトを使用してダンプ・ファイル・セットの場所を特定します。ディレクトリ・オブジェクトとは、ホスト・コンピュータ上の物理ディレクトリのデータベース内での論理名です。

データ・マイニング・モデルをエクスポートするには、ディレクトリ・オブジェクトおよびそれが表すファイル・システム・ディレクトリに対する書込みアクセス権を持っている必要があります。データ・マイニング・モデルをインポートするには、ディレクトリ・オブジェクトおよびファイル・システム・ディレクトリに対する読取りアクセス権を持っている必要があります。また、データベース自体がファイル・システム・ディレクトリに対するアクセス権を持っている必要があります。ディレクトリ・オブジェクトを作成するには、CREATE ANY DIRECTORY権限を持っている必要があります。

次のSQLコマンドを実行すると、dmuser_dirという名前のディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトが表すファイル・システム・ディレクトリは、すでに存在している必要があり、さらにオペレーティング・システムによって付与される共有の読取りおよび書込みアクセス権を所有している必要があります。

CREATE OR REPLACE DIRECTORY dmuser_dir AS '/dm_path/dm_mining';

次のSQLコマンドを実行すると、dmuser_dirへの読取りおよび書込みアクセス権の両方がユーザー dmuserに付与されます。

GRANT READ,WRITE ON DIRECTORY dmuser_dir TO dmuser;

関連項目:

『Oracle Database SQL言語リファレンス』のCREATE DIRECTORYに関する項

EXPORT_MODELおよびIMPORT_MODELの使用

この項の例は、EXPORT_MODELとIMPORT_MODELを使用した様々なエクスポートおよびインポート・シナリオを示しています。各例では、例8-1に示すディレクトリ・オブジェクトdmdirと、2つのスキーマdm1およびdm2を使用します。どちらのスキーマもデータ・マイニング権限を持っています。dm1には2つのモデルがあります。dm2には1つのモデルがあります。

SELECT owner, model_name, mining_function, algorithm FROM all_mining_models;

OWNER      MODEL_NAME           MINING_FUNCTION      ALGORITHM
---------- -------------------- -------------------- --------------------------
DM1        EM_SH_CLUS_SAMPLE    CLUSTERING           EXPECTATION_MAXIMIZATION
DM1        DT_SH_CLAS_SAMPLE    CLASSIFICATION       DECISION_TREE
DM2        SVD_SH_SAMPLE        FEATURE_EXTRACTION   SINGULAR_VALUE_DECOMP

例8-1 ディレクトリ・オブジェクトの作成

-- connect as system user
CREATE OR REPLACE DIRECTORY dmdir AS '/scratch/dmuser/expimp';
GRANT READ,WRITE ON DIRECTORY dmdir TO dm1;
GRANT READ,WRITE ON DIRECTORY dmdir TO dm2;
SELECT * FROM all_directories WHERE directory_name IN 'DMDIR';

OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS        DMDIR                      /scratch/dmuser/expimp

例8-2 DM1からのすべてのモデルのエクスポート

-- connect as dm1
BEGIN
dbms_data_mining.export_model (
filename =>   'all_dm1',
directory =>  'dmdir');
END;
/

ログ・ファイルとダンプ・ファイルは、dmdirに関連付けられている物理ディレクトリ/scratch/dmuser/expimpで作成されます。ログ・ファイルの名前は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 => 'DMDIR');
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スキーマではexample表領域を使用し、dm2スキーマではsysaux表領域を使用します。

-- CONNECT as sysdba
BEGIN
dbms_data_mining.import_model (
filename => 'all_d101.dmp',
directory => 'DMDIR',
schema_remap => 'DM1:DM2',
tablespace_remap => 'EXAMPLE:SYSAUX');
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 =>'DMDIR',
model_filter => 'name in (''DT_SH_CLAS_SAMPLE'')');
-- one_model01.dmp and dm1_exp_37.log are created in /scratch/dmuser/expimp

-- Export Decision Tree models
EXECUTE dbms_data_mining.export_model(
filename => 'algo_models',
directory => 'DMDIR',
model_filter => 'ALGORITHM_NAME IN (''DECISION_TREE'')');
-- algo_model01.dmp and dm1_exp_410.log are created in /scratch/dmuser/expimp

-- Export clustering models
EXECUTE dbms_data_mining.export_model(
filename =>'func_models',
directory => 'DMDIR',
model_filter => 'FUNCTION_NAME = ''CLUSTERING''');
-- func_model01.dmp and dm1_exp_513.log are created in /scratch/dmuser/expimp

関連項目:

他の例については、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

PMMLからのインポート

Predictive Model Markup Language (PMML)は、Data Mining Group(http://www.dmg.org)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Data Miningでは、回帰モデルに対応するPMML 3.1のコア機能をサポートしています。

Predictive Model Markup Language (PMML)で表現された回帰モデルをインポートできます。モデルのタイプは、RegressionModel (線形回帰またはバイナリ・ロジスティック回帰)である必要があります。

関連項目:

PMMLインポートの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

マイニング・モデルおよびデータへのアクセスの制御

ここでは、データ・マイニング・ユーザーを作成し、必要な権限を付与する方法を理解します。

- データ・マイニング・ユーザーの作成

- データ・マイニングのシステム権限

- マイニング・モデルのオブジェクト権限

データ・マイニング・ユーザーの作成

データ・マイニング・ユーザーとは、データ・マイニング操作を実行するための権限を持つデータベース・ユーザー・アカウントです。例8-6では、データベース・ユーザーの作成方法を示しています。例8-7では、ユーザーにデータ・マイニング権限を割り当てる方法を示しています。

注意:

データ・マイニングのサンプル・プログラム用にユーザーを作成するには、「データ・マイニングのサンプル・プログラム」で述べられている2つの構成スクリプトを実行する必要があります。

例8-6 SQL*Plusでのデータベース・ユーザーの作成

1. システム権限を使用してSQL*Plusにログインします。

Enter user-name: sys as sysdba
Enter password: password

2. dmuserというユーザーを作成するには、次のコマンドを入力します。選択したパスワードを指定します。

CREATE USER dmuser IDENTIFIED BY password
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
Commit;

USERS表領域およびTEMP表領域は、データベース・メディアに付属の事前構成済データベースに含まれています。USERSは通常、デモ・ユーザーによって使用され、「データ・マイニングのサンプル・プログラム」で述べられているサンプル・プログラムの実行に適しています。TEMPは、ほとんどのデータベース・ユーザーによって共有される一時表領域です。

注意:

データ・マイニング・ユーザー用の表領域は、システム・ロードとシステム・リソースに応じて、標準的なDBAの手順に従って割り当てる必要があります。

3. dmuserとしてログインするには、次を入力します。

CONNECT dmuser
Enter password: password

関連項目:

- データ・マイニングのサンプル・プログラム

- CREATE USER文の完全な構文については、『Oracle Database SQL言語リファレンス』を参照してください。

データ・マイニングの権限の付与

独自のスキーマにモデルを作成するには、CREATE MINING MODEL権限を所有している必要があります。所有しているモデルに対しては、どのような操作も実行できます。これには、モデルの適用、コスト・マトリックスの追加、モデルの名前の変更、およびモデルの削除が含まれます。

次に示す例のGRANT文では、基本的なデータ・マイニング権限のセットをdmuserアカウントに割り当てます。これらの権限の中にはすべてのマイニング操作に必要というわけではないものもありますが、これらすべてをグループとして付与することをお薦めします。

特定のマイニング操作の有効化または制限を行うには、追加のシステム権限およびオブジェクト権限が必要です。

例8-7 データ・マイニングに必要な権限

GRANT CREATE MINING MODEL TO dmuser;
GRANT CREATE SESSION TO dmuser;
GRANT CREATE TABLE TO dmuser;
GRANT CREATE VIEW TO dmuser;
GRANT EXECUTE ON CTXSYS.CTX_DDL TO dmuser;

自分のスキーマ内にないデータに対してはREADまたはSELECT権限が必要です。たとえば、次の文は、sh.customers表にSELECTアクセス権を付与します。

GRANT SELECT ON sh.customers TO dmuser;

データ・マイニングのシステム権限

システム権限は、データベース内の特定のアクションを実行する権限または1つのタイプのスキーマ・オブジェクトに対してアクションを実行する権限を付与します。たとえば、表領域を作成する権限や、データベース内の任意の表から行を削除する権限などがシステム権限です。

適切なシステム権限を所有している場合、他のスキーマのマイニング・モデルに対しても特定の操作を実行できます。たとえば、CREATE ANY MINING MODELを所有している場合、他のスキーマにモデルを作成できます。SELECT ANY MINING MODELを所有している場合、他のスキーマにあるモデルを適用できます。モデルにコメントを追加するには、COMMENT ANY MINING MODEL権限を所有している必要があります。

システム権限を付与するには、ADMIN OPTIONを指定したシステム権限またはGRANT ANY PRIVILEGEシステム権限が付与されている必要があります。

次の表に示すシステム権限により、マイニング・モデルの操作が制御されます。

表8-2 データ・マイニングのシステム権限

システム権限

許可される操作

CREATE MINING MODEL

ユーザー自身のスキーマへマイニング・モデルを作成する。

CREATE ANY MINING MODEL

任意のスキーマへマイニング・モデルを作成する。

ALTER ANY MINING MODEL

任意のスキーマ内の任意のマイニング・モデルの名前またはコスト・マトリックスを変更する。

DROP ANY MINING MODEL

任意のスキーマ内のマイニング・モデルを削除する。

SELECT ANY MINING MODEL

任意のスキーマ内のマイニング・モデルの適用および任意のスキーマ内のモデルの詳細の表示を行う。

COMMENT ANY MINING MODEL

任意のスキーマ内にある任意のマイニング・モデルに対するコメントの追加

AUDIT_ADMIN role

任意のスキーマ内の任意のマイニング・モデルの監査証跡を生成する。(詳細は、『Oracle Databaseセキュリティ・ガイド』を参照。)

例8-8 データ・マイニングのシステム権限の付与

次の文は、dmuserによる任意のスキーマ内のデータのスコアリングおよびモデルの詳細の表示を許可します(SELECTアクセス権がデータに付与されている場合)。ただし、dmuserがモデルを作成できるのは、dmuserのスキーマ内のみです。

GRANT CREATE MINING MODEL TO dmuser;
GRANT SELECT ANY MINING MODEL TO dmuser;

次の文は、他のスキーマ内のスコアリングまたはモデルの詳細の表示の権限を取り消します。この文が実行されると、dmuserは、 dmuserのスキーマ内でのみデータ・マイニング操作を実行できます。

REVOKE SELECT ANY MINING MODEL FROM dmuser;

関連項目:

- マイニング・モデルへのコメントの追加

- 『Oracle Databaseセキュリティ・ガイド』

マイニング・モデルのオブジェクト権限

オブジェクト権限は、特定のスキーマ・オブジェクトに対して特定のアクションを実行する権限を付与します。たとえば、SH.PRODUCTS表から行を削除する権限は、オブジェクト権限の例です。

ユーザーには、自身のスキーマに含まれるスキーマ・オブジェクトに対するオブジェクト権限がすべて自動的に付与されています。ユーザーは、自身のスキーマのオブジェクトに対するオブジェクト権限を、他のユーザーまたはロールに付与できます。

次の表に示すオブジェクト権限により、マイニング・モデルの操作が制御されます。

表8-3 マイニング・モデルのオブジェクト権限

オブジェクト権限

許可される操作

ALTER MINING MODEL

特定のマイニング・モデル・オブジェクトの名前またはコスト・マトリックスを変更する。

SELECT MINING MODEL

特定のマイニング・モデル・オブジェクトの適用およびそのモデルの詳細の表示を行う。

例8-9 マイニング・モデルに対するオブジェクト権限の付与

次の文は、dmuserによるsales表へのモデルtestmodelの適用を許可し、適用ごとに異なるコスト・マトリックスを指定します。ユーザーdmuserは、モデルtestmodelの名前を変更することもできます。testmodelモデルおよびsales表は、dmuserスキーマ内ではなく、shスキーマ内にあります。

GRANT SELECT ON MINING MODEL sh.testmodel TO dmuser;
GRANT ALTER ON MINING MODEL sh.testmodel TO dmuser;
GRANT SELECT ON sh.sales TO dmuser;

次の文は、dmuserがtestmodelのコスト・マトリックスの名前の変更またはコスト・マトリックスの変更を行うのを防ぎます。ただし、dmuserは引き続きtestmodelをsales表に適用できます。

REVOKE ALTER ON MINING MODEL sh.testmodel FROM dmuser;

マイニング・モデルに対する監査およびコメントの追加

マイニング・モデル・オブジェクトは、SQLのCOMMENT文とAUDIT文をサポートしています。

マイニング・モデルへのコメントの追加

コメントは、記述情報をデータベース・オブジェクトに関連付けるために使用できます。SQL COMMENT文を使用して、コメントをマイニング・モデルに関連付けることができます。

COMMENT ON MINING MODEL schema_name.model_name IS string;

注意:

別のスキーマのモデルにコメントを追加するには、COMMENT ANY MINING MODELシステム権限を所有している必要があります。

コメントを削除するには、コメントを空の文字列''に設定します。

次の文は、ユーザー自身のスキーマに含まれるモデルDT_SH_CLAS_SAMPLEにコメントを追加します。

COMMENT ON MINING MODEL dt_sh_clas_sample IS
'Decision Tree model predicts promotion response';

コメントは、カタログ・ビューUSER_MINING_MODELSを問い合せることによって表示できます。

SELECT model_name, mining_function, algorithm, comments FROM user_mining_models;

MODEL_NAME        MINING_FUNCTION  ALGORITHM      COMMENTS
----------------- ---------------- -------------- -----------------------------------------------
DT_SH_CLAS_SAMPLE CLASSIFICATION   DECISION_TREE  Decision Tree model predicts promotion response

次の文は、データベースからこのコメントを削除します。

COMMENT ON MINING MODEL dt_sh_clas_sample '';

関連項目:

- 表8-2

- SQL COMMENT文に関する詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

マイニング・モデルの監査

Oracle Database監査システムは、本番環境のスキーマ・オブジェクトに対する操作を追跡するための、強力で高度に構成可能なツールです。監査システムは、データ・マイニング・モデルに対する操作の追跡に使用できます。

注意:

マイニング・モデルの監査を行うには、AUDIT_ADMINロールを所有している必要があります。

統合監査については、『Oracle Databaseセキュリティ・ガイド』を参照してください。ただし、完全に統合された監査システムは、デフォルトでは有効になっていません。統合監査への移行手順については、『Oracle Databaseアップグレード・ガイド』を参照してください。

関連項目:

- マイニング・モデルの監査の詳細は、『Oracle Databaseセキュリティ・ガイド』のOracle Data Miningのイベントの監査に関する説明を参照してください

- Oracle Databaseの統合監査の包括的な説明は、 『Oracle Databaseセキュリティ・ガイド』の監査を使用したデータベース・アクティビティの監視に関する説明を参照してください

- 統合監査への移行の詳細は、『Oracle Databaseアップグレード・ガイド』のOracle Databaseの統合監査移行プロセスに関する説明を参照してください

A データ・マイニングのサンプル・プログラム

ここでは、Oracle Databaseに同梱のデータ・マイニング・サンプル・プログラムについて述べます。

- データ・マイニングのサンプル・プログラムについて

- データ・マイニングのサンプル・プログラムのインストール

- データ・マイニングのサンプル・データ

データ・マイニングのサンプル・プログラムについて

データ・マイニングのサンプル・プログラムから、Oracle Data Miningアプリケーション・プログラミング・インタフェース(API)について多くを学ぶことができます。これらのプログラムは、データの準備、アルゴリズムの選択、アルゴリズムのチューニング、テストおよびスコアリングを行うための一般的な方法を示しています。

プログラムは簡単に使用できます。プログラムには、コードの理解に役立つインライン・コメントが多数含まれています。プログラムの終了時にはすべての一時オブジェクトが削除されますので、セットアップやクリーンアップなしでプログラムを繰り返し実行できます。

データ・マイニングのサンプル・プログラムは、Oracle Database Examplesを使用して、Oracleホームのデモ・ディレクトリにインストールされます。デモ・ディレクトリには、Oracle Databaseの様々な機能を示すサンプル・プログラムが含まれています。データ・マイニングのファイルは、dm*.sqlのディレクトリ・リスティングを実行することで検出できます。こうしたディレクトリ・リスティングのLinuxシステムでの例を次に示します。

なお、次の例で示されているディレクトリ・リスティングには、dmhpdemo.sqlというファイルが含まれていますが、これはデータ・マイニングのプログラムではありません。

例A-1 データ・マイニングのサンプル・プログラムのディレクトリ・リスティング

> cd $ORACLE_HOME/rdbms/demo
> ls dm*.sql
dmaidemo.sql      dmkmdemo.sql    dmsvddemo.sql
dmardemo.sql      dmnbdemo.sql    dmsvodem.sql
dmdtdemo.sql      dmnmdemo.sql    dmsvrdem.sql
dmdtxvlddemo.sql  dmocdemo.sql    dmtxtnmf.sql
dmemdemo.sql      dmsh.sql        dmtxtsvm.sql
dmglcdem.sql      dmshgrants.sql
dmglrdem.sql      dmstardemo.sql
dmhpdemo.sql      dmsvcdem.sql

データ・マイニングのサンプル・プログラムは、ユーザー・スキーマ内のマイニング・モデルのセットを作成します。プログラムの実行後、次の例に示すような問合せを使用してモデルをリストできます。

例A-2サンプル・プログラムで作成されたモデル

SELECT mining_function, algorithm, model_name FROM user_mining_models
ORDER BY mining_function;

MINING_FUNCTION                ALGORITHM                      MODEL_NAME
------------------------------ ------------------------------ -------------------
ASSOCIATION_RULES              APRIORI_ASSOCIATION_RULES      AR_SH_SAMPLE
CLASSIFICATION                 GENERALIZED_LINEAR_MODEL       GLMC_SH_CLAS_SAMPLE
CLASSIFICATION                 SUPPORT_VECTOR_MACHINES        T_SVM_CLAS_SAMPLE
CLASSIFICATION                 SUPPORT_VECTOR_MACHINES        SVMC_SH_CLAS_SAMPLE
CLASSIFICATION                 SUPPORT_VECTOR_MACHINES        SVMO_SH_CLAS_SAMPLE
CLASSIFICATION                 NAIVE_BAYES                    NB_SH_CLAS_SAMPLE
CLASSIFICATION                 DECISION_TREE                  DT_SH_CLAS_SAMPLE
CLUSTERING                     EXPECTATION_MAXIMIZATION       EM_SH_CLUS_SAMPLE
CLUSTERING                     O_CLUSTER                      OC_SH_CLUS_SAMPLE
CLUSTERING                     KMEANS                         KM_SH_CLUS_SAMPLE
CLUSTERING                     KMEANS                         DM_STAR_CLUSTER
FEATURE_EXTRACTION             SINGULAR_VALUE_DECOMP          SVD_SH_SAMPLE
FEATURE_EXTRACTION             NONNEGATIVE_MATRIX_FACTOR      NMF_SH_SAMPLE
FEATURE_EXTRACTION             NONNEGATIVE_MATRIX_FACTOR      T_NMF_SAMPLE
REGRESSION                     SUPPORT_VECTOR_MACHINES        SVMR_SH_REGR_SAMPLE
REGRESSION                     GENERALIZED_LINEAR_MODEL       GLMR_SH_REGR_SAMPLE

データ・マイニングのサンプル・プログラムのインストール

データ・マイニング・サンプル・プログラムの要件は、次のとおりです。

- Oracle Database Enterprise EditionおよびAdvanced Analyticsオプション

- Oracle Databaseのサンプル・スキーマ

- Oracle Database Examples

- データ・マイニングのユーザー・アカウント

- システム管理者によるdmshgrants.sqlの実行

- データ・マイニング・ユーザーによるdmsh.sqlの実行

次の手順に従って、データ・マイニングのサンプル・プログラムをインストールします。

1. Oracle Database 12c Enterprise EditionとAdvanced Analyticsオプションをインストールするか、またはこれらへのアクセスを取得します。Oracle Databaseをインストールするには、ご使用のプラットフォームに対応したインストール手順をhttp://www.oracle.com/pls/db121/homepageで参照してください。

2. データベースにサンプル・スキーマがインストールされていることを確認します。サンプル・スキーマは、デフォルトでOracle Databaseとともにインストールされます。サンプル・スキーマの詳細は、Oracle Databaseのサンプル・スキーマを参照してください。

3. Oracle Database Examplesがデータベースとともにインストールされていることを確認するか、またはOracle Database Examplesをローカルにインストールします。Oracle Database Examplesは、データベースのサンプル・プログラムをOracleホームのrdbms/demoディレクトリにロードします。インストール手順は、Oracle Database Examplesのインストレーション・ガイドを参照してください。

4. データ・マイニングのユーザー・アカウントが作成されていることを確認するか、管理権限を所有している場合は、独自にデータ・マイニングのユーザー・アカウントを作成します。「データ・マイニング・ユーザーの作成」を参照してください。

5. システム管理者に依頼してdmshgrants.sqlを実行するか、管理権限を持っている場合は自分で実行します。dmshgrantsによって、サンプル・プログラムを実行するために必要な権限が付与されます。これらには、「データ・マイニングのサンプル・データ」で説明されているSHスキーマの表に対するSELECTアクセス権と、次の表にリストされているシステム権限が含まれます。
データ・マイニング・ユーザーの名前をdmshgrantsに渡します。

SQL> CONNECT sys / as sysdba
Enter password: sys_password
Connected.
SQL> @ $ORACLE_HOME/rdbms/demo/dmshgrants dmuser

表A-1dmshgrants.sqlによってデータ・マイニング・ユーザーに付与されるシステム権限

権限

データ・マイニング・ユーザーに許可される操作

CREATE SESSION

データベース・セッションへのログイン

CREATE TABLE

表(CREATE_MODEL用の設定表など)の作成

CREATE VIEW

ビュー(SHスキーマの表のビューなど)の作成

CREATE MINING MODEL

データ・マイニング・モデルの作成

EXECUTE ON ctxsys.ctx_ddl

ctxsys.ctx_ddl PL/SQLパッケージのプロシージャの実行(テキスト・マイニングには必須)

6. データ・マイニング・ユーザーとしてデータベースへ接続し、dmsh.sqlを実行します。このスクリプトは、データ・マイニング・ユーザーのスキーマ内のサンプル・データのビューを作成します。

SQL> CONNECT dmuser
Enter password: dmuser_password
Connected.
SQL> @ $ORACLE_HOME/rdbms/demo/dmsh

関連項目:

- データ・マイニング・ユーザーの作成

- データ・マイニングのサンプル・データ

- Oracle Databaseサンプル・スキーマ

- Oracle Database Examplesインストレーション・ガイド

- データ・マイニング・ユーザーの作成

データ・マイニングのサンプル・データ

データ・マイニングのサンプル・プログラムで使用されるデータは、SHスキーマの次の表に基づいています。

SH.CUSTOMERS
SH.SALES
SH.PRODUCTS
SH.SUPPLEMENTARY_DEMOGRAPHICS
SH.COUNTRIES

dmshgrantsスクリプトは、SHの表にSELECTアクセス権を付与します。dmsh.sqlスクリプトは、データ・マイニング・ユーザーのスキーマ内のSH表のビューを作成します。次の表で、ビューについて説明します。

表A-2 データ・マイニングのサンプル・データ

ビュー名

説明

MINING_DATA

データの結合とフィルタリング

MINING_DATA_BUILD_V

モデルの作成用のデータ

MINING_DATA_TEST_V

モデルのテスト用のデータ

MINING_DATA_APPLY_V

スコアリング対象のデータ

MINING_BUILD_TEXT

テキストを含むモデルの作成用のデータ

MINING_TEST_TEXT

テキストを含むモデルのテスト用のデータ

MINING_APPLY_TEXT

スコアリング対象となる、テキスト列を含むデータ

MINING_DATA_ONE_CLASS_V

異常検出用のデータ

相関ルール・プログラムは、独自のトランザクショナル・データを作成します。

索引

A  B  C  D  E  F  G  I  K  L  M  N  O  P  R  S  T  U  W  X

A

- ADP 1

- Advanced Analyticsオプション 1 , 2

- アルゴリズム

- パラレル実行 1

- ALL_MINING_MODEL_ATTRIBUTES 1

- ALL_MINING_MODEL_SETTINGS 1 , 2

- ALL_MINING_MODELS 1

- 異常検出 1 , 2 , 3 , 5 , 6

- APPLY 1

- Apriori 1 , 2 , 3

- 相関ルール 1 , 2

- 属性評価 1 , 2 , 3 , 4

- 属性

- 質的 1 , 2

- データ属性 1

- データ・ディクショナリ 1

- モデル属性 1 , 2

- ネスト 1

- 量的 1 , 2

- サブ名 1

- ターゲット 1

- テキスト 1

- 非構造化テキスト 1

- 属性指定 1 , 2

- AUDIT 1 , 2

- 自動データ準備 1 , 2 , 3

B

- ビニング

- 等幅 1

- quantile 1

- 監視あり 1 , 2

- 上位N個の最頻出 1

- データの作成 1

C

- ケースID 1 , 2 , 3 , 4

- ケース表 1 , 2

- 質的属性 1

- choptユーティリティ 1

- 分類 1 , 2 , 3 , 4 , 5 , 6

- クラスの重み 1

- クリッピング 1

- CLUSTER_DETAILS 1 , 2

- CLUSTER_DISTANCE 1

- CLUSTER_ID 1 , 2

- CLUSTER_PROBABILITY 1

- CLUSTER_SET 1 , 2

- クラスタリング 1 , 2 , 3 , 4

- COMMENT 1

- コスト・マトリックス 1 , 2 , 3 , 4

- コストを考慮した予測 1

D

- データ

- 質的 1

- ディメンション 1

- サンプル・プログラム 1

- マーケット・バスケット 1

- 欠落値 1

- 複数レコード・ケース 1

- ネスト 1

- 数値 1

- 準備 1

- READアクセス 1

- SELECTアクセス 1

- 単一レコード・ケース 1

- 疎 1

- トランザクション 1

- 非構造化テキスト 1

- Database Upgrade Assistant 1

- データ・マイニング

- アプリケーション 1

- データベース・チューニング 1

- DDL 1

- 権限 1 , 2 , 3

- サンプル・プログラム 1

- スコアリング 1 , 2

- データ型

- ネスト 1

- DBMS_DATA_MINING 1 , 2

- DBMS_DATA_MINING_TRANSFORM 1 , 2

- DBMS_PREDICTIVE_ANALYTICS 1 , 2 , 3

- ディシジョン・ツリー 1 , 2 , 3 , 4

- サポート対象外機能

- Java API 1

- ディレクトリ・オブジェクト 1

- DMEIDMSYS 1

- ダウングレード 1

E

- 期待値の最大化 1

- EXPLAIN 1

- エクスポート 1 , 2

F

- FEATURE_DETAILS 1

- FEATURE_ID 1

- FEATURE_SET 1

- FEATURE_VALUE 1

- 特徴抽出 1 , 2 , 3 , 4

G

- 一般化線形モデル 1

- GLM 1

- グラフィカル・ユーザー・インタフェース 1

I

- インポート 1 , 2

- インストール

- Oracle Database 1 , 2

- Oracle Database Examples 1

- データ・マイニングのサンプル・プログラム 1

- サンプル・スキーマ 1

K

- k-Means 1 , 2

L

- 線形回帰 1 , 2

- ロジスティック回帰 1 , 2

M

- マーケット・バスケット・データ 1

- MDL 1

- メモリー 1

- 最小記述長 1 , 2

- マイニング機能

- 監視あり 1

- 監視なし 1

- マイニング・モデル

- コメントの追加 1 , 2 , 3

- 適用 1

- 監査 1 , 2

- 名前の変更 1

- サンプル・プログラムによる作成 1

- データ・ディクショナリ 1

- オブジェクト権限 1

- 権限 1

- SQL DDL 1

- アップグレード 1

- モデルの詳細の表示 1

- 欠損値の処理 1

- モデル属性

- 質的 1

- ネストした列からの導出 1

- 数値 1

- 名前の詳細 1

- テキスト 1

- モデルの詳細 1 , 2

- モデル

- アルゴリズム 1

- サンプル・プログラムによる作成 1

- デプロイ 1

- 権限 1

- 設定 1 , 2

- テスト 1

- トレーニング 1

- 透過性 1

- モデルのシグネチャ 1

N

- Naive Bayes 1 , 2 , 3

- ネストしたデータ 1 , 2

- Non-Negative Matrix Factorization 1 , 2

- 正規化

- Min-Max 1

- スケール 1

- Z-スコア 1

- 量的属性 1

O

- オブジェクト権限 1

- O-Cluster 1 , 2 , 3 , 4

- 1クラスSVM 1

- Oracle Data Miner 1 , 2 , 3

- Oracle Data Miner Classic 1

- Oracle Data Pump 1

- Oracle Text 1

- 外れ値 1 , 2

P

- パラレル実行 1 , 2

- PGA 1

- PL/SQLパッケージ 1

- PMML 1

- PREDICTION 1 , 2 , 3 , 4

- PREDICTION_BOUNDS 1

- PREDICTION_COST 1

- PREDICTION_DETAILS 1 , 2

- PREDICTION_PROBABILITY 1 , 2 , 3

- PREDICTION_SET 1

- 予測分析 1 , 2 , 3

- 事前確率 1

- 事前確率表 1

- 権限

- マイニング・モデルの作成 1

- データ・マイニング 1 , 2

- データ・マイニングのサンプル・プログラム 1

- エクスポートおよびインポート 1

- データ・マイニングに必須 1

R

- 回帰 1 , 2 , 3 , 4 , 5 , 6

- 逆変換 1 , 2

S

- サンプル・プログラム

- 構成スクリプト 1

- 使用されるデータ 1

- ディレクトリ・リスティング 1

- インストール 1

- 作成されたモデル 1

- Oracle Database Examples 1

- 要件 1

- サンプル・スキーマ 1

- スコア付け

- データ 1

- 動的 1 , 2 , 3

- パラレル実行 1

- 権限 1

- 要件 1

- SQL関数 1

- 透過性 1

- スコアリング・エンジン 1

- 設定

- データ・ディクショナリ 1

- 指定する表 1

- SGA 1

- 特異値分解 1

- スパース・データ 1

- SQL AUDIT 1 , 2

- SQL COMMENT 1 , 2

- SQLデータ・マイニング関数 1

- SQL Developer 1

- STACK 1 , 2

- サポート・ベクター・マシン 1 , 2 , 3

- システム権限 1 , 2

T

- ターゲット 1 , 2 , 3 , 4

- テスト・データ 1 , 2

- テキスト属性 1 , 2

- テキスト・マイニング 1 , 2

- テキスト・ポリシー 1

- テキスト用語 1

- トレーニング・データ 1

- トランザクショナル・データ 1 , 2 , 5

- 変換

- 属性に固有な 1 , 2

- 組込み 1 , 2 , 3 , 4

- 逆 1

- ユーザー指定 1

- 透過性 1

- トリミング 1

U

- アップグレード

- エクスポートとインポート 1

- リリース10gからの 1

- リリース11gからの 1

- アップグレード前の手順 1

- Database Upgrade Assistantの使用 1

- ユーザー

- データ・マイニング権限の割当て 1

- 作成 1

- データ・マイニングに必須な権限 1 , 2

W

- 重み 1

- ウィンザライズ 1

X

- XFORM 1

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。