我很困惑。我按照以下MATLAB代码测试了一个程序:
feature_train=[1 1 2 1.2 1 1 700 709 708 699 678]; No_of_Clusters = 2;No_of_Iterations = 10;[m,v,w]=gaussmix(feature_train,[],No_of_Iterations,No_of_Clusters);feature_ubm=[1000 1001 1002 1002 1000 1060 70 79 78 99 78 23 32 33 23 22 30]; No_of_Clusters = 3;No_of_Iterations = 10;[mubm,vubm,wubm]=gaussmix(feature_ubm,[],No_of_Iterations,No_of_Clusters);feature_test=[2 2 2.2 3 1 600 650 750 800 658];[lp_train,rp,kh,kp]=gaussmixp(feature_test,m,v,w); [lp_ubm,rp,kh,kp]=gaussmixp(feature_test,mubm,vubm,wubm);
然而,结果让我感到困惑,因为feature_test必须被分类到feature_train而不是feature_ubm中。正如你所看到的,feature_ubm的概率竟然比feature_train高!?!谁能帮我解释一下这是什么问题?这个问题是否与MATLAB中的gaussmip和gaussmix函数有关?
sum(lp_ubm)
ans =
-3.4108e+06
sum(lp_train)
ans =
-1.8658e+05
回答:
正如你所看到的,feature_ubm的概率竟然比feature_train高!?!
你看到的恰恰相反,尽管ubm的绝对值很大,但你考虑的是负数,并且
sum(lp_train) > sum(lp_ubm)
因此
P(test|train) > P(test|ubm)
所以你的测试数据被正确地分类为train,而不是ubm。