首页 > 编程语言 >机器学习-无监督机器学习-kmeans衍生的算法-18

机器学习-无监督机器学习-kmeans衍生的算法-18

时间:2023-12-23 15:44:07浏览次数:30  
标签:机器 Means 18 样本 kmeans 距离 KMeans 算法 中心点

目录

1. k-Medoids

之前的kmeans算法 对于异常点数据特别敏感,更新中心点的时候,是对于该簇的所有样本点求平均,这种方式对于异常样本特别敏感,

kmedoids算法克服这个问题,实现方式所有属于该簇的样本点每一个维度 取中位数 这样得到新的中心点 就对于异常点没那么敏感了

总结:更新中心点的方法 由求平均改成求中位数

2. 二分KMEANS

为克服K-Means算法收敛于局部最小值问题,提出了二分K-Means算法

  1. 使用以前的KMEANS算法 k=2, 得到两个簇,两个中心点,
  2. 选取其中的一个簇,再使用k=2的KMEANS算法,相比上一步,只不过输入的样本换一下而已,选取其中的一个簇,根据一定的指标来选,例如:样本数量大的,需进行再分,或者 SSE总误差更大的
  3. 重复步骤,直到分类的总数等于目标分类数

总结:每次分两个簇,选择其中一个簇再分成两个,直到分类的总数=k

3. KMeans++

KMeans++ 与KMeans的不同就是在初始中心点的选取上不同,初始中心点的选取会直接影响算法的收敛,容易只得到局部最优,所以初始中心点的选取就要尽量的相离的分散,如何实现

  1. 随机选取一个中心点
  2. 计算其他点到 已知中心点 中最近邻的的距离 根据这个距离 来选择他是否能做为下一个中心点,被选择的概率和计算出来的距离成正比
  3. 重复2 直到k个中心被选中

实现方式伪代码:

  1. 已知的中心点 c1, c2, c3
  2. 对于剩余的样本点 x4,x5,--- ,xn,
    拿x4来说: min(d(c1, x4), d(x2, x4), d(c3,x4)) 得到x4 距离已知中心点的最近邻距离 记为 dist4, 依次得到 dist5, ---, distn
    将这距离进行归一化操作, 记sum=sum(dist4, dist5, ---, distn)
    (dist4, dist5, ---, distn)/sum 记为 (p4, p5, p6, ,,, pn)
    将这些距离画在数轴上

    np.random.rand() 0-1之间随机的取一个数,看下它落在数轴上的那个位置,则那个样本点就被选中,这也就是为什么距离远远的点越容易被选中。

4. elkan KMeans

由于计算每个样本到 类中心 的距离比较耗时
对于x样本 是属于b中心点还是c中心点 只需要作出判断 不需要全部计算出
利用两边之和大于第三边
假设x是一个点,b和c是中心点


bx 肯定是小于bc x点肯定是分类到b

elkan K-Means比起传统的K-Means迭代速
度有很大的提高。但是如果我们的样本的特征是稀疏的,有缺失值的话,这个方法就不使用了,此时某些距离无法计算,则不能使用该算法

5. min batch KMeans算法

KMeans算法 对所有的样本点 通过计算距离最近 将其划分到对应类 这样会特别耗时
能否只抽取部分的样本 计算距离最近 将其划分到对应类 输出新的中心点
这就叫做mini batch KMeans
与批量梯度下降法 计算梯度类似,计算梯度的时候也只使用部分样本 只要能大致的指明梯度的方向就行 不需要完全精确计算出梯度

6.小结:

原理比较简单,实现也是很容易,收敛速度快(在大规模数据集上收敛较慢,可尝试使用Mini
Batch K-Means算法)。
1 原理比较简单,实现也是很容易,收敛速度快(在大规模数据集上收敛较慢,可尝试使用MiniBatch K-Means算法)
2 聚类效果较优。
3 算法的可解释度比较强。
4 主要需要调参的参数仅仅是簇数k。

缺点:

标签:机器,Means,18,样本,kmeans,距离,KMeans,算法,中心点
From: https://www.cnblogs.com/cavalier-chen/p/17923194.html

相关文章

  • 318二叉树遍历
    1#include<stdio.h>2#include<string.h>3#include<stdlib.h>4typedefstructtreenode{5chardata;6structtreenode*lchild;7structtreenode*rchild;8}treenode,*tree;910treecreateTree(char*preorder,char......
  • #9 2023.12.18
    怎么做题速度单调递减了。464.THUPC2024Pre省流:我是演员。M我过的题。K我过的题。暴力打表就行了,我在本地打了三分钟就出答案了!很快。J我过的题。考虑\(v\)什么时候对\(len=k\)没有贡献。那就是\(v\)把序列分成了若干区间\([l,r]\),\(ban\)掉的区间就是\([......
  • 机器学习-无监督机器学习-kmeans-17
    目录1.什么是聚类2.代码实现1.什么是聚类无监督机器学习的一种输入数据只有X没有y将已有的数据根据相似度将划分到不同的簇(花团锦簇)步骤:随机选择k个簇的中心点样本根据距离中心点的距离分配到不同的簇重新计算簇的中心点重复2-3直到所有样本分配的簇不再发生......
  • 18. git fetch origin但是我远端没有这个分支啊 ,我只有master分支
     如果你执行了gitfetchorigin,但是远程仓库并没有origin分支,这是正常的。这个命令会从远程仓库(通常命名为"origin")中获取所有分支和标签的最新信息,而不仅仅是origin分支。在Git中,origin通常是默认的远程仓库名称,而不是一个分支的名称。如果你只有master分支,gitfetch......
  • 用C#也能做机器学习?
    前言✨说到机器学习,大家可能都不陌生,但是用C#来做机器学习,可能很多人还第一次听说。其实在C#中基于ML.NET也是可以做机器学习的,这种方式比较适合.NET程序员在项目中集成机器学习模型,不太适合专门学习机器学习,本文我将基于ML.NETModelBuilder(低代码、入门简单)构建一个猫狗识别实......
  • CF1881F Minimum Maximum Distance 题解
    因为白点对\(f_i\)没有贡献,所以可以重构出一棵原树的子树,使得所有的叶子都为标记点且标记点数量不变(没有删去标记点)。因为没有标记被删去且结构不变,所以这棵树的答案与原树答案相同。现在,对于所有节点,到它距离最大的标记点一定在叶子上。那么问题就变为:求出树上任意一点到所有......
  • 机器学习笔记(二)使用paddlepaddle,再探波士顿房价预测
    目标用paddlepaddle来重写之前那个手写的梯度下降方案,简化内容流程实际上就做了几个事:数据准备:将一个批次的数据先转换成nparray格式,再转换成Tensor格式前向计算:将一个批次的样本数据灌入网络中,计算出结果计算损失函数:以前向计算的结果和真是房价作为输入,通过算是函数sqare......
  • ubuntu18离线安装mysql8.0
    参考文档Ubuntu中使用apt下载离线包以及相关依赖包-厚礼蝎-博客园(cnblogs.com)ubuntu18.04安装mysql8.0详细教程及踩坑解决方法(包含删除Mysql5.7版本方法)_ubuntu编译安装mysql-CSDN博客如何配置MySQL8中的lower_case_table_names来让其忽略大小写?–就是这个范儿(thi......
  • 机器学习笔记(一)从波士顿房价预测开始,梯度下降
    从波士顿房价开始目标其实这一章节比较简单,主要是概念,首先在波士顿房价这个问题中,我们假设了一组线性关系,也就是如图所示我们假定结果房价和这些参数之间有线性关系,即:然后我们假定这个函数的损失函数为均方差,即:那么就是说,我们现在是已知y和x,来求使得这个损失函数Loss最小......
  • 自然语言处理:通过API调用各大公司的机器翻译开放平台
    国内大公司做机器翻译做的比较好的有讯飞和百度,这里给出这两个公司机器翻译的开放平台API的介绍:讯飞开放平台:链接:https://www.xfyun.cn/doc/nlp/xftrans_new/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E百度翻译平台:链接:https://api.fanyi.baidu.com/doc/21......