【吴恩达机器学习笔记】十一、聚类

简介: 【吴恩达机器学习笔记】十一、聚类

十一、聚类


1. K-Means算法

现在我们要学的是目前为止第一个无监督算法,我们来看个例子来理解聚类算法中的K-Means算法。


现在我有一些样本,我想把它自动分为两类,那么我们先随机选取两个聚类中心。

105d8b518f9c44bfa053c69986925b0f.png



然后就开始类内循环,每次循环都分两步,第一将离聚类中心近的点染成相同的颜色即分为己类,第二计算自己类别的样本均值,然后将聚类中心移动到均值点,再做相同的动作直至不能移动为止。


所以接下来看这个案例,先进行分类。

bfb78328133347849efa2968ff951e39.png



然后移动聚类中心。

c369ca8c1c3040269bc20382807e5907.png



然后再次分类d24b9b6a41bc44beade7df1ef114b0dd.png




然后再移动聚类中心。


d1022a4e6cfb495b8e7926582368835f.png


然后再分类。

688f32d58c194f5a84ebf5c779be4f5f.png



最后再移动聚类中心,得到最终位置。

51b419a1049c40da80a517e31b163475.png



接下来,我们看看具体步骤。


K值算法(K-means algorithm)


首先,我们要输入要分出的簇数K和训练集。


1a757ce3fa8647b08a43e4af0acb2b79.png


然后进行我们上面提到的步骤,先随机选取聚类中心,然后反复进行循环操作:


对每个样本都计算其到每个聚类中心的距离,然后找出距离最小的那个,将其分类于它。

对每个类都计算类中所有样本的均值,然后将聚类中心移到均值处。


5ba54c3f027e483da7d8ecbe4af2e604.png

实际应用中,你可能会遇到一些不太好分类的情况,不会像左下图那样而是右下图T恤分类的例子,这时候分类的算法可能效果不会太好,不过K值算法仍然能分出三个类别,而设计师就可以通过分出的这三个类别观察这些样本的身高和体重,设计出相应适合大众人群的衣服大小。


b1f51162f8814f0d83e4135990a6d9f8.png


2. 优化目标

这节课我们来讲讲K值算法的代价函数,有时候也称失真(Distortion)代价函数。


c(i):表示x(i)所属的类别。

μk:表示聚类中心k。

μc(i):表示x(i)所属的类别,这个主要用于下面的计算中。


dae813592b4b493db15280215b003668.png

3. 随机初始化

我们初始化时一般用的方法是,随机选取训练集中的样本直接作为聚类中心,所以有时候可能运气很好刚好分别选到两个簇中,但有时也会选到同个簇中,所以这可能会导致最终结果不相同。


eb34688269bc48eba7d496510f4b5945.png


正如下面所示,随机初始化可能会使K值算法得到**局部最优解(Local optima)**而不是全局最优解。c776004ae373472096f086696d75d8c2.png




所以我们会进行多次随机初始化以寻求一个更好的结果,具体步骤如下:

22a47a7f67de4d8d919a55f84b1bacc0.png



假设我们进行100此循环,然后进行如上的步骤,每次循环都会计算一次J值,等循环结束后,我们就可以选取J值最小的那个例子去训练。而这种多次随机初始化的方法对于K比较小的时候十分有效,大概K在2-10的时候,但是当K十分大的时候,这种方法的效果就不会特别明显了。


4. 选取聚类数量

我们在选取聚类数量的时候可能会比较纠结,因为样本是没有标签的,分界线会比较模糊,难以划分类别,接下来我们先介绍一种方法叫肘部方法(Elbow method)。



f2089b92f58e416ca1bcf7268f78af2e.png

我们可以通过画出J与K的图像观察曲线变化,如果想上图左侧曲线一样,就可以发现在K为3时是整个曲线的转折点,所以我们可以选取3作为聚类数量。但我们通常不用这种方法的原因是,一般曲线都会像上图右侧曲线那样,没有一个明确的转折点,就无法很好的选取聚类数量了。


还有一种方法,就是通过实际目的去选择聚类数量,还是用于市场分割设计T恤的那个例子。


382b20d4abec40ca8828a60ff4da2f36.png


我们可以去思考我要如何设计T恤的大小才能满足顾客的需求,我可能会选择K=3即分为S,M,L也可能会选择K=5等等,总之我是通过最终对于市场需求这个目的来选择聚类的数量。


目录
相关文章
|
23天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
73 4
|
2月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
140 1
|
2月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
47 0
|
4月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
68 2
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
391 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
100 1
|
6月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
63 0
|
6月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
61 0
|
6月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
46 0
|
2天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
16 2