MATLABでクラスター分析をする


MATLABでクラスター分析をする著者:康賽安斯
近い
期の仕事関係はMatlabを使ってクラスター分析をします.クラスター解析とは、研究したデータサンプルを異なるカテゴリに分類することを目的とする.Matlabの統計ツールボックスは、対応する分析ツールを提供します.関連概念はネットで多くの資料を見つけることができます.ここでは二つのブログを紹介します.
 
pluskidの漫談Custeringシリーズ: http://blog.pluskid.org/?page_id=78
趙扶風の階層集合:http://hi.baidu.com/neuxxm01/item/6337bdb3b7f26c74254b0991
 
二つのブログは、クラスターアルゴリズムの分析に多くの傾向があります.クラスター分析はコンピュータ人工知能分野において無監督の学習に分類されます.ここではアルゴリズムを深くするつもりはありません.必要な読者は上の二人の牛人に相談してください.個人的には雑談シリーズの説明は分かりやすいと思いますが、趙さんは階段として利用できます.
 
本論文の例はpluskidの漫談シリーズに近い.Matlab自体はCluster分析の例を持っています.この例も古典的なクラスター分析事例である.IRISデータクラスター分析について.Mathworksのホームページで関連資料、住所を見つけることができます.
MatlabのCluster分析ツール:http://www.mathworks.cn/cn/help/stats/cluster-analysis.html
 
本文では,Matlabを用いたクラスター解析の方法を示すことに重点を置いている.質問があればメッセージを残してください.できるだけ答えます.
 
内容
どのようにMATLABを使ってクラスター分析を行うかを示す.
ランダムな二次元分布パターンを生成し、3つの中心K平均値クラスター層状クラスターK平均法を再起動する分類の結果を示すガウス混合分布モデルを用いたクラスター解析AIC準則で最適な分類数を探すどのようにMATLABを使ってクラスター分析を行うかを示します.
層状クラスター、K均一クラスター、ガウス混合モデルをそれぞれ用いて分析し、三つの結果を比較します.
ランダムな二次元分布パターンを生成し、3つの中心
%ガウス分布(正規分布)%を使ってランダムに3つの中心と標準偏差s=rng(5,v 5 normal)を生成します.mu=round((rand(3,2)-0.5)*19)+1sigma=round(rand(3,2)*40)/10+1;X=[mvnrnd(mu(1,:)、sigma(1,),...     mvnrnd(mu(2),sigma(2),300);     mvnrnd(mu(3,:)、sigma(3,:)、400);;作図P 1=figureclf;scator(X(:1)、X(:2)、10、'ro’);title('研究サンプルの散点分布図')
    用MATLAB做聚类分析_第1张图片
K均匀値クラスター
%距離は伝統的なヨーロッパ式の距離で、二つの種類に分けられます.P 2=figur;clf;[silh 2,h 2]=silhotte(X,cidx 2,'sqeuclidean);
輪郭図の上から見ると、第二類の結果がいいですが、第一類は一部のデータがよくないです.相当部分の点が0.8以下である.
用MATLAB做聚类分析_第2张图片
層状クラスター
eucD=pdist(X,'euclidean')clust Treeeuc=linkage(eucD、'average')cophenet;P 3=figureclf;[h,nodes]=  dendrogram(clust TreeEuc、20)set(gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[]
    dendrogram       ,    20 。            
用MATLAB做聚类分析_第3张图片
K平均法を再起動する
三つの種類に分ける
[cidx 3,cmeans 3,sumd 3,D 3]=kmeans(X,3,'dist','sqEuclidean')P 4=figur;clf;[silh 3,h 3]=silhotte(X,cidx 3,'sqeuclidean);
 
図では、前の結果よりやや改善されている.
分類の結果を示す
P 5=figureclf ptsmb={'bo',ro',go',mo',c+'};MarkFace={[0 1],[.8 0],[0.5 0]]hold on for i=1:3    clust=find(cidx 3=i)    plot(X(clust,1)、X(clust,2)、ptsmb{i}、'MarkSize'、3、'MarkFace'、MarkFace{i}、'Mark EdgeColor'、'black'    plot(cmeans 3(i,1)、cmeans 3(i,2)、ptsmb{i}、'MarkSize'、10、'MarkFace'、MarkFace{i}end Holdoff
用MATLAB做聚类分析_第4张图片
ガウス混合分布モデルを用いてクラスター分析を行う.
それぞれ分布図、熱エネルギー図、確率図で結果を示します.
%等高線options=statsset('Display'、'off')gm=gmdistriction.fit(X,3,'Options',options);P 6=figureclf scater(X(:1)、X(:2)、10、ro);Hold on ezcontour(@(x,y)pdf(gm,[x,y])、[-15]、[-15]、[-15]]Hold off P 7=figure;clf scater(X(:1)、X(:2)、10、ro);Hold on ezsurf(@(x,y)pdf(gm,[x,y])、[-15]、[-15]]、[-15]]hold off view(33,24)  熱エネルギー図cluster 1=(cidx 3==1)cluster 3=(cidx 3==2);%観察によって、K平均法の第二のクラスはgmの第三のクラスcluster 2=(cidx 3==3);%分類確率P=posterior(gm、X)を計算します.P 8=figureclf plot 3(X(cluster 1,1)、X(cluster 1,2)、P(cluster 1,1)、'r.'grid on;hold on plot 3(X(cluster 2,1)、X(cluster 2,2)、P(cluster 2,2)、'bo')plot 3(X(cluster 3,1)、X(cluster 3,2)、P(cluster 3,3)、'g*')legend('第1類'第2'colormap(9:72)(colorbar,'Component 1 Postior Probability')view(-45,20);第三の種類の点の部分の確率値は低いので、他のデータを分析する必要があるかもしれません.確率図P 9=figure;clf[~,order]=sort(P(:1);plot(1:size(X,1)、P(order,1)、r-'、1:size(X,1)、P(order,2)、'b-'、1:size(X,1)、P(order,3)、'y-');legend(''Cluster 1 Score''Cluster 2 Score''Cluster 3 Score'、'location'、'NW')ylabal('Cluster Member ship Score);xlabel('Point Ranking')
 
   
AIC準則を通じて最適な分類数を探す.
ガウス混合モデル法の最大の利点は,分類の良し悪しの基準を与えることである.
AIC=ゼロス(1,4)NlogL=AICGM=cell(1,4);for k=1:4    GM{k}=gmdistribution.fit(X,k);    AIC(k)=GM{k}.AIC;    NlogL(k)=GM{k}.NlogL;end[minAIC,numComponents]=min(AIC)
 AIC           : 3     AIC  : 8647.63
後記
(1)pluskidはK平均アルゴリズムの初値が結果に重要であると指摘していますが、実行中には類似の結果はまだ発見されていません.Mathworksはこのアルゴリズムを最適化したかもしれない.時間があればコードをよく検討して結果を載せます.