| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 模糊C均值聚类算法 -> 正文阅读 |
|
[人工智能]模糊C均值聚类算法 |
??学习了一下模糊聚类中的模糊 C 均值聚类算法 (Fuzzy C-Means Clustering)。 ??Fuzzy 意为模糊,其中包括几种模糊的方式,这里使用的是最简单的方式,它是基于概率的概念。我们把每一个点属于每一类的概率值求出,它属于哪一类别的概率最大,我们就将其归于哪一类。 ??这里的 C 其实对应于 K-means 中的 K。其中,K-means 中的 K 决定类别数。同样的,C 也是决定类别数。 ??首先我们介绍该算法的目标函数。 ??当分类时,我们希望类内距离要越小越好(越集中越好),类与类之间的距离要越大越好。而 Fuzzy C-Means 只用到第一个概念 (类内距离要越小越好)。如果我们同时考虑类与类之间的距离,那么分类效果自然会得到提升。所以还有很多种不同的方式。 ??下图中,假设红星是
c
1
c_1
c1? 的中心,黄星是
c
2
c_2
c2? 的中心。 ??接下来,我们希望点
j
j
j 到
c
1
c_1
c1? 的距离越小越好,到
c
2
c_2
c2? 的距离越大越好。所以与 K-means 类似,我们需要先算距离。 ??那么,我们给两段距离分别称上相应的几率值。 ??从图中可以看到,几率值上面多了一个 m m m ,这个 m m m 就是 Fuzzifier m m m,用来控制每一段距离重要性的大小,如图上所示, u 1 j u_{1j} u1j? 应该比较大,比如 0.8, u 2 j u_{2j} u2j? 比较小,如 0.2。 ??如果
u
2
j
m
∥
x
j
?
c
2
∥
≈
0
u_{2j}^m \| x_j - c_2\| ≈ 0
u2jm?∥xj??c2?∥≈0,那么就会忽略
x
j
x_j
xj? 到
c
2
c_2
c2? 的距离,只会算
u
1
j
m
∥
x
j
?
c
1
∥
u_{1j}^m \| x_j - c_1\|
u1jm?∥xj??c1?∥ 。 ??以此类推,得到: ∑ j = 1 N u 2 j m ∥ x j ? c 2 ∥ 2 = u 2 , 1 m ∥ x 1 ? c 2 ∥ 2 + u 2 , 2 m ∥ x 2 ? c 2 ∥ 2 + ? + u 2 , N m ∥ x N ? c 2 ∥ 2 \sum_{j=1}^N u_{2j}^m\| x_j - c_2\|^2 = u_{2,1}^m\| x_1 - c_2\|^2 + u_{2,2}^m\| x_2 - c_2\|^2 + \dots + u_{2,N}^m\| x_N - c_2\|^2 j=1∑N?u2jm?∥xj??c2?∥2=u2,1m?∥x1??c2?∥2+u2,2m?∥x2??c2?∥2+?+u2,Nm?∥xN??c2?∥2 ??同样也希望距离和越小越好,那么该栗子的损失函数就是希望
∑
j
=
1
N
u
1
j
m
∥
x
j
?
c
1
∥
2
\sum_{j=1}^N u_{1j}^m\| x_j - c_1\|^2
∑j=1N?u1jm?∥xj??c1?∥2 和
∑
j
=
1
N
u
2
j
m
∥
x
j
?
c
2
∥
2
\sum_{j=1}^N u_{2j}^m\| x_j - c_2\|^2
∑j=1N?u2jm?∥xj??c2?∥2 越小越好,合为一个式子得到: ??其中,
c
c
c 和
u
u
u 是未知的。并且满足如下式子: ??将损失函数推广到一般情况为: ??举个例子,假设我们有如下4个点,需要将其分为两类。 ??假设我们知道了第一类的中心为
c
1
c_1
c1?,第二类中心为
c
2
c_2
c2?。那么我们计算损失为: ??代入距离为: ??反过来,当我们知道了
U
U
U 值,那么最后
J
J
J 只与
c
c
c 相关。 ??我们的损失函数中的未知量为
c
c
c 和
U
U
U,那么怎么求解以下这种有限制条件的最小值问题,通常的解决方法是使用拉格朗日进行求解。 ??我们的每一个限制条件都需要一个拉格朗日因子。如下图所示,对于点
x
1
x_1
x1?,有隶属值
u
11
u_{11}
u11? 和
u
21
u_{21}
u21?,满足条件
u
11
+
u
21
=
1
u_{11} + u_{21} = 1
u11?+u21?=1,这里的限制条件用一个拉格朗日因子
λ
1
\lambda_1
λ1? 表示;同样的对于点 点
x
2
x_2
x2?,有隶属值
u
12
u_{12}
u12? 和
u
22
u_{22}
u22?,满足条件
u
12
+
u
22
=
1
u_{12} + u_{22} = 1
u12?+u22?=1,这里的限制条件用一个拉格朗日因子
λ
2
\lambda_2
λ2? 表示,依此类推,例子中共有10个点,就有10个限制条件,相应的有10个拉格朗日因子。 ??其中 ∑ i = 1 K u i 1 ? 1 \sum_{i=1}^K u_{i1} - 1 ∑i=1K?ui1??1 是限制条件 ∑ i = 1 K u i 1 = 1 \sum_{i=1}^K u_{i1} =1 ∑i=1K?ui1?=1 移项所得。 ??我们将
L
\mathcal{L}
L 第一部分展开,可得: ??那么 ??但是,式子中仍有 λ j \lambda_j λj? 是未知的,但是我们还有一个限制条件 ∑ i = 1 K u i j = 1 \sum_{i=1}^K u_{ij} = 1 ∑i=1K?uij?=1. ??将其代入可以得: ??将得到的 $ (\frac{\lambda_j}{m})^{\frac{1}{m-1}} $ 代入
u
i
j
u_{ij}
uij? 可得: ??现在还是以最开始的栗子为例,现有一点
x
j
x_j
xj? 到
c
1
c_1
c1? 的距离为
∥
x
j
?
c
1
∥
2
\| x_j - c_1\|^2
∥xj??c1?∥2,到
c
2
c_2
c2? 的距离为
∥
x
j
?
c
2
∥
2
\| x_j - c_2\|^2
∥xj??c2?∥2,
x
j
x_j
xj? 应该属于距离近的一类。 ??以上就是
L
\mathcal{L}
L 对
u
i
j
u_{ij}
uij? 微分的推导过程。那么
L
\mathcal{L}
L 对
c
i
c_i
ci? 微分类似。 那么该算法的流程大致如下;
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 17:45:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |