非监督学习--k-means

一、非监督学习与聚类算法

与监督学习不同,在非监督学习中,我们的数据没有附带任何标签,我们拿到的数据就是这样的:

从图中可以看出,样本点都是一样的,没有附带任何标签y。 

在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,找出数据集中的内在结构。

在上图中,数据可以分成两个点集(称为),一个能够区分这两个点集的算法,就被称为聚类算法。聚类算法是非监督学习算法中的一种。聚类算法的用途广泛,如下图所示:

 二、K-means(K-均值)算法--初理解

k-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据集聚类成不同的簇(组)。

K-均值是一个迭代算法,假设我们想要将数据聚类成 K 个簇,其步骤为:

1.选择 K 个随机的点,称为 聚类中心(cluster centroids);

2.计算每一个数据到 K 个中心点的距离,将每一个数据编号为 i ,i 为 距离数据最近的中心点编号为 i ,由此可以将数据集划分为K类;

3.计算每一组的平均值(特征向量相加,然后除以m,得到均值向量,即中心点),将该组所关联的中心点移到平均值的位置。

重复步骤2-3直至中心点不再变化。

下面是一个聚类示例:

 来表示聚类中心,用来存储与第 i 个实例数据最近的聚类中心的索引,K-均值算法的伪代码如下:

 算法分为两个步骤,第一个for循环是赋值步骤,即:对于每一个样例 i ,计算其应该属于的类。第二个for循环是聚类中心的移动,即:对于每一个类,重新计算该类的中心点。

K均值算法中的 K 值 是可以变动的,只是哪一个为最佳罢了。如下图所示的数据集包含身高和体重两项特征,利用K-均值算法可以将数据分为三类,用于帮助确定将要生产的T恤衫的三种尺寸。

当然,我们也可以将数据集分为五类,比如S、M、L、XL、XXL。这都是可以的,关键在于哪一个是最佳的,这里就需要一个标准。

三、K均值的目标函数

K-均值最小化问题,是最小化所有数据点与其关联的聚类中心点之间的距离之和,因此K-均值的代价函数(又称畸变函数Distortion function)为:

其中,代表与最近的聚类中心点。我们的优化目标便是找出使得代价函数最小的

我们再来看看K均值的迭代算法,我们知道,第一个循环是用于减小引起的代价,而第二个循环则是用于减小引起的代价。每一次迭代都是在减小代价函数,否则便是出现了错误。

四、K均值的随机初始化

还记得K均值算法的实现步骤吗,第一步便是随机初始化所有的聚类中心点,那么怎么选择K个中心点呢?下面是方法:

1. K < m,即聚类中心点的个数要小于所有训练集实例的数量。否则,将没有意义(试想一下,如果K > = m,那么还有聚类吗?);

2.随机选择K个训练实例作为K个聚类中心。

从第二点可以看出,如果随机选择的实例不咋滴,目标函数会停留在一个局部最小值,这也是K-均值存在的一个问题。如下图所示:

为了解决这个问题,我们通常需要多次运行K-均值算法(即在代码中最外面再嵌套一层循环),每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择目标代价函数最小的结果。当然,这种方法在K较小的时候,比如2到10,还是可行的,但是如果K较大,这么做也可能不会有明显的改善(顾不过来)。

五、选择聚类数

在第二节末尾中,我们提到,如何设置聚类数K,这需要一个标准。

首先,提一个方法,叫做“肘部法则”。我们需要改变K值,来计算相应的畸变函数J。如下图所示:

从图中可以看出,曲线非常像人的肘部,这就是“肘部法则”的由来。曲线有个非常明显的拐点,即K=3时,也就是肘关节。之后,畸变值就下降的很慢,那么我们就选择K=3。

但是,这只是一些数据集得到的曲线,还有很多数据集得到的曲线并不是像上图那么明显。如下:

从图中可以看出,不存在所谓的“肘部”,这也是我们考虑肘部法则来选择K值需要慎重的原因。

其实,没有所谓最好的选择聚类数的方法,我们通常是根虎不同的问题,人工进行选择。选择的时候,思考我们运用K-均值聚类的动机是什么,然后选择能最好服务于该目标的聚类数。比如,上面提到的T恤衫尺码划分,我们可以用T恤衫的销售量来作为评定标准,毕竟,我们做出划分的操作,是为了卖的更多更好。也就说,哪一种划分,使得我卖的更多,我就选那一种,也就是K值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值