機械翻訳について

3.2.3 モデルの構築

モデルのパフォーマンスを評価するには、データをトレーニング・セットとテスト・セットに分割することが一般的です。 これにより、モデルがどの程度一般化して見えないデータを評価できます。 ただし、クラスタリングなどの教師なし学習では、精度を計算したりパフォーマンスを評価するために使用できるラベルや予測子はありません。 その結果、データセット全体を使用して、モデルを分割しなくてもモデルを構築できます。 結果を比較する根拠がないので、トレーニングとテストの分割は適用されず、教師なし学習には有用でもありません。

アルゴリズムの選択

OML4Rを使用すると、クラスタリングの問題を解決するために次のいずれかのアルゴリズムを選択できます:
  1. K-Means (KM)
  2. Expectation-Maximization (EM)
  3. 直交パーティショニング・クラスタ(O-Cluster)

k-Means(KM)アルゴリズムは、指定した数のクラスタにデータを分割する距離ベースのクラスタリング・アルゴリズムです。 距離ベースのアルゴリズムは、近くのデータ・ポイントが遠いデータ・ポイントよりも相互に関連しているという概念に基づいています。 このアルゴリズムは、最も近いクラスタ・セントロイドに関して、クラスタ内の差異を最小限に抑えようとします。 Expectation-Maximization(EM)アルゴリズムは、密度推定アルゴリズムに基づく確率的クラスタリングを使用します。 Orthogonal Partitioning Cluster (O-Cluster)アルゴリズムは、大規模で高ディメンションのデータセット用に設計された密度ベースのクラスタリング・メソッドです。

クラスタリングの開始点は、K-meansアルゴリズムです。 これは、各データ・ポイントを最も近いクラスタ・センター(セントロイド)に割り当てることによって機能します。 一部のメソッドとは異なり、K-meansはクラスタの基礎となるシェイプについて仮定しません。 このシンプルさにより、多くのアプリケーションにとって使いやすい選択肢となり、このユース・ケースで使用するメソッドになります。

elbowメソッドを使用して、データセット内のクラスタ数を決定します。 elbowメソッドはリーフ・クラスタを使用します。 クラスタ分析では、エルボー手法はデータ・セット内のクラスタ数の決定に使用されるヒューリスティックです。 この手法では、クラスタ数の相関関係として変動(分散)をプロットし、使用するクラスタの数としてカーブの肘を選択します。 1つのクラスタから開始し、引き続き8つのクラスタを介して1つのクラスタを指定します。 結果の分散曲線の「エルボ」を探して、どのクラスタが最適と思われるかを評価します。

モデル設定を指定し、データを分割するk-Meansモデル・オブジェクトを作成するには、次のコマンドを実行します。 設定は、キーと値のペアまたはディクショナリのペアとして指定され、パラメータの名前と値の設定がそれぞれ参照されます。 指定した設定の一部を次に示します: KMNS_ITERATIONS, KMNS_RANDOM_SEED, KMNS_CONV_TOLERANCE, KMNS_NUM_BINS, KMNS_DETAILSおよびPREP_AUTO k-Meansアルゴリズムは、次に示すように、クラスタ数(k)およびその他の設定を使用してアルゴリズムを構成します:

settings = list(
    KMNS_ITERATIONS = 15,
    KMNS_RANDOM_SEED = 1,
    KMNS_CONV_TOLERANCE = 0.001,
    KMNS_NUM_BINS = 11,
    KMNS_DETAILS = "KMNS_DETAILS_HIERARCHY",
    CASE_ID_COLUMN_NAME = "CUST_ID"
)
 
KM.MOD <- ore.odmKMeans(
    formula = ~.-CUST_ID,
    data = CUST_DF_CLEAN,
    num.centers = 3,
    odm.settings = settings
)
 
KM.MOD

この例で使用されているアルゴリズム設定のリストを次に示します:

  • KMNS_ITERATIONS: 許可されるk-Meansの最大反復数を指定します。 デフォルトの反復回数は20です。
  • KMNS_RANDOM_SEED: 乱数ジェネレータは、ランダム・シードと呼ばれる番号を使用してそれ自体を初期化します。 乱数ジェネレータは、初期クラスタ・セントロイドを選択するためにk-Meansアルゴリズムによって使用される乱数を生成します。 この設定により、k-Meansの初期化中に使用されるランダム・ジェネレータのシードを制御します。 これは、負でない整数である必要があります。 デフォルトは0です。
  • KMNS_CONV_TOLERANCE: 収束許容範囲は、アルゴリズムの連続する反復間の中心の変動のしきい値です。 この設定は、k-Meansの最小収束許容範囲を指定するために使用されます。 最小収束許容値を満たすか、KMNS_ITERATIONSで指定された最大反復数に到達するまで、アルゴリズムは反復します。 収束許容値が減少すると、ソリューションはより正確になりますが、実行時間が長くなることがあります。 デフォルトの収束許容範囲は0.001です。
  • KMNS_NUM_BINS: k-Meansによって生成される属性ヒストグラムのビン数。 各属性のビン境界は、トレーニング・データセット全体でグローバルに計算されます。 ビニングの方法は等幅です。 ただ1つのビンを持つ単一値が含まれる属性を除き、すべての属性は同じ数のビンを持ちます。
  • KMNS_DETAILS: この設定により、ビルド中に計算されるクラスタ詳細のレベルが決まります。 KMNS_DETAILS_ALLは、クラスタ階層、レコード数および説明統計(平均、差異、モード、ヒストグラムおよびルール)が計算され、これがデフォルト値であることを意味します。 KMNS_DETAILS_NONEは、クラスタの詳細が計算されず、スコアリング情報のみが保持されることを意味します。 KMNS_DETAILS_HIERARCHYは、クラスタ階層およびクラスタ・レコード数が計算されることを意味します。
  • PREP_AUTO: 自動データ準備を使用するかどうか、またはユーザーがアルゴリズム固有のデータ準備を担当するかどうかを指定するために使用します。 デフォルトでは、定数値'PREP_AUTO': PREP_AUTO_ONで有効になっています。DBMS_DATA_MININGパッケージが必要です。 または、'PREP_AUTO': 'ON'として指定することもできます。
  • ~.-CUST_ID: この引数は、CUST_ID列を除き、CUST_DF_CLEANデータ・フレーム内のデータをクラスタ化するために関数に渡されます。
  • CUST_DF_CLEAN: クラスタ化する必要があるデータ・フレーム。
  • num.centers: クラスタリング・モデルのクラスタ数を定義します。 1以上の値。 デフォルト値は10です。
  • odm.settings: データベース内アルゴリズム・パラメータ設定を指定するリスト。 この引数は、データベース12.2以降のモデルの構築に適用できます。 各リストの要素の名前および値は、それぞれパラメータ設定名および値を示します。 設定値は数値または文字列である必要があります。

    出力が次のように表示されます。

    Call:
    ore.odmKMeans(formula = ~. - CUST_ID, data = CUST_DF_CLEAN, num.centers = 3,
        odm.settings = settings)
     
    Settings:
                                                   value
    clus.num.clusters                                  3
    block.growth                                       2
    conv.tolerance                                 0.001
    details                            details.hierarchy
    distance                                   euclidean
    iterations                                        15
    min.pct.attr.support                             0.1
    num.bins                                          11
    random.seed                                        1
    split.criterion                             variance
    odms.details                             odms.enable
    odms.missing.value.treatment odms.missing.value.auto
    odms.sampling                  odms.sampling.disable
    prep.auto                                         ON