
+
+Kmeans获取的结果(左) 和 GMM获取的结果(右)如下图所示
+
+
+
+从图中可见,大体上模型都将其正确聚类,在细微表现上有所差异
+
+计算其SC值,Kmeans = 0.497,GMM = 0.497,两者相差不大,Kmeans略优于GMM
+
+#### 数据中存在极端值
+
+当数据中存在极端值时,即考虑某个维度较大,进行相关实验,参数如下
+
+| 类别 | 均值 | 方差 | 点数 |
+| ---- | --------- | ------------------ | ---- |
+| 1 | (1, -700) | [[1, 0], [0, 100]] | 800 |
+| 2 | (1, -400) | [[1, 0], [0, 100]] | 800 |
+| 3 | (1, 0) | [[1, 0], [0, 1]] | 800 |
+
+该部分实际测试为测试极端值是否会影响模型计算,实际效果上,属于各类区别很大的情况
+
+无着色图例和真实图例如下
+
+
+
+Kmeans获取的结果(左) 和 GMM获取的结果(右)如下图所示
+
+
+
+计算其SC值,Kmeans = 0.973,GMM = 0.973,两者完全相同
+
+#### 高度重叠下的聚类结果
+
+以上我们已经测试了重叠不大,无重叠两组数据,进一步比较,我们将测试高度重叠下的聚类结果
+
+采用如下参数
+
+| 类别 | 均值 | 方差 | 点数 |
+| ---- | ------ | ---------------- | ---- |
+| 1 | (1, 1) | [[2, 0], [0, 2]] | 800 |
+| 2 | (1, 2) | [[2, 0], [0, 2]] | 800 |
+| 3 | (1, 0) | [[2, 0], [0, 2]] | 800 |
+
+结果如下图所示
+
+无着色图例和真实图例如下
+
+
+
+Kmeans获取的结果(左) 和 GMM获取的结果(右)如下图所示
+
+
+
+计算其SC值,Kmeans = 0.323,GMM = 0.310,Kmeans略优于GMM,我们同时计算了高度重叠下的原始数据SC,为-0.003,聚类器聚类结果相比较原始类别更优,但是在实际操作过程中,这样可能具有欺诈性,因此在使用聚类器时,应该首先对数据分布有所了解,而不应该直接使用聚类器尝试,否则可能得到“评价较优”的错误结果
+
+### GMM模型补充实验
+
+我们GMM在进行拟合时,初值使用了Kmeans获取,考虑到GMM的意义不止在于聚类,更在于能够估算叠加形式的高斯分布参数,我们进一步尝试了非高斯分布在GMM下的分类情况,仅作为补充了解,非高斯分布在GMM下会有怎样的表现
+
+
+
+
+
+Kmeans获取的结果(左) 和 GMM获取的结果(右)如下图所示
+
+
+
+计算其SC值,Kmeans = 0.677,GMM = 0.62009476,原数据的SC为-0.0348,对数正态会被GMM理解成高度重叠的高斯分布,并没有对实际效果产生过大的影响
+
+### 自动化聚类算法实验结果
+
+ClusteringAlgorithm自动化实现是基于Kmeans完成的,因此在以下实验中,我们仅关注K值选取,而不重复进行Kmeans聚类效果实验
+
+我们首先根据某一组参数,多轮测试基于ELBOW算法和Canopy算法的结果,真实值为K = 3,数据参数见表格,选取某一轮可视化如下图,加号为测试数据,有类别版本见右侧
+
+
+
+| 类别 | 均值 | 方差 | 点数 |
+| ---- | -------- | ---------------------- | ---- |
+| 1 | (1, 2) | [[73, 0], [0, 22]] | 800 |
+| 2 | (16, -5) | [[21.2, 0], [0, 32.1]] | 200 |
+| 3 | (10, 22) | [[10, 5], [5, 10]] | 1000 |
+
+| 轮数 | ELBOW自动获取的K | Canopy自动获取的K |
+| ---- | ---------------- | ----------------- |
+| 1 | 5 | 4 |
+| 2 | 4 | 4 |
+| 3 | 4 | 5 |
+| 4 | 3 | 5 |
+| 5 | 4 | 4 |
+
+可以看出,ELBOW和Canopy算法获得K都和真实值相差不大,较好的完成了自动化的工作,相比之下,ELBOW需要跑$\sqrt{n/2}$轮Kmeans,而Canopy算法只需要跑一轮即可,速度相对较快,ELBOW算法的波动情况更突出,能否取得最优结果取决于Kmeans过程中的随机初值,但总的来说完成情况较好
+
+### Canopy鲁棒性测试
+
+根据上文结果,ELBOW和Canopy算法获得的K值结果相差不大,且Canopy算法速度远快于ELBOW,但是由于依赖于阈值t1,t2,而在本次实验,阈值是对于同一维度数据完全相同的,因此增添鲁棒性测试。而ELBOW算法为暴力枚举K,以获得最好的结果,相对而言可以预想到鲁棒性较好,这里略去Kmeans的测试
+
+为保证阈值相同,笔者测试了多组二维数据,参数和结果如下表格所示,增添第三组几乎不相交组和第四组高度重叠组,测试实际效果
+
+| 轮数 | 均值 | 协方差 | 各类别点数 | 真实类别数 | 结果 |
+| ---- | ------------------------------ | ----------------------------------------------------------- | --------------- | ---------- | ---- |
+| 1 | [(1, -7), (1, -4), (1, 0)] | 单位阵 | [800, 800, 800] | 3 | 3 |
+| 2 | [(1, -7), (1, -4), (1, 0)] | [[10, 0],[0, 1]] [[1, 0], [0, 10]] [[2, 0], [6, 5]] | [800, 800, 800] | 3 | 3 |
+| 3 | [(10, 10), (-10, -10), (5, 0)] | 单位阵 | [800, 800, 800] | 3 | 3 |
+| 4 | [(1, 1), (1, 2), (1, 0)] | [[2, 0],[0, 2]] [[2, 0], [0, 2]] [[2, 0], [0, 2]] | [800, 800, 800] | 3 | 4 |
+
+高度重叠组和完全分离数据可视化如下:
+
+
+
+在高度重叠的数据下,Canopy方法仍表现出较好的性能,模型对分布鲁棒
+
+紧接着,我们测试模型对分布点数的鲁棒性,全部采取上表中的第一组参数,仅更改各类别点数
+
+| 轮数 | 点数 | 结果 |
+| ---- | ---------------- | ---- |
+| 1 | [80, 1000, 80] | 1 |
+| 2 | [200, 1000, 10] | 2 |
+| 3 | [200, 1000, 100] | 3 |
+
+可以看到点数对Canopy的影响较大,考虑到实际实现过程中,采用二八法则忽略少量离群点对于整体聚类数量的影响,在某个类别显著高于其他类时,其他类别的点将会被忽略,且距离越近忽略的可能性越大,这点也符合实际聚类时的特征
+
+进一步的,我们测试多类情况下的K值选取,[a,b]表示多组测试下,K值最终落入区间[a, b]
+
+| 轮数 | 均值 | 协方差 | 各类别点数 | 真实类别数 | 结果 |
+| ---- | ----------------------------------- | ------------------------------------------------------------ | --------------- | ---------- | ----- |
+| 1 | [(1, -7), (1, -4), (1, 0), (-2, 0)] | 单位阵 | [800, 800, 800] | 4 | [3,4] |
+| 2 | [(1, -7), (1, -4), (1, 0), (-2, 0)] | [[10, 0],[0, 1]] [[1, 0], [0, 10]] [[2, 0], [6, 5]] [[3, 0], [1, 5]] | [800, 800, 800] | 4 | [3,4] |
+
+#### 总结
+
+在这部分中,我们看到,Canopy的鲁棒性对于分布情况较好,在重叠程度较大和较小时都有较好的性能,但是对于各类点数鲁棒性较差,容易忽略一些少量点,这与实现方式相关,也符合预期
\ No newline at end of file
diff --git "a/assignment-3/submission/18307130116/img/GMM\345\237\272\347\241\200\345\256\236\351\252\214\347\273\223\346\236\234.png" "b/assignment-3/submission/18307130116/img/GMM\345\237\272\347\241\200\345\256\236\351\252\214\347\273\223\346\236\234.png"
new file mode 100644
index 0000000000000000000000000000000000000000..c369d0d437a06ee47a31c8aa28fc5b2360e17ea0
GIT binary patch
literal 37628
zcmeFYRaBf$@HRMTu;3aX_&|a?!QCMY5Zs;MPLRQ27~I_xAV_d`cMI+of(J;@VEg9x
z|Gt&$z1fRB2Y5L%Jzd>h)lXGDRTHVED)$oO6$S_ddZ{2UtquYq27*8cTWF}jE4(vn
zKY+(OcNrab4JRviFH=`bkcz3hv%QnMy{#Fwr=_c#t&<}+8#fy#3$=~AyR(}hJG;aG
zIe^W{)tY^M{oxNV3A(eqt{Vu1WBTtGp;WBI76eMPRgjj@^v*tg{NzWpxBeX0rAoU@
zEl~?fKn{WP1Xc!rC{RJDES-ni;MIH1ZZtmX@J}z?&z5yzJT82{Cq}U^pTGW76UF~l
ziKS!ytt+N{6ggW8!%ixxmL)T~zNG5Un<0zDcWzcK-*hL(-~I6sef=kpet+D+dUD*L
z>bL_;C<75kqY1^8G?Ow~LZSx#L8HkCLyZ6Tq_te{!$*mBQhH3O+%P@@+
zoMrPnNO2F&g?TE1VKCz1V|G+)eRRJ%A!=$)g-R*3WybOi`gt85=VUj>tZ(V-`DU_x
zb9_~P|2)qLeapix+Jg;|7j&URKE&Z!PezSW@dSVGGvYb^8BTv$e-un;>g#O8LCpip
z>{iL`46-9oStTctZxfI+WdhXu4{_YHBb|1IAK3lC)t^BsCRDX=!pZ67rh}$-eyGK&
zXrdM_c|xwidPqV*209%$OQED}TQSfE&|aU>xvMZWm@SAaLT?o$A%sSs*lg|W`hcpc
z3s6{3PDu$9$ Y4NY*#)q>ER2$DUFm<@hwi-1?s8=TYAnAC_+Z^6HmC4~#f`;4
zzqLd!{B2w3_q_?i6-UHA3J~yyHY#?bi@HqJ{F)ZD?9Cw9sm5%)V(xU&>I^uX$*t@v
zN5%8RopbJM{dvp(dQoEovH6RfKC^%nwq#k%fTG0+ysM&r@v{G#Td6cJv9LLNg*;p_
zqtnLWP(Mr(T3=X+KN*O=`NgRG`>N-@yDqToh5hXhG)?JCN<-3`5^x#da(c{j#T;JW(N%uybzX>AfeC~w+UldMR7@?F;kfKKT(;I2pH7i;eXx64ZKuFm&
zx5LTBZ?5PVpRXR->oV&wE&$MEk~3e%yuR)9F(_6-E>^&kQ$;17+AHv=di8pHt(U6N
z!Z?-P=$oVek>1^eXJ<$t>?#icn_)pUfd<`lZ?R8;Ey^T}q}4AkXHgMEd~~fQCyCgP
zeHYy5HJWPhGWQcjv+N}L@_4FygU3Jcup?>ev+}+bbbR?J
*QidqVJ(HKRx=;xqUbXJugG
5+U|G->++Q#_K8mc^q8#vIQt)D@d3y4jWCPt594-(v`7Ci_N+s*;Z8TRQ
zf3a0|TZD$BkPk1zj+v|6G^zhi2q@1xMbr?j${u`N?J1y7BsWD~6!`ugM_^dRUV_^o|
z@(4BjEcn6JNy~=2wZCw+{vB+j9$2-Pnw}YXKDO4QBp3db?MOqTavf`xBT#E@-00EO
zwvFoob{WsRK8kC9x{4$JL;teH5pF!SF066tvsu$+Vely{;CKJXE00t&Y)4VK7Q@~`
zvV`*m>qz|EOs6_hyGLVYfv~+M=a6U(NuDhxRPfN)Som=jPVVqNCN_B%G#D2}(9%fz
z{TpfRu(s5??Xg5t+Sae7x(_N>e_v9a;`Fiu$4%$zrJi*v;?mP<9x=^Bv-;gxSHh&&
z8*^+p4!=R&!|uGfJ%~61ge{BGBqm(dALS3@5*S44;kS2f
z`}yq1gSiMz
-B%f?MoO
zg(Z>m8<9By(ZeF;HtXT>HGf>WB#klyxOyC9@V#CZSkngc*<`HShw%By_VFg&JjB+p
zifadduj37?#)mz>Av!>h`Fy1yR=u2D&8910xR{xlNiKO?MwLMnvtj=Ar|!b;piqu$
zMESh1%|)6)6saLb`)_#8`;U(1MJ|Nz&e>*ApPG90PrTgmzdvpu&b&+CU*U_{c~)(i
zIAvWz0Up*cvXJafJd#><2$a+HxU&eaeNV*DzG;hZ1K%9ytkvXdvP%(xaSl-(;(|9f
z^SR8A&*|o3G|jivr^ea^1Z)(K_9Vk9K_}hz;bfaTDhiR>Um~p_8+Jmy7gUTI?p9A4
z
rGdp^U00cIHWXqRZXY9(!o@t9&?%(uXSV>jOz)>&|o)O|Sb&zPv5G=F7rmX-VWj
zywJa|=5h{}l=N-7ZoxKu{S*GIMSqk_n&s%-mO?BR7#k;ESdh(9@ma0&Je ~jM-`>@?7{KQsm%p2mLvnx%@o`$FUy7_ziw6*E#;BoV#gqY%2
z8M-e;88&@Ge-6~60*V6Zs}A$hjT^k;P+(QnE(5I)@W(Hk`ll)*MqU{Xl{n^QDW_Rj
zJ{>O@y4$Z~YX85aLHfX)o=bxGq;2&??D9(iS?qbg9jk6##%%I=XlvwuqFVQ{FTTk%
zQM+;?c1>bLK2eLmQ7)WqV6Jx~ZHe739VM6#=Y;lfo@Dr)sFub3BW(6fyrzRvu)q)G
z>sZJ5bv!y%P@TTjY#*vNrrJ^Av5<{Rvdn`I{B1
)FQDmp`|ubSPV}e0?zF$U09Nj-pul`K9gSi6BAF4KVixGp>_WT
z`=KPFI-M=%bdwM1ubvmxpy4w<{zMiXit7