聚類模型的定義:
“物以類聚,人以群分”,所謂的聚類,就是將樣本劃分為由類似的對(duì)象組成的多個(gè)類的過(guò)程。聚類后,我們可以更加準(zhǔn)確的在每個(gè)類中單獨(dú)使用統(tǒng)計(jì)模型進(jìn)行估計(jì),分析或預(yù)測(cè);也可以探究不同類之間的相關(guān)性和主要差異。
聚類和分類的區(qū)別:分類是已知類別的,聚類未知。
?K-means聚類算法
流程:
- 指定劃分的簇的k值(類的個(gè)數(shù))
- 隨機(jī)選擇k個(gè)數(shù)據(jù)作為哦初始聚類中心(不一定是樣本點(diǎn))
- 將其余數(shù)據(jù)劃分到距離較近的聚類中心
- 調(diào)整新類,將中心更新為已劃分?jǐn)?shù)據(jù)的中心
- 重復(fù)3,4步檢查中心是否收斂(不變),如果收斂或達(dá)到迭代次數(shù)使停止循環(huán)。(一般循迭代次數(shù)設(shè)置為10次)
-
結(jié)束。
?
圖形結(jié)合理解:
?
我們可以登錄網(wǎng)站自行體驗(yàn):Visualizing K-Means Clustering
如果使自己添加類的位置可以選擇I‘ll Choose
?
選擇自己喜歡的圖形:
?
選擇圖形后添加類的位置然后一直點(diǎn)GO/Update Centroids直至不想不再發(fā)生變化。
?
算法流程圖:
?
K_means算法的評(píng)價(jià):
優(yōu)點(diǎn):快,高效率
缺點(diǎn):需要給出k;對(duì)聚類中心敏感,聚類中心的位置不同結(jié)果不同;對(duì)孤立點(diǎn)敏感,孤立點(diǎn)對(duì)中心和其余樣本帶點(diǎn)的更新影響較大。
?
K-means算法—Spss操作:
?
聚類數(shù)根據(jù)自己想要分類的層次決定。
這里我們分為了高消費(fèi),中消費(fèi),低消費(fèi)三類
?
得出結(jié)果
?
K-means算法的討論:
需要自己給定k,當(dāng)變量量綱不同的時(shí)候需要去量綱化。
Spss中去量綱化操作:
分析->描述統(tǒng)計(jì)->描述->導(dǎo)入需要去量綱化變量->√將標(biāo)準(zhǔn)化值另存為變量。
?
?
得到去量綱話Z-name
?
因?yàn)楸敬蔚睦幼兞繂挝幌嗤恍枰チ烤V化,為了方便就拿此例子的數(shù)據(jù)去量綱化得到的結(jié)果有些輕微差
?
系統(tǒng)(層次)模型
簡(jiǎn)介:
?
過(guò)程及原理簡(jiǎn)介:
?
?
樣品與樣品之間的常用距離:
?
指標(biāo)與指標(biāo)之間的常用距離:
?
類與類之間的常用距離以及計(jì)算方法:
?
?
?
?
?
?
案例:
?
?
得到聚類的譜系圖:
?
我們想要將數(shù)據(jù)分成幾類通過(guò)對(duì)譜系圖作垂線可得到明顯的類組如在G9后面的線作垂線得到G1,2,4,5,6,7,8為一組,G3為一組一共兩組。
?
?
注意問(wèn)題:
?
系統(tǒng)聚類在SPSS中的操作:
分析-分類-系統(tǒng)聚類-導(dǎo)入數(shù)據(jù)-圖-√譜系圖
由冰柱圖聚類譜系圖等。
?
如何確定類的個(gè)數(shù):利用Excel中的折線圖,在折線趨緩的時(shí)候找對(duì)應(yīng)的橫坐標(biāo)即是合適的分類個(gè)數(shù)。
操作:
1.復(fù)制stata中得到的系數(shù)-excel-排序-降序
2.插入-推薦的圖標(biāo)-散點(diǎn)圖-調(diào)整合適的x軸坐標(biāo)范圍
3.觀察下降趨勢(shì)趨緩的地方對(duì)應(yīng)的x可作為分類的個(gè)數(shù)。
STATA?????????????????????? EXCEL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
????? ? ? ??
?
?
確定K后保存聚類結(jié)果并畫圖
- 通過(guò)excel的三點(diǎn)分析確定k
分析-分類-系統(tǒng)聚類-保存-單個(gè)解-聚類數(shù)
- 作圖:
圖形-圖標(biāo)構(gòu)建-散點(diǎn)圖/點(diǎn)圖-2個(gè)指標(biāo)(第二個(gè))上拖,3個(gè)指標(biāo)(第四個(gè))上拖-輸入x軸,y軸-設(shè)置顏色(聚類)-組-點(diǎn)id標(biāo)簽(將省份拖入)-修改圖的背景,散點(diǎn)等顏色(雙擊編輯)
?
圖二是三維的
?
?
編輯界面:
?
DBSCAN算法
基本概念:
可以理解為流感,按一定的半徑不斷蔓延傳播。
DBSCAN的優(yōu)缺點(diǎn):
?
指標(biāo)只有很少比如只有兩個(gè)的時(shí)候較為合適,DSCAN的制圖對(duì)半徑,和圓內(nèi)所能容納最大聚類個(gè)數(shù)非常敏感,稍微修改就有很大的顯著差異。
?
DBSACN的制圖網(wǎng)站:Visualizing DBSCAN Clustering (naftaliharris.com)
演示:
半徑為1.2,最少容納點(diǎn)為4:
?
半徑為0.8,最少容納點(diǎn)為4:
?
DBSACN的偽代碼:
?
Matlab中的DBSACN代碼:
IDX中的數(shù)據(jù)就是每個(gè)數(shù)據(jù)的分類,為0則是孤立點(diǎn)。
旁邊則是DBSACN用matlab畫出的圖形。
?
Matlab代碼:
主函數(shù):
clc;
clear;
close all;
%% Load Data
load mydata;%這里的數(shù)據(jù)跟隨自己需要聚類的數(shù)據(jù)可以改變,后面的X是博主調(diào)試時(shí)使用的數(shù)據(jù)名可以自己改變。
%% Run DBSCAN Clustering Algorithm
epsilon=0.5;
MinPts=10;
IDX=DBSCAN(X,epsilon,MinPts);
%% Plot Results
% 如果只要兩個(gè)指標(biāo)的話就可以畫圖啦
PlotClusterinResult(X, IDX);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
DBSCAN函數(shù):?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-642893.html
function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)
C=0;
n=size(X,1);
IDX=zeros(n,1); % 初始化全部為0,即全部為噪音點(diǎn)
D=pdist2(X,X);
visited=false(n,1);
isnoise=false(n,1);
for i=1:n
if ~visited(i)
visited(i)=true;
Neighbors=RegionQuery(i);
if numel(Neighbors)<MinPts
% X(i,:) is NOISE
isnoise(i)=true;
else
C=C+1;
ExpandCluster(i,Neighbors,C);
end
end
end
function ExpandCluster(i,Neighbors,C)
IDX(i)=C;
k = 1;
while true
j = Neighbors(k);
if ~visited(j)
visited(j)=true;
Neighbors2=RegionQuery(j);
if numel(Neighbors2)>=MinPts
Neighbors=[Neighbors Neighbors2]; %#ok
end
end
if IDX(j)==0
IDX(j)=C;
end
k = k + 1;
if k > numel(Neighbors)
break;
end
end
end
function Neighbors=RegionQuery(i)
Neighbors=find(D(i,:)<=epsilon);
end
end
?DBSCAN制圖函數(shù):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-642893.html
function PlotClusterinResult(X, IDX)
k=max(IDX);
Colors=hsv(k);
Legends = {};
for i=0:k
Xi=X(IDX==i,:);
if i~=0
Style = 'x';
MarkerSize = 8;
Color = Colors(i,:);
Legends{end+1} = ['Cluster #' num2str(i)];
else
Style = 'o';
MarkerSize = 6;
Color = [0 0 0];
if ~isempty(Xi)
Legends{end+1} = 'Noise';
end
end
if ~isempty(Xi)
plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
end
hold on;
end
hold off;
axis equal;
grid on;
legend(Legends);
legend('Location', 'NorthEastOutside');
end
到了這里,關(guān)于【數(shù)學(xué)建?!?-聚類模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!