主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

계층적군집화

계층적군집화소개

계층적군집화는군집트리또는덴드로그램(系统树图)을생성하여다양한스케일에대해데이터를그룹화합니다。이트리는여러군집으로구성된단일세트가아니라다중수준계층입니다。여기서한수준에있는군집은다음수준의군집으로결합됩니다。이를통해응용사례에가장적합한군집화수준이나스케일을결정할수있습니다。함수clusterdata는병합군집화를지원하고필요한모든단계를수행합니다。이함수에는pdist链接集群함수가통합되어있습니다。이러한함수는보다세부적인분석을위해개별적으로사용할수있습니다。系统树图함수는군집트리를플로팅합니다。

알고리즘설명

统计和机器学习工具箱™함수를사용하여데이터세트에대해계층적병합군집분석을수행하려면다음절차를따르십시오。

  1. 데이터세트에포함된모든객체쌍간의유사성또는비유사성을구합니다。이단계에서는pdist함수를사용하여객체간거리를계산합니다。pdist함수는이측정값을계산할수있는많은다양한방법을지원합니다。자세한내용은유사성측정법항목을참조하십시오。

  2. 객체를계층적이진군집트리로그룹화합니다。이단계에서는链接함수를사용하여근접한객체쌍을연결합니다。链接함수는단계1에서생성된거리정보를사용하여객체간근접도를결정합니다。객체가이진군집으로쌍을이룸에따라,새로형성된군집이계층적트리가형성될때까지더큰군집으로그룹화됩니다。자세한내용은연결항목을참조하십시오。

  3. 계층적트리를여러군집으로나누기위한절단위치를결정합니다。이단계에서는集群함수를사용하여계층적트리의맨아래에서가지치기를하고각절단아래에있는모든객체를하나의군집에할당합니다。이렇게하면데이터의분할이생성됩니다。集群함수는계층적트리에서자연적그룹화를탐지하거나임의의점에서계층적트리를절단하는방식으로이러한군집을생성할수있습니다。

다음섹션에서이러한단계각각에대해자세히설명합니다。

참고

함수clusterdata는필요한모든단계를수행합니다。pdist链接集群함수를개별적으로실행할필요가없습니다。

유사성측정법

pdist함수를사용하여데이터세트에포함된모든객체쌍간의거리를계산합니다。개객체로구성된데이터세트의경우,데이터세트에m * (m - 1) / 2개쌍이있습니다。이계산의결과는일반적으로거리또는비유사성행렬로알려져있습니다。

이러한거리정보를계산할수있는방법이많이있습니다。기본적으로,pdist함수는객체간유클리드거리(欧氏距离)를계산합니다。그러나,여러다른옵션중하나를지정할수있습니다。자세한내용은pdist를참조하십시오。

참고

선택적으로,거리정보를계산하기전에데이터세트에포함된값을정규화할수있습니다。실세계의데이터세트에서변수는다양한스케일로측정될수있습니다。예를들어,한변수는智商(지능지수)검사점수를측정하고다른변수는머리둘레를측정할수있습니다。이러한차이는근접도계산을왜곡할수있습니다。zscore함수를사용하여동일한비례적스케일을사용하도록데이터세트에포함된모든값을변환할수있습니다。자세한내용은zscore를참조하십시오。

예를들어,각개체가x, y좌표세트5개인객체로구성된데이터세트X가있다고가정해보겠습니다。

  • 객체1: 1、2

  • 객체2: 2.5, 4.5

  • 객체3: 2、2

  • 객체4: 4、1.5

  • 객체5: 4、2.5

다음과같이이데이터세트를행렬로정의할수있습니다。

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

그런다음pdist로전달할수있습니다。pdist1과함수는객체객체2,객체1과객체3등의식으로모든쌍간의거리가계산될때까지객체간의거리를계산합니다。다음그림은그래프에이러한객체를플로팅한것입니다。거리에대한한해석을보여주기위해객체2와객체3간의유클리드거리가표시되어있습니다。

거리정보

pdist함수는각요소가객체쌍간의거리를포함하는벡터Y로이거리정보를반환합니다。

Y = pdist (X)
Y =1×102.9155 1.0000 3.0414 3.0414 2.5495 3.3541 2.5000 2.0616 2.0616 1.0000

squareform함수를사용하여거리벡터를행렬로형식을다시지정하면pdist로생성된거리정보와원래데이터세트의객체와의관계를더욱쉽게파악할수있습니다。이행렬에서요소我,我는원래데이터세트의객체와객체j간의거리에대응됩니다。다음예제에서요소1,1은객체1과그자신간의거리를나타냅니다(0임)。第1、2는요소객체1과객체2간의거리를나타내는식입니다。

squareform (Y)
ans =5×50 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로생성된거리정보를사용하여서로가까이있는객체쌍들을연결해이진군집(두객체로구성된군집)으로만듭니다。그런다음,链接함수는원래데이터세트의모든객체가계층적트리에서모두연결될때까지이렇게새로형성된군집을서로간에그리고다른객체에연결하여더큰군집을생성합니다。

예를들어,x좌표와y좌표로구성된표본데이터세트에서pdist에의해생성된거리벡터Y가있다고가정할경우链接함수는행렬Z로연결정보를반환하는계층적군집트리를생성합니다。

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

이출력값에서각행은객체또는군집사이의링크를나타냅니다。처음두열은연결된객체를식별합니다。세번째열은이러한객체들간의거리를식별합니다。x좌표와y좌표로구성된표본데이터세트에대해链接함수는먼저가장근접해있는객체4와객체5(거리값= 1.0000)를그룹화합니다。계속해서链接1.0000함수는거리값이역시인객체1과객체3을그룹화합니다。

세번째행은链接6과함수가객체객체7을그룹화했음을나타냅니다。원래표본데이터세트에5개객체만포함되었다면객체6과객체7은무엇일까요?객체6은객체4와객체5의그룹화를통해만들어진새로형성된이진군집입니다。链接함수는두객체를새군집으로그룹화할때값m + 1(여기서은원래데이터세트에포함된객체의개수임)로시작하는고유한인덱스값을군집에할당해야합니다。(값1 ~은원래데이터세트에서이미사용되었습니다)。마찬가지로객체7은객체1과객체3의그룹화를통해형성된군집입니다。

链接는거리를사용하여객체를군집화하는순서를결정합니다。거리벡터Y는원래객체1 ~ 5간의거리를포함합니다。그러나연결은객체6및객체7과같이생성하는군집과관련된거리도결정할수있어야합니다。기본적으로,链接는단일연결이라고하는방법을사용합니다。그러나,사용할수있는방법에는여러가지가있습니다。자세한내용은链接함수도움말페이지를참조하십시오。

마지막군집으로链接6과함수는객체객체7로구성된새로형성된군집인객체8을원래데이터세트의객체2와그룹화했습니다。다음그림은链接가객체를군집의계층으로그룹화하는방식을시각적으로보여줍니다。

덴드로그램(系统树图)

链接함수로생성된계층적이진군집트리는그래픽으로볼때가장쉽게이해할수있습니다。함수系统树图은다음과같이트리를플로팅합니다。

系统树图(Z)

图中包含一个坐标轴。轴包含4个线型对象。

이그림에서가로축의숫자는원래데이터세트에포함된객체의인덱스를나타냅니다。객체간링크는거꾸로된U자모양의선으로표시되어있습니다。U의높이는객체간거리를나타냅니다。예를들어,객체1과객체3을포함하는군집을나타내는링크는높이가1입니다。객체2를객체1、3、4、5(이미객체8로군집화되어있음)와함께그룹화하는군집을나타내는링크는높이가2.5입니다。이높이는链接가객체2와객체8간을계산한거리를나타냅니다。덴드로그램다이어그램생성에대한자세한내용은系统树图함수도움말페이지를참조하십시오。

군집트리확인하기

데이터세트의객체를계층적군집트리에연결한후에,트리의거리(즉,높이)가원래거리를정확히나타내는지확인하고자할수있습니다。또한,객체간링크사이에존재하는자연적인분할을조사하고자할수도있습니다。이러한작업모두에统计和机器学习工具箱함수를사용할수있으며,이에대해서는다음섹션에설명되어있습니다。

비유사성확인하기

계층적군집트리에서원래데이터세트에포함된임의의두객체는종내에는특정수준에서연결됩니다。링크의높이는이두객체를포함하는두군집간의거리를나타냅니다。이높이를두객체간코페네틱거리(同表象距离)라고합니다。链接함수로생성된군집트리가데이터를얼마나잘반영하는지측정하는한가지방법은pdist함수로생성된원래거리데이터와코페네틱거리를비교하는것입니다。군집화가유효한경우군집트리의객체연결은거리벡터의객체간거리와강한상관관계를가져야합니다。cophenet함수는이러한두개의값세트를비교하고상관관계를계산하여코페네틱상관계수(同表象相关系数)라고하는값을반환합니다。코페네틱상관계수의값1이에가까울수록군집화해가데이터를더정확히반영합니다。

코페네틱상관계수를사용하면,동일한데이터세트를다양한거리계산방법또는군집화알고리즘을통해군집화한결과를비교해볼수있습니다。예를들어,cophenet함수를사용하여표본데이터세트에대해생성된군집을평가할수있습니다。

c = cophenet (Z, Y)
c = 0.8615

Z链接함수에서반환된행렬출력값이고Ypdist함수에서반환된거리벡터출력값입니다。

이번에는도시블록(街区)측정법을지정하여동일한데이터세트에대해pdist를다시실행합니다。평균연결방법을사용하여이새pdist출력값에대해链接함수를실행한후cophenet를호출하여군집화해를평가합니다。

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

코페네틱상관계수는다른거리와연결방법을사용하면원래거리를좀더정확히표현하는트리가생성된다는것을보여줍니다。

일치성확인하기

데이터세트에서자연적인군집분할을결정하는한가지방법은군집트리의각링크높이를트리에서그하위에있는인접링크의높이와비교하는것입니다。

하위링크와높이가거의같은링크는이계층수준에서결합된객체간에뚜렷한분할이없음을나타냅니다。이러한링크는결합된객체간의거리가해당객체에포함된객체들간의거리와거의같기때문에높은일치성수준을보이는것으로간주됩니다。

반면에,높이가하위링크의높이와눈에띄게다른링크는군집트리의이수준에서결합된객체들이해당객체의성분들이결합될때보다훨씬더서로떨어져있음을나타냅니다。이러한링크는하위링크와일치하지않는것으로간주됩니다。

군집분석에서,일치하지않는링크는데이터세트에서자연적인분할의경계를나타낼수있습니다。集群함수는불일치에대한정량적측정을통해데이터세트를군집으로분할할위치를결정합니다。

다음덴드로그램에서는일치하지않는링크를보여줍니다。덴드로그램의객체가트리의훨씬더높은수준에있는링크로연결되어있는두그룹에어떤식으로속해있는지를확인합니다。이러한링크를계층의하위에있는링크와비교하면일치하지않는것을알수있습니다。

계층적군집트리에포함된각링크의상대적인일치성을정량적으로측정하여불일치계수로표현할수있습니다。이값은군집계층에서특정링크의높이를하위링크의평균높이와비교합니다。완전히구별되는군집을결합하는링크는높은불일치계수를가지며,그다지구별되지않는군집을결합하는링크는낮은불일치계수를가집니다。

군집트리의각링크에대한불일치계수목록을생성하려면不一致的함수를사용하십시오。기본적으로,不一致的함수는군집계층의각링크를군집계층에서두수준미만으로하위에있는인접링크들과비교합니다。이를비교의깊이라고합니다。다른깊이를지정할수도있습니다。리프노드라고하는군집트리의맨아래에있는객체는하위에더이상객체가없으며불일치계수0을가집니다。두리프를결합하는군집도불일치계수0을가집니다。

예를들어,不一致的함수를사용하여연결에설명되어있는链接함수로생성된링크에대한불일치값을계산할수있습니다。

먼저,디폴트설정을사용하여거리값과연결값을다시계산합니다。

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

다음으로,不一致的를사용하여불일치값을계산합니다。

我=不一致(Z)
我=4×41.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

불일치계수

표본출력값에서첫번째행은객체4와객체5간의링크를나타냅니다。이군집에는链接함수에의해인덱6이스할당됩니다。4와5모두리프노드이기때문에이군집의불일치계수는0입니다。두번째행은객체1과객체3간의링크를나타냅니다。두객체도모두리프노드입니다。이군집에는연결함수에의해인덱7이스할당됩니다。

세번째행은이러한두군집인객체6과객체7을연결하는링크를평가합니다。이새군집에는链接출력값에서인덱8이스할당됩니다。열3은링크자체와계층에서그바로밑에있는두개의링크,즉세개의링크가계산에고려되었음을나타냅니다。열1은이러한링크높이의평균을나타냅니다。不一致的함수는链接함수에서반환되는높이정보출력값을사용하여평균을계산합니다。열2는링크간의표준편차를나타냅니다。마지막열은이러한링크의불일치값1.1547인을포함합니다。이는현재링크높이와평균간의차이,로표준편차를사용해정규화한값입니다。

(2.0616 - 1.3539) / .6129
ans = 1.1547

다음그림에서는이계산에포함된링크와높이를보여줍니다。

참고

앞의그림에서y축의하한은링크의높이를표시하기위해0으로설정되어있습니다。하한을0으로설정하려면편집메뉴에서轴속성을선택하고Y축탭을클릭한후Y제한의바로오른쪽에있는필드에0을입력하십시오。

4출력행렬의행은객체8과객체2간의링크를설명합니다。3열은링크자체와계층에서그바로밑에있는링크,즉두개의링크가이계산에포함되었음을나타냅니다。이링크의불일치계수는0.7071입니다。

다음그림에서는이계산에포함된링크와높이를보여줍니다。

군집만들기

이진군집의계층적트리를생성한후에는集群함수를사용하여트리를가지치기함으로써데이터를군집으로분할할수있습니다。集群함수를사용하면두가지방법으로군집을생성할수있습니다。이에대해서는다음섹션에설명되어있습니다。

데이터에서자연적인분할찾기

계층적군집트리는데이터를잘분리된고유한군집들로자연스럽게분할할수있습니다。이는데이터에서생성된덴드로그램다이어그램에서특히명확하게나타날수있습니다。여기서객체의그룹은다른영역과구별될정도로특정영역에조밀하게밀집해있습니다。군집트리에포함된링크가갖는불일치계수를통해객체간유사성이급격히변하는이러한분할을식별할수있습니다。불일치계수에대한자세한내용은군집트리확인하기항목을참조하십시오。이값을사용하여集群함수가만드는군집경계의위치를확인할수있습니다。

예를들어,截止인수의값으로불일치계수분계점을1.2로지정해集群함수로표본데이터세트를군집으로그룹화하면集群함수는표본데이터세트의모든객체를하나의군집으로그룹화합니다。이경우,군집계층의어떤링크도1.2보다큰불일치계수를가지지않습니다。

T =集群(Z,“截止”, 1.2)
T =5×11 1 1 1

集群함수는원래데이터세트와크기가같은벡터T를출력합니다。이벡터의각요소는원래데이터세트의해당객체가배치된군집의번호를포함합니다。

불일치계수분계점을0.8로낮추면集群함수가표본데이터세트를3개의개별군집으로분할합니다。

T =集群(Z,“截止”, 0.8)
T =5×13 2 3 1 1

이출력값은객체1과객체3이하나의군집에있고,객체4와객체5가다른군집에있으며,객체2가자체적인군집에있다는것을나타냅니다。

군집이이방식으로형성된경우절단값이불일치계수에적용됩니다。이러한군집은반드시그런것은아니지만덴드로그램을특정높이에서잘랐을때의수평슬라이스에대응될수있습니다。덴드로그램의수평슬라이스에대응되는군집을원하는경우标准옵션을사용하여절단이불일치대신거리를기반으로해야함을지정하거나다음섹션에설명된대로직접군집개수를지정할수도있습니다。

임의군집지정하기

集群함수가데이터세트의자연적인분할로결정된군집을생성하도록하는대신,생성하려는군집개수를지정할수있습니다。

예를들어,集群함수가표본데이터세트를두군집으로분할하도록지정할수있습니다。이경우,集群함수는객체1,3,4,5를포함하는군집하나와객체2를포함하는또다른군집하나를생성합니다。

T =集群(Z,“maxclust”, 2)
T =5×12 1 2 2 2

集群함수가이러한군집을결정하는방법을시각화하는데도움이되도록다음그림에서는계층적군집트리의덴드로그램을보여줍니다。가로파선은덴드로그램의두선을교차합니다。이는“maxclust”2로설정하는것에해당합니다。이두선은객체를두군집으로분할합니다。왼쪽선아래에있는객체1,3,4,5가한군집에속하고,오른쪽선아래에있는객체2가또다른군집에속합니다。

반면,“maxclust”3.으로설정하면군집함수가객체4와객체5를한군집에그룹화하고,객체1과객체3을두번째군집에그룹화하고,객체2를세번째군집에그룹화합니다。다음명령은이를보여줍니다。

T =集群(Z,“maxclust”3)
T =5×12 3 2 1 1

이번에는集群함수가하위점에서계층을절단합니다。이는다음그림에서덴드로그램3개의선을교차하는가로선에해당합니다。

관련항목