- ユーザーズ・ガイド
- SQLを使用したOracle Machine Learning
- 例: ベクトル・データを使用した次元の削減およびクラスタリング
1.6 例: ベクトル・データを使用した次元の削減およびクラスタリング
この例では、主成分分析(PCA)およびk-Meansを使用して、次元の削減およびクラスタリングにベクトル・データを使用する方法を示します。
- 1つの
ID
列と100次元のベクトル列を含むdatavec
というデータ・セットがあるとします。Name Null? Type ---------------------- -------- ---------------------------- ID NUMBER PROD_DATA VECTOR(100, FLOAT32, DENSE)
- PCA特徴抽出モデルを作成します。次のステップでは、PCAスコアリングを使用して次元を削減するモデルを作成します。
DECLARE v_setlst DBMS_DATA_MINING.SETTING_LIST; BEGIN v_setlst('ALGO_NAME') := 'ALGO_SINGULAR_VALUE_DECOMP'; v_setlst('SVDS_SCORING_MODE') := 'SVDS_SCORING_PCA'; DBMS_DATA_MINING.CREATE_MODEL2( MODEL_NAME => 'pca_model', MINING_FUNCTION => 'FEATURE_EXTRACTION', DATA_QUERY => 'SELECT * FROM DATAVEC', CASE_ID_COLUMN_NAME => 'id', SET_LIST => v_setlst); END; /
- PCAの結果をベクトル表
pca_data
に変換し、VECTOR_EMBEDDING()
演算子を使用して次元を削減します。CREATE table pca_data as SELECT id, VECTOR_EMBEDDING(pca_model using *) embedding FROM datavec;
- 新しい
pca_data
には、データ特性に基づいて、1つのID列と10次元の1つのベクトルが含まれています。DESC pca_data; Name Null? Type ---------------- -------- ---------------------------- ID NUMBER EMBEDDING VECTOR(10, FLOAT64, DENSE)
pca_data
に対するk-Meansクラスタリング・モデルを作成し、削減された次元を活用します。DECLARE v_setlst DBMS_DATA_MINING.SETTING_LIST; BEGIN v_setlst('ALGO_NAME') := 'ALGO_KMEANS'; v_setlst('KMNS_DETAILS') := 'KMNS_DETAILS_NONE'; v_setlst('CLUS_NUM_CLUSTERS') := '2'; DBMS_DATA_MINING.CREATE_MODEL2( MODEL_NAME => 'km_model', MINING_FUNCTION => 'CLUSTERING', DATA_QUERY => 'SELECT * FROM PCA_DATA', CASE_ID_COLUMN_NAME => 'id', SET_LIST => v_setlst); END; /
- データ・ディクショナリの設定を確認します。
SELECT model_name, attribute_name, data_type, target, vector_info FROM USER_MINING_MODEL_ATTRIBUTES WHERE model_name='KM_MODEL’ ORDER BY attribute_name; MODEL_NAME ATTRIBUTE_NAME DATA_TYPE TAR VECTOR_INFO ---------- --------------- ------------------------ --- -------------------- KM_MODEL EMBEDDING VECTOR NO VECTOR(10,FLOAT64)
KM_MODEL
モデルのモデル・ディテール・ビューを確認できます。SELECT model_name, view_name, view_type FROM USER_MINING_MODEL_VIEWS WHERE model_name='KM_MODEL’ ORDER BY view_name; MODEL_NAME VIEW_NAME VIEW_TYPE ---------- --------------- ---------------------------------------- KM_MODEL DM$VAKM_MODEL Clustering Attribute Statistics KM_MODEL DM$VCKM_MODEL k-Means Scoring Centroids KM_MODEL DM$VDKM_MODEL Clustering Description KM_MODEL DM$VGKM_MODEL Global Name-Value Pairs KM_MODEL DM$VHKM_MODEL Clustering Histograms KM_MODEL DM$VNKM_MODEL Normalization and Missing Value Handling KM_MODEL DM$VRKM_MODEL Clustering Rules KM_MODEL DM$VSKM_MODEL Computed Settings KM_MODEL DM$VWKM_MODEL Model Build Alerts
- また、モデルの詳細から各ベクトルの次元を予測子として表示することもできます。
SELECT * FROM(SELECT cluster_id, attribute_name, attribute_subname, mean, variance, mode_value FROM DM$VAKM_MODEL ORDER BY cluster_id, attribute_name,attribute_subname) CLUSTER_ID ATTRIBUTE_NAME ATTRIBUTE_SUBNAME MEAN VARIANCE MODE_VALUE ---------- --------------- -------------------- ------------- ------------- -------------------- 1 EMBEDDING DM$$VEC1 28.9538 3.4382 2 EMBEDDING DM$$VEC1 27.9580 5.5661 3 EMBEDDING DM$$VEC1 29.9495 2.1698
- スコアリング演算子
CLUSTER_ID
およびCLUSTER_PROBABILITY
を使用して、pca_data
の各レコードのクラスタ割当ておよび確率を検索します。SELECT id, cluster_id(km_model using *) cluster_id, cluster_probability(km_model using *)probability FROM pca_data ORDER BY id; ID CLUSTER_ID PROBABILITY ---------- ---------- ----------- 1 1 .617 2 2 .584 3 1 .579 4 1 .605 5 1 .621 6 1 .642 7 2 .598 8 2 .614 9 2 .650 10 2 .618