机器学习sklearn-KNN

目录

1 概述

2 sklearn中的聚类算法 

2.1 聚类算法的模型评估指标

2.2 重要参数init & random_state & n_init 初始化质心

2.3 重要参数max_iter & tol:让迭代停下来

3 Kmeans做矢量量化


1 概述

机器学习当中,有相当一部分算法属于“ 无监督学习 ,无监督的算法在训练的时候只需要特征矩阵 X ,不需要标签。 PCA 降维算法就是无监督学习中的一种,聚类算法,也是无监督学习的代表算法之一。
聚类算法又叫做 无监督分类 ,其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们的业务 需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。
KMeans 算法将一组 N 个样本的特征矩阵 X 划分为 K 个无交集的簇,直观上来看是簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。
簇中所有数据的均值通常被称为这个簇的 质心 centroids )。在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。

2 sklearn中的聚类算法 

KMeans 算法中,簇的个数 K 是一个超参数,需要我们人为输入来确定。 KMeans 的核心任务就是根据我们设定好的K ,找出 K 个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。

那什么情况下,质心的位置会不再变化呢?当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。
我们认为, 被分在同一个簇中的数据是有相似性的,而 不同簇中的数据是不同的 ,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。
我们追求“ 簇内差异小,簇外差异大” 。而这个 差异 ,由 样本点到其所在簇的质心的距离 来衡量。
对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差异就越小。而距离的衡量方法有多种,令 表示簇中的一个样本点, 表示该簇中的质心,n 表示每个样本点中的特征数目, i 表示组成点 的每个特征,则该样本点到质心的距离可以由以下距离来度量:

 

如我们采用欧几里得距离,则一个簇中所有样本点到质心的距离的平方和为:

 

其中, m 为一个簇中样本的个数, j 是每个样本的编号。这个公式被称为 簇内平方和 cluster Sum of Square ),又叫做Inertia 。而将一个数据集中的所有簇的簇内平方和相加,就得到了整体平方和( Total Cluster Sum of Square),又叫做 total inertia Total Inertia 越小,代表着每个簇内样本越相似,聚类的效果就越好。 因此 KMeans 追求的是,求解能够让 Inertia 最小化的质心 。实际上,在质心不断变化不断迭代的过程中,总体平方和是越来越小的。我们可以使用数学来证明,当整体平方和最小的时候,质心就不再发生变化了。如此,K-Means 的求解过程,就变成了一个最优化问题。
损失函数本质是用来衡量模型的拟合效果的,只有有着求解参数需求的算法,才会有损失函数。Kmeans 不求解什么参数,它的模型本质也没有在拟合数据,而是在对数据进行一种探索。
K-Means 不存在什么损失函数,Inertia 更像是 Kmeans 的模型评估指标,而非损失函数。
重要参数 n_clusters
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值