- Means:聚类算法就是涉及到给数据点分组,给定一组数据,我们可以使用聚类算法将每一个数据点划分成特定的组,为什么,因为在理论上,同一组的数据一般都具有相似的属性和特征,而不同组的数据中,往往要有高度不同的特征和属性,聚类始终无监督学习方法。
常用的算法有:K-Means,高斯混合模型(GMM),自组织映射神经网络(SOM)
算法流程:
- 首先该算法接收的是无标签的数据
- 它是一个迭代的过程,假设我们先要将数据聚成n类:
- 首先选择K个随机点,聚类中心
- 计算数据当中每个数据到聚类中心的距离,然后数据离哪个聚类中心近就归到哪一类。
- 计算出每个分组的平均值,然后将聚类中心调整到平均值的位置
- 重复步骤,一直迭代,直到聚类中心不在发生变化
由上述迭代过程可见:迭代分为了两个部分,分别是:循环计算样本到聚类中心的距离;循环的更新迭代聚类中心。
K-Means算法的损失函数是什么:
代表的含义就是,第一层的求和代表所有样本点距离和,外层的求和代表的就是聚类中心的求和,要将这个距离最小化。对u求偏导,是不是就变成了,每个聚类中心的一个平均值。
K-Means中的K值如何选择:
K<<m的,也就是说K的取值是远远小于样本数的。
具体的实现方式:肘部法则
K-Means算法的缺点:
1.因为每个样本都要计算以下到质心的距离,因此它的计算量以及占用内存都非常大。
改进方法:选择少量的K,对特征维度进行降维,使用分布式并行计算。
2.
K-Means算法对初始的质心有很大影响,很有可能就会陷入局部的最优
改良方法:二分K-Means算法,思想就是,在一堆数据集上,先进行一个二分,将数据分成两个组,然后计算这两个组的误差平方和,找出误差平方和大的那个簇然后在分,以此类推,最终直到簇数达到设置的K值。
GMM(高斯混合模型)
高斯呢指的就是高斯分布,高斯分布只是我们做的一个假设,就是说我们把数据假设为正态分布其实是最合理的,原因由中心极限定理得出。
中心极限定理两个实例:
有一个区间【0,1】我们从这个区间上随机的取到一个值的概率是相同的,随机的从其中选取20个值,如上图中的小绿点,大概就是这个样子,那么这跟正态分布有什么关系呢,我们接着看,对这20个点求个均值,然后画到直方图中,是不是就是一个值啊,随着我们求得均值逐渐增多,是这样的一个直方图:
颜色的深浅就代表的是样本均值的多少,很明显中间的多两边的少,更有意思的是我们通过数据的均值画出来就获得到一个正态分布。
结论:我们从均匀的数据中抽取的样本的均值是正态分布。
例子2:
有同学会说,选择的数据是均匀分布的数据,那么我们来看下图
我们在接着随机抽取20个样本,小绿点同样是随机选到的点,计算样本的均值,并绘制到直方图上:
我们可以清楚的发现,它们的均值仍然是正态分布。
结论:我们从指数分布上抽取数据,但最终得到的样本均值仍然是正态分布。
因此什么是中心极限定理啊:是不是就是说不管我的样本是属于一个什么样的分布,它们的均值反正都是服从正态分布的。那我们经常在算代价呀,或者说假设数据的分布啊,我们假设它们是服从正态分布的,这不过分吧。