DBMS_DATA_MINING_TRANSFORMパッケージには、データ・マイニング用のデータを準備するデータ変換ユーティリティが含まれています。 データの準備完了後、そのデータを使用して、DBMS_DATA_MININGパッケージまたはOracle Data Mining(ODM)Java APIでモデルを作成し、スコアリングできます。 モデルは、データ・マイニング用のSQLスコアリング・ファンクションを使用してもスコアリングできます。
DBMS_DATA_MINING_TRANSFORMは、オープンソースのPL/SQLパッケージです。 このパッケージのルーチンを使用して、データ・マイニング用のデータを準備できます。また、パブリック・ソース・コードを使用して独自のルーチンを開発することもできます。
ソース・コード、インタフェース定義およびインライン・ドキュメントは、$ORACLE_HOME/rdbms/admin/dbmsdmxf.sqlで入手できます。
|
関連項目:
|
この章では、次の項目について説明します。
DBMS_DATA_MINING_TRANSFORMパッケージの使用方法
概要
データ型
変換方式
変換の定義手順
変換例
この項では、DBMS_DATA_MINING_TRANSFORMパッケージの使用に関連する項目について説明します。
DBMS_DATA_MINING_TRANSFORMパッケージは、次の2つの役割を果たします。
データ・マイニング用のデータの前処理を行う基本的なユーティリティ・パッケージ。
データ・マイニングの一般的なデータ変換を実行するためのSQLの使用方法を提示する、オープン・ソースの学習ツール。 このパッケージのルーチン用の入出力データとして、Oracle以外の単純な表やビューを扱います。 ソース・コードを教材として使用し、個々のアプリケーション・データに適した独自のデータ変換機能を作成できます。 このパッケージのソース・コードは、$ORACLE_HOMEの下のrdbms/adminディレクトリにあるdbmsdmxf.sqlに収録されています。
|
注意: DBMS_DATA_MINING_TRANSFORMパッケージは、Oracle Data Miningでは必要ありません。 前処理用のユーティリティを独自に開発したり、業務用にカスタマイズしたサードパーティ・ツールを使用することができます。 |
DBMS_DATA_MINING_TRANSFORMの基本的な設計思想は、データ・マイニングで通常使用する変換処理のほとんどをSQLで十分効率的に実行できるという事実に基づいています。 たとえば、CASE式またはDECODE関数を使用すれば、ビニングを実行できます。線形正規化は、(x - shift)/scale(xは変換対象のデータ値)という形式の単純な算術式で表現できます。
ただし、変換を実行する問合せが長くなる可能性があります。 問合せの作成を補助できる便利なルーチンがあればそれを使用することをお薦めします。 したがって、このパッケージは、最もよく使用されるマイニング変換に適用可能な問合せ作成サービスや、それ以外の変換を実行する場合でも容易に拡張可能なフレームワークを提供することを目的としています。
|
表記法に関する注意: この章では、数値集合を表すときに標準的な範囲表記法を使用します。
(bは集合[a,b]に属しますが、集合[a,b)には属しません)。 添字は標準の表記法には準拠していないため、"XN"のかわりに"X_N"が使用されます。 |
|
関連項目: Oracle Data Miningでは、データ・マイニングのサンプル・プログラムを使用できます。 これらのプログラムには、DBMS_DATA_MINING_TRANSFORMを使用したデータ変換のサンプルが含まれています。 サンプル・プログラムの使用手順については、『Oracle Data Mining管理者ガイド』を参照してください。 |
DBMS_DATA_MINING_TRANSFORMパッケージでは、ビニング、正規化、Winsorization、クリッピング、および不明な値の変換がサポートされています。
ビニングでは、連続値および離散値をカーディナリティ(基数)の少ない離散値(ビン)に変換します。 たとえば、人の年齢は、1から20才を1、21から40才を2といった離散的な数値ビンに区分できます。 Ford、Chrysler、BMW、Volkswagenなどの主要な自動車メーカーは、{Ford, Chrysler}をUS_Car_Makers、{BMW, Volkswagen}をEuropean_Car_Makersといった離散的なカテゴリ・ビンに区分できます。
DBMS_DATA_MINING_TRANSFORMでは、カテゴリ属性と数値属性のビニングがサポートされています。 カテゴリ属性はVARCHAR2/CHARデータ型、数値属性はNUMBERデータ型を持ちます。
このビニング方式では、データから計算される値の発生頻度に基づいて、各属性のビン定義が決定されます。 ユーザーは、特定の数(N個)のビンを指定します。各ビン(bin_1, ..., bin_N)は、発生頻度が上位の値に対応します。 残りのすべての値は、bin_N+1に属します。
このビニング方式では、データから計算される最小値と最大値に基づいて、各属性のビン定義が決定されます。 ユーザーは、特定の数(N個)のビンを指定します。bin_1,..., bin_Nの各ビンは、最小値から最大値までの範囲全体を等しい幅(inc = (max – min)/N)に分割したものです。bin_0は(–inf, min)の範囲に対応し、bin_(N+1)は(max, + inf)の範囲に対応します。 Nが指定されていない場合は、データから推定できます。
このビニング方式では、各クオンタイルの最小値に基づいて、各属性のビン定義が決定されます(NTILE関数を使用してデータからクオンタイルを計算します)。 bin_1,..., bin_Nのビンは次の範囲に対応します。bin_1は[min_1,min_2]の範囲、bin_2,..., bin_i,..., bin_N-1は(min_i, min_(i+1)]の範囲、bin_Nは(min_N, max_N]の範囲にそれぞれ対応します。 左端と右端の値が等しいビンは破棄されます。
正規化とは、x_new = (x_old-shift)/scaleという式に基づき、連続値を特定の範囲([–1.0,1.0]、[0.0,1.0]など)に変換することを意味します。 正規化は数値属性のみに適用されます。
この正規化方式では、データの最小値と最大値に基づいて、各属性の正規化定義が決定されます。 シフト(shift)の値はshift = minという式になり、スケール(scale)の値はscale = (max - min) という式になります。
この正規化方式では、データの最小値と最大値に基づいて、各属性の正規化定義が決定されます。 シフト(shift)の値はshift = 0という式になり、スケール(scale)の値はscale = max{abs(max), abs(min)}という式になります。
この正規化方式では、データから計算される平均値と標準偏差に基づいて、各属性の正規化定義が決定されます。 シフト(shift)の値はshift = meanという式で計算され、スケール(scale)の値はscale = standard deviationという式で計算されます。
属性値の計算に異常値が大きく影響することがあります。 属性値の計算を適正化するには、データの前処理として異常値を除外するか、異常値の影響を最小限に抑える必要があります。
Winsorizationでは、特定の属性のテール値を指定された値に変更します。 たとえば、90%のWinsorizationでは、下位5%を6番目のパーセンタイル(百分位数)の最小値に設定し、上位5%を95番目のパーセンタイルの最大値に設定します。
トリミングでは、テール値が除外されます。つまり、トリミングされた値は以降の値で無視されます。 トリミングを実行するには、テール値をNULLに設定します。
不明な値の処理には、データ内のNULL値を置換する処理が含まれます。 不明な値の処理は、属性値全体と比較して不明な値の割合が高い場合に推奨されます。 データ内の不明な値が比較的少ない場合は、データ・マイニングのために不明な値を削除できます。
不明な値を置換する際、置換する必要がある値を特定または推定できる場合は、NULLを置換できます。 NULLがランダムに省略されていると推定される場合は、それらを意味のある値に置換できます。
DBMS_DATA_MINING_TRANSFORM INSERTルーチンでは、数値属性のNULLを意味のある属性値に置換し、カテゴリ属性のNULLをモードに置換して不明な値を処理します。
DBMS_DATA_MINING_TRANSFORMは、CREATE、INSERTおよびXFORM操作を定義するルーチンを提供します。 データ変換を定義するには、次の手順を実行します。
CREATEルーチンを使用して、事前定義済の列セットを持つ変換定義表を作成します。
INSERTルーチンを使用して、選択した属性の変換定義をその表に移入します。
XFORMルーチンを使用して、変換定義表のビューを作成します。
変換定義表を作成するには、次のプロシージャを使用します。
ビン定義表を作成するには、CREATE_BIN_NUMおよびCREATE_BIN_CATを使用します。
正規化定義表を作成するには、CREATE_NORM_LINを使用します。
クリッピング定義表を作成するには、CREATE_CLIPを使用します。
不明値処理定義表を作成するには、CREATE_MISS_NUMおよびCREATE_MISS_CATを使用します。
通常、変換定義表の正確性と整合性は適正な作成プロセスによって保証されます。 また、整合性制約メカニズムを利用して、変換定義表の整合性を維持することもできます。 その場合は、CREATEルーチンによって作成された表を変更するか、必要な整合性制約に基づいて手動で表を作成します。
各属性の変換を定義する(変換定義表に変換定義を挿入する)場合は、事前定義の方式(自動変換定義)によるデータ検査に基づいた方法が最もよく使用されます。 DBMS_DATA_MINING_TRANSFORMのINSERTルーチンもよく使用されます。 たとえば、Zスコアによる正規化方式では、データの平均値と標準偏差を計算し、それらの値を線形正規化変換のパラメータ(シフトおよびスケール)として使用します。
変換定義表に移入するには、次のプロシージャを使用します。
数値属性のビニングの場合はINSERT_BIN_NUM_EQWIDTH、INSERT_BIN_NUM_QTILEおよびINSERT_AUTOBIN_NUM_EQWIDTHを使用し、ビニング・カテゴリ属性のビニングの場合はINSERT_BIN_CAT_FREQを使用します。
数値属性の正規化の場合は、INSERT_NORM_LIN_MINMAX、INSERT_NORM_LIN_SCALEまたはINSERT_NORM_LIN_ZSCOREを使用します。
数値属性のWinsorizationの場合はINSERT_CLIP_WINZOR_TAILを使用し、数値属性のクリッピングの場合はINSERT_CLIP_TRIM_TAILを使用します。
数値属性の不明な値の処理の場合はINSERT_MISS_NUM_MEANを使用し、カテゴリ属性の不明な値の処理の場合はINSERT_MISS_CAT_MODEを使用します。
特定の問題に関するすべてのマイニング属性を変換定義表によって完全に表現できるまで、これらのルーチンを何回かコールして、様々なデータソースの関連属性をすべて変換してください。
自動変換定義を実行した後、変換定義表に対してSQL DML文を発行すると、すべての変換定義または一部の変換定義を調整できます。こうして、きわめて柔軟な方法で独自の変換を定義できます。
INSERTルーチンでは、次に示す柔軟な方法で変換を定義できます。
INSERTルーチンに入力するデータは、必ずしも特定のモデルの構築時に使用したデータである必要はありません。 マイニング属性を正しく表現するデータであれば、どのようなデータでも使用できます。
すべての属性の変換が定義されるまで、同じデータセットまたは異なるデータセットに対して、INSERTルーチンを何回でもコールできます。 その際、INSERTルーチンの特定のコールで、1つ以上の属性を選択して操作対象から除外できます。 さらに、極端な例として、個々の属性にそれぞれ異なる変換定義を割り当てることもできます。
カテゴリ属性のビニングでは、表の中のNUMBER列が自動的にスキップされます。数値属性のビニング、正規化、クリッピングのルーチンでは、入力データ内のVARCHAR2/CHAR列が自動的にスキップされます。したがって、変換ルーチンに渡すときに、カテゴリ属性と数値属性を分離する必要はありません。
問合せの作成には、事前定義された列を持つ単純な変換定義表が使用されます。 問合せ作成ルーチンはマクロのようなものであり、変換定義表はマクロ展開時に使用されるパラメータと考えてください。 C言語で#defineマクロを使用する場合と同様に、ルーチンのコール元は、マクロが正しく展開される(その結果、SQLの問合せとして有効である)ように留意してください。
変換問合せを示すビューを作成するには、次のプロシージャを使用します。
ビニングの場合は、XFORM_BIN_NUMおよびXFORM_BIN_CATを使用します。
正規化の場合は、XFORM_NORM_LINを使用します。
クリッピングの場合は、XFORM_CLIPを使用します。
不明な値の処理の場合は、XFORM_MISS_NUMおよびXFORM_MISS_CATを使用します。
数値属性とカテゴリ属性の両方がデータに含まれている場合は、1つの変換ステップの結果を次のステップに渡す必要があります。 たとえば、XFORM_BIN_CATの結果をXFORM_BIN_NUMに渡します。また、その逆の渡し方も可能です。 このように変換結果をやり取りできるのは、数値属性変換ルーチンとカテゴリ属性変換ルーチンが別々の属性集合に作用するためです。
特定のデータ・マイニング問題のデータセットを取り扱うときは、すべてのマイニング操作において、共通の前処理と変換処理をマイニング・データに適用する必要があります。 たとえば、特定の変換定義に従ってモデル構築用データを前処理した場合は、テスト・データとスコアリング・データも同じ変換定義に従って前処理する必要があります。
次に例を示し、DBMS_DATA_MINING_TRANSFORMパッケージのルーチンの一般的な使用方法を説明します。 この例では、入力表に数値属性データとカテゴリ属性データの両方が含まれており、両方のデータについてビニングを行う必要があると想定します。 具体的な操作手順は次のとおりです。
CREATE_BIN_NUMをコールして、空の数値ビン定義表を作成します。
INSERT_BIN_NUM_EQWIDTHをコールして、入力の構築データ内のすべての数値属性に対する変換を定義します。 (この例では、説明を簡単にするため、すべての数値属性属性を10個のビンに区分するものとします)。 O-Clusterモデルに対してビニングを実行する場合は、INSERT_AUTOBIN_NUM_EQWIDTHを使用します。
次に、数値ビン定義表と構築データ表を入力として、XFORM_BIN_NUMをコールします。 生成されたオブジェクトは、数値ビニングを実行する構築データ表をSQL文の問合せによって表したビューです。 この出力オブジェクト(ビュー)にbuild_bin_num_viewという名前を付けます。
カテゴリ属性もビニングする必要があるため、CREATE_BIN_CATをコールして、カテゴリ・ビン定義表を作成します。
次に、INSERT_BIN_CAT_FREQをコールして、すべてのカテゴリ属性に対する変換を定義します (この例では、説明を簡単にするため、すべてのカテゴリ属性を10個のビンに区分するものとします)。
最後のステップとして、カテゴリ・ビン定義表、およびXFORM_BIN_NUMからの出力ビュー(名前はbuild_bin_num_view)を入力パラメータに指定し、XFORM_BIN_CATをコールします。 これによって、数値属性の変換定義とカテゴリ属性の変換定義が結合されます。
生成されたオブジェクトは、構築データ表をSQL文の問合せによって表したビューで、ビン定義表の内容が適用されます。 DBMS_DATA_MININGパッケージのCREATE_MODELプロシージャへの入力データとして、このビューの名前を指定します。
この例で作成したモデルが分類モデルであるときに、そのモデルをスコアリング・データに適用(APPLY)する場合は、構築データと同じ方法でスコアリング・データを準備する必要があります。 次の手順に従って、スコアリング・データを簡単に準備できます。
最初に、数値ビン定義表とスコアリング・データ表を入力として、XFORM_BIN_NUMをコールします。 生成されたオブジェクトは、スコアリング・データ表をSQL文の問合せによって表したビューで、数値ビン定義表の内容も適用されます。 この出力オブジェクト(ビュー)にapply_bin_num_viewという名前を付けます。
次の(最後の)ステップとして、カテゴリ・ビン定義表、およびXFORM_BIN_NUMからの出力ビュー(名前はapply_bin_num_view)を入力パラメータに指定し、XFORM_BIN_CATをコールします。
生成されたオブジェクトは、スコアリング・データ表をSQL文の問合せによって表したビューで、ビン定義表の内容が適用されます。 DBMS_DATA_MININGパッケージのAPPLYプロシージャへの入力データとして、このビューの名前を指定します。
表26-2 DBMS_DATA_MINING_TRANSFORMパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
カテゴリ属性のビン定義表を作成します。 |
|
|
数値属性のビン定義表を作成します。 |
|
|
クリッピング定義表を作成します。 |
|
|
カテゴリ属性の不明値処理定義表を作成します。 |
|
|
数値属性の不明値処理定義表を作成します。 |
|
|
正規化定義表を作成します。 |
|
データから推定したビン数に基づいて、数値ビン定義表に適用します。 |
|
|
入力のカテゴリ・データに基づいて頻度ベースのビニングを導出し、カテゴリ・ビン定義表に適用します。 |
|
|
|
入力の数値データに基づいて等幅のビニングを導出し、数値ビン定義表に適用します。 |
|
|
入力の数値データに基づいてクオンタイルによるビニングを導出し、数値ビン定義表に適用します。 |
|
|
入力の数値データのテール値に基づいてトリミングを導出し、クリッピング定義表に適用します。 |
|
|
入力の数値データのテール値に基づいてWinsorizationを導出し、クリッピング定義表に適用します。 |
|
|
不明なそれぞれの値に基づいてモードを導出し、カテゴリ属性の不明値処理定義表に適用します。 |
|
|
不明なそれぞれの値に基づいて平均値を導出し、数値属性の不明値処理定義表に適用します。 |
|
|
入力の数値データに基づいて最小値と最大値による正規化を導出し、正規化定義表に適用します。 |
|
入力の数値データに基づいてスケールによる正規化を導出し、正規化定義表に適用します。 |
|
|
|
入力の数値データに基づいてZスコアによる正規化を導出し、正規化定義表に適用します。 |
|
|
カテゴリ・データをビンに区分した変換済データが格納されるビューを作成します。 |
|
|
数値データをビンに区分した変換済データが格納されるビューを作成します。 |
|
|
数値データにクリッピングを適用した変換済データが格納されるビューを作成します。 |
|
|
カテゴリ属性の不明値処理を適用した変換済データが格納されるビューを作成します。 |
|
|
数値属性の不明値処理を適用した変換済データが格納されるビューを作成します。 |
|
|
数値データを正規化した変換済データが格納されるビューを作成します。 |
このプロシージャでは、カテゴリ属性のビン定義表を作成します。 このビン定義表は、INSERT_BIN_CAT_FREQプロシージャとXFORM_BIN_CATプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT (
bin_table_name IN VARCHAR2,
bin_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-3 CREATE_BIN_CATプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ビン定義表の名前。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
使用上の注意
生成されるビン定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
val |
VARCHAR2(4000) |
bin |
VARCHAR2(4000) |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT('build_bin_cat_table');
END;
このプロシージャでは、数値属性のビン定義表を作成します。 この表は、INSERT_BIN_NUM_EQWIDTHプロシージャ、INSERT_BIN_NUM_QTILEプロシージャ、INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ、およびXFORM_BIN_NUMプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM (
bin_table_name IN VARCHAR2,
bin_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-4 CREATE_BIN_NUMプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ビン定義表の名前。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
使用上の注意
生成されるビン定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
val |
NUMBER |
bin |
VARCHAR2(4000) |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM('build_bin_num_table');
END;
このプロシージャでは、クリッピング定義表を作成します。 このクリッピング定義表は、INSERT_CLIP_WINSOR_TAILプロシージャ、INSERT_CLIP_TRIM_TAILプロシージャ、XFORM_CLIPプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP (
clip_table_name IN VARCHAR2,
clip_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-5 CREATE_CLIPプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
クリッピング定義表の名前。 |
|
|
クリッピング定義表に適用されるスキーマの名前。 |
使用上の注意
作成されるクリッピング定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
lcut |
NUMBER |
lval |
NUMBER |
rcut |
NUMBER |
rval |
NUMBER |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP('build_clip_table');
END;
このプロシージャは、カテゴリ属性の不明値処理定義表を作成します。 この表は、INSERT_MISS_CAT_MODEプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT (
miss_table_name IN VARCHAR2,
miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-6 CREATE_MISS_CATプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
カテゴリ属性の不明値処理定義表の名前。 |
|
|
カテゴリ属性の不明値処理定義表に適用されるスキーマの名前。 |
使用上の注意
作成されるカテゴリ属性の不明値処理定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
val |
VARCHAR2(4000) |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT('build_miss_cat_table');
END;
このプロシージャは、数値属性の不明値処理定義表を作成します。 この表は、INSERT_MISS_NUM_MEANプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM (
miss_table_name IN VARCHAR2,
miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-7 CREATE_MISS_NUMプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
数値属性の不明値処理定義表の名前。 |
|
|
数値属性の不明値処理定義表に適用されるスキーマの名前。 |
使用上の注意
作成される数値属性の不明値定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
val |
NUMBER |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM('build_miss_num_table');
END;
このプロシージャでは、線形正規化定義表を作成します。 この表は、INSERT_NORM_LIN_MINMAXプロシージャ、INSERT_NORM_LIN_SCALEプロシージャ、INSERT_NORM_LIN_ZSCOREプロシージャ、およびXFORM_NORM_LINプロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN (
norm_table_name IN VARCHAR2,
norm_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-8 CREATE_NORMALIZE_LINプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
正規化定義表の名前。 |
|
|
正規化定義表に適用されるスキーマの名前。 |
使用上の注意
作成される線形正規化定義表には、次の列があります。
| 列名 | データ型 |
|---|---|
col |
VARCHAR2(30) |
shift |
NUMBER |
scale |
NUMBER |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN('build_norm_table');
END;
このプロシージャは、入力データ表の列のうち、除外リストに指定されていない数値列に基づき、数値属性に関する等幅のビン定義を導出します。次に、そのビン定義を、CREATE_BIN_NUMで作成した数値属性ビン定義表に挿入します。 また、統計情報に基づいて入力データを収集し、ビン数を計算します。
個々の数値属性(列)のビン定義は、入力データ表から計算される最小値と最大値に基づいて決定されます。
N(ビン数)は、次のようにNULL以外の値の数(cnt)、最大値(max)、最小値(min)、標準偏差(dev)および定数C=3.49/0.9に基づいて列ごとに個別に計算されます。
N=floor(power(cnt,1/3)*(max-min)/(c*dev))
bin_num(= N)個の各ビン(bin_1,..., bin_N)は、最小値から最大値までの範囲全体を等しい幅(inc = (max – min) / N)に分割したものです。ビン定義表内のビンの値は、N > 0の場合にbin_I = Iとなり、N < 0の場合にbin_I = N+1–Iとなります(なお、bin_0 = bin_(N+1) = NULL)。 val列の値は、ビン定義表に挿入される前に、round_numパラメータで指定した有効桁数に丸められます。
パラメータbin_numは、Nをbin_num以上に調整するために使用します。 bin_numがNULLまたは0(ゼロ)の場合、調整は行われません。パラメータmax_bin_numは、Nをmax_bin_num以下にするために使用します。 bin_numがNULLまたは0(ゼロ)の場合、調整は行われません。すべての値が整数値の列(離散列)の場合、Nは、確認された範囲max-min+1内の個別値の最大数以下になるように調整されます。
パラメータsample_sizeは、cntをsample_size以下にするために使用します。 sample_sizeがNULLまたは0(ゼロ)の場合、調整は行われません。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_AUTOBIN_NUM_EQWIDTH (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
bin_num IN PLS_INTEGER DEFAULT 3,
max_bin_num IN PLS_INTEGER DEFAULT 100,
exclude_list IN Column_List DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
sample_size IN PLS_INTEGER DEFAULT 50000,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-9 INSERT_AUTOBIN_EQWIDTHプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
ビンの最小数。デフォルトの数値は3です。 |
|
|
ビン数の推定値の上限を設定するビンの最大数。デフォルトは100です。 |
|
|
ビン定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。カテゴリ属性は自動的に除外されます。 |
|
|
表内の値の有効桁数。デフォルトは6です。 |
|
|
データ・サンプルのサイズ。デフォルトは50,000です。 |
|
|
ビン定義表に適用されるスキーマの名前。デフォルトはユーザー・スキーマです。 |
|
|
入力データ表に適用されるスキーマの名前。デフォルトはユーザー・スキーマです。 |
使用上の注意
特定の入力データ表に対して、ビンの個数を変えながら、このプロシージャをコールできます。 ビン定義の導出過程における個々のコールでは、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULL値である属性(列)、および一意の値を1つしか持たない属性(列)は無視されます。 bin_num、max_bin_numおよびsample_sizeの記号は、結果に影響を与えません。絶対値が使用されます。 Nの値の調整は、bin_num、max_bin_num、離散列の順に行われます。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出されるビン定義をnum_bin_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_AUTOBIN_NUM_EQUIWIDTH(
'num_bin_table', 'build_data_table');
END;
/
このプロシージャは、入力データ表の列のうち、除外リストに指定されていないVARCHAR2列とCHAR列に基づき、カテゴリ属性に関する頻度ベースのビン定義を導出します。次に、そのビン定義を、CREATE_BIN_CATで作成したカテゴリ属性ビン定義表に挿入します。
個々のカテゴリ属性(列)のビン定義は、入力データ表から計算される属性(列)値の発生頻度に基づいて決定されます。 bin_num(N)個の各ビン(bin_1, ..., bin_N)は、発生頻度が上位N番まで(N > 0の場合)または下位N番まで(N < 0の場合)の属性値に対応します。残りのすべての値は、bin_(N+1)に属します(ビン定義表内のビンの値: bin_I = I)。発生頻度が同じ属性値については、ビンの値を属性値の順序によって決定します(N > 0の場合は昇順、N < 0の場合は降順)。 値が異なる属性の個数C < Nである場合は、C+1個のビンのみが作成されます。
パラメータdefault_num(D)は、デフォルト・ビンに属する値の個数に応じて特定の属性を切り捨てるために使用されます。 D > 0の場合は、D個以上のデフォルト値を持つ属性のみがビンとして認識され、その他の属性は無視されます。 D < 0の場合は、D個以下のデフォルト値を持つ属性のみがビンとして認識され、その他の属性は無視されます。 DがNULLまたはD = 0の場合、属性の切捨ては行われません。パラメータbin_support(SUP)は、支持水準(出現回数)に基づいて属性をフィルタリングするために使用されます。SUP > 0の場合は、frq >= SUP*totという条件(frqは特定の属性値の出現回数、totはすべての属性の出現回数の合計を入力データから計算した値)を満たす出現頻度の高い属性のみがビンとして認識されます。SUP < 0の場合は、frq <= –SUP*totという条件を満たす出現頻度の低い属性のみがビンとして認識されます。 SUPがNULLまたはSUP = 0の場合、支持水準によるフィルタリングは適用されません。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_CAT_FREQ (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
bin_num IN PLS_INTEGER DEFAULT 9,
exclude_list IN Column_List DEFAULT NULL,
default_num IN PLS_INTEGER DEFAULT 2,
bin_support NUMBER DEFAULT NULL,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-10 INSERT_BIN_CAT_FREQプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
ビンの個数。 |
|
|
ビン定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
デフォルト値の個数。 |
|
|
ビンの支持水準(小数で指定)。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、ビンの個数を変えながら、このプロシージャを反復的にコールできます。 ビン定義の導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULLである属性(列)は無視されます。 bin_num = 0、またはbin_numがNULLの場合、ビン定義は作成されません。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべてのカテゴリ属性から導出されるビン定義をcat_bin_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM(
'cat_bin_table', 'build_table');
END; /
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、数値属性に関する等幅のビン定義を導出します。次に、そのビン定義を、CREATE_BIN_NUMで作成した数値属性ビン定義表に挿入します。
個々の数値属性(列)のビン定義は、入力データ表から計算される最小値と最大値に基づいて決定されます。 bin_num(= N)個の各ビン(bin_1,..., bin_N)は、最小値から最大値までの範囲全体を等しい幅(inc = (max – min) / N)に分割したものです。ビン定義表内のビンの値は、N > 0の場合にbin_I = Iとなり、N < 0の場合にbin_I = N+1–Iとなります(なお、bin_0 = bin_(N+1) = NULL)。
ビン定義表のval列の値は、round_numパラメータで指定した有効桁数に丸められます。 詳細は、「使用上の注意」を参照してください。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_EQWIDTH (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
bin_num IN PLS_INTEGER DEFAULT 10,
exclude_list IN Column_List DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-11 INSERT_BIN_EQWIDTHプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
ビンの個数。 |
|
|
ビン定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
表内の値の有効桁数。 詳細は、「使用上の注意」を参照してください。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、ビンの個数を変えながら、このプロシージャを反復的にコールできます。 ビン定義の導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULL値である属性(列)、および一意の値を1つしか持たない属性(列)は無視されます。 bin_num = 0、またはbin_numがNULLの場合、ビン定義は作成されません。
たとえば、N=2、col='mycol'、min=10、max = 21(inc = 5.5)である場合は、次の3行がビン定義表に挿入されます。
COL VAL BIN ----- ----- ----- mycol 10 NULL mycol 15.5 1 mycol 21 2
round_numパラメータによって、定義表のVAL列の数値を丸める方法を指定します。 round_numが正の値の場合は、保存する最大の有効桁数が指定されます。 round_numが負の値の場合は、削除する最小の有効桁数が指定されます。 いずれの場合も、結果は、指定した桁数に丸められます。 round_numが0(ゼロ)の場合、値は変更されません。
たとえば、値が308.162の場合、次のように丸められます。
For a value of 308.162:
when round_num = 1 result is 300
when round_num = 2 result is 310
when round_num = 3 result is 308
when round_num = 0 result is 308.162
when round_num = -1 result is 308.16
when round_num = -2 result is 308.2
when round_num = NULL result is NULL
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出されるビン定義をnum_bin_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM(
'num_bin_table', 'build_table');
END;
/
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、数値属性に関するクオンタイル・ベースのビン定義を導出します。次に、そのビン定義を、CREATE_BIN_NUMで作成した数値属性ビン定義表に挿入します。
このビニング方式では、各クオンタイルの最小値に基づいて、各属性のビン定義が決定されます(NTILE関数を使用してデータからクオンタイルを計算します)。 bin_1,..., bin_Nのビンは次の範囲に対応します。bin_1は[min_1,min_2]の範囲、bin_2,..., bin_i,..., bin_N-1は(min_i, min_(i+1)]の範囲、bin_Nは(min_N, max_N]の範囲にそれぞれ対応します。 左端と右端の値が等しいビンは破棄されます。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_QTILE (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
bin_num IN PLS_INTEGER DEFAULT 10,
exclude_list IN Column_List DEFAULT NULL,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-12 INSERT_BIN_NUM_QTILEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
ビンの個数。 |
|
|
ビン定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
数値属性ビン定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、ビンの個数(bin_num)を変えながら、このプロシージャを反復的にコールできます。 ビン定義の導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。 すべての値がNULL値である属性(列)は無視されます。
たとえば、N = 4、col='mycol'、入力データが{1,2,2,2,2,3,4}である場合は、次の3行がビン定義表に挿入されます。
COL VAL BIN ----- ----- ----- mycol 1 NULL mycol 2 1 mycol 4 2
この例では、クオンタイルは{1,2}, {2,2}, {2,3}, {4}、各クオンタイルの最小値はmin(1) = 1, min(2) = 2, min(3) = 2, min(4) = 4、最大値はmax(4) = 4です。ビンの範囲は[1,2], (2,2], (2,4], (4,4]です。 [1,2]を破棄すると、(2,4]になります。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出される数値ビン定義をnum_bin_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_QTILE(
'num_bin_table', 'build_table');
END;
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、トリミング定義を導出します。次に、そのトリミング定義を、CREATE_CLIPで作成したクリッピング定義表に挿入します。
各属性のトリミング定義を導出するために、val(1) < val(2) <... < val(N)となるように(Nは属性値のうち、NULL以外の値の個数)、NULL以外の属性値が昇順に並べ替えられます。
lcut = val(1+floor(N*q)) lval = NULL rcut = val(N–floor(*N*q)) rval = NULL
ここで、q = ABS(NVL(tail_frac,0))です。 q >= 0.5の場合、データ変換は行われません。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_TRIM_TAIL (
clip_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
tail_frac IN NUMBER DEFAULT 0.025,
exclude_list IN Column_List DEFAULT NULL,
clip_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-13 INSERT_CLIP_TRIM_TAILプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
テール割合。 |
|
|
クリッピング定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
クリッピング定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、テール割合(tail_frac)を変えながら、このプロシージャを反復的にコールできます。 ビン定義の導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
たとえば、q = 0.2、col='mycol'、データが{1,2,2,2,3,4,4}である場合は、次の行がクリッピング定義表に挿入されます。
COL LCUT LVAL RCUT RVAL ----- ----- ----- ----- ----- mycol 2 NULL 4 NULL
ここで、1 + floor(N*q) = 1 + floor(7*0.2) = 2, lcut = val(2) = 2です。
また、N – floor(N*q) = 7 – floor(7*0.2) = 6, rcut = val(6) = 4です。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出されるクリッピング定義をclip_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_TRIM_TAIL(
'clip_table', 'build_table');
END;
このプロシージャは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、数値属性のWinsorization定義を導出します。次に、そのWinsorization定義を、CREATE_CLIPで作成したクリッピング定義表に挿入します。
各属性のWinsorization定義を導出するために、val(1) < val(2) <... < val(N)となるように(Nは属性値のうち、NULL以外の値の個数)、NULL以外の属性値が昇順に並べ替えられます。
lcut = val(1+floor(N*q)) lval = lcut rcut = val(N–floor(N*q)) rval = rcut
ここで、q = ABS(NVL(tail_fraq,0))です。 q >= 0.5の場合、データ変換は行われません。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_WINSOR_TAIL (
clip_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
tail_frac IN NUMBER DEFAULT 0.025,
exclude_list IN Column_List DEFAULT NULL,
clip_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-14 INSERT_CLIP_WINSOR_TAILプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
テール割合。 |
|
|
クリッピング定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
クリッピング定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、テール割合(tail_frac)を変えながら、このプロシージャを反復的にコールできます。 ビン定義の導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。 すべての値がNULL値である属性(列)は無視されます。
たとえば、q = 0.2、col='mycol'、データが{1,2,2,2,3,4,4}である場合は、次の行がクリッピング定義表に挿入されます。
COL LCUT LVAL RCUT RVAL ----- ----- ----- ----- ----- mycol 2 2 4 4
ここで、1 + floor(N*q) = 1 + floor(7*0.2) = 2, lcut = val(2) = 2です。
また、N – floor(N*q) = 7 – floor(7*0.2) = 6, rcut = val(6) = 4です。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出されるクリッピング定義をclip_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_WINSOR_TAIL(
'clip_table', 'build_table');
END;
このプロシージャは、入力データ表の列のうち、除外リストに指定されていないVARCHAR2列とCHAR列に基づき、カテゴリ属性の不明値処理定義を導出します。次に、その定義を、CREATE_MISS_CATで作成した定義表に挿入します。
選択した各列の定義は、入力データ表から計算されるモード値に基づいて決定されます。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_CAT_MODE (
miss_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
exclude_list IN COLUMN_LIST DEFAULT NULL,
miss_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-15 INSERT_MISS_CAT_MODEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
不明値処理の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
カテゴリ属性の不明値処理定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
exclude_listパラメータを使用して、不明値処理が適用されるカテゴリ属性を選択できます。 選択したすべての属性内のNULL値は、その属性のモード(最も使用頻度の高い値)に置換されます。
NULLを他の値に置換する場合は、定義表を編集します。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべてのカテゴリ属性から導出される不明値定義(モード)をmiss_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_CAT_MODE(
'miss_table', 'build_table');
END;
このプロシージャは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、不明値処理定義を導出します。次に、その定義を、CREATE_MISS_NUMで作成した定義表に挿入します。
選択した各列の定義は、入力データ表から計算される平均値に基づいて決定されます。 平均値は、この定義表に挿入される前に、round_numパラメータで指定した有効桁数に丸められます。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_NUM_MEAN (
miss_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
exclude_list IN COLUMN_LIST DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
miss_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-16 INSERT_MISS_NUM_MEANプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
不明値処理の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
表内の値の有効桁数。 |
|
|
数値属性の不明値処理定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
exclude_listパラメータを使用して、不明値処理が適用される数値属性を選択できます。 選択したすべての属性内のNULL値は、その属性の平均値に置換されます。
NULLを他の値に置換する場合は、定義表を編集します。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出される不明値定義(モード)をmiss_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_CAT_MODE(
'miss_table', 'build_table');
END;
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、最小値/最大値ベースの正規化定義を導出します。次に、その正規化定義を、CREATE_NORM_LINで作成した正規化定義表に挿入します。
個々の数値属性(列)の正規化定義は、入力データ表から計算される平均値(mean)と標準偏差(standard deviation)に基づいて決定されます。線形正規化式のパラメータは、shift = mean、scale = standard deviationとなります。 shift列とscale列の値は、この定義表に挿入される前に、round_numパラメータで指定した有効桁数に丸められます。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_MINMAX (
norm_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
exclude_list IN Column_List DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
norm_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-17 INSERT_NORM_LIN_MINMAXプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
正規化定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
表内の値の有効桁数。 |
|
|
正規化定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、このプロシージャを反復的にコールして正規化定義を導出できます。その導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULL値である属性(列)、および一意の値を1つしか持たない属性(列)は無視されます。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出される正規化定義をnorm_minmax_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_MINMAX(
'norm_minmax_table', 'build_table');
END;
このプロシージャは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、最小値/最大値ベースの正規化定義を導出します。次に、その正規化定義を、CREATE_NORM_LINで作成した正規化定義表に挿入します。
この正規化方式では、データの最小値と最大値に基づいて、各属性の正規化定義が決定されます。 シフト(shift)の値はshift = 0という式になり、スケール(scale)の値はscale = max{abs(max), abs(min)}という式になります。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_SCALE (
norm_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
exclude_list IN Column_List DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
norm_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-18 INSERT_NORM_LIN_SCALEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
正規化定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
表内の値の有効桁数。 |
|
|
正規化定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、このプロシージャを反復的にコールして正規化定義を導出できます。その導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULL値である属性(列)、および一意の値を1つしか持たない属性(列)は無視されます。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出される正規化定義をnorm_minmax_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_SCALE(
'norm_scale_table', 'build_table');
END;
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていないNUMBER列に基づき、Zスコア・ベースの正規化定義を導出します。次に、その正規化定義を、CREATE_NORM_LINで作成した正規化定義表に挿入します。
個々の数値属性(列)の正規化定義は、入力データ表から計算される最小値(min)と最大値(max)に基づいて決定されます。線形正規化式のパラメータは、shift = min、scale = max – minとなります。shift列とscale列の値は、この定義表に挿入される前に、round_numパラメータで指定した有効桁数に丸められます。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_ZSCORE (
norm_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
exclude_list IN Column_List DEFAULT NULL,
round_num IN PLS_INTEGER DEFAULT 6,
norm_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-19 INSERT_NORM_LIN_ZSCOREプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
正規化定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
|
表内の値の有効桁数。 |
|
|
正規化定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
使用上の注意
特定の入力データ表に対して、このプロシージャを反復的にコールして正規化定義を導出できます。その導出過程における個々の反復処理では、exclude_listパラメータを使用して1つ以上の属性(列名)を選択し、その属性を操作対象から除外できます。
すべての値がNULL値である属性(列)、および一意の値を1つしか持たない属性(列)は無視されます。
例
ここで示すプロシージャ・コールの簡単な例では、build_table内のすべての数値属性から導出される正規化定義をnorm_zscore_tableに書き込みます。
BEGIN
DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_ZSCORE(
'norm_zscore_table', 'build_table');
END;
/
このプロシージャでは、カテゴリ属性をビンに区分するビューを作成します。 変換定義表で指定された属性(列)のみが変換され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_CAT (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
literal_flag IN BOOLEAN DEFAULT FALSE,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-20 XFORM_BIN_CATプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
リテラル・フラグ。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
使用上の注意
このプロシージャでは、CREATE_BIN_CATで作成しINSERT_BIN_CAT_FREQで変換定義を書き込んだ、ビン定義表を使用して問合せ作成処理を実行し、次の形式のカテゴリ・ビン定義式を作成します。
DECODE("col", val_1, bin_1,
...
val_N, bin_N,
NULL, NULL,
bin_(N+1)) "col"
この定義式は、属性値val_1,..., val_NをN個のビンbin_1,..., bin_Nにマップし、その他の属性値をbin_(N+1)に挿入します。NULL値は変更されません。bin_(N+1)は省略可能です。 省略した場合は、デフォルトでNULLが使用されます。 bin_(N+1)を指定するには、valをNULLに設定した行を渡します。
literal_flagパラメータは、binの値が有効なSQLリテラルであるかどうかを示します。 このフラグがTRUEに設定されている場合、binの値がそのままの形式で問合せの作成に使用されます。それ以外の場合は、binの値が有効なSQLリテラルに変換されます(値は引用符で囲まれ、1つの一重引用符は2つの一重引用符で置換されます)。 デフォルトでは、このフラグの値はFALSEに設定されます。 このフラグをTRUEに設定できる1つの例は、binの値がすべて数値の場合です。 その場合は、変換後の列(属性)がテキスト(デフォルト設定)ではなく数値になります。
O-Clusterモデル構築用にデータをビニングする場合は、literal_flagをTRUEに設定します。
colパラメータは、引用符で囲まれた識別子となるため、大/小文字が区別されます。 colとvalの値が同じでbinの値は異なる行が複数存在する場合は、変換動作が未定義状態なので、binの値はどれが使用されるかわかりません。
例
例1: bin_catには、col = 'mycol'が4行あります。
{col = 'mycol', val = 'Waltham', bin = 'MA'}
{col = 'mycol', val = 'Burlington', bin = 'MA'}
{col = 'mycol', val = 'Redwood Shores', bin = 'CA'}
{col = 'mycol', val = NULL, bin = 'OTHER'}
これにより次の式が生成されます。
DECODE("mycol", 'Waltham', 'MA',
'Burlington', 'MA',
'Redwood Shores', 'CA',
NULL, NULL,
'OTHER') "mycol"
例2: bin_catには、col = 'mycol'が3行あります。
{col = 'mycol', val = 'Waltham', bin = 'MA'}
{col = 'mycol', val = 'Burlington', bin = 'MA'}
{col = 'mycol', val = 'Redwood Shores', bin = 'CA'}
これにより次の式が生成されます。
DECODE("mycol", 'Waltham', 'MA',
'Burlington', 'MA',
'Redwood Shores', 'CA') "mycol"
例3: 次の変換定義表があります。
COL VAL BIN ----- ---------- --- mycol Waltham 1 mycol Burlington 1 mycol Redwood Shores 2
リテラル・フラグをFALSEに設定すると、次の式が生成されます。
DECODE ("mycol", 'Waltham', '1',
'Burlington' '1',
'Redwood Shores', '2') "mycol"
このフラグをTRUEに設定すると、次の式が生成されます。
DECODE("mycol", 'Waltham', 1,
'Burlington', 1,
'Redwood Shores', 2) "mycol"
次の簡単なプロシージャ・コールの例では、cat_bin_tableのビン定義に基づき、build_tableに対して変換問合せを実行するビューbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_CAT( 'cat_bin_table', 'build_table', 'build_view');
END; /
このプロシージャでは、数値属性をビンに区分するビューを作成します。 変換定義表で指定された属性(列)のみが変換され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_NUM (
bin_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
literal_flag IN BOOLEAN DEFAULT FALSE,
bin_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-21 XFORM_BIN_NUMプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
リテラル・フラグ。 |
|
|
ビン定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
使用上の注意
このプロシージャは、CREATE_BIN_NUMで作成しINSERT_BIN_NUM_EQWIDTHまたはINSERT_BIN_NUM_QTILEで変換定義を書き込んだ、ビン定義表を使用して問合せ作成処理を実行し、次の形式の数値ビン定義式を作成します。
CASE WHEN "col" < val_0 THEN 'bin0_0
WHEN "col" <= val_1 THEN 'bin_1'
...
WHEN "col" <= val_N THEN 'bin_N'
WHEN "col" IS NOT NULL THEN 'bin_(N+1)'
END "col"
この定義式は、[val_0;val_N]の範囲内にある属性値をN個のビンbin_1,..., bin_Nにマップします。この範囲に入らない値は、次のように、bin_0またはbin_(N+1)に挿入されます。
(-inf; val_0) -> bin_0 [val_0; val_1) -> bin_1 ... (val_(N-1); val_N] -> bin_N (val_N; +inf) -> bin_(N+1)
NULL値は変更されません。bin_(N+1)は省略可能です。 省略した場合は、("col" > val_N)の範囲の値がNULLにマップされます。 bin_(N+1)を指定するには、valをNULLに設定した行を渡します。 WHEN ... THENのペアの順序は、特定のcolに属する値valの昇順になります。
literal_flagパラメータは、binの値が有効なSQLリテラルであるかどうかを示します。 このフラグがTRUEに設定されている場合、binの値がそのままの形式で問合せの作成に使用されます。それ以外の場合は、binの値が有効なSQLリテラルに変換されます(値は引用符で囲まれ、1つの一重引用符は2つの一重引用符で置換されます)。 デフォルトでは、このフラグの値はFALSEに設定されます。 このフラグをTRUEに設定できる1つの例は、binの値がすべて数値の場合です。 その場合は、変換後の列(属性)がテキスト(デフォルト設定)ではなく数値になります。
colの値は引用された識別子となるため、大文字と小文字が区別されることに注意してください。 colとvalの値が同じでbinの値は異なる行が複数存在する場合は、変換動作が未定義状態なので、binの値はどれが使用されるかわかりません。
例
例1: bin_numには、col = 'mycol'が4行あります。
{col = 'mycol', val = 15.5, bin = 'small'}
{col = 'mycol', val = 10, bin = 'tiny'}
{col = 'mycol', val = 20, bin = 'large'}
{col = 'mycol', val = NULL, bin = 'huge'}
これにより次の式が生成されます。
CASE WHEN "mycol" < 10 THEN 'tiny'
WHEN "mycol" <= 15.5 THEN 'small'
WHEN "mycol" <= 20 THEN 'large'
WHEN "mycol" IS NOT NULL THEN 'huge'
END "mycol"
例2: bin_numには、col = 'mycol'が3行あります。
{col = 'mycol', val = 15.5, bin = NULL}
{col = 'mycol', val = 10, bin = 'tiny'}
{col = 'mycol', val = 20, bin = 'large'}
これにより次の式が生成されます。
CASE WHEN "mycol" < 10 THEN NULL
WHEN "mycol" <= 15.5 THEN 'small'
WHEN "mycol" <= 20 THEN 'large'
END "mycol"
例3: 次の変換定義表があります。
COL VAL BIN ----- ---- --- mycol 10 NULL mycol 15.5 1 mycol 21 2
リテラル・フラグをFALSEに設定すると、次の式が生成されます。
CASE WHEN "mycol" < 10 THEN NULL
WHEN "mycol" <= 15.5 THEN '1'
WHEN "mycol" <= 20 THEN '2'
END "mycol"
このフラグをTRUEに設定すると、次の式が生成されます。
CASE WHEN "mycol" < 10 THEN NULL
WHEN "mycol" <= 15.5 THEN 1
WHEN "mycol" <= 20 THEN 2
END "mycol"
次の簡単なプロシージャ・コールの例では、num_bin_table内のビン定義による変換定義に基づき、build_tableに対して変換問合せを実行するビューbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_NUM(
'num_bin_table', 'build_table', 'build_view');
END; /
このプロシージャでは、クリッピングを実行するビューを作成します。 変換定義表で指定された属性(列)のみがトリミングされ、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_CLIP (
clip_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
clip_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2,DEFAULT NULL,
xform_schema_name IN VARCHAR2,DEFAULT NULL;
パラメータ
表26-22 XFORM_CLIPプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
クリッピング定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
使用上の注意
このプロシージャでは、CREATE_CLIPで作成しINSERT_CLIP_WINSOR_TAILまたはINSERT_CLIP_TRIM_TAILでクリッピング定義を書き込んだ、クリッピング定義表を使用して問合せ作成処理を実行し、次の形式のクリッピング定義式を作成します。
CASE WHEN "col" < lcut THEN lval
WHEN "col" > rcut THEN rval
ELSE "col"
END "col"
colの値は引用された識別子となるため、大文字と小文字が区別されることに注意してください。 colの値が同じである行が変換定義表内に複数存在する場合は、変換動作が未定義状態です。 問合せの作成でどの変換定義が使用されるかわかりません。 また、NULL値は変更されません。
Winsorizationの例: col = 'my_col'、lcut = –1.5、lval = –1.5、rcut = 4.5、rval = 4.5の場合、次の式が生成されます。
CASE WHEN "my_col" < –1.5 THEN -1.5
WHEN "my_col" > 4.5 THEN 4.5
ELSE "my_col"
END "my_col"
例
次の簡単なプロシージャ・コールの例では、clip_table内のクリッピング定義による変換定義に基づき、build_tableに対して変換問合せを実行するビュー・オブジェクトbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_CLIP(
'clip_table', 'build_table', 'build_view');
END;
このプロシージャは、カテゴリ属性の不明値処理を実行するビューを作成します。 XForm定義で指定された属性(列)のみが処理され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_CAT (
miss_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
miss_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
xform_schema_name IN VARCHAR2 DEFAULT NULL;
パラメータ
表26-23 XFORM_MISS_CATプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
カテゴリ属性の不明値処理定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
使用上の注意
変換した列のデータ型は、CAST式にNVL関数を代入することによって維持されます。 たとえば、col = 'state'、val = 'MA'の場合、データ型はCHAR(2)になり、次の式が生成されます。
CAST (NVL("state", 'MA') AS CHAR(2)) "state"
例
次の簡単なプロシージャ・コールの例では、miss_table内の不明値定義による変換定義に基づき、build_tableに対して変換問合せを実行するビュー・オブジェクトbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_CAT(
'miss_table', 'build_table', 'build_view');
END;
このプロシージャは、データ表内の数値属性の不明値処理を実行するビューを作成します。 XForm定義で指定された属性(列)のみが処理され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_NUM (
miss_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
miss_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
xform_schema_name IN VARCHAR2 DEFAULT NULL;
パラメータ
表26-24 XFORM_MISS_NUMプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
数値属性の不明値処理定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
例
次の簡単なプロシージャ・コールの例では、miss_table内の不明値定義による変換定義に基づき、build_tableに対して変換問合せを実行するビュー・オブジェクトbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_NUM(
'miss_table', 'build_table', 'build_view');
END;
このプロシージャでは、線形正規化を実行するビューを作成します。 変換定義表で指定された属性(列)のみが変換され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_NORM_LIN (
norm_table_name IN VARCHAR2,
data_table_name IN VARCHAR2,
xform_view_name IN VARCHAR2,
norm_schema_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表26-25 XFORM_NORM_LINプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
|
変換済の出力データが格納されるビューの名前。 |
|
|
正規化定義表に適用されるスキーマの名前。 |
|
|
入力データ表に適用されるスキーマの名前。 |
|
|
変換済の出力データが格納されるビューに適用されるスキーマの名前。 |
使用上の注意
このプロシージャは、CREATE_NORM_LINで作成し、INSERT_NORM_LIN_ZSCOREまたはINSERT_NORM_LIN_MINMAXで変換定義を書き込んだ、正規化定義表を使用して問合せ作成処理を実行し、次の形式の正規化定義式を作成します。
("col" - shift)/scale "col"
colの値は引用された識別子となるため、大文字と小文字が区別されることに注意してください。 colの値が同じである行が変換定義表内に複数存在する場合は、変換動作が未定義状態です。 問合せの作成でどの変換定義が使用されるかわかりません。 また、NULL値は変更されません。
たとえば、col = 'my_col'、shift = -1.5、scale = 20の場合、次の式が生成されます。
("my_col" - (-1.5))/20 "my_col"
例
次の簡単なプロシージャ・コールの例では、norm_minmax_table内の正規化定義に基づき、build_tableに対して変換問合せを実行するビューbuild_viewを作成します。
BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_NORM_LIN(
'norm_minmax_table', 'build_table', 'build_view');
END;