インテル® DAAL 2017 デベロッパー・ガイド
このモードは、データセットが計算ノードの nblocks ブロックに分割されていると仮定します。
分散処理モードの PCA 計算は、アルゴリズムで説明されている一般的なスキーマに従います。
分散処理モードの PCA アルゴリズムのパラメーターは次のとおりです。計算メソッド・パラメーター method に依存します。
パラメーター |
method |
デフォルト値 |
説明 |
---|---|---|---|
computeStep |
defaultDense または svdDense |
適用不可 |
アルゴリズムを初期化するために必要なパラメーターです。次のいずれか。
|
algorithmFPType |
defaultDense または svdDense |
double |
アルゴリズムが中間計算に使用する浮動小数点の型。float または double を指定できます。 |
method |
適用不可 |
defaultDense |
PCA 計算に利用可能なメソッド。
|
covariance | defaultDense |
SharedPtr<covariance::Distributed <computeStep, algorithmFPType, covariance::defaultDense> > |
相関メソッドを含む PCA 計算に使用する相関行列と分散共分散行列アルゴリズム。詳細は、「分散処理 (相関行列と分散共分散行列)」を参照してください。 |
以下の 2 ステップのスキーマを使用します。
ステップ 1 - ローカルノード
このステップの PCA アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
data |
ローカルノードの i 番目のデータブロックを表す ni x p 数値テーブルのポインター。入力は、NumericTable の派生クラスのオブジェクトです。 |
このステップで、PCA は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
nObservationsCorrelation |
ローカルノードで処理された観測点の数を含む 1 x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
crossProductCorrelation |
ローカルノードで計算されたクロス積行列を含む p x p 数値テーブルのポインター。デフォルトでは、このテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
sumCorrelation |
ローカルノードで計算された部分和を含む 1 x p 数値テーブルのポインター。デフォルトでは、このテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
ステップ 2 - マスターノード
このステップの PCA アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
partialResults |
ステップ 1 で計算された結果 (nObservationsCorrelation、crossProductCorrelation、sumCorrelation) を含むコレクション。(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。 |
このステップで、PCA は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
eigenvalues |
降順で固有値を含む 1 x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
eigenvectors |
行優先順で固有ベクトルを含む p x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++:
Java*:
Python*:
以下の 2 ステップのスキーマを使用します。
ステップ 1 - ローカルノード
このステップの PCA アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
data |
ローカルノードの i 番目のデータブロックを表す ni x p 数値テーブルのポインター。入力は、NumericTable の派生クラスのオブジェクトです。 |
このステップで、PCA は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
nObservationsSVD |
ローカルノードで処理された観測点の数を含む 1 x 1 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
sumSVD |
ローカルノードで計算された部分和を含む 1 x p 数値テーブルのポインター。デフォルトでは、このテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
sumSquaresSVD |
ローカルノードで計算された 2 乗の部分和を含む 1 x p 数値テーブルのポインター。デフォルトでは、このテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
auxiliaryDataSVD |
ステップ 2 のマスターノードに転送する部分結果を含む数値テーブルのコレクション。(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。 |
ステップ 2 - マスターノード
このステップの PCA アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
partialResults |
ステップ 1 で計算された結果 (nObservationsSVD、sumSVD、sumSquaresSVD、auxiliaryDataSVD) を含むコレクション。(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。 |
このステップで、PCA は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
eigenvalues |
降順で固有値を含む 1 x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
|
eigenvectors |
行優先順で固有ベクトルを含む p x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix、PackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。 |
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/pca/pca_svd_dense_distributed.cpp
Java*: ./examples/java/source/com/intel/daal/examples/pca/PCASVDDenseDistributed.java
Python*: ./examples/python/source/pca/pca_svd_dense_distributed.py