DBMS_DATA_MINING_TRANSFORM
パッケージには、データのマイニングの準備に使用できる変換ルーチンが含まれています。
関連項目:
|
この章では、次の項目について説明します。
DBMS_DATA_MINING_TRANSFORMの使用方法
Oracle Data Miningによるデータ変換
変換の種類
DBMS_DATA_MINING_TRANSFORM
フレームワーク
データ型
この項では、DBMS_DATA_MINING_TRANSFORM
パッケージの使用に関連する項目について説明します。
変換とは、データ・マイニングで使用される1つ以上の列を変更するSQL式のことです。
ほとんどのデータ・マイニング・アルゴリズムでは、なんらかの形式のデータ変換が必要です。 質的属性または量的属性、あるいはその両方について、なんらかの変換が必要になることがあります。モデルの作成、テストおよびスコアリングに使用されるすべてのデータ・セットに対して、同じ変換を行う必要があります。各データ・セットの変更の複製には、非常に時間がかかる場合があります。
Oracle Data Miningは、変換式をモデルに埋め込みます。モデルの作成に使用する変換は、モデルが適用されるすべてのデータ・セットに対して自動的に実行されます。モデルとともにその変換もデプロイするこの機能によって、モデルの使いやすさが大幅に向上し、モデル管理のプロセスも簡単になります。
Oracle Data Miningによって提供される自動データ準備モード(ADP)で、データ変換プロセスがさらに簡単になります。ADPを使用してモデルを作成すると、アルゴリズムの要件に従ってトレーニング・データが自動的に変換されます。この自動変換はモデルに埋め込まれます。 ADPを使用可能にするには、モデルの設定表でPREP_AUTO
設定をPREP_AUTO_ON
に設定します。
変換式のリストをDBMS_DATA_MINING.CREATE_MODEL
に渡すことによって、自動変換を補完できます。ユーザー独自の変換は、自動変換とともにモデルに埋め込まれます。 ADPがオフになっている場合は、CREATE_MODEL
に渡す変換のみが埋め込まれます。
DBMS_DATA_MINING_TRANSFORM
のルーチンは、ユーザー独自の変換を作成する場合に役立つルーチンです。 これらのルーチンでニーズが満たされない場合は、それらのルーチンを変更するSQLを作成するか、または独自のルーチンを作成できます。
表記法に関する注意: この章では、数値集合を表すときに標準的な範囲表記法を使用します。
(bは、集合[a,b]に属しますが、集合[a,b)には属しません。) |
DBMS_DATA_MINING_TRANSFORM
パッケージでは、データ・マイニングで通常使用される変換(ビニング、正規化、外れ値処理、欠損値処理および列削除)がサポートされています。
ビニングでは、連続値および離散値をカーディナリティ(基数)の少ない離散値(ビン)に変換します。 たとえば、人の年齢は、1から20才を1、21から40才を2といった離散的な量的属性のビンに区分できます。 Ford、Chrysler、BMW、Volkswagenなどの主要な自動車メーカーは、{Ford, Chrysler}をUS_Car_Makers、{BMW, Volkswagen}をEuropean_Car_Makersといった離散的な質的属性のビンに区分できます。
DBMS_DATA_MINING_TRANSFORM
では、質的属性と量的属性のビニングがサポートされています。
ビンの内容は、ディシジョン・ツリー・モデルで計算されたグループです。
ビンの内容は、列内の各値の頻度に基づいています。ビンの数はユーザーが指定します。最初のビンに最も頻度の高い値、2番目のビンに2番目に頻度の高い値が含まれ、以降同様に続きます。最後のビンには残りのすべての値が含まれています。
各ビンに、同じ数の値が含まれています。ビンの数は、ユーザーが指定するか、またはデータから推定されます。最初のビンには最も高い値、2番目のビンには次に高い値が含まれ、以降同様に続きます。
各ビンに、SQL NTILE
ファンクションを使用して計算されたクオンタイルの数が含まれています。クオンタイルとは、データ配分のパーティションのことです。
正規化とは、連続値を特定の範囲(通常0から1の間)に変換するプロセスのことです。正規化は量的属性のみに適用されます。
正規化では、指定した値(shift)を数値から引き、その結果をscaleで割ることによって各数値を変換します。次に例を示します。
x_new = (x_old-shift)/scale
最小値と最大値による正規化は、データの最小値と最大値に基づいて決定されます。shiftとscaleの値は、次のとおりです。
shift = min scale = max-min
スケールによる正規化は、データの最小値と最大値に基づいて決定されます。shiftとscaleの値は、次のとおりです。
shift = 0 scale = max{abs(max), abs(min)}
Zスコアによる正規化は、データから計算される平均値と標準偏差に基づいて決定されます。shiftとscaleの値は、次のとおりです。
shift = mean scale = standard_deviation
一部の計算は、異常値による影響を大きく受けることがあります。 計算を適正化するには、データの前処理として異常値に対してWindorizationまたはトリミング(クリッピング)を実行する必要があります。
Winsorizationでは、テール値を指定された値に変更します。 たとえば、90%のWinsorizationでは、下位5%を6番目のパーセンタイル(百分位数)の最小値に設定し、上位5%を95番目のパーセンタイルの最大値に設定します。
トリミングでは、テール値にNULLが設定されます。
Oracle Data Miningでは、スパースなデータとランダムな欠損値が含まれているデータは区別されます。後者は、属性値の一部が不明であることを意味します。一方、スパースなデータには既知であると想定される値が含まれていますが、それらの値がデータに表されていません。
単純な(ネストされていない)データ型の列がNULLの場合は、ランダムな欠損値を表すとみなされます。ネストされた列に値が存在しない場合は、スパースなデータを示しています。 Oracle Data Miningでは、ランダムに欠損している量的データは自動的に平均値で置き換えられ、ランダムに欠損している質的データは自動的に最頻値で置き換えられます。スパースな量的データの欠損値は、0(ゼロ)で置き換えられます。 スパースな質的データの欠損値は、アルゴリズムに応じて、ゼロ・ベクトルまたは特殊な値DM$SPARSE
で置き換えられます。
DBMS_DATA_MINING_TRANSFORM
では、欠損値を処理するためのルーチンが提供されます。これらのルーチンは、デフォルトの処理に依存するのではなく、欠損値処理を明示的に管理する必要があるすべてのユーザーが使用できます。
関連項目: Oracle Data Miningによる欠損値処理の詳細は、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |
DBMS_DATA_MINING_TRANSFORM
では、データの列をマイニング用に変換するためのフレームワークが提供されます。 このフレームワークは、CREATE
、INSERT
、STACK
およびXFORM
操作で構成されます。出力を変更するか、またはこれらの操作の独自のバージョンを実装することができます。
DBMS_DATA_MINING_TRANSFORM
フレームワークは、次の操作で構成されます。
変換定義表には、次のいずれかの変換を指定する場合に必要な列が含まれています。
ビニング
列削除
正規化
外れ値処理
欠損値処理
たとえば、ビニング変換表には、元の列値とそれぞれのビン割当て値を示す列が含まれています。
変換表の列は、INSERT
ルーチンによりデータが移入されるまで空になっています。
INSERT: 指定されたデータ・ソース用の変換表にデータを移入します。
たとえば、INSERT
ルーチンを使用して、指定されたデータ・ソース内の質的属性のビン割当て値を移入できます。 ビン割当て値は、監視ありビニングまたは上位n番までの頻度ベースのビニングを使用して計算されます。
特定のマイニングの問題についてのすべてのデータ属性が変換表に完全に表示されるまで、CREATE
ルーチンおよびINSERT
ルーチンを複数回コールできます。
STACK: 変換命令のリスト(スタック)に変換命令を追加します。
たとえば、STACK
ルーチンを使用して、ビニング変換表への移入を行う変換命令を変換命令のリストに追加できます。 STACK
ルーチンでは、指定されたデータ・ソースに対するすべての変換命令を単一のリストにアセンブルできます。
変換命令のリストは、CREATE_MODEL
または他のSTACK
ルーチンに渡すことができます。(「CREATE_MODELプロシージャ」を参照)
XFORM: 変換後の列を含むデータ表のビューを作成します。
たとえば、XFORM
ルーチンを使用して、ビニング変換表に基づいてビンに変換された列を含むビューを作成できます。
XFORM
ルーチンによって作成されたビューには、変換表内の列については変換後の値、他のすべての列については元の値が含まれます。 ビューは、モデルの作成、テストおよびスコアリングに使用できます。
この項では、DBMS_DATA_MINING_TRANSFORM
で定義されているデータ型について説明します。
この型は、列名の引用符で囲まれた識別子および引用符で囲まれていない識別子を格納する場合に使用します。
TYPE COLUMN_LIST IS VARRAY(1000) OF VARCHAR2(32);
この型は、記述操作の結果を保持する場合に使用します。
SUBTYPE DESCRIBE_LIST IS dbms_sql.DESC_TAB2;
この型は、変換式を格納する場合に使用します。
TYPE EXPRESSION_REC IS RECORD ( ...........);,
VARCHAR2
とは異なり、EXPRESSION_REC
は32Kより大きくなる可能性がある式に使用できます。
EXPRESSION_REC
に書き込むには、SET_EXPRESSION
を使用します。 EXPRESSION_REC
の内容を取得するには、GET_EXPRESSION
を使用します。
この型は、単一属性のメモリー内変換スタック定義を格納する場合に使用します。
TYPE TRANSFORM_REC IS RECORD ( attribute_name VARCHAR2(30), attribute_subname VARCHAR2(4000), expression EXPRESSION_REC, reverse_expression EXPRESSION_REC, attribute_spec VARCHAR2(4000));
attribute_spec
フィールドは、属性に追加の情報およびアクションを指定する場合に使用します。 attribute_spec
には、値NOPREP
を指定できます。
NOPREP
を指定すると、個々の属性に対してADPを使用できなくなります。 NOPREP
は、DBMS_DATA_MINING.CREATE_MODEL
に渡された変換リストで使用できます。(「CREATE_MODELプロシージャ」を参照)
この型は、メモリー内スタック定義を格納する場合に使用します。
TYPE TRANSFORM_LIST IS TABLE OF TRANSFORM_REC;
これらの定数は、ネストした列のデータ型を指定する場合に使用します。
NEST_NUM_COL_TYPE CONSTANT NUMBER := 100001; NEST_CAT_COL_TAYPE CONSTANT NUMBER := 100002;
表39-1 DBMS_DATA_MINING_TRANSFORMパッケージのサブプログラム
サブプログラム | 用途 |
---|---|
|
質的属性のビン定義表を作成します。 |
|
量的属性のビン定義表を作成します。 |
|
クリッピング定義表を作成します。 |
|
列削除定義表を作成します。 |
|
質的属性の欠損値処理定義表を作成します。 |
|
量的属性の欠損値処理定義表を作成します。 |
|
正規化定義表を作成します。 |
|
スタック定義を記述します。 |
|
変換式を戻します。 |
データから推定したビン数に基づいて、量的なビン定義表に適用します。 |
|
入力の質的データに基づいて頻度ベースのビニングを導出し、質的なビン定義表に適用します。 |
|
|
入力の量的データに基づいて等幅のビニングを導出し、量的なビン定義表に適用します。 |
|
入力の量的データに基づいてクオンタイルによるビニングを導出し、量的なビン定義表に適用します。 |
|
ビニング定義表に移入を行い、監視ありビニングを量的データおよび質的データの両方に適用します。 |
|
入力の量的データのテール値に基づいてトリミングを導出し、クリッピング定義表に適用します。 |
|
入力の量的データのテール値に基づいてWinsorizationを導出し、クリッピング定義表に適用します。 |
|
それぞれの欠損値に基づいてモードを導出し、質的属性の欠損値処理定義表に適用します。 |
|
それぞれの欠損値に基づいて平均値を導出し、量的属性の欠損値処理定義表に適用します。 |
|
入力の量的データに基づいて最小値と最大値による正規化を導出し、正規化定義表に適用します。 |
入力の量的データに基づいてスケールによる正規化を導出し、正規化定義表に適用します。 |
|
|
入力の量的データに基づいてZスコアによる正規化を導出し、正規化定義表に適用します。 |
|
変換式に追加します。 |
|
変換式を指定します。 |
|
質的属性のビニング式を変換リストに追加します。 |
|
量的属性のビニング式を変換リストに追加します。 |
|
クリッピング式を変換リストに追加します。 |
|
列削除式を変換リストに追加します。 |
|
質的属性の欠損値処理式を変換リストに追加します。 |
|
量的属性の欠損値処理式を変換リストに追加します。 |
|
線形正規化式を変換リストに追加します。 |
|
質的属性のビニング変換をデータに適用するビューを作成します。 |
|
量的属性のビニング変換をデータに適用するビューを作成します。 |
|
クリッピング変換をデータに適用するビューを作成します。 |
|
指定した列をデータから削除するビューを作成します。 |
|
データの数値列に変換式を適用するビューを作成します。 |
|
データの文字列に変換式を適用するビューを作成します。 |
|
データの質的属性に欠損値処理を実行するビューを作成します。 |
|
データの量的属性に欠損値処理を実行するビューを作成します。 |
|
データの量的属性に線形正規化を実行するビューを作成します。 |
|
スタック定義(変換リスト)に指定されているとおりにデータを変換するビューを作成します。 |
このプロシージャでは、質的属性のビン変換表を作成します。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT ( bin_table_name IN VARCHAR2, bin_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-2 CREATE_BIN_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ビン変換表の名前。 |
|
ビン変換表に適用されるスキーマの名前。 |
使用上の注意
このプロシージャによって作成された表は、質的属性のビン割当て値を格納するために使用できます。 表にデータを移入するには、次のINSERT
ルーチンを使用できます。
INSERT_BIN_CAT_FREQプロシージャ(頻度ベースのビニングの場合)
INSERT_BIN_SUPERプロシージャ(監視ありビニングの場合)
表39-3は、質的属性ビン定義表の列について説明しています。
表39-3 質的属性ビン定義表
列 | データ型 | 説明 |
---|---|---|
|
|
ビニング対象の質的属性値を含む列。 |
|
|
列がネストされている場合の属性名。 |
|
|
ビニング対象の列の値。 |
|
|
値を含むビン。 |
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT('build_bin_cat_table'); END; / DESCRIBE build_bin_cat_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) VAL VARCHAR2(4000) BIN VARCHAR2(4000)
このプロシージャでは、量的属性のビン変換表を作成します。 この表は、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);
パラメータ
表39-4 CREATE_BIN_NUMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ビン定義表の名前。 |
|
ビン定義表に適用されるスキーマの名前。 |
使用上の注意
生成されるビン定義表には、次の列があります。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR2(4000) |
val |
NUMBER |
bin |
VARCHAR2(4000) |
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM('build_bin_num_table'); END; / DESCRIBE build_bin_num_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) VAL NUMBER BIN VARCHAR2(4000)
このプロシージャでは、クリッピング定義表を作成します。 この表は、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);
パラメータ
表39-5 CREATE_CLIPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
クリッピング定義表の名前。 |
|
クリッピング定義表に適用されるスキーマの名前。 |
使用上の注意
作成されるクリッピング定義表には、次の列があります。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR2(4000) |
lcut |
NUMBER |
lval |
NUMBER |
rcut |
NUMBER |
rval |
NUMBER |
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP('build_clip_table'); END; / DESCRIBE build_clip_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) LCUT NUMBER LVAL NUMBER RCUT NUMBER RVAL NUMBER
このプロシージャでは、列削除定義表を作成します。 この表は、STACK_COL_REM
、XFORM_COL_REM
、INSERT_BIN_SUPER
およびINSERT_AUTOBIN_NUM_EQWIDTH
プロシージャによって使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_COL_REM ( rem_table_name VARCHAR2, rem_schema_name VARCHAR2 DEFAULT NULL);
パラメータ
使用上の注意
作成される列削除定義表には、次の列が含まれています。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR2(4000) |
列削除定義表は、データソースから削除する列名および関連する属性名を示します。col
列は、引用符で囲まれた識別子となるため、大/小文字が区別されます。ネストされた列の場合は、同じcol
に対して列削除定義表に複数のエントリを含めることができます。
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_COL_REM ('col_rem_tbl'); END; / DESCRIBE col_rem_tbl Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000)
このプロシージャは、質的属性の欠損値処理定義表を作成します。 この表は、INSERT_MISS_CAT_MODE
プロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT ( miss_table_name IN VARCHAR2, miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-7 CREATE_MISS_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
質的属性の欠損値処理定義表の名前。 |
|
質的属性の欠損値処理定義表に適用されるスキーマの名前。 |
使用上の注意
作成される質的属性の欠損値処理定義表には、次の列があります。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR2(4000) |
val |
VARCHAR2(4000) |
例
BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT('build_miss_cat_table'); END; / DESCRIBE build_miss_cat_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) VAL VARCHAR2(4000)
このプロシージャは、量的属性の欠損値処理定義表を作成します。 この表は、INSERT_MISS_NUM_MEAN
プロシージャへの入力として使用されます。
構文
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM ( miss_table_name IN VARCHAR2, miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-8 CREATE_MISS_NUMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
量的属性の欠損値処理定義表の名前。 |
|
量的属性の欠損値処理定義表に適用されるスキーマの名前。 |
使用上の注意
作成される量的属性の欠損値定義表には、次の列があります。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR(4000) |
val |
NUMBER |
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM('build_miss_num_table'); END; / DESCRIBE build_miss_num_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) VAL NUMBER
このプロシージャでは、線形正規化定義表を作成します。 この表は、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);
パラメータ
表39-9 CREATE_NORMALIZE_LINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
正規化定義表の名前。 |
|
正規化定義表に適用されるスキーマの名前。 |
使用上の注意
作成される線形正規化定義表には、次の列があります。
列名 | データ型 |
---|---|
col |
VARCHAR2(30) |
att |
VARCHAR2(4000) |
shift |
NUMBER |
scale |
NUMBER |
例
BEGIN DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN('build_norm_table'); END; / DESCRIBE build_norm_table Name Null? Type ----------------------------------------- -------- ---------------------------- COL VARCHAR2(30) ATT VARCHAR2(4000) SHIFT NUMBER SCALE NUMBER
このプロシージャは、スタック定義で指定されているデータ表の変換の詳細を示します。
スタック定義で指定された列のみが変換されます。その他の列は変更されません。
スタック定義内のすべての列が適用されます。式フィールドにNULLが指定されている列は除外されます。スタック定義内の列のうち、データ内に一致する列がない列が詳細リストに追加されます。
構文
DBMS_DATA_MINING_TRANSFORM.DESCRIBE_STACK ( xform_list IN TRANSFORM_LIST, data_table_name IN VARCHAR2, describe_list OUT DESCRIBE_LIST data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-10 DESCRIBE_STACKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スタックされた変換のリスト。 |
|
マイニング・データが含まれている表。 |
|
スタックされた変換の詳細。 |
|
マイニング・データが含まれている表のスキーマ。スキーマを指定しない場合は、独自のスキーマが使用されます。 |
使用上の注意
DM_NESTED_NUMERICALS
の場合、col_type
の値はnest_num_col_type
です。 DM_NESTED_CATEGORICALS
の場合、col_type
の値はnest_cat_col_type
です。
このファンクションは、式からVARCHAR2
チャンクを戻します。
チャンクの番号は1から始まります。範囲外のチャンクの場合、戻り値はNULLになります。チャンク番号がNULLの場合は、式全体が文字列として戻されます。 式が大きすぎる場合は、VALUE_ERROR
が発生します。
構文
DBMS_DATA_MINING_TRANSFORM.GET_EXPRESSION ( expression IN EXPRESSION_REC, chunk_num IN PLS_INTEGER DEFAULT NULL); RETURN VARCHAR2;
パラメータ
このプロシージャは、入力データ表の列のうち、除外リストに指定されていない数値列に基づき、量的属性に関する等幅のビン定義を導出します。次に、そのビン定義を、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, rem_table_name IN VARCHAR2 DEFAULT NULL, rem_schema_name IN VARCHAR2 DEFAULT NULL));
パラメータ
表39-12 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番まで( < 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);
パラメータ
表39-13 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);
パラメータ
表39-14 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);
パラメータ
表39-15 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
、FLOAT
、VARCHAR2
またはCHAR
列に基づき、量的属性および質的属性のビン定義を導出します。次に、そのビン定義を、量的属性または質的属性のビン定義表に挿入します。
ビン境界は、監視ありビニングという方法を使用して計算されます。関連する各列の定義は、単一の予測変数に基づいて構築されたディシジョン・ツリー・モデルによって導出された分割に基づいて計算されます。関連する分割がない列は、列削除定義表に挿入されます(列削除定義表が指定されている場合)。
構文
DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_SUPER ( num_table_name IN VARCHAR2, cat_table_name IN VARCHAR2, data_table_name IN VARCHAR2, target_column_name IN VARCHAR2, max_bin_num IN PLS_INTEGER DEFAULT 1000, exclude_list IN COLUMN_LIST DEFAULT NULL, num_schema_name IN VARCHAR2 DEFAULT NULL, cat_schema_name IN VARCHAR2 DEFAULT NULL, data_schema_name IN VARCHAR2 DEFAULT NULL, rem_table_name IN VARCHAR2 DEFAULT NULL, rem_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-16 INSERT_BIN_SUPERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
データが保存されている表の名前。 |
|
ターゲット列の名前。 |
|
最大ビン数。 |
|
ビン定義の導出過程における特定の反復処理で操作対象から除外する属性(列)のリスト。 |
|
量的属性ビン定義表のスキーマ。 |
|
質的属性ビン定義表のスキーマ。 |
|
データが含まれている表のスキーマ。 |
|
|
|
列削除定義表のスキーマ。 |
このプロシージャでは、入力データ表の列のうち、除外リストに指定されていない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);
パラメータ
表39-17 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
ここで、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);
パラメータ
表39-18 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);
パラメータ
表39-19 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);
パラメータ
表39-20 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);
パラメータ
表39-21 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);
パラメータ
表39-22 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);
パラメータ
表39-23 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;
/
このプロシージャは、式にVARCHAR2
チャンクを追加します。NULLを追加すると、式が消去されます。
構文
DBMS_DATA_MINING_TRANSFORM.SET_EXPRESSION ( expression IN OUT NOCOPY EXPRESSION_REC, chunk VARCHAR2 DEFAULT NULL);
パラメータ
このプロシージャは、属性の変換式および逆変換式を指定します。
新しい変換指定が変換リストに追加されます。
構文
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);
パラメータ
表39-25 SET_TRANSFORMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
属性の変換リスト。 |
|
属性の名前。 |
|
|
|
SQL式。 |
|
モデルのディテールおよび監視ありモデルのターゲット(属性がターゲットの場合)の変換を読みやすさを考慮して元に戻すSQL式。 |
|
|
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合、このプロシージャは、質的属性のビニング式を既存の式の上にスタックし、スタック定義を更新します。
変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。 反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。
スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
DECODE({expr}, '{val1}', '{bin1}', ... '{valN}', '{binN}', NULL, NULL, '{bin(N+1)}')
{rexp}の形式は次のようになります。
DECODE("{attr}", '{bin1}', '{rev1}', ... '{binN}', '{revN}', NULL, 'NULL', '{bin(N+1)}', 'DEFAULT')
ここで、{revI}は、{valI}に反転式を適用した場合の結果です。
{binI}と{binJ}が等しい場合は、前述のDECODEファンクションの対応するエントリが次のようにマージされます。
'{binI}', '{revI}, {revJ}'
複数のエントリがデフォルトのビン{bin(N+1)}にマップされる場合は、すべてのエントリが次のようにマージされます。
'{bin(N+1)}', 'DEFAULT'
反転式では、無効なビンはNULLに暗黙的にマップされることに注意してください。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_BIN_CAT ( bin_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, literal_flag IN BOOLEAN DEFAULT FALSE, bin_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-26 STACK_BIN_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ビン定義表の名前。 |
|
スタックされた変換のリスト。 |
|
リテラル・フラグ(「使用上の注意」を参照)。 |
|
ビン定義表のスキーマ。 |
使用上の注意
リテラル・フラグは、{bin}の値が有効なSQLリテラルであるかどうかを示します。 このフラグがTRUEに設定されている場合、{bin}の値はそのままの形式で式の作成に使用されます。それ以外の場合は、有効なテキスト・リテラルに変換されます(値は引用符で囲まれ、引用符は内部で二重になります)。デフォルトでは、このフラグの値はFALSEに設定されます。このフラグをTRUEに設定できる1つの例は、{bin}の値がすべて数値の場合です。その場合は、変換後の列(属性)がテキスト(デフォルト設定)ではなく数値のままになります。たとえば、次の変換定義について考えてみます。
COL VAL BIN ----- -------------- ---- mycol Waltham 1 mycol Burlington 1 mycol Redwood Shores 2
フラグの値をFALSEに設定すると、次の{expr}および{rexp}が生成されます。
expr = DECODE("mycol", 'Waltham', '1', 'Burlington', '1', 'Redwood Shores', '2') rexp = DECODE("COL1", '1', '''Waltham'', ''Burlington''', '2', '''Redwood Shores''', NULL, 'DEFAULT')
このフラグをTRUEに設定すると、次の式が生成されます。
expr = DECODE("mycol", 'Waltham', 1, 'Burlington', 1, 'Redwood Shores', 2) rexp = DECODE("COL1", 1, '''Waltham'', ''Burlington''', 2, '''Redwood Shores''', NULL, 'DEFAULT')
例
変換定義:
{col = COL1, val = waltham, bin = MA} {col = COL1, val = burlington, bin = MA} {col = COL1, val = redwood shores, bin = CA} {col = COL2, val = MA, bin = East} {col = COL2, val = CA, bin = West} {col = COL2, val = NULL, bin = USA}
スタック定義:
{attr = COL1, expr = lower(COL1), rexp = initcap(COL1)} {attr = COL3, expr = upper(COL3), rexp = initcap(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = DECODE(lower(COL1), 'waltham', 'MA', 'burlington', 'MA', 'redwood shores', 'CA'), rexp = DECODE("COL1", 'MA', '''Waltham'', ''Burlington''', 'CA', '''Redwood Shores''', NULL, 'DEFAULT')} {attr = COL3, expr = upper(COL3), rexp = initcap(COL3)} {attr = COL2, expr = DECODE("COL2", 'MA', 'East', 'NY', 'East', 'CA', 'West', NULL, NULL, 'USA') rexp = DECODE("COL2", 'East', '''MA''', 'West', '''CA''', NULL, 'NULL', 'USA', 'DEFAULT')}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合、このプロシージャは、量的属性のビニング式を既存の式の上にスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。
スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
CASE WHEN ({expr}) < {val0} THEN '{bin0}' WHEN ({expr}) <= {val1} THEN '{bin1}' ... WHEN ({expr}) <= {valN} THEN '{binN}' WHEN ({expr}) IS NOT NULL THEN '{bin(N+1)}' END
{rexp}の形式は次のようになります。
DECODE("{attr}", '{bin0}', '( ; {rev0})', '{bin1}', '[{rev0}; {rev1})', ... '{binN}', '[{rev(N-1)}; {revN}]', '{bin(N+1)}', '({revN}; )', NULL, 'NULL')
ここで、{revI}は、{valI}に反転式を適用した場合の結果です。
{binI}と{binJ}が等しい場合は、前述のDECODEファンクションの対応するエントリが次のようにマージされます。
'{binI}', '[{rev(I-1)}; {revI}), [{rev(J-1)}; {revJ})'
反転式では、無効なビンはNULLに暗黙的にマップされることに注意してください。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_BIN_NUM ( bin_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, literal_flag IN BOOLEAN DEFAULT FALSE, bin_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-27 STACK_BIN_NUMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ビン定義表の名前。 |
|
スタック定義。 |
|
リテラル・フラグ(「使用上の注意」を参照)。 |
|
ビン定義表のスキーマ。 |
使用上の注意
リテラル・フラグは、{bin}の値が有効なSQLリテラルであるかどうかを示します。 このフラグがTRUEに設定されている場合、{bin}の値はそのままの形式で式の作成に使用されます。それ以外の場合は、有効なテキスト・リテラルに変換されます(値は引用符で囲まれ、引用符は内部で二重になります)。デフォルトでは、このフラグの値はFALSEに設定されます。このフラグをTRUEに設定できる1つの例は、{bin}の値がすべて数値の場合です。その場合は、変換後の列(属性)がテキスト(デフォルト設定)ではなく数値のままになります。たとえば、次のxform定義について考えてみます。
COL VAL BIN ----- ----- ----- mycol 10 NULL mycol 15 1 mycol 20 2
フラグの値をFALSEに設定すると、次の{expr}および{rexp}が生成されます。
expr = CASE WHEN "mycol" < 10 THEN NULL WHEN "mycol" <= 15 THEN '1' WHEN "mycol" <= 20 THEN '2' END rexp = DECODE("mycol", '1', '[10; 15)', '2', '[15; 20]' NULL, '( ; 10) OR (20; ) OR NULL')
このフラグをTRUEに設定すると、次の式が生成されます。
expr = CASE WHEN "mycol" < 10 THEN NULL WHEN "mycol" <= 15 THEN 1 WHEN "mycol" <= 20 THEN 2 END rexp = DECODE("mycol", 1, '[10; 15)', 2, '[15; 20]', NULL, '( ; 10) OR (20; ) OR NULL')
例
変換定義:
{col = COL1, val = 0, bin = NULL} {col = COL1, val = 1, bin = A} {col = COL1, val = 2, bin = B} {col = COL1, val = 3, bin = A} {col = COL2, val = 10, bin = NULL} {col = COL2, val = 15, bin = 1} {col = COL2, val = 20, bin = 2}
スタック定義:
{attr = COL1, expr = log(10, COL1), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = CASE WHEN (log(10, COL1)) < 0 THEN NULL WHEN (log(10, COL1)) <= 1 THEN 'A' WHEN (log(10, COL1)) <= 2 THEN 'B' WHEN (log(10, COL1)) <= 3 THEN 'A' END, rexp = DECODE("COL1", 'A', '[1; 10), [100; 1000]', 'B', '[10; 100)', NULL, '( ; 1), (1000; ), NULL')} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)} {attr = COL2, expr = CASE WHEN "COL2" < 10 THEN NULL WHEN "COL2" <= 15 THEN '1' WHEN "COL2" <= 20 THEN '2' END rexp = DECODE("COL2", '1', '[10; 15)', '2', '[15; 20]', NULL, '( ; 10) OR (20; ) OR NULL')}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合は、クリッピング式を既存の式の上にスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。
変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。 反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。
スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
CASE WHEN {expr} < {lcut} THEN {lval} WHEN {expr} > {rcut} THEN {rval} ELSE {expr} END
{rexp}は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_CLIP ( clip_table_name VARCHAR2, xform_list IN OUT NOCOPY TRANSFORM_LIST, clip_schema_name VARCHAR2 DEFAULT NULL);
パラメータ
表39-28 STACK_CLIPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
クリッピング定義表。 |
|
スタック定義。 |
|
クリッピング定義表のスキーマ。スキーマを指定しない場合は、独自のスキーマが想定されます。 |
例
変換定義:
{col = COL1, lcut = -1.5, lval = -1.5, rcut = 4.5, rval = 4.5} {col = COL2, lcut = 0, lval = 0, rcut = 1, rval = 1}
スタック定義:
{attr = COL1, expr = log(10, COL1), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = CASE WHEN log(10, COL1) < -1.5 THEN -1.5 WHEN log(10, COL1) > 4.5 THEN 4.5 ELSE log(10, COL1) END, rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)} {attr = COL2, expr = CASE WHEN COL2 < 0 THEN 0 WHEN COL2 > 1 THEN 1 ELSE COL2 END, rexp = NULL}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合、このプロシージャは、既存の式ではなく列削除定義式(NULL式)をスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。変換定義内の列のうち、スタック定義内に一致するエントリがない列が(NULL式とともに)スタック定義に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。 反転式は、NULLの場合、"{attr}"(恒等関数)またはネストされた列の"VALUE"として処理されます。
スタック定義にエントリ({attr}、{expr}、{rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}および{rexp}はいずれもNULLに変更されます。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_COL_REM ( rem_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, rem_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-29 STACK_COL_REMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列削除定義表の名前。 |
|
スタック定義。 |
|
列削除定義表のスキーマ。 |
例
変換定義:
{col = COL1, att = NULL} {col = COL2, att = NULL}
スタック定義:
{attr = COL1, expr = log(10, COL1), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = NULL, rexp = NULL} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)} {attr = COL2, expr = NULL, rexp = NULL}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合、このプロシージャは、質的属性の欠損値処理式を既存の式の上にスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
NVL({expr}, {val})
{rexp}は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_MISS_CAT ( miss_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-30 STACK_MISS_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
欠損値定義表の名前。 |
|
スタック定義。 |
|
欠損値定義表の名スキーマ。 |
例
変換定義:
{col = COL1, val = 'ma'} {col = COL2, val = 'CA'}
スタック定義:
{attr = COL1, expr = lower(COL1), rexp = initcap(COL1)} {attr = COL3, expr = upper(COL3), rexp = initcap(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = NVL(lower(COL1), 'ma'), rexp = initcap(COL1)} {attr = COL3, expr = upper(COL3), rexp = initcap(COL3)} {attr = COL2, expr = NVL(COL2, 'CA'), rexp = NULL}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合は、量的属性の欠損値処理式を既存の式の上にスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。
スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
NVL({expr}, {val})
{rexp}は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.STACK_MISS_NUM ( miss_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, miss_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-31 STACK_MISS_NUMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
欠損値定義表の名前。 |
|
スタック定義。 |
|
欠損値定義表の名スキーマ。 |
例
変換定義:
{col = COL1, val = 4.5} {col = COL2, val = 0}
スタック定義:
{attr = COL1, expr = log(10, COL1), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = NVL(log(10, COL1), 4.5), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)} {attr = COL2, expr = NVL(COL2, 0), rexp = NULL}
スタック定義内の各列のうち、変換定義内に一致するエントリがある列の場合は、線形正規化式を既存の式の上にスタックし、スタック定義を更新します。
スタック定義内の列のうち、変換定義内に一致するエントリがない列またはNULL式がある列は変更されません。変換定義内の列のうち、スタック定義内に一致するエントリがない列が(元の式またはネストされた属性の"VALUE"のかわりに"{col}"を使用して)スタック列に追加されます。
これに応じて、スタック定義内の反転式が更新されます。つまり、式が更新または追加された場合は対応する反転式も更新または追加され、式が変更されないままの場合は反転式も変更されないままとなります。反転式は、NULLの場合、恒等関数("{attr}"またはネストされた属性の"VALUE")として処理されます。
スタック定義にエントリ({attr}, {expr}, {rexp})があり、変換定義内に一致するエントリがある場合、スタック後の{expr}の形式は次のようになります。
({expr} - {shift})/{scale}
{attr}が置き換えられるたびに、{rexp}の形式は次のようになります。
{attr}*{scale} + {shift}
構文
DBMS_DATA_MINING_TRANSFORM.STACK_NORM_LIN ( norm_table_name IN VARCHAR2, transform_list IN/OUT DM_TRANSFORMS, norm_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-32 STACK_NORM_LINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
norm_table_name |
線形正規化定義表の名前。 |
transform_list |
スタック定義。 |
norm_schema_name |
線形正規化定義表のスキーマ。 |
例
変換定義:
{col = COL1, shift = -1.5, scale = 20} {col = COL2, shift = 0, scale = 10}
スタック定義:
{attr = COL1, expr = log(10, COL1), rexp = power(10, COL1)} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)}
この場合、次の更新されたスタック定義が生成されます。
{attr = COL1, expr = (log(10, COL1) - (-1.5)) / 20, rexp = power(10, COL1*20 + (-1.5))} {attr = COL3, expr = ln(COL3), rexp = exp(COL3)} {attr = COL2, expr = (COL2 - 0) / 10, rexp = COL2*10 + 0}
このプロシージャでは、質的属性をビンに区分するビューを作成します。変換定義表で指定された属性(列)のみが変換され、その他の属性は変更されません。
構文
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);
パラメータ
表39-33 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);
パラメータ
表39-34 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;
パラメータ
表39-35 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;
このプロシージャは、データ表から列を削除するビューを作成します。変換定義表で指定された属性(列)のみが削除され、その他の属性は変更されません。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_COL_REM ( rem_table_name IN VARCHAR2, data_table_name IN VARCHAR2, xform_view_name IN VARCHAR2, rem_schema_name IN VARCHAR2 DEFAULT NULL, data_schema_name IN VARCHAR2 DEFAULT NULL, xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-36 XFORM_COL_REMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列削除定義表の名前。 |
|
データが保存されている表の名前。 |
|
変換済の出力データが格納されるビューの名前。 |
|
列削除定義表のスキーマ。 |
|
データ表のスキーマ。 |
|
変換ビューのスキーマ。 |
入力データ表の列のうち、対象リストに指定され、除外リストに指定されていないNUMBER
列に基づき、指定した式を適用するビューを作成します。その他の列は変更されません。
式は、出現するすべての列パターンを実際の列名に置き換えることによって、式パターンから構成されます。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_NUM ( expr_pattern IN VARCHAR2, data_table_name IN VARCHAR2, xform_view_name IN VARCHAR2, exclude_list IN COLUMN_LIST DEFAULT NULL, include_list IN COLUMN_LIST DEFAULT NULL, col_pattern IN VARCHAR2 DEFAULT ':col', data_schema_name IN VARCHAR2 DEFAULT NULL, xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-37 XFORM_EXPR_NUMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
式パターン。 |
|
データが保存されている表の名前。 |
|
変換済の出力データが格納されるビューの名前。 |
|
除外する列のリスト。 |
|
含める列のリスト。 |
|
列パターン。 |
|
データ表のスキーマ。 |
|
変換ビューのスキーマ。 |
例
2つのNUMBER
列CN1
とCN3
、1つのCHAR
列CC2
および式パターンTO_CHAR
(:col
)が含まれている表TAB
の場合は、次の問合せが生成されます。
SELECT TO_CHAR("CN1") "CN1", "CC2", TO_CHAR("CN3") "CN3" FROM TAB
このプロシージャは、正規化されたデータを[0..1]の範囲にクリッピング(Winsorization)する場合に使用します。つまり、1より大きいxの値は1になり、0(ゼロ)より小さいxの値は0(ゼロ)になります。
例1の表と次のパターンの場合:
CASE WHEN :col < 0 THEN 0 WHEN :col > 1 THEN 1 ELSE :col END
次の問合せが生成されます。
SELECT CASE WHEN "CN1" < 0 THEN 0 WHEN "CN1" > 1 THEN 1 ELSE "CN1" END "CN1", "CC2", CASE WHEN "CN3" < 0 THEN 0 WHEN "CN3" > 1 THEN 1 ELSE "CN3" END "CN3" FROM TAB
このプロシージャは、入力データ表の列のうち、対象リストに指定され、除外リストに指定されていないVARCHAR2
列またはCHAR
列に基づき、指定した式を適用するビューを作成します。その他の列は変更されません。
NUMBER
のかわりにCHAR
およびVARCHAR2
列に適用される以外は、xform_expr_num
と同様です。 「XFORM_EXPR_NUMプロシージャ」を参照してください。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_STR ( expr_pattern IN VARCHAR2, data_table_name IN VARCHAR2, xform_view_name IN VARCHAR2, exclude_list IN COLUMN_LIST DEFAULT NULL, include_list IN COLUMN_LIST DEFAULT NULL, col_pattern IN VARCHAR2 DEFAULT ':col', data_schema_name IN VARCHAR2 DEFAULT NULL, xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表39-38 XFORM_EXPR_STRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
式パターン。 |
|
データが保存されている表の名前。 |
|
変換済の出力データが格納されるビューの名前。 |
|
除外する列のリスト。 |
|
含める列のリスト。 |
|
列パターン。 |
|
データ表のスキーマ。 |
|
変換ビューのスキーマ。 |
このプロシージャは、質的属性の欠損値処理を実行するビューを作成します。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;
パラメータ
表39-39 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;
パラメータ
表39-40 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);
パラメータ
表39-41 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;
スタック定義で指定されているデータ表の変換を実行するビューを作成します。スタック定義で指定されている属性(列)のみが変換され、その他の属性は変更されません。
スタック定義内のすべての列が適用されます。式フィールドにNULLが指定されている列は除外されます。スタック定義内の列のうち、データ内に一致する列がない列がビューに追加されます。
構文
DBMS_DATA_MINING_TRANSFORM.XFORM_STACK ( transform_list IN DM_TRANSFORMS, data_table_name IN VARCHAR2, xform_view_name IN VARCHAR2, data_schema_name IN VARCHAR2 DEFAULT NULL, xform_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ