[机器学习]吴恩达机器学习-无监督学习-聚类

无监督学习

机器学习常分为监督学习与无监督学习

监督学习中,样本本身带有标签

如图的回归算法,每个数据都带有标签

在这里插入图片描述
而非监督学习中,作为标签的y(i)遍不复存在,模型的输入只有X

如下图所示:

在这里插入图片描述

聚类

在没有标签的数据中,我们总希望,能有一种算法,将相似特征的数据分到一起,给不同的数据归归类,从而在数据中找到规律或者其他可以利用的价值,聚类便是做这件事的

聚类中有一个很经典的算法 K-means algorithm (k均值算法)

接下来我们就来了解了解这个算法具体的实现过程

K-means

首先,拿到了一个不含标签的数据集,可视化之后,我们给数据集中任取两个点,并一个用红色一个用蓝色
在这里插入图片描述

接下来,测量各个数据到这两个点的距离,如果更靠近红色,我们就将点染成红色

我们会得到以下情况

在这里插入图片描述
接下来,我们要将我们刚开始生成的点进行移动,

我们分别取红色的点和蓝色的点在这个图上的平均值,将红色的×和蓝色的×分别移到对应的位置

我们会得到以下的情况

在这里插入图片描述
此时,重复第一步,将更靠近红色×的点染成红色,将更靠近蓝色×的点染成蓝色

会得到以下情况
在这里插入图片描述

再继续移动红色和蓝色的×,

在这里插入图片描述
再进行染色和移动,最终会得到以下结果

在这里插入图片描述
以上便是k均值算法的基本运行流程

这里注意,在k均值算法中,我们不再给各个数据的最前面添加 1 了,所以x(i)的维度为n(n为特征个数,不再有x0(i)=1了)

以下为其基本运行流程的总结

在这里插入图片描述

c(i)表示x(i)被分到的位置

例如,我们有K个分类,给各个分类编号1,2,3,4,5,6…

c(3) = 4 就表示 x(3)这个数据被分到了第4类

μk 则表示第k个聚类中心的位置,每一轮之后都会更新

在这里插入图片描述

随机初始化

在k均值算法中,我们需要初始化各个聚类中心的位置,我们基本的做法,是随机从数据集中挑出K个,使

μ(i) = x (i)

但是这样子做,结果受初始化选择的影响特别大,不同的初始化会导致完全不同的分类结果

在这里插入图片描述
在这里插入图片描述
上图中,因为不同的初始化结果,得到了三种完全不同的分类结果

那么,我们如何更大几率地得到一个较好的结果呢?

我们的做法就是,尝试多次初始化结果,并取其代价函数最小的那个选项

基本流程如下

在这里插入图片描述
需要注意的是,这种方法一般对K的值较小的情况效果比较好(一般2-10之间),而对于K的值非常大

的情况,随机初始化的次数多少对其结果的影响并不特别大

如何选择K的值?

刚刚说了这么多,但是还未提过K的值应该如何选择

大部分情况下,我们在将数据可视化之后,可以人为的给选择K的数值,

一个数据集能分为几类,其实是一个非常主观的问题,如下图

我可以说这里分为四类比较好,也可以说分为两类,其实并没有一个百分百的标准
在这里插入图片描述

这里我们介绍一种方法,其被称为“肘部法则

我们画出代价函数关于K的数量的函数图像

在左图中,当K = 3 时,我们很明显的感觉到,代价函数岁K的变化的剧烈程度一下子下降了,而这个点像一个转折一样,也正如人手臂的手肘处,我们经常挑选手肘处作为我们聚类算法中K的值
在这里插入图片描述
但是,我们并不能期望手肘法则在任何情况下都有很好的表现,因为更多时候,函数图像可能偏向于

右图这种更加光滑的曲线

如果手肘法则无法给出一个令你满意的结果,那么我们也可以根据问题的实际情况去选择一个合适的K

例如,如果你是一个服装店的老板,要为自己的新款衣服设计尺寸,则可以选择,s, m,l 三种尺寸,此时K就等于3,当然也可以有更多尺寸,此时K就跟着变化

在这里插入图片描述
此时,就需要你动用你灵活的大脑,为实际问题选择一个合适的K,从而得到更加满意的效果


欢迎友善的交流与指正

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值