使用FCM进行编码解码
文章目录
- 1 FCM到底是什么?
- 2 为什么论文里要用FCM?
- 3 FCM输出的两个核心结果是什么?
- 1. prototype / cluster centers
- 2. membership matrix
- 4 FCM到底在优化什么?
- 5 FCM是怎么一步一步算出来的?
- 第一步:先定簇数 c
- 第二步:初始化隶属度矩阵
- 第三步:根据隶属度更新聚类中心
- 第四步:根据新的中心更新隶属度
- 第五步:反复迭代直到收敛
- 6 为什么这叫“编码”?
- 7 为什么还能“解码”?
- 8 解码公式到底是什么意思?
- 9 为什么解码后不可能和原始数据完全一样?
- 10 任务总结
- 原始数据
- 第一步:FCM 粒化 / 编码
- 第二步:解粒化 / 解码
- 第三步:评价效果
- 数学公式
- 1 FCM目标函数
- 2 编码
- 3 解码
- 4 重构误差
1 FCM到底是什么?
FCM 的全名是 Fuzzy C-Means,中文一般叫模糊 C 均值聚类。它是一种聚类算法,但和普通聚类不一样:
普通聚类:一个点只属于一个类。 FCM:一个点可以同时属于多个类,只是“属于的程度”不同。2 为什么论文里要用FCM?
FCM 是最常见的 fuzzy clustering 方法之一,因为它可以生成可解释的 fuzzy sets,很适合拿来做 information granules。
运行完 FCM 后,会得到两样关键东西:
prototype:也就是聚类中心、原型 membership matrix:也就是隶属度矩阵。3 FCM输出的两个核心结果是什么?
1. prototype / cluster centers
2. membership matrix
4 FCM到底在优化什么?
FCM 的目标函数:
FCM 想找到一组最合适的中心和隶属度,让每个点和各个中心之间的“加权距离总和”尽可能小。
FCM 的目标,就是一边调整聚类中心,一边调整每个点对各中心的隶属度,让整体表示最合理。
5 FCM是怎么一步一步算出来的?
第一步:先定簇数 c
论文在二维重构图实验里就用了不同的c,并展示了 c 增加时重构误差会下降。
第二步:初始化隶属度矩阵
先给每个点随机分一组隶属度,比如一个点对 3 个簇:[0.5,0.3,0.2] 总和是 1。
第三步:根据隶属度更新聚类中心
哪个点对某个簇的隶属度高,它对这个簇中心的影响就更大。所以簇中心本质上是一个加权平均。
第四步:根据新的中心更新隶属度
如果某个点离某个中心更近,那它对这个中心的隶属度就变大;离得远,隶属度就变小。
第五步:反复迭代直到收敛
更新中心 更新隶属度 再更新中心 再更新隶属度 ...6 为什么这叫“编码”?
编码 = 粒化 = 把原始数据表示成模糊信息粒
论文直接把 granulation 写成一个从原始空间到 [0,1]c的映射;也就是说,一个原始样本会被表示成一个长度为 c 的隶属度向量。
7 为什么还能“解码”?
因为编码后你并没有把信息完全丢掉。
8 解码公式到底是什么意思?
如果一个点几乎只属于某个中心,那重构点就很接近那个中心 如果一个点同时属于多个中心,那重构点就是多个中心之间的折中位置9 为什么解码后不可能和原始数据完全一样?
解粒化会产生 reconstruction error,也就是重构误差。
10 任务总结
原始数据
第一步:FCM 粒化 / 编码
第二步:解粒化 / 解码
第三步:评价效果
第一句: FCM 是模糊聚类,不是硬聚类。
第二句: FCM 的输出有两个核心:聚类中心 + 隶属度矩阵。
第三句: 编码就是把样本表示成“对各个中心的隶属度向量”。
第四句: 解码就是用“中心 + 隶属度”把样本重构回来。
数学公式
1 FCM目标函数
FCM 通过最小化下面这个目标函数,得到原型和隶属度矩阵:
2 编码
3 解码
4 重构误差
数值越小,说明重构越好。
