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

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

十一、聚类


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等等,总之我是通过最终对于市场需求这个目的来选择聚类的数量。


目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
50 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
98 1
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
35 1
|
3月前
|
机器学习/深度学习 算法 搜索推荐
机器学习中的聚类
**文章摘要:** 本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。
|
3月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
3月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
46 0
|
3月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
34 0
|
3月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
28 0
|
3月前
|
机器学习/深度学习 算法 搜索推荐
机器学习聚类算法
聚类算法是无监督学习技术,用于发现数据集中的自然群体,如用户画像、广告推荐等。常见的聚类算法包括K-Means,它基于距离分配样本至簇,适合球形分布;层次聚类则通过合并或分裂形成簇,能发现任意形状的簇;DBSCAN依据密度来聚类,对噪声鲁棒。KMeans API中`sklearn.cluster.KMeans(n_clusters=8)`用于指定簇的数量。评估聚类效果可使用轮廓系数、SSE等指标,Elbow方法帮助选择合适的K值。
|
22天前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结