随着互联网的不断发展,大数据技术被众多程序员所掌握,下面我们就一起来了解一下,数据分析中常见的几种算法都是如何运用的。
Kmeans是流行的,以及简单的用于挖掘数据潜在结构的机器学习算法之一。Kmeans的目标很简单:根据数据的均值,将数据划分为若干个簇。假定每个簇的均值可以很好地代表簇内的每一个观察值。
Kmeans算法
假定我们想把数据划分为k个簇,那么我们就需要找出这k个簇的k个中心。该如何定义,以及寻找这些中心呢
我们只需要求解方程:$min\sum_i^{N}\sum_j^KO_i^j||x_i-u_j||^2$,其中当观察点i为簇j的中心时$O_i^j=1$,否则为0.
我们正在寻找k个中心,使得各个簇内的点到簇中心的距离小。这是一个优化问题,但是上面的目标函数是非凸的,而且有一些变量是二元的,无法用传统的梯度下降法求解。
解决这个问题的方法如下:
随机初始化k个中心。
更新每个中心。新的中心为相应簇中的所有观察值的平均值。
更新收敛准则。
用R语言实现K-means算法
既然,我们已经有了伪代码算法,接下来我们可以用R语言实现Kmeans算法。我们创建5类数据,它们都服从2维高斯分布。
初始化簇中心
簇中心的初始化非常重要,它能够影响算法。因此,我们从数据集中随机选取K的点。
将每个点归为指定的簇
在每一次迭代中,每个点将会归为离它近的簇。我们可以使用欧几里得距离来计算每个点到每个中心的距离,并保存各个点到各个中心的近距离以及相应的簇中心。
簇中心更新
一旦每个观察值都被归为距离近的簇,每个簇的中心坐标就会被更新。簇中心的新坐标为相应簇中所有点的平均值。收敛准则为:当各个簇的中心停止变动时,算法就应该终止。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!