< 目次

インテル® DAAL 2017 デベロッパー・ガイド

分散処理

このモードは、データセットが計算ノードの nblocks ブロックに分割されていると仮定します。

アルゴリズムのパラメーター

分散処理モードの K 平均法アルゴリズムのパラメーターは次のとおりです。

パラメーター

デフォルト値

説明

computeStep

適用不可

アルゴリズムを初期化するために必要なパラメーターです。次のいずれか。

  • step1Local - 第 1 ステップ、ローカルノードで実行
  • step2Master - 第 2 ステップ、マスターノードで実行

algorithmFPType

double

アルゴリズムが中間計算に使用する浮動小数点の型。float または double を指定できます。

method

defaultDense

K 平均法に利用可能な計算メソッド。

  • defaultDense - Lloyd のアルゴリズムの実装
  • lloydCSR - CSR 数値テーブル用の Lloyd のアルゴリズムの実装

nClusters

適用不可

クラスターの数。アルゴリズムを初期化するために必要です。

gamma

1.0

二項カテゴリカル特徴の距離計算に使用する重み。

distanceType

euclidean

クラスターにする観測点間の接近の基準。現在は、ユークリッド距離のみサポートしています。

assignFlag

false

assignments の計算を有効にする (それぞれの観測にクラスター・インデックスを割り当てる) フラグ。

分散処理モードで K 平均法を計算するには、アルゴリズムで説明されている一般的なスキーマを使用します。

ステップ 1 - ローカルノード


K-Means Clustering Distributed Workflow Step 1
このステップの K 平均法アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

data

ローカルノードの i 番目のデータブロックを表す ni x p 数値テーブルのポインター。入力は、NumericTable の派生クラスのオブジェクトです。

inputCentroids

初期クラスター・セントロイドを含む nClusters x p 数値テーブルのポインター。この入力は、NumericTable の派生クラスのオブジェクトです。

このステップで、K 平均法アルゴリズムは次の部分結果と結果を計算します。部分結果 ID または結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

部分結果 ID

結果

nObservations

ローカルノードのクラスターに割り当てられた観測点の数を含む nClusters x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

partialSums

ローカルノードのクラスターに割り当てられた観測点の部分和を含む nClusters x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

partialGoalFunction

ローカルノードのクラスターで処理された観測点の小目標関数の値を含む 1 x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

結果 ID

結果

assignments

assignFlag=true の場合に使用します。ローカルノードの入力データの特徴ベクトルへのクラスター・インデックスの 32 ビット整数割り当てを含む ni x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

ステップ 2 - マスターノード


K-Means Clustering Distributed Workflow Step 2
このステップの K 平均法アルゴリズムの各ローカルノードからの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

partialResuts

ステップ 1 で計算された結果を含むコレクション。

このステップで、K 平均法アルゴリズムは次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

結果 ID

結果

centroids

クラスター・セントロイドを含む nClusters x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

goalFunction

目標関数の値を含む 1 x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

重要

アルゴリズムは入力セントロイドを使用して assignments を計算します。そのため、最後に計算したセントロイドを使用して assignments を計算するには、各ローカルノードでステップ 1compute() および finalizeCompute() メソッドの追加呼び出しを 1 回行い、マスターノードでステップ 2compute() メソッドの最後の呼び出しを行った後、assignFlag を true に設定します。各ステップで assignments を取得するには、常に assignFlag を true に設定して finalizeCompute() を呼び出します。

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++:

Java*:

Python*:

関連情報