首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Expectation Maximization算法

主要内容

“本文主要介绍EM算法的核心思想、使用场景以及weka实现”

参考文章:https://www.jianshu.com/p/1121509ac1dc

一、简介

EM算法的框架如下:其核心就是“假设——估计——判断——估计”的循环迭代过程。EM算法最初是用于处理缺失数据,但现在已经发展为更新的数据添加技术,即通过在复杂问题中引入潜在变量而有效降低问题复杂度。通过EM算法的推导可知,引入的潜在变量其实就是模型参数的后验概率。

框架中的观测实例、隐变量可以参考下图理解:有两枚硬币,掷5轮,每轮掷5次。现在观测结果如下,要求投掷两枚硬币正面为上的概率P1,P2。那么我们可以这样理解:结果、统计表示观测实例,5轮中各轮投掷的硬币为隐变量(未知的,是一个5×1的向量),而P1,P2为模型参数。结合这个实例,相关概念就清晰多了,具体过程可以参考引用文章。

二、weka中EM工具简介

weka中的EM工具存在于cluster菜单下,说明EM比较常见的应用是聚类,甚至EM模块都是先进行kmeans聚类得出分类数目,然后再进行基于实例的分类的。(weka中EM工具的java源代码可以参考:https://www.cnblogs.com/likai198981/p/3170568.html)

从中可以看出,EM模块首先调用kmeans方法返回最佳聚类结果,然后根据聚类结果对每个实例按照属性值类型划分类别,最终返回实例分类及类分布的先验概率(类似于上面的P1,P2)。

三、基于weka的EM工具进行iris数据集分类

(一)获取iris数据并导入weka

1、iris数据获取方式见前一篇文章

(二)转换数据类型

1、去除index无效数据列

2、将target类别标签属性转换为nominal类型,使用choose——unsupervise——attribute——NumericToNominal工具(此处为便于展示,直接在导入前将target列中的0、1、2替换为A、B、C,故不需要转换)。

(三)选择合适的cluster mode

选择cluster菜单,有如下界面:

这里比较重要,要注意四种模式的特点:

Use training set:直接在训练集上进行测试

Supplied test set:允许用户自己指定测试集文件

Percentage split:留出一定比例的数据用于测试

Classes to clusters evaluation:基于类别标签进行模型评价

此处我们可以分别选择模式查看分类效果。

(四)调用EM工具,设置参数

此处需要设置的基本参数有:numClusters(聚类中心数目,可以根据已知标签的类型设置为3,设置其他数目时会导致模型误差增大)、numFolds可以设置为默认10(表示k-折交叉验证的折数)。其他基本都可以设置为默认值,设置不同的seed也可能改善模型的效果。

(五)结果解读

Use training set:

聚类数目为3,EM算法迭代1次,最终产生0,1,2三个类别,实例数目大概是1:1:1,对数似然为-2.2。

Percentage split:

用80%的数据做训练集,20%做测试集。最终30个测试实例中有1个可能是被错误分类了(因为这里采用split的test mode输出结果显示不够详细,所以说可能)。

Classes to clusters evaluation:用类别标签的指派正确与否来评价模型

从结果可以看出,cluster 0代表类别B,cluster 1代表类别A,cluster 2 代表类别C。通过混淆矩阵分析得出,有14个类别C的实例被错误地指派为类别B。直接用训练集作为测试集时,模型正确率为90.67%。

以上即是使用weka中EM工具进行聚类与类别预测的全部流程,错误之处欢迎指正。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180720G1S9R500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券