文章目录
- 一、总结K均值算法步骤
- 二、如何合理选择K值?
- 三、K均值算法的优缺点是什么?
- 四、如何对K均值算法进行调优?
- 五、EM算法解决什么问题?
- 六、EM算法流程是什么?
- 六、EM算法能保证收敛嘛?如果收敛能收敛到全局最大值嘛?
- 七、EM为什么不用牛顿法或者梯度下降?
- 八、高斯混合模型GMM的核心思想是什么?
- 九、高斯混合模型是如何迭代计算的?
- 十、高斯混合模型与K均值算法比较
- 十一、如何快速收敛数据量大的k-means算法?
插眼:
- 百面机器学习—1.特征工程
- 百面机器学习—2. 特征工程与模型评估要点总结
- 百面机器学习—3.逻辑回归与决策树要点总结
- 百面机器学习—模型基础知识
- 百面机器学习—要点总结
- 百面机器学习—与LDA要点总结
- 百面机器学习—均值算法、EM算法与高斯混合模型要点总结
- 百面机器学习—8.概率图模型之HMM模型
- 百面机器学习—9.前馈神经网络面试问题总结
- 百面机器学习—10.循环神经网络面试问题总结
- 百面机器学习—11.集成学习(GBDT、XGBoost)面试问题总结
- 百面机器学习—12.优化算法
一、总结K均值算法步骤
二、如何合理选择K值?
- 手肘法
我们可以尝试不同的K值,并将不同K值所对应的损失函数画成折线,横轴为K的取值,纵轴为误差
平方和所定义的损失函数。
由图可见,K值越大,距离和越小;并且,当K=3时,存在一个拐点,就像人的肘部一样;当K∈(1,3)时,曲线急速下降;当K>3时,曲线趋于平稳。手肘法认为拐点就是K的最佳值。 - Gap Statistic 方法
Gap(K)为随机样本的损失与实际样本的损失之差。试想实际样本对应的最佳簇数为K,那么实际样本的损失应该相对较小,随机样本损失与实际样本损失之差也相应地达到最大值,从而Gap(K)取得最大值所对应的K值就是最佳的簇数。
由图可见,当K=3时,Gap(K)取值最大,所以最佳的簇数是K=3。 - 不同的K值将输出不同的结果,我们可以通过考察簇的分离情况与簇的紧凑情况来评估聚类效果。即利用轮廓系数评估指标来选择适当K值。当然这种方式可能存在问题,因为K均值聚类效果易受初始点的影响,而K均值算法中会随机选取数据集的K个点作为初始聚类中心,不能确保不同K对应的初始聚类中心是一样的。
三、K均值算法的优缺点是什么?
优点:
- 对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数。
- 尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求。
缺点:
- 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合。
- K均值只能收敛到局部最优,效果受到初始值很大。
- 易受到噪点的影响。
- 无法很好解决数据簇分布类别差别巨大的情况
四、如何对K均值算法进行调优?
- 数据归一化和离群点处理
K均值聚类本质上是基于欧式距离度量的数据划分方法,所以需要进行归一化。离群点会对均值产生较大影响,导致中心偏移。 - 合理选择K值
- 采用核函数
K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。因此,引入核函数来进行优化。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高维的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。
五、EM算法解决什么问题?
EM算法解决的是在概率模型中含有无法观测的隐含变量情况下的参数估计问题。由于含有无法观测的隐含变量,因此无法直接用极大化对数似然函数得到模型分布的参数。
EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
EM算法原理总结
六、EM算法流程是什么?
六、EM算法能保证收敛嘛?如果收敛能收敛到全局最大值嘛?
EM算法原理总结
七、EM为什么不用牛顿法或者梯度下降?
EM求解的是带隐变量的参数估计问题,隐变量是隐含无法观察的,因此对似然函数进行求导是求不出来的
八、高斯混合模型GMM的核心思想是什么?
高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,每个单独的分模型都是标准高斯模型,其均值
u
i
u_i
ui和方差
∑
i
\sum_i
∑i是待估计的参数。此外,每个分模型都还有一个参数
π
i
π_i
πi可以理解为权重或生成数据的概率。高斯混合模型的公式为:
高斯混合模型是一个生成式模型。可以这样理解数据的生成过程,假设一个最简单的情况,即只有两个一维标准高斯分布的分模型N(O,1)和N(5,1),其权重分别为0.7和0.3。那么,在生成第一个数据点时,先按照权重的比例,随机选择一个分布,比如选择第一个高斯分布,接着从N(0,1)中生成一个点,如一0.5,便是第一个数据点。在生成第二个数据点时,随机选择到第二个高斯分布N(5,1),生成了第二个点4.7。如此循环执行,便生成出了所有的数据点。
九、高斯混合模型是如何迭代计算的?
给定一个类别数量K后,高斯混合模型的计算,便成了最佳的均值 u i u_i ui和方差 ∑ i \sum_i ∑i、权重 π i π_i πi的寻找,这类问题通常通过最大似然估计来求解。遗憾的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。我们使用EM算法框架来求解该问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。具体到高斯混合模型的求解,EM算法的迭代过程如下。
- 首先,初始随机选择各参数的值。然后,重复下述两步,直到收敛。
- E步骤:根据当前的参数,计算每个点由某个分模型生成的概率。
- M步骤:使用E步骤估计出的概率来改进每个分模型的均值,方差和权重。
也就是说,我们并不知道最佳的K个高斯分布的各自3个参数,也不知道每个数据点究竟是哪个高斯分布生成的。所以每次循环时,先固定当前的高斯分布不变,获得每个数据点由各个高斯分布生成的概率。然后固定该生成概率不变,根据数据点和生成概率,获得一个组更佳的高斯分布。循环往复,直到参数的不再变化,或者变化非常小时,便得到了一组比较合理的高斯分布。
十、高斯混合模型与K均值算法比较
高斯混合模型与K均值算法的相同点是,它们都是可用于聚类的算法;都需要指定K值;都是使用EM算法来求解;都往往只能收敛于局部最优。而它相比于K均值算法的优点是,可以给出一个样本属于某类的概率是多少;不仅仅可以用于聚类,还可以用于概率密度的估计;并且可以用于生成新的样本点。
十一、如何快速收敛数据量大的k-means算法?
Mini Batch Kmeans方法:
- 从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心
- 更新质心:与k均值算法相比,数据的更新是在每一个小的样本集上。对于每一个小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化是逐渐减小的,直到质心稳定或者达到指定的迭代次数,停止计算。
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!