大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(正在更新…)

章节内容

上节我们完成了如下的内容:

  • 逻辑回归 scikit-learn 实现 剩余部分
  • max_iter 分类方式选参数

在这里插入图片描述

基本概念

决策树、线性和逻辑回归都比较常用的机器学习算法,他们虽然有着不同的功能,但却属于有监督学习的一部分,模型在训练的时候,需要特征矩阵 X,也需要真实标签 Y。机器学习当中,还有相当一部分属于无监督学习,无监督的算法在训练的时候只需要特征矩阵 X,不需要标签。无监督学习的代表算法有聚类算法、降维算法。
聚类算法又叫做:“无监督分类”,其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯的帮助我们探索数据的自然结构和分布。
比如商业中,如果我们手头上大量的当前和潜在客户的信息,我们可以使用聚类将客户划分为若干组,以便于进一步分析和开展营销活动,最有名的客户价值判断模型 RFM(Recency frequency monetary),就常常和聚类分析共同使用。再比如,聚类可以用于降维和矢量量化(vector quantization),可以将高维特征压缩到一列当中,常常用于图像、声音、视频等非结构化数据,可以大幅度压缩数据量。

在这里插入图片描述
对比他们的特征
在这里插入图片描述
聚类算法是无监督类机器学习算法中最常用的一类,其目的是将数据划分成有意义或有用的组(也被称为簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯的帮助我们探索数据的自然结构和分布。如果目标是划分成有意义的组,则簇应该捕获数据的自然结构。然而,在某种意义下,聚类分析知识解决其他问题(如数据汇总)的起点。无论是皆在理解还是应用,聚类分析都在广泛的领域扮演着重要角色。这些领域包括:心理学和其他社会科学、生物学、统计学、模式识别、信息检索、机器学习、数据挖掘。
聚类分析在许多实际问题上都有应用,下面是一些具体的例子,按聚类目的是为了理解数据自然结构还用于数据处理来组织。

K-Means

基本原理

关键概念:簇和质心
K-Means是一种经典的无监督学习聚类算法,主要用于将一组数据划分为K个簇(Clusters),其中K是用户预先定义的聚类数量。它的目标是使得同一簇内的数据点之间的距离尽可能接近,而不同簇的数据点之间的距离尽可能远。
KMeans 算法将一组 N 个样本特征矩阵 X 划分为 K 个无交集的簇,直观上来看簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类,簇就是聚类的结果表现。
簇中所有数据的均值通常被称为这个簇的质心(centroids)。在一个二维平面中,一簇数据带你的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据的纵坐标的均值。同理可推导到高维空间。
在 KMeans 算法中,簇的个数 K 是一个超参数,需要我们人为输入来确定。KMeans的核心任务就是根据我们设定好的 K,找出 K 个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。

工作过程

K-Means 的执行步骤如下:

  • 初始化簇中心(质心):随机选择K个数据点作为初始簇中心,称为质心(Centroid)。
  • 分配数据点到簇:对于每一个数据点,计算它到每个质心的欧式距离,并将该数据点分配到距离最近的簇。这样就可以得到K个初始簇。
  • 更新质心:对于每一个簇,计算该簇内所有数据点的平均位置,将该平均位置作为新的质心。
  • 迭代更新:重复步骤2和步骤3,直到质心位置不再发生明显变化(即达到收敛)或达到最大迭代次数。

具体过程

具体过程可总结如下:

  • 创建 K 个点作为初始质心(通常随机选择)
  • 当任意一个点的簇分配结果发生改变时:计算质心与数据点之间的距离、将数据点分配到离其最近的簇
  • 对每个簇,计算簇中所有点的均值并将均值作为新的质心
  • 直到簇不再发生变化或者达到最大的迭代次数

那么什么情况下,我们的质心位置不再发生变化呢?
当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。
这个过程可以由下图来显示,我们规定,将数据分为 4(K=4),其中白色 X 代表质心位置:
在这里插入图片描述
在数据的多次迭代下(iteration),就会:
在这里插入图片描述
第六次迭代之后,基本上质心的位置就不会再改变了,生成的簇也变得稳定,此时我们的聚类就完成了,我们可以明显看出,K-Means 按照数据的分布,将数据聚集成了我们规定的 4 类,接下来我们就可以按照我们的业务求或者算法需求,对四类数据进行不同的处理。

簇内误差平方和

聚类算法出的类有什么含义呢?这些类有什么样的性质?我们认为,被分在同一个簇中的数据是有相似的,而不同的簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求定制不同的商业或者科技策略。
聚类算法的目的就是追求“簇内差异小,簇外差异大”。而这个差异,由样本到其所在簇的质心的距离来衡量。
对于一个簇来说,所有样本点质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差距离来衡量。
对于一个簇来说,所有样本点到执行距离之和越小,我们就认为这个簇中的样本越来越相似,簇内差异就越小,而距离的衡量方法由多种。

假设:

  • x 表示簇中的一个样本点
  • u 表示该簇中的质心
  • n 表示每个样本点中的特征数目
  • i 表示组成点 x 的每个特征编号

则该样本到质心距离可以由以下距离来衡量:
在这里插入图片描述
如果我们采用欧几里得距离,则一个簇中所有样本点的质心距离的平方和为:
在这里插入图片描述

  • 其中,m 为一个簇中样本的个数
  • j 是每个样本的编号

这个公式被称为簇内平方和(cluster sum of square),又叫做 Inertia。
而将一个数据集中的所有簇的簇内平方和相加,就得到了整体的平方和(Total Cluster Sum Of Square),又叫做 Total Inertia。
在这里插入图片描述
Total Intertia 越小,代表着每个簇内样本越相似,聚类的效果就越好。
因此 KMeans 追求的是,求解能够让 Inertia 最小化的质心。

实际上,在质心不断变化不断迭代的过程中,总体平方和是越来越小的,当整体平方和最小的时候,质心就不再发生变化了。
大家可以发现,我们的 Intertia 是基于欧几里得距离的计算公式得来的。实际上,我们也可以使用其他距离,每个距离都有自己对应的 Inertia。在过去的经验中,我们总结出距离所对应的质心选择方法和 Inertia,在 KMeans 中,只要使用了正确的质心和距离组合,无论使用什么样的距离,都可以达到不错的聚类效果:
在这里插入图片描述
而这些组合,都可以由严格的数学证明来推导,在实际中我们往往都使用欧式距离,因此我们无需去担忧这些距离所搭配的质心选择是如何得来的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务系列六:分布式事务与seata

目录 实验环境说明 前言 一、分布式事务问题与策略 1.1 分布式事务介绍 1.2 分布式事务解决策略分析 二、分布式事务解决方案 Seata 2.1 认识Seata 2.2 Seata的工作原理 2.3 部署Seata微服务 2.3.1 准备数据库表 2.3.2 准备配置文件 2.3.3 docker部署 2.4 微服务集…

Java 上机实践2(基础数据类型与数组)

(大家好,今天分享的是Java的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 实验一:输出希腊字母表 一、实验目的 二、实验要求 三、程序代码 四、实验结果 实验二:…

w024基于SpringBoot的企业客户管理系统的设计与实现

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

并发编程volatile精解

多线程下变量的不可见性 在多线程并发执行的情况下,多个线程修改共享的成员变量,会出现一个线程修改了共享变量的值后,另一个线程不能直接看到该线程修改后的变量最新值。(多线程下修改共享变量会出现变量修改值后的不可见性) 可见性问题…

十款外贸软件盘点,专注企业订单业务管理

在当今全球化的市场环境中,外贸企业的发展面临着诸多挑战与机遇。如何高效管理企业业务,提升运营效率,成为外贸企业在激烈竞争中脱颖而出的关键。外贸业务管理ERP软件作为一种强大的工具,能够整合企业资源、优化管理流程、实现数据…

yaml文件编写

Kubernetes 支持YAML和JSON格式管理资源 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式;用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化容易读懂 一,yaml语法格式 1.1 基本语法规则 使用空格进行缩进(不使用制表符&#xff0…

Node.js 全栈开发进阶篇

​🌈个人主页:前端青山 🔥系列专栏:node.js篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js- 全栈开发进阶篇 前言 大家好,我是青山。在上一篇文章中,…

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格,并且求第二列所有价格的和方法一:通过添加文件输入元素上传csv完整(正确)代码之前的错误部分因为价格是小数,所以下面的代码出错。如果把parseFloat改成parseInt,那么求和没有意义…

C语言初阶必会的练习题(3)之位操作符(^ 、、>>等)的应用

C语言初阶必会的练习题(3) 放在最前面的1、不允许创建临时变量,交换两个整数的内容1.1、分析:见代码注释(a)方法 1(b)方法 2 1.2、结果展示方法 1 的 结果:方法 2 的 结果…

基于SSM框架的乡村农户对口扶贫系统

基于SSM框架的乡村农户对口扶贫系统。 设计步骤: 项目架构创建:首先创建项目的基本架构,包括com.zc.xxx路径下的文件和resources资源文件夹。 SSM架构:使用Spring、SpringMVC、MyBatis作为后端架构,采用POJO—Dao—…

微服务透传日志traceId

问题 在微服务架构中,一次业务执行完可能需要跨多个服务,这个时候,我们想看到业务完整的日志信息,就要从各个服务中获取,即便是使用了ELK把日志收集到一起,但如果不做处理,也是无法完整把一次业…

十五:java web(7)-- Spring Boot

目录 1. Spring Boot 简介 1.1 简介 1.2 Spring Boot 的特点 1.3 Spring Boot 和 Spring 的关系 2. Spring Boot 快速入门 2.1 创建第一个 Spring Boot 项目 3. Spring Boot 配置管理 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐…

关于打开网页非常慢的解决方法

方法一:刷新dns缓存 ipconfig /flushdns方法二:许多网站,太落后,不支持ipv6,所以关闭ipv6即可

JDK1.5 java代码打包jar HmacSha256

文章目录 demo地址背景实现编写代码编译class文件打包 JAR 文件执行生成的 JAR 文件辅助验证方式 常见问题和解决方法常规生成jar方案maven插件idea工具 demo地址 https://github.com/xiangge-zx/HmacSha256 背景 最近接到一个需求,做一个可以用来HmacSha256加密的小工具&am…

Go八股(Ⅳ)***slice,string,defer***

***slice,string,defer*** 1.slice和arry的区别 arry: Go语言中arry即为数据的一种集合,需要在声明时指定容量和初值,且一旦声明就长度固定,访问时按照索引访问。通过内置函数len可以获取数组中的元素个…

Win系统通过命令行查看笔记本电池损耗/寿命/健康

在 Windows 10/11 系统中,可以通过指令查看笔记本电池的寿命情况,方法如下: 0,打开cmd/终端 键盘快捷键:Win R,然后输入cmd,点击【确定】 1,执行命令 在命令行中输入下面指令并按…

103 - Lecture 1

Introduction to Database 一、Introduction to Database Systems 1. 数据的定义 What is Data? EX: data could be a docx file storing your project status report; data could be a spreadsheet containing information • 数据只有在设计的场景中才有意义。&#xff…

【大数据学习 | kafka高级部分】kafka中的选举机制

controller的选举 首先第一个选举就是借助于zookeeper的controller的选举 第一个就是controller的选举,这个选举是借助于zookeeper的独享锁实现的,先启动的broker会在zookeeper的/contoller节点上面增加一个broker信息,谁创建成功了谁就是主…

关于几种卷积

1*1卷积 分组卷积&深度可分离卷积 空洞卷积、膨胀卷积 转置卷积 https://zhuanlan.zhihu.com/p/80041030 https://yinguobing.com/separable-convolution/#fn2 11的卷积可以理解为对通道进行加权,对于一个通道来说,每个像素点加权是一样的&am…

OCR、语音识别与信息抽取:免费开源的AI平台在医疗领域的创新应用

一、系统概述 在医疗行业中,大量数据来自手写病历、医学影像报告、患者对话记录等非结构化数据源。这些数据常常存在信息碎片化和管理困难的问题,给医务人员的工作带来了不便。思通数科AI多模态能力平台正是为了解决这一行业痛点而生,产品集…