ドキュメンテ,ション

最新のリリ,スでは,このペ,ジがまだ翻訳されていません。このペ,ジの最新版は英語でご覧になれます。

階層クラスタリング

階層クラスタリングの紹介

階層的なクラスタリンググループは,クラスターツリーまたは”系統樹”を作成することによって,さまざまなスケールで,データをグループ化します。このツリーは1つのクラスターの集合ではなく,あるレベルのクラスターが次のレベルでクラスターとして加わる多重レベルの階層です。これにより,アプリケーションに最適なクラスタリングのレベルまたはスケールを決定することが可能になります。统计和机器学习工具箱™の関数clusterdataは,凝集型のクラスタリングをサポ,トし,必要なすべての手順を実行します。関数pdist链接集群が組み込まれ,これらの関数はさらに詳細な分析で別々に使用することもできます。関数系统树图は,クラスタ,リ,をプロットします。

アルゴリズムの説明

统计和机器学习工具箱の関数を使用してデータセットの凝集型の階層クラスター分析を実行するには,次の手順に従います。

  1. デ,タセット内のオブジェクトの各ペア間の類似度または非類似度を求めます。この手順では,関数pdistを使って,オブジェクト間の"距離を計算します。関数pdistは,この測定を計算するさまざまな多くの方法をサポ,トします。詳細は,類似度の測定を参照してください。

  2. オブジェクトを,2値の階層クラスタリにグルプ化します。この手順では,関数链接を使って,近接するオブジェクトのペアをリンクします。関数链接は,ステップ1で生成された距離の情報を使って,オブジェクトの互いの近接度を決めます。オブジェクトは2つのクラスターでペアになっているので,新規に作成されたクラスターは,階層ツリーが形成されるまで大きいクラスター内にグループ化されています。詳細は,リンケ,ジを参照してください。

  3. 階層リを切り取る位置を決め,クラス木にします。この手順では,関数集群を使用して,階層ツリーの下部から分岐を枝刈りし,それぞれ切り取った分岐の下のすべてのオブジェクトを1つのクラスターに割り当てます。これは,デ,タの分割を作成します。関数集群は,階層ツリーで自然のグループ化を検出したり,または任意の点で階層ツリーをカットオフすることによって,これらのクラスターを作成できます。

以下の節では,これらのステップに関する情報を詳しく説明します。

    メモ:统计和机器学习工具箱の関数clusterdataは,必要なすべての手順を実行します。関数pdist链接,または集群を別々に実行する必要はありません。

類似度の測定

関数pdistを使用して,デ,タセットのオブジェクトのペア間の距離を計算します。個のオブジェクトで構成されているデータセットの場合,m * (m - 1) / 2対のペアがデータセット内にあります。この計算の結果は,距離行列または非類似度行列として一般に知られています。

この距離情報を計算する方法はたくさんあります。既定の設定では,関数pdistは,オブジェクト間のユ,クリッド距離を計算します。しかし,その他のオプションのいずれかを指定できます。詳細は,pdistを参照してください。

    メモ:距離の情報を計算する前に,デ,タセットの値をオプションによって正規化できます。実世界のデ,タセットでは,変数は異なるスケ,ルに対して測定される場合があります。たとえば,ある変数が Intelligence Quotient (IQ) テスト スコアを測定し、別の変数が頭部の円周を測定することがあります。これらのばらつきは、近接度の計算を歪めることがあります。関数zscoreを使うと,デ,タセットのすべての値を変換し,同じ比率のスケ,ルを使用できます。詳細は,zscoreを参照してください。

たとえば,各オブジェクトがx, y座標のセットである5のオブジェクトで構成されている,Xを考えます。

  • オブジェクト: 1、2

  • オブジェクト2: 2.5、4.5

  • オブジェクト3: 2,2

  • オブジェクト4: 4、1.5

  • オブジェクト: 4、2.5

このデ,タセットを行列として定義し,

rng默认的;%用于再现性X = [1 2;2.5 4.5;2 2;4 1.5;4 2.5);

pdistに渡すことができます。関数pdistは,オブジェクト1とオブジェクト2,オブジェクト1とオブジェクト3などのペアの距離を,すべてのペアの間の距離が算出されるまで計算します。次の図は,グラフにこれらのオブジェクトをプロットしています。オブジェクト2とオブジェクト3.の間のユークリッド距離は、距離の 1 つの解釈を説明するために示されます。

距離情報

関数pdistは,この距離情報をベクトルYに返します。各要素は,オブジェクトのペア間の距離を含みます。

Y = pdist(X
Y = 1 ~ 7列2.9155 1.0000 3.0414 3.0414 2.5495 3.3541 2.5000 8 ~ 10列2.0616 2.0616 1.0000

pdistとオリジナルのデ,タセットのオブジェクトにより生成される距離情報の関係を確認しやすくするため,関数squareformを使用して,距離ベクトルを行列に作り変えることができます。この行列では,要素我,我は,元のデ,タセットのオブジェクトとオブジェクトjの距離に相当します。次の例で,要素1,1は,オブジェクト1とそれ自体(ゼロ)の距離を表します。要素1,2は,オブジェクト1とオブジェクト2の距離を表し,以降同様です。

squareform (Y)
Ans = 0 2.9155 1.0000 3.0414 3.0414 2.9155 0 2.5495 3.3541 2.5000 1.0000 2.5495 0 2.0616 2.0616 3.0414 3.3541 2.0616 0 1.0000 3.0414 2.5000 2.0616 1.0000 0

リンケ,ジ

デ,タセット内のオブジェクト間の近接度を計算すると,関数链接を使用して,データセット内のどのオブジェクトがクラスターにグループ化されるべきかを決定することができます。関数链接は,pdistにより作成された距離情報を受け取り,近接したオブジェクトのペアをバイナリクラスター(2つのオブジェクトから構成されるクラスター)にリンクします。すると,関数链接は,これらの新しく形成されたクラスターを互いにリンクしたり,他のオブジェクトにリンクして,クラスターツリーとして,オリジナルデータセットのすべてのオブジェクトにリンクされるまで,より大きなクラスターを生成していきます。

たとえば,xy座標の標本デ,タセットからpdistにより生成された距離ベクトルYが与えられると,関数链接は,行列Zにリンケ,ジ情報を返して,階層クラスタ,リ,を作成します。

Z =连杆(Y)
Z = 4.0000 5.0000 1.0000 1.0000 3.0000 1.0000 6.0000 7.0000 2.0616 2.0000 8.0000 2.5000

この出力において,各行はオブジェクトまたはクラスタ,間のリンクを識別します。最初の2列は,リンクされたオブジェクトを識別します。3列目は,これらのオブジェクト間の距離を含みます。xy座標の標本デ,タセットに対して,関数链接は,オブジェクト4と5をグル,プ化することにより開始します。これらは最近接(距離の値= 1.0000)になります。関数链接は,オブジェクト1と3をグル,プ化することにより続行します。これはまた,距離の値1.0000をもます。

3行目は,関数链接がオブジェクト6および7をグル,プ化したことを表しています。元の標本データセットに5つのオブジェクトのみが含まれていたとすると,オブジェクト6および7は何でしょうか。オブジェクト6はオブジェクト4および5のグループ化によって新しく形成されたバイナリクラスターです。関数链接で2つのオブジェクトをグループ化して新しいクラスターを作成する場合,値m + 1から始まる一意のインデックス値をクラスターに割り当てなければなりません。ここで,は元のデ,タセットに含まれているオブジェクトの数です。(値 1 ~は,元のデ,タセットによって既に使用されています)。同様に,オブジェクト7はオブジェクト1と3をグループ化することによって形成されるクラスターです。

链接は,距離を使ってオブジェクトをクラスタ,する順序を決定します。距離ベクトルYには,元のオブジェクト1から5の間の距離が含まれています。しかし,连杆では,作成したクラスター(オブジェクト6や7など)に関する距離も決定できなければなりません。既定の設定の链接では,単連結法と呼ばれる方法を使用します。しかし,利用できる方法はまだ他にもあります。詳細は,链接のリファレンスペ,ジを参照してください。

最後のクラスタ,として,関数链接は,元のデータセットからのオブジェクト2と共に,オブジェクト6と7から構成される新しく形成されたクラスター,オブジェクト8をグループ化しました。次の図は,链接がオブジェクトをクラスタ,階層にグル,プ化する方法をグラフィカルに説明します。

系統樹

関数链接によって作成された階層的なバイナリクラスターツリーは,グラフィカルに表示されると最も容易に理解できます。统计和机器学习工具箱の関数系统树图は,次のようにリをプロットします。

系统树图(Z)

図の横軸に表示された数値は,オリジナルデ,タセットのオブジェクトの,ンデックスを表します。オブジェクト間のリンクは,逆u字形の線として表されます。Uの高さは,オブジェクト間の距離を示します。たとえば,オブジェクトおよび 3 が含まれているクラスターを表すリンクの高さは 1 です。オブジェクト 2 を、オブジェクト 1、3、4、5 (既にオブジェクト 8 としてクラスター化されている) と共にグループ化するクラスターを表すリンクの高さは 2.5 です。この高さは、链接で計算したオブジェクト2および8の間の距離を表します。系統樹図の作成にいての詳細は,系统树图のリファレンスペ,ジを参照してください。

クラスタリの確認

データセットのオブジェクトを階層クラスターツリーにリンクした後,ツリーにおける距離(すなわち,高さ)がオリジナルの距離を正確に反映することを確認したい場合もあります。さらに,オブジェクト間のリンクの間に存在する自然な分割にいて調べることもできます。以下のセクションで説明するように,统计和机器学习工具箱の関数はこれらのタスクの両方に使用できます。

非類似度の検証

階層クラスターツリーにおいて,オリジナルデータセットの任意の2つのオブジェクトは最終的に,あるレベルでリンクされます。リンクの高さは,それら2のオブジェクトを含む2。この高さは,2のオブジェクト間の“コ,フェン距離”として知られます。関数链接によって作成されたクラスターツリーが適切にデータを反映しているかどうかを測定する1つの方法は,コーフェン距離を,関数pdistによって作成されたオリジナルの距離デ,タと比較することです。クラスタリングが有効である場合は,クラスターツリー内のオブジェクトのリンクは,距離ベクトル内のオブジェクト間の距離と強い相関があります。関数cophenetは,これら2の値の集合を比較し,それらの相関を計算し,“コ,フェン相関係数”と呼ばれる値を出力します。コーフェン相関係数の値が1に近づくにつれて,クラスタリングの解は,より正確にデータを反映します。

コーフェン相関係数を使って,異なる距離計算法またはクラスタリングアルゴリズムを使った同じデータセットのクラスタリングの結果を比較することができます。たとえば,関数cophenetを使用して,標本デ,タセットに対して作成されたクラスタ,を評価できます。

c = cophenet(Z,Y)
C = 0.8615

Zは関数链接による行列の出力であり,Yは関数pdistによる距離ベクトルの出力です。

今回は城市街区度量を指定して同じデ,タセットに対して再びpdistを実行します。平均リンケ,ジの方法を使用して,この新しいpdistの出力に関数链接を実行後,cophenetを呼び出して,クラスタリングの解を評価します。

Y = pdist(X,“cityblock”);Z =连杆(Y,“平均”);c = cophenet(Z,Y)
C = 0.9047

コーフェン相関係数は,異なる距離とリンケージの方法を使うと,オリジナルの距離をわずかにより適切に表す平方2乗を作成することを示します。

一致の確認

データセット内での自然なクラスターの分割を決定する方法の1つは,クラスターツリーの各リンクの高さを,そのツリーより下のリンクの高さと比較することです。

リンクの高さがその下のリンクの高さとほぼ同じである場合,階層のそのレベルで結合するオブジェクト間にはっきりと区別できる分割が存在しないことを示します。これらのリンクは,高レベルの一致を示すと言われます。なぜなら,結合されているオブジェクト間の距離は,それらが含むオブジェクト間の距離とほぼ同じであるためです。

一方,リンクの高さがその下のリンクの高さと著しく異なる場合,クラスターツリーのこのレベルで結合したオブジェクトは,それらの成分が結合した時点よりも相互に離れているということを示します。このリンクは,その下のリンクと不整合であると言われます。

クラスタ,分析において,不整合リンクは,デ,タセット内の自然な分割の境界を示します。関数集群は,不整合の量的な尺度を使用して,デ,タセットをクラスタ,に分割する位置を決定します。

次の系統樹は,不整合リンクを説明します。系統樹のオブジェクトが、ツリーのかなり高いレベルで、リンクによって結合している 2 つのグループに分類される様子に注意してください。これらのリンクは、階層でそれらの下のリンクと比較されるとき不整合です。

階層クラスタリも各リンクの相対的な整合性は,不整合係数として定量化され表されます。この値は,クラスタ,階層のリンクの高さとその下のリンクの平均の高さを比較します。異なるクラスタ,に結合するリンクは,高い不整合係数をも,ます。我ndistinct クラスターに結合するリンクは、低い不整合係数をもちます。

クラスタリの各リンクに対する不整合係数のリストを作成するには,関数不一致的を使用します。既定の設定では,関数不一致的は,クラスター階層の各リンクを,クラスター階層内のそれより2レベル内にある下の近隣のリンクと比較します。これは,比較の“深さ”と呼ばれます。他の深さを指定することもできます。葉ノードと呼ばれる,下層にオブジェクトをもたないクラスターツリーの一番下のオブジェクトは,不整合係数が0です。2 .。

たとえば,関数不一致的を使用して,リンケ,ジで関数链接によって作成したリンクに対する不整合値を計算できます。

最初に既定の設定を使用して距離とリンク値を再計算します。

Y = pdist(X);Z =连杆(Y);

次に不一致的を使用して不整合値を計算します。

I =不一致(Z)
I = 1.0000 0 1.0000 0 1.0000 0 1.0000 0 1.3539 0.6129 3.0000 1.1547 2.2808 0.3100 2.0000 0.7071

関数不一致的は,(-1)行4列の行列のリンクにいてのデタを出力します。次の表は,この行列の列を示しています。

説明

1

計算に含まれるすべてのリンクの高さの平均

2

計算に含まれるすべてのリンクの標準偏差

3.

計算に含まれるリンクの数

4

不整合係数

サンプル出力において,1行目はオブジェクト4と5の間のリンクを表します。このクラスタ,には,関数链接によってesc escンデックス6が割り当てられます。4と5は葉ノドであるため,クラスタに対する不整合係数は0です。2行目は、オブジェクト 1 と 3 の間のリンクを表し、これらもまた、葉ノードを表します。このクラスターは、関数 linkage によって、インデックス 7 を割り当てられます。

3行目では,オブジェクト6および7という2つのクラスターを接続するリンクを評価しています(この新しいクラスターには,链接の出力でesc escンデックス8が割り当てられています)。3.列目は、3 つのリンクが計算で考えられることを示します: リンク自身と階層内でその直接の下の 2 つのリンク。1 列目は、これらのリンクの高さの平均を表します。関数不一致的は,平均を計算するために関数链接により出力される高さの情報を使用します。2列目は、リンク間の標準偏差を表します。最後の列は、これらのリンクに対する不整合値 1.1547 を含みます。これは、現在のリンクの高さと平均の差を、標準偏差によって正規化したものです。

(2.0616 - 1.3539) / .6129
Ans = 1.1547

次の図は,この計算に含まれるリンクと高さを説明します。

    メモ:前の図において,y軸の下限は,リンクの高さを示すために,0に設定されます。下限を0に設定するには,[編集]メニュ,から[Axesプロパティ]を選択し,[y軸]タブをクリックして,[y範囲]の右隣のフィ,ルドに0を入力します。

出力行列の4行目では,オブジェクト8とオブジェクト2の間のリンクが説明されています。3.列目は、この計算に 2 つのリンク (リンク自体と階層内でそのリンクの直下にあるリンク) が含まれていることを示します。このリンクに対する不整合係数は、0.7071 です。

次の図は,この計算に含まれるリンクと高さを説明します。

クラスタ,の作成

バナリクラスタの階層リを作成後,関数集群を使用してリを枝刈りして,デタをクラスタに分割することができます。関数集群は,以下の節で説明するように,クラスを2とおりの方法で作成します。

デ,タの自然な分割を探す

階層的なクラスターツリーは,データをはっきりと区別できる,十分に分離したクラスターに自然に分割できます。デ,タから作成された系統樹図において,特に明らかであるかもしれません。ここでは,オブジェクトのグル,プは,ある領域には密に詰められ,他においてはそうでありません。クラスターツリーのリンクの不整合係数は,オブジェクト間の類似性が急に変化する,これらの分割を識別できます。(不整合係数の詳細は,クラスタリの確認を参照してください)。この値を使って,関数集群がクラスタ,の境界を作成する位置を決めることができます。

たとえば,関数集群を使用して,截止引数の値として,不整合係数のしきい値1.2を指定し,標本デ,タをクラスタ,にグル,プ化する場合,関数集群。この例では,クラスタ,階層内のリンクは1.2よりも大きい不整合係数をもませんでした。

T =聚类(Z,“截止”, 1.2)
T = 1 1 1 1 1 1

関数集群は,元のデ,タセットと同じサ,ズであるベクトルTを出力します。このベクトルの各要素は,オリジナルのデータセットの対応するオブジェクトが置かれたクラスターの数を含みます。

不整合係数のしきい値を0.8まで下げる場合,関数集群は,標本デタセットを3の別々のクラスタに分割します。

T =聚类(Z,“截止”, 0.8)
T = 3 2 3 1 1

この出力は,オブジェクト1および3が1つのクラスターに,オブジェクト4および5が別のクラスターに,オブジェクト2は独自のクラスターに含まれていることを示します。

このようにクラスタ,が形成されると,カットオフの値が不整合係数に適用されます。これらのクラスターは,必ずというわけではありませんが,ある高さで系統樹を横切る水平なスライスに相当します。系統樹の水平スラスに対応するクラスタを得たい場合,标准オプションを使用して,カットオフが,不整合ではなく距離に基づくべきであるということを指定するか,あるいは以下の節で説明するように,クラスターの数を直接指定できます。

任意のクラスタ,の指定

関数集群で,データセット内の自然の分割で決定するクラスターを作成するのではなく,作成するクラスターの数を指定できます。

たとえば,標本データセットを2つのクラスターに分割するために,関数集群にさせたいことを指定できます。この場合,関数集群は,オブジェクト1、3、4ならびに5を含む1つのクラスターおよびオブジェクト2を含む別のクラスターを作成します。

T =聚类(Z,“maxclust”, 2)
T = 2 1 2 2 2

次の図は,階層的なクラスタ,リ,の系統樹を示し,関数集群がこれらのクラスタを決める様子の可視化に役立ます。“maxclust”2に設定することに対応して,水平の破線は,系統樹の2のランと交わります。これらの2のランは,オブジェクトを2のクラスタに分割します。左側のラ。。

他方、“maxclust”3.に設定すると,クラスター関数は,オブジェクト4と5を1つのクラスターに,オブジェクト1と3を2番目のクラスターに,さらにオブジェクト2を3番目のクラスターにグループ化します。以下のコマンドは,このことを説明します。

T =聚类(Z,“maxclust”3)
T = 2 3 2 1 1

今度は,関数集群は,以下の系統樹の3のラ。

この情報は役に立ましたか?