FEATURE_SET

構文

feature_set::=

分析構文

feature_set_analytic::=

mining_attribute_clause::=

mining_analytic_clause::=

関連項目:

mining_analytic_clauseの構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。

目的

FEATURE_SETは、選択内に含まれる各行の特徴IDと特徴値の組で構成されるセットを返します。戻り値は、フィールド名がFEATURE_IDおよびVALUEのオブジェクトのVARRAYです。どちらのフィールドのデータ型もNUMBERです。

topNおよびcutoff

topNcutoffを指定すると、このファンクションから返される特徴の数を制限できます。デフォルトでは、topNおよびcutoffがnullであり、すべての特徴が戻されます。

  • topNは、最も値が大きいほうからN個の特徴値です。N番目の値を持つ特徴が複数ある場合でも、ファンクションが選択するのはそのうち1つのみです。

  • cutoffは、値のしきい値です。cutoff以上の特徴のみが返されます。cutoffのみでフィルタ処理するには、topNNULLを指定します。

cutoff以上の特徴をN個まで返すようにするには、topNcutoffの両方を指定します。

構文の選択

FEATURE_SETは、2つの方法のどちらかでデータにスコアを付けます。1つの方法では、データにマイニング・モデル・オブジェクトを適用します。もう1つの方法では、1つ以上の一時マイニング・モデルを作成して適用する分析句を実行して動的にデータをマイニングします。構文または分析構文を選択します。

  • 構文 — 事前に定義されたモデルでデータにスコアを付ける場合は、最初の構文を使用します。特徴抽出モデルの名前を指定します。

  • 分析構文 — 事前定義されたモデルなしで、データにスコアを付ける場合は、分析構文を使用します。INTO n (nは、抽出する特徴の数)と、mining_analytic_clause (複数のモデル構築のためにデータをパーティション化する必要がある場合に指定します)を含めます。mining_analytic_clauseは、query_partition_clauseorder_by_clauseをサポートします。(analytic_clause::=を参照。)

FEATURE_SETファンクションの構文では、パーティション化されたモデルをスコアリングするときに、オプションのGROUPINGヒントを使用できます。「GROUPINGヒント」を参照してください。

mining_attribute_clause

mining_attribute_clauseは、スコアの予測子として使用する列の属性を特定します。このファンクションが分析構文で起動された場合は、これらの予測子が一時モデルの構築にも使用されます。mining_attribute_clauseは、PREDICTIONファンクションと同様に動作します。(「mining_attribute_clause::=」を参照)

関連項目:

ノート:

次の例は、『Oracle Machine Learning for SQL』のサンプル・プログラムからの抜粋です。サンプル・プログラムの詳細は、Oracle Machine Learning for SQLユーザーズ・ガイドの「付録A」を参照してください。

この例では、特定の顧客レコードに対応する上位の特徴を示し、各特徴の上位の属性を(0.25を超える係数を基準にして)決定します。

WITH
feat_tab AS (
SELECT F.feature_id fid,
       A.attribute_name attr,
       TO_CHAR(A.attribute_value) val,
       A.coefficient coeff
  FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF('nmf_sh_sample')) F,
       TABLE(F.attribute_set) A
 WHERE A.coefficient > 0.25
),
feat AS (
SELECT fid,
       CAST(COLLECT(Featattr(attr, val, coeff))
         AS Featattrs) f_attrs
  FROM feat_tab
GROUP BY fid
),
cust_10_features AS (
SELECT T.cust_id, S.feature_id, S.value
  FROM (SELECT cust_id, FEATURE_SET(nmf_sh_sample, 10 USING *) pset
          FROM nmf_sh_sample_apply_prepared
         WHERE cust_id = 100002) T,
       TABLE(T.pset) S
)
SELECT A.value, A.feature_id fid,
       B.attr, B.val, B.coeff
  FROM cust_10_features A,
       (SELECT T.fid, F.*
          FROM feat T,
               TABLE(T.f_attrs) F) B
 WHERE A.feature_id = B.fid
ORDER BY A.value DESC, A.feature_id ASC, coeff DESC, attr ASC, val ASC;

   VALUE  FID ATTR                      VAL                        COEFF
-------- ---- ------------------------- ------------------------ -------
  6.8409    7 YRS_RESIDENCE                                       1.3879
  6.8409    7 BOOKKEEPING_APPLICATION                              .4388
  6.8409    7 CUST_GENDER               M                          .2956
  6.8409    7 COUNTRY_NAME              United States of America   .2848
  6.4975    3 YRS_RESIDENCE                                       1.2668
  6.4975    3 BOOKKEEPING_APPLICATION                              .3465
  6.4975    3 COUNTRY_NAME              United States of America   .2927
  6.4886    2 YRS_RESIDENCE                                       1.3285
  6.4886    2 CUST_GENDER               M                          .2819
  6.4886    2 PRINTER_SUPPLIES                                     .2704
  6.3953    4 YRS_RESIDENCE                                       1.2931
  5.9640    6 YRS_RESIDENCE                                       1.1585
  5.9640    6 HOME_THEATER_PACKAGE                                 .2576
  5.2424    5 YRS_RESIDENCE                                       1.0067
  2.4714    8 YRS_RESIDENCE                                        .3297
  2.3559    1 YRS_RESIDENCE                                        .2768
  2.3559    1 FLAT_PANEL_MONITOR                                   .2593