機械翻訳について

3.3.3 モデルの構築

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

アルゴリズムの選択

OML4Pyを使用すると、クラスタリングの問題を解決するために次のいずれかのアルゴリズムを選択できます:
  1. Expectation-Maximization (EM)
  2. K-Means (KM)

Expectation-Maximization (EM)アルゴリズムは、密度推定アルゴリズムに基づく確率的クラスタリングを使用します。 EMアルゴリズムは、データに非表示のコンポーネントが含まれている場合、または一部のデータ・ポイントがない場合に使用されます。 一方、k-Means (KM)アルゴリズムは、指定した数のクラスタにデータを分割する距離ベースのクラスタリング・アルゴリズムです。 距離ベースのアルゴリズムは、近くのデータ・ポイントが遠いデータ・ポイントよりも互いに密接に関連しているという原則に基づいています。 このアルゴリズムは、最も近いクラスタ・セントロイドとの関連でクラスタ内の差異を最小限に抑えるために反復的に機能します。

k-Meansアルゴリズムは、Expectation-Maximization (EM)アルゴリズムよりも単純であるため、選択されています。 クラスタの最適数は不明であるため、1つのクラスタから開始し、クラスタの数を徐々に増やします。 Elbow meathodを使用して、最適なクラスタ数を決定します。

モデル設定を指定し、データのパーティション化およびセグメント化を行うk-Meansモデル・オブジェクトを作成するには、次のスクリプトを実行します。 設定は、キーと値のペア(ディクショナリのペア)として提供されます。各キーはパラメータ名を表し、対応する値は設定を表します。 指定された設定の一部には、KMNS_ITERATIONSおよびKMNS_DISTANCEが含まれます。 k-Meansアルゴリズムでは、クラスタ数(k)とこれらの設定を使用してアルゴリズムを構成します。

次のステップでは、選択したアルゴリズムを使用してモデルを構築する方法について説明します。

  • oml.kmアルゴリズムを使用して、モデルを構築し、モデル設定を指定します。 次のスクリプトを実行します。

    try:
        oml.drop(model="CUST_CLUSTER_MODEL")
    except:
        pass
         
    setting = {'KMNS_ITERATIONS': 10,
               'KMNS_DISTANCE': 'KMNS_EUCLIDEAN',
               'KMNS_NUM_BINS': 10,
               'KMNS_DETAILS': 'KMNS_DETAILS_ALL',
               'PREP_AUTO': 'ON'}
     
    km_mod1 = oml.km(n_clusters = 1, **setting).fit(CUSTOMER_DATA_CLEAN, model_name = "CUST_CLUSTER_MODEL", case_id = 'CUST_ID')
    

    スクリプトを詳しく見てみます。

    • KMNS_ITERATIONS: 許容される反復の最大数を指定します。デフォルトは20です。
    • KMNS_DISTANCE: 使用する距離関数のタイプを指定します。デフォルトでは、距離関数はユークリッド距離です。
    • KMNS_NUM_BINS: k-Meansによって生成される属性ヒストグラムのビン数を指定します。
    • KMNS_DETAILS: ビルド中に計算されるクラスタ詳細のレベルを決定します。 KMNS_DETAILS_ALLは、クラスタ階層、レコード数、および差異、モード、ヒストグラム、ルールなどの記述統計が計算されることを示します。
    • PREP_AUTO: 自動データ準備に使用されます。 デフォルトでは、DBMS_DATA_MININGパッケージを必要とする'PREP_AUTO': PREP_AUTO_ONとして有効になっています。 または、'PREP_AUTO': 'ON'として設定することもできます。 これにより、コンパイラはPL/SQL定数名が正しいことを検証できます。