一、聚类与EM算法
1、以聚类为例讲清楚EM
-- 首先EM算法应用于概率模型
-- 是概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量
-- 假设聚类模型的输出y=f(θ,z,x)
-- θ是模型参数,决定x的分布
-- x是输入数据,是可观察变量
-- z是隐含变量,即是类簇中心
那E步就是:
-- 假设一个初始的模型参数θ0,代入模型中,表示出初始的z
-- 通俗一点说就是假设出θ然后估计出初始的类簇中心
-- 比如聚类的逻辑就是开始假设k个聚类中心,计算每个点离这k个聚类中心的距离,把每个点归类到最近的k个聚类中心,然后更新之前k个中心的位置
M步就是:
-- 根据估计出来的z,代入模型中,通过最大化对数似然估计函数,得到θ1
J次迭代
-- 迭代的终止条件就是看θ有没有收敛,也即是θj 和θj+1有没有变化
公式角度理解EM
二、高斯混合模型
1、高斯混合模型的假设
-- 高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布)的
-- 当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。
2、高斯混合模型的核心思想
高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的
-- 在该假设下,每个单独的分模型都是标准高斯模型,其均值μi和方差Σi是待估计的参数
-- 此外,每个分模型都还有一个参数πi,可以理解为权重或生成数据的概率。--- 高斯混合模型的公式为:
3、高斯混合模型的数据生成过程通俗解释
可以这样理解数据的生成过程,假设一个 最简单的情况,即只有两个一维标准高斯分布的分模型N(0,1)和N(5,1),其权重分 别为0.7和0.3
-- 在生成第一个数据点时,先按照权重的比例,随机选择一个分布
-- 比如选择第一个高斯分布,接着从N(0,1)中生成一个点,如−0.5,便是第一个数据点
-- 在生成第二个数据点时,随机选择到第二个高斯分布N(5,1),生成了第二个点4.7
-- 如此循环执行,便生成出了所有的数据点。
4、高斯混合模型求解方法
直接通过最大似然估计来求解三个参数会出现的问题
-- K不是参数,K类似于K均值聚类中的K,表示类别数
-- 此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导
-- 可以用上一节已经介绍过的EM算法框架来求解该优化问题
-- EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值
-- 然后利用最优参数更新被固定的变量,进入下一个循环。
5、通俗解释高斯算法的聚类原理
也即是求出K个高斯模型,这一组高斯模型能将样本划为K类后,每个高斯模型都能很好的解释每一簇的样本分布规律
6、从原理上解释高斯算法的聚类原理
我们并不知道最佳的K个高斯分布的各自3个参数,也不知道每个 数据点究竟是哪个高斯分布生成的。所以每次循环时,先固定当前的高斯分布不变,获得每个数据点由各个高斯分布生成的概率。然后固定该生成概率不变,根据数据点和生成概率,获得一个组更佳的高斯分布。循环往复,直到参数的不再变化,或者变化非常小时,便得到了比较合理的一组高斯分布。
7、高斯混合模型相比K均值算法的相同点和优点
1)、相同点:
-- 都是可用于聚类的算法;
-- 都需要指定K值;
-- 都是使用EM算法来求解;
-- 都往往只能收敛于局部最优
2)、优点:
-- 可以给出一个样本属于某类的概率是多少
-- 不仅仅可以用于聚类,还可以用于概率密度的估计
-- 并且可以用于生成新的样本点。
三、自映射神经网络
1、回顾全连接神经网络中的神经元的概念
1)、回顾下全连接神经网络中某一层第j个神经元输入的计算方法:
-- 假设上一层有q个神经元,那当前层第j个神经元的输入:
2)、也即是每个神经元,有不同的w、b,最终神经网络的学习,也是体现于调整每一层的[wi]、[bi]参数
3)、对神经元具体含义的解释图:
2、自映射神经网络和K均值算法的区别
(1)K均值算法需要事先定下类的个数,也就是K的值。而自组织映射神经 网络则不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果 的实际簇数可能会小于神经元的个数。而K均值算法受K值设定的影响要更大一 些。
(2)K均值算法为每个输入数据找到一个最相似的类后,只更新这个类的参 数;自组织映射神经网络则会更新临近的节点。所以,K均值算法受noise data的影 响比较大,而自组织映射神经网络的准确性可能会比K均值算法低(因为也更新了 临近节点)。
(3)相比较而言,自组织映射神经网络的可视化比较好,而且具有优雅的拓 扑关系图
3、自映射神经网络结构原理
自组织映射神经网络本质上是一个两层的神经网络,包含输入层和输出层 (竞争层)
-- 输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。
-- 输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。
-- 训练时采用“竞争学习”的方式,每个输入的样例在输出层中找到一个和它最匹配的节点,称为**节点,也叫winning neuron;
-- 紧接着用随机梯度下降法更新**节点的参数;
-- 同时,和**节点临近的点也根据它们距离**节点的远近而适当地更新参数。
-- 这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现,即是近邻激励,远邻抑制。
-- 自组织映射神经网络的输出层节点是有拓扑关系的。
-- 这个拓扑关系依据需求确定
-- 如果想要一维的模型,那么隐藏节点可以是“一维线阵”;
-- 如果想要二维的拓扑关系,那么就行成一个“二维平面阵”
-- 如图:
4、自映射神经网络结构特点
在自组织映射神经网络中
-- 获胜的神经元将使得相关的各权重向更加有利于它竞争的方向调整,即以获胜神经元为中心,对近邻的神经元表现出兴奋性侧反馈,而对远邻的神经元表现出抑制性侧反馈
-- 近邻者互相激励,远邻者相互抑制。
-- 近邻和远邻均有一定的范围
-- 对更远邻的神经元则表现弱激励的作用。
-- 这种交互作用的方式以曲线可视化则类似于“墨西哥帽”,如图
-- 交互作用正负轴表示的是神经元之间相互激励和相互抑制的意思
5、怎么设计自组织映射神经网络并设定网络训练参数
1)、设定输出层神经元的数量
输出层神经元的数量和训练集样本的类别数相关
2)、设计输出层节点的排列
输出层的节点排列成哪种形式取决于实际应用的需要,排列形式应尽量直观 地反映出实际问题的物理意义。
-- 例如,对于一般的分类问题,一个输出节点能代 表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者旅行路径 类的问题,二维平面则比较直观。
3)、初始化权值
一种简单易行的方法是从训练集中随机抽 取m个输入样本作为初始权值
4)、设计拓扑领域
拓扑领域的设计原则是使领域不断缩小
-- 这样输出平面上相邻神经元对应的 权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生 最大响应时,其领域节点也能产生较大响应
-- 领域的形状可以是正方形、六边形 或者菱形。优势领域的大小用领域的半径表示,通常凭借经验来选择。
5)、设计学习率
6、聚类算法的评估
假设没有外部标签数据,如何评估两个聚类算法的优劣
1)、为了评估不同聚类算法的性能优劣,我们需要了解常见的数 据簇的特点
-- 以中心定义的数据簇:这类数据集合倾向于球形分布,通常中心被定义为质 心,即此数据簇中所有点的平均值。集合中的数据到中心的距离相比到其他 簇中心的距离更近。
-- 以密度定义的数据簇:这类数据集合呈现和周围数据簇明显不同的密度,或 稠密或稀疏。当数据簇不规则或互相盘绕,并且有噪声和离群点时,常常使用基于密度的簇定义。
-- 以连通定义的数据簇:这类数据集合中的数据点和数据点之间有连接关系, 整个数据簇表现为图结构。该定义对不规则形状或者缠绕的数据簇有效。
-- 以概念定义的数据簇:这类数据集合中的所有数据点具有某种共同性质。
2)、估计聚类趋势
如果数据是基本随机 的,那么聚类的结果也是毫无意义的
-- 我们可以观察聚类误差是否随聚类类别数 量的增加而单调变化,如果数据是基本随机的,即不存在非随机簇结构,那么聚 类误差随聚类类别数量增加而变化的幅度应该较不显著,并且也找不到一个合适 的K对应数据的真实簇数
-- 也可以应用霍普金斯统计量(Hopkins Statistic)来判断数据在空间上的随机性
3)、判定数据簇数
数据簇数的判定方法有很多,例如手肘法和Gap Statistic方法
4)、测定聚类质量
我们可以通过考察簇的分离情况和簇的紧 凑情况来评估聚类的效果
-- 轮廓系数:点p与同一簇中的其他点p’之间的平均距离
-- 均方根标准偏差:用来衡 量聚结果的同质性,即紧凑程度
-- R方:可以用来衡量聚类的差异度
-- 改进的HubertΓ统计:通过数据对的不一致性来评估聚类的差异
5)、人为构建不同数据集
-- 即是人工设计不同聚类特点的数据集以观察聚类算法在这些数据集上的效果,比如有以下的类别:
-- 观察聚类误差是否随聚类类别数量的增加而单调变化
-- 观察聚类误差对实际聚类结果的影响
-- 观察近邻数据簇的聚类准确性
-- 观察数据密度具有较大差异的数据簇的聚类效果
-- 样本数量具有较大差异的数据簇的聚类效果