create_class_gmm(运算符)
名称
create_class_gmm —创建用于分类的高斯混合模型
签名
create_class_gmm(:::NumDim,NumClasses,NumCenters,CovarType,Preprocessing,NumComponents,RandSeed:GMMHandle)
描述
create_class_gmm创建用于分类的高斯混合模型(GMM)。 NumDim指定要素空间的维数, NumClasses指定类的数量。GMM由每个类的NumCenters高斯中心组成。 NumCenters不仅可以是要使用的确切中心数目,而且可以根据参数的数目指定中心数目的上限和下限:
正好一个参数:
该参数确定将用于所有类的中心的确切数量。
正好两个参数:
第一个参数确定最少的中心数量,第二个参数确定所有类别的最大中心数量。
确切的参数:
或者,每个第一个参数确定每个类的最小中心数,每个第二个参数确定每个类的最大中心数。
当指定了上限和下限时,将借助最小消息长度标准(MML)确定最佳中心数。通常,我们建议以(太多)最多的中心和最少的预期中心数开始培训。
每个中心都由参数center ,协方差矩阵和混合系数来描述。这些参数是通过期望最大化(EM)算法从训练数据中计算得出的。如果使用了足够的中心,则GMM可以近似任意概率密度。协方差矩阵 的尺寸为NumDim x NumDim(如果使用预处理,则为NumComponents x NumComponents),并且是对称的。进一步的约束可以由CovarType给出 :
对于CovarType = 'spherical',是单位矩阵的标量倍数。中心密度函数p(x | j)为
对于CovarType = 'diag', 是对角矩阵。中心密度函数p(x | j)为
对于CovarType = 'full', 为正定矩阵。中心密度函数p(x | j)为
计算的复杂度从CovarType = '球面'超过CovarType = 'diag' 到CovarType = '满'。同时,中心的灵活性增加了。因此,一般而言, “球形”对于NumCenter所需的值要 大于“完整”值。
使用GMM的过程如下:首先,由create_class_gmm创建一个GMM 。然后,通过add_sample_class_gmm添加训练向量 ,然后可以使用write_samples_class_gmm将它们写入磁盘。使用train_class_gmm 确定分类器中心参数(如上定义)。此外,可以使用write_class_gmm保存它们,以供以后分类。
根据混合概率和中心密度函数p(x | j),可以通过以下公式计算概率密度函数p(x):
概率密度函数p(x)可以针对特征向量x用valuate_class_gmm进行评估。classify_class_gmm对p(x)进行排序,因此发现了特征向量中最可能的类。
参数Preprocessing和NumComponents可用于预处理训练数据并减小其尺寸。这些参数在操作符create_class_mlp的描述中进行了说明 。
create_class_gmm用随机数初始化中心的坐标。为确保使用train_class_gmm训练分类器的结果可再现,将随机数生成器的种子值传递 给RandSeed。
并行化
多线程类型:可重入(与非排他运算符并行运行)。
多线程作用域:全局(可以从任何线程调用)。
未经并行处理。
该运算符返回一个句柄。请注意,此句柄类型的实例的状态可以由特定的运算符更改,即使这些运算符将句柄用作输入参数也是如此。
参量
特征空间的维数。
默认值: 3
建议值: 1、2、3、4、5、8、10、15、20、30、40、50、60、70、80、90、100
限制:NumDim> = 1
用于转换特征向量的预处理类型。
默认值: “规范化”
值列表:“ canonical_variates”,“ none”,“ normalization”,“ principal_components”
预处理参数:变换后的特征数量(对于Preprocessing = 'none'和Preprocessing = 'normalization'忽略)。
默认值: 10
建议值: 1、2、3、4、5、8、10、15、20、30、40、50、60、70、80、90、100
限制:NumComponents> = 1
GMM手柄。
示例(HDevelop)
*高斯混合模型分类create_class_gmm(NumDim,NumClasses,[1,5],“完整”,“无”,\ NumComponents,42,GMMHandle)*添加训练数据对于J:= 0到NumData-1乘1 *功能:= [...] * ClassID:= [...] add_sample_class_gmm(GMMHandle,功能,ClassID,随机化)Endfor*训练GMMtrain_class_gmm(GMMHandle,100,0.001,'training',0.0001,Centers,Iter)*在“功能”中对未知数据进行分类classify_class_gmm(GMMHandle,功能,1,ID,概率,密度,KSigmaProb)clear_class_gmm(GMMHandle)
结果
如果参数有效,则运算符create_class_gmm 返回值2(H_MSG_TRUE)。如有必要,将引发异常。
可能的继任者
add_sample_class_gmm, add_samples_image_class_gmm
备择方案
create_class_mlp, create_class_svm, create_class_box
也可以看看
clear_class_gmm, train_class_gmm, classify_class_gmm, evaluate_class_gmm, classify_image_class_gmm
参考文献
Christopher M. Bishop:“用于模式识别的神经网络”;牛津大学出版社,牛津;1995年
。Mario AT Figueiredo:“有限混合模型的无监督学习”;IEEE Transactions on Pattern Analysis and Machine Intelligence,第一卷。24,第3号;2002年3月。

