3.1.3 モデルの構築
このモデルは、トレーニング・データから学習することで、データを事前定義済のカテゴリに分類するように設計されています。
アルゴリズムの選択
次のデータベース内アルゴリズムのいずれかを選択して、分類の問題を解決できます:
- デシジョン・ツリー
- 一般化線形モデル
- Naive Bayes
- ニューラル・ネットワーク
- ランダム・フォレスト
- サポート・ベクター・マシン
ここでは、SVM分類はバイナリ分類をサポートするアルゴリズムの1つであるため、Support Vector Machineアルゴリズムを使用します。
- データをトレイン・データ・セットおよびテスト・データ・セットに分割します。 トレイン・セットは、非表示のパターンを学習するようにモデルをトレーニングするために使用され、テスト・セットはトレーニング済モデルの評価に使用されます。
DEMO_DF
データを、トレイン・データ・セットのレコードの60%、テスト・データ・セットの40%で分割します。sampleSize <- .4 * nrow(DEMO_DF) index <- sample(1:nrow(DEMO_DF),sampleSize) group <- as.integer(1:nrow(DEMO_DF) %in% index) rownames(DEMO_DF) <- DEMO_DF$CUST_ID DEMO_DF.train <- DEMO_DF[group==FALSE,] class(DEMO_DF.train) DEMO_DF.test <- DEMO_DF[group==TRUE,] class(DEMO_DF.test) 'ore.frame' 'ore.frame'
- データを分割した後、トレイン内の行数を確認し、いずれかのデータセットに行が残っていないかどうかをテストします。
cat("\nTraining data: ") dim(DEMO_DF.train) cat("\nTest data: ") dim(DEMO_DF.test) Training data: 2700 13 Test data: 1800 13
- トレーニング・データを使用してSupport Vector Machineモデルを作成する
ore.odmSVM
関数を使用してモデルを構築します。ore.odmSVM
関数は、データベース内SVMアルゴリズムへのRインタフェースです。 次に、このモデルを用いて試験データを予測します。ore.exec( "BEGIN DBMS_DATA_MINING.DROP_MODEL(model_name => 'SVM_CLASSIFICATION_MODEL'); EXCEPTION WHEN OTHERS THEN NULL; END;" ) MOD <- ore.odmSVM( formula = AFFINITY_CARD ~ ., data = DEMO_DF.train, type = "classification", kernel.function = "system.determined", odm.settings = list(model_name = "SVM_CLASSIFICATION_MODEL") ) RES <- predict( object = MOD, data = DEMO_DF.test, type = c("raw", "class"), norm.votes = TRUE, cache.model = TRUE, supplemental.cols = c( "CUST_ID", "AFFINITY_CARD", "EDUCATION", "HOUSEHOLD_SIZE", "OCCUPATION", "YRS_RESIDENCE" ) )
親トピック: 分類ユース・ケース