1

「調整された完全な」リンケージについて私が見つけることができる唯一の説明は、「完全なリンケージと同じですが、クラスター距離内で最大である」のようなものです。

「クラスター距離内」とはどういう意味ですか?

このリンケージアプローチを使用して、2つのクラスター間の距離は最終的にどのように計算されますか?

返信ありがとうございます!

4

1 に答える 1

1

オープンソースソフトウェアの優れた点の1つは、ソフトウェアがどのように機能するかを正確に把握できることです。以下のコードは、 WekaのアルゴリズムのソースコードHierarchicalClusterer示しています。より具体的には、COMPLETEおよびADJCOMPLETE機能を実装する部分を示しています。違いは次のとおりです。

  • リンケージ方式と同様に、COMPLETEクラスター1の1つのノードとクラスター2の1つのノード間の最大距離を計算し、これをに格納します。fBestDist
  • 次に、クラスター1またはクラスター2内のノード間の最大距離を見つけて、これをに格納します。fMaxDist
  • 最後fMaxDistfBestDist

したがって、ADJCOMPLETEasを使用して計算された2つのクラスター間の距離は、クラスター1またはクラスター2内の2つのノード間の最大距離を差し引いた距離linkTypeに対応します。COMPLETE

Adjusted Complete-Link次の論文で提案されました:

セパンダル・カムヴァル、ダン・クライン、クリストファー・マニング(2002)。モデルベースのアプローチを使用した古典的な凝集クラスタリングアルゴリズムの解釈と拡張。機械学習に関する第19回国際会議(ICML-2002)の議事録

それによると(セクション4.2)、は、さまざまな半径を持つクラスターの場合に使用する必要がAdjusted Complete-Linkあるバージョンです(図10を参照)。Complete-Link

case COMPLETE:
case ADJCOMLPETE:
  // find complete link distance aka maximum link, which is the largest distance between
  // any item in cluster1 and any item in cluster2
  fBestDist = 0;
  for (int i = 0; i < cluster1.size(); i++) {
    int i1 = cluster1.elementAt(i);
    for (int j = 0; j < cluster2.size(); j++) {
      int i2 = cluster2.elementAt(j);
      double fDist = fDistance[i1][i2];
      if (fBestDist < fDist) {
        fBestDist = fDist;
      }
    }
  }
  if (m_nLinkType == COMPLETE) {
    break;
  }
  // calculate adjustment, which is the largest within cluster distance
  double fMaxDist = 0;
  for (int i = 0; i < cluster1.size(); i++) {
    int i1 = cluster1.elementAt(i);
    for (int j = i+1; j < cluster1.size(); j++) {
      int i2 = cluster1.elementAt(j);
      double fDist = fDistance[i1][i2];
      if (fMaxDist < fDist) {
        fMaxDist = fDist;
      }
    }
  }
  for (int i = 0; i < cluster2.size(); i++) {
    int i1 = cluster2.elementAt(i);
    for (int j = i+1; j < cluster2.size(); j++) {
      int i2 = cluster2.elementAt(j);
      double fDist = fDistance[i1][i2];
      if (fMaxDist < fDist) {
        fMaxDist = fDist;
      }
    }
  }
  fBestDist -= fMaxDist;
  break;
于 2012-08-09T16:54:03.603 に答える