✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。
📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记,方便大家参考学习。
💡专栏地址:https://blog.csdn.net/Newin2020/article/details/128125806
📝视频地址:吴恩达机器学习系列课程
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
现在我们要学的是目前为止第一个无监督算法,我们来看个例子来理解聚类算法中的K-Means算法。
现在我有一些样本,我想把它自动分为两类,那么我们先随机选取两个聚类中心。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkxZIIRe-1670115008324)(吴恩达机器学习.assets/image-20211115075106741.png)]](https://img.pic99.top/dingtaihe/202403/680908dd1a2029f.png)
然后就开始类内循环,每次循环都分两步,第一将离聚类中心近的点染成相同的颜色即分为己类,第二计算自己类别的样本均值,然后将聚类中心移动到均值点,再做相同的动作直至不能移动为止。
所以接下来看这个案例,先进行分类。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnH9JCZO-1670115008327)(吴恩达机器学习.assets/image-20211115075341920.png)]](https://img.pic99.top/dingtaihe/202403/6b35b7278f9d02.png)
然后移动聚类中心。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqIOQKpA-1670115008330)(吴恩达机器学习.assets/image-20211115075358943.png)]](https://img.pic99.top/dingtaihe/202403/5687fec1a1abdd.png)
然后再次分类。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dgdefU54-1670115008333)(吴恩达机器学习.assets/image-20211115075421449.png)]](https://img.pic99.top/dingtaihe/202403/13a3cbea0140678.png)
然后再移动聚类中心。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7SuMxzh4-1670115008335)(吴恩达机器学习.assets/image-20211115075508116.png)]](https://img.pic99.top/dingtaihe/202403/565ca1298c2d685.png)
然后再分类。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ww2qrHVj-1670115008340)(吴恩达机器学习.assets/image-20211115075525971.png)]](https://img.pic99.top/dingtaihe/202403/84f860a7a3c844c.png)
最后再移动聚类中心,得到最终位置。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qvYygri-1670115008343)(吴恩达机器学习.assets/image-20211115075540937.png)]](https://img.pic99.top/dingtaihe/202403/84fa0bd850eefd9.png)
接下来,我们看看具体步骤。
K值算法(K-means algorithm)
首先,我们要输入要分出的簇数K和训练集。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjSMSDVL-1670115008348)(吴恩达机器学习.assets/image-20211115080050880.png)]](https://img.pic99.top/dingtaihe/202403/2112764e035f89.png)
然后进行我们上面提到的步骤,先随机选取聚类中心,然后反复进行循环操作:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBjceUK8-1670115008349)(吴恩达机器学习.assets/image-20211115080646146.png)]](https://img.pic99.top/dingtaihe/202403/8d49b69cee4c5e7.png)
实际应用中,你可能会遇到一些不太好分类的情况,不会像左下图那样而是右下图T恤分类的例子,这时候分类的算法可能效果不会太好,不过K值算法仍然能分出三个类别,而设计师就可以通过分出的这三个类别观察这些样本的身高和体重,设计出相应适合大众人群的衣服大小。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OeCbsawz-1670115008351)(吴恩达机器学习.assets/image-20211115081312788.png)]](https://img.pic99.top/dingtaihe/202403/290d765870b3a3a.png)
这节课我们来讲讲K值算法的代价函数,有时候也称失真(Distortion)代价函数。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTbOLaKd-1670115008352)(吴恩达机器学习.assets/image-20211115082309753.png)]](https://img.pic99.top/dingtaihe/202403/63a05b03fa25304.png)
我们初始化时一般用的方法是,随机选取训练集中的样本直接作为聚类中心,所以有时候可能运气很好刚好分别选到两个簇中,但有时也会选到同个簇中,所以这可能会导致最终结果不相同。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Hrod0HB-1670115008354)(吴恩达机器学习.assets/image-20211115083926786.png)]](https://img.pic99.top/dingtaihe/202403/5a6e10523b960cf.png)
正如下面所示,随机初始化可能会使K值算法得到**局部最优解(Local optima)**而不是全局最优解。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Heop8rSi-1670115008356)(吴恩达机器学习.assets/image-20211115084435674.png)]](https://img.pic99.top/dingtaihe/202403/8a87036c5c8e2b1.png)
所以我们会进行多次随机初始化以寻求一个更好的结果,具体步骤如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9pAjQXE-1670115008357)(吴恩达机器学习.assets/image-20211115084806179.png)]](https://img.pic99.top/dingtaihe/202403/f5da7458fff0e2a.png)
假设我们进行100此循环,然后进行如上的步骤,每次循环都会计算一次J值,等循环结束后,我们就可以选取J值最小的那个例子去训练。而这种多次随机初始化的方法对于K比较小的时候十分有效,大概K在2-10的时候,但是当K十分大的时候,这种方法的效果就不会特别明显了。
我们在选取聚类数量的时候可能会比较纠结,因为样本是没有标签的,分界线会比较模糊,难以划分类别,接下来我们先介绍一种方法叫肘部方法(Elbow method)。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jB5awXvl-1670115008359)(吴恩达机器学习.assets/image-20211115090229324.png)]](https://img.pic99.top/dingtaihe/202403/2cb54227d5f573c.png)
我们可以通过画出J与K的图像观察曲线变化,如果想上图左侧曲线一样,就可以发现在K为3时是整个曲线的转折点,所以我们可以选取3作为聚类数量。但我们通常不用这种方法的原因是,一般曲线都会像上图右侧曲线那样,没有一个明确的转折点,就无法很好的选取聚类数量了。
还有一种方法,就是通过实际目的去选择聚类数量,还是用于市场分割设计T恤的那个例子。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8VQwTR6-1670115008361)(吴恩达机器学习.assets/image-20211115090910665.png)]](https://img.pic99.top/dingtaihe/202403/7e0eba101dfe3b5.png)
我们可以去思考我要如何设计T恤的大小才能满足顾客的需求,我可能会选择K=3即分为S,M,L也可能会选择K=5等等,总之我是通过最终对于市场需求这个目的来选择聚类的数量。