機械翻訳について

3.1.3 モデルの構築

このモデルは、トレーニング・データから学習することで、データを事前定義済のカテゴリに分類するように設計されています。

アルゴリズムの選択

次のデータベース内アルゴリズムのいずれかを選択して、分類の問題を解決できます:

  • デシジョン・ツリー
  • 一般化線形モデル
  • Naive Bayes
  • ニューラル・ネットワーク
  • ランダム・フォレスト
  • サポート・ベクター・マシン

ここでは、SVM分類はバイナリ分類をサポートするアルゴリズムの1つであるため、Support Vector Machineアルゴリズムを使用します。

  1. データをトレイン・データ・セットおよびテスト・データ・セットに分割します。 トレイン・セットは、非表示のパターンを学習するようにモデルをトレーニングするために使用され、テスト・セットはトレーニング済モデルの評価に使用されます。 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'
  2. データを分割した後、トレイン内の行数を確認し、いずれかのデータセットに行が残っていないかどうかをテストします。
    cat("\nTraining data: ")
    dim(DEMO_DF.train)
    cat("\nTest data: ")
    dim(DEMO_DF.test)
     
     
      Training data:  2700 13
      Test data: 1800 13
  3. トレーニング・データを使用して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"
      )
    )