当前位置: 首页 > news >正文

最优化:建模、算法与理论(优化建模——2)

3.10 K-均值聚类

聚类分析是 统计学中的一个基本问题,其在机器学习,数据挖掘,模式识别和图像分析中有着重要应用。聚类不同于分类,在聚类问题中我们仅仅知道数据点本身,而不知道每个数据点具体的标签。聚类分析的任务就是将一些无标签的数据点按照某种相似度来进行归类,进而从数据点本身来学习其内蕴的类别特征。

给定 p p p维空间中的 n n n个数据点 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,,an,假定两个数据点之间的相似性可以通过其欧几里得距离来测量,我们的目标是将相似的点归为一类,同时将不相似的点区分开,为了简单起来我们假设类的个数为已知的,不妨记为 k k k,且同一个数据点只属于一个类,因此聚类问题就是要找 k k k个不相交的非空集合 S 1 , S 2 , ⋯ , S k S_1,S_2,\cdots,S_k S1,S2,,Sk,使得
{ a 1 , a 2 , ⋯ , a n } = S 1 ∪ S 2 ∪ ⋯ ∪ S k \{a_1,a_2,\cdots,a_n\}=S_1\cup{S_2}\cup{\cdots}\cup{S_k} {a1,a2,,an}=S1S2Sk
且同类点之间的距离要足够近,为了在数学上描述"同类点之间的距离足够近",我们定义组内距离平方和为
W ( S 1 , S 2 , ⋯ , S k ) = ∑ i = 1 k ∑ a ∈ S i ∣ ∣ a − c i ∣ ∣ 2 (3.10.1) W(S_1,S_2,\cdots,S_k)=\sum_{i=1}^k\sum_{a{\in}S_i}||a-c_i||^2 \tag{3.10.1} W(S1,S2,,Sk)=i=1kaSi∣∣aci2(3.10.1)
这里 c i c_i ci为第 i i i类数据点的中心,注意在问题中就假设了每类为非空的
定义好聚类标准后,就可以建议优化模型了。我们想要找到一个聚类方法,使得组内距离平方和最小,即
min ⁡ S 1 , S 2 , ⋯ , S k ∑ i = 1 k ∑ a ∈ S i ∣ ∣ a − c i ∣ ∣ 2 s . t . { a 1 , a 2 , ⋯ , a n } = S 1 ∪ S 2 ∪ ⋯ ∪ S k S j ∩ S j ≠ ∅ , ∀ i ≠ j (3.10.2) \min_{S_1,S_2,\cdots,S_k}\sum_{i=1}^k\sum_{a{\in}S_i}||a-c_i||^2 \\ s.t. {\quad} \{a_1,a_2,\cdots,a_n\}=S_1\cup{S_2}\cup{\cdots}\cup{S_k} \\ S_j \cap S_j {\not=}\varnothing,\forall{i {\not=}j} \tag{3.10.2} S1,S2,,Skmini=1kaSi∣∣aci2s.t.{a1,a2,,an}=S1S2SkSjSj=,i=j(3.10.2)
问题(3.10.2)的自变量是数据点集合的分割方式,看起来比较难以处理,因此有必要将问题写成我们熟悉的形式,接下来给出问题的两种矩阵表达方式,它们之间是等价的。

1. K-均值聚类等价表述一

在原始聚类问题中,组内距离平方和定义为(3.10.1),即需要计算 S i S_i Si中的点到它们中心点 c i c_i ci的平方和,实际上,选取中心点 c i c_i ci作为参考点并不是必须的,我们完全可以选取其他点 h i h_i hi来作为参照来计算组内距离(其实这个 h i h_i hi通过优化最后也是表示的中心点),因此组内距离平方和可以推广为
W ( S 1 , S 2 , ⋯ , S k , H ) = ∑ i = 1 k ∑ a ∈ S i ∣ ∣ a − h i ∣ ∣ 2 W(S_1,S_2,\cdots,S_k,H)=\sum_{i=1}^k\sum_{a{\in}S_i}||a-h_i||^2 W(S1,S2,,Sk,H)=i=1kaSi∣∣ahi2
其中 H ∈ R k × p H{\in}R^{k \times p} HRk×p(k个类的一个点(维度为p))且第 i i i行的向量为 h i T h_i^T hiT,为了表示聚类方式 S 1 , S 2 , ⋯ , S k S_1,S_2,\cdots,S_k S1,S2,,Sk,一个很自然的想法是使用一个向量 ϕ i ∈ R k {\phi_i}{\in}R^k ϕiRk来表示 a i a_i ai所处的类别
( ϕ i ) j = { 1 , a i ∈ S j 0 , a i ∉ S j {(\phi_i)}_j=\left\{ \begin{matrix} 1,a_i{\in}S_j \\ 0,a_i{\notin}S_j \end{matrix} \right. (ϕi)j={1aiSj0ai/Sj
聚类问题等价描述为
min ⁡ ϕ , H ∣ ∣ A − Φ H ∣ ∣ F 2 s . t . Φ ∈ R n × k ,每一行只有一个元素为 1 ,其余为 0 H ∈ R k × p (3.10.3) \min_{\phi,H}||A-{\Phi}H||_F^2 \\ s.t. {\quad}{\Phi}{\in}R^{n \times k},每一行只有一个元素为1,其余为0 \\ H{\in}R^{k \times p}\tag{3.10.3} ϕ,Hmin∣∣AΦHF2s.t.ΦRn×k,每一行只有一个元素为1,其余为0HRk×p(3.10.3)
这里的 Φ {\Phi} Φ的第 i i i行的向量就是 ϕ i T {\phi}_i^T ϕiT

接下来说明3.10.3和原问题3.10.2是等价的,为此只需要说明参考点集 H H H的取法实际上就是每一类的中点,当固定 P h i Phi Phi时,第 i i i类点的组内距离平方和为
∑ a ∈ S i ∣ ∣ a − h i ∣ ∣ 2 \sum_{a{\in}S_i}||a-h_i||^2 aSi∣∣ahi2
根据二次函数的性质,当 h i = 1 n ∑ a ∈ S i a h_i=\frac{1}{n}{\sum_{a{\in}S_i}}a hi=n1aSia时,组内距离平方和最小
所以 h i h_i hi一定会被优化成第 i i i类的中心点的

我们引入问题(3.10.3)的理由有两个
(1)形式简洁,且将不易处理的自变量“分割方式”转化为矩阵
(2)可以看成是一个矩阵分解问题,便于我们设计算法

2.K-均值聚类等价表述二

K-均值聚类的第二种等价表述利用了列正交矩阵的性质,这种表达方式比问题(3.10.3)相比更为简洁,首先定义 I S t , 1 ≤ t ≤ k I_{S_t},1{\le}t{\le}k ISt1tk n n n维空间中每个分量取值0或1的向量,且
I S j ( i ) = { 1 , a i ∈ S t 0 , a i ∉ S t I_{S_j}(i)=\left\{ \begin{matrix} 1,a_i{\in}S_t \\ 0,a_i{\notin}S_t \end{matrix} \right. ISj(i)={1aiSt0ai/St
可以证明,第 t t t S t S_t St中每个点到其中心点的距离平方和可以写成 1 2 n t T r ( D I S t I S t T ) \frac{1}{2n_t}Tr(DI_{S_t}I_{S_t}^T) 2nt1Tr(DIStIStT),其中 D ∈ R n × n D{\in}R^{n \times n} DRn×n的元素为 D i j = ∣ ∣ a i − a j ∣ ∣ 2 D_{ij}=||a_i-a_j||^2 Dij=∣∣aiaj2。这说明 S t S_t St中每个点到中心点的距离平方和与 S t S_t St中所有点两两之间距离平方和有关,因此,我们将问题(3.10.2)转化为
min ⁡ S 1 , S 2 , ⋯ , S k 1 2 T r ( D X ) s . t . X = ∑ t = 1 k 1 n t I S t I S t T S 1 ∪ S 2 ∪ ⋯ ∪ S k = { a 1 , a 2 , ⋯ , a n } S i ∩ S j = ∅ , ∀ i ≠ j (3.10.4) \min_{S_1,S_2,\cdots,S_k}\frac{1}{2}Tr(DX) \\ s.t. {\quad}X={\sum}_{t=1}^k\frac{1}{n_t}I_{S_t}I_{S_t}^T \\ S_1{\cup}S_2{\cup}\cdots{\cup}S_k=\{a_1,a_2,\cdots,a_n\} \\ S_i{\cap}S_j={\varnothing},\forall{i{\not=}j}\tag{3.10.4} S1,S2,,Skmin21Tr(DX)s.t.X=t=1knt1IStIStTS1S2Sk={a1,a2,,an}SiSj=,i=j(3.10.4)
对半正定举证 X X X进行分解 X = Y Y T , Y ∈ R n × k X=YY^T,Y{\in}R^{n \times k} X=YYT,YRn×k,我们可以进一步得到如下矩阵优化问题(这里 I I I n n n维向量且分量全为1)
min ⁡ Y ∈ R n × k T r ( Y T D Y ) s . t . Y Y T I = I , Y Y T = I k , Y ≥ 0 (3.10.5) \min_{Y{\in}R^{n \times k}}Tr(Y^TDY) \\ s.t.{\quad}YY^TI=I, \\ YY^T=I_k,Y{\ge}0\tag{3.10.5} YRn×kminTr(YTDY)s.t.YYTI=I,YYT=IkY0(3.10.5)
求得3.10.5的解 Y Y T YY^T YYT就对应(3.10.4)的解(说实话这一块我没看懂,Kmeans直接去做的话还是蛮简单的)

相关文章:

最优化:建模、算法与理论(优化建模——2)

3.10 K-均值聚类 聚类分析是 统计学中的一个基本问题,其在机器学习,数据挖掘,模式识别和图像分析中有着重要应用。聚类不同于分类,在聚类问题中我们仅仅知道数据点本身,而不知道每个数据点具体的标签。聚类分析的任务…...

库的相关操作

目录 一、创建数据库 1,创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…...

程序分区:全局区、常量区、栈区、堆区、代码区

#include <iostream> using namespace std; //全局变量 int g_a 10; int g_b 10; //全局常量 const int c_g_a 10; const int c_g_b 10;int main() { //局部变量 int a 10; int b 10; //打印地址 cout << "局部变量a地址为&#xff1a; " <…...

Jtti:windows虚拟机如何设定永久静态路由

在Windows虚拟机上设置永久静态路由需要使用命令行工具&#xff0c;具体步骤如下&#xff1a; 打开命令提示符&#xff1a; 在Windows虚拟机中&#xff0c;按下Win R组合键&#xff0c;输入"cmd"并按回车键&#xff0c;以打开命令提示符。 查看当前路由表&#xff1…...

RocketMQ(3)之事务消息

一、发送事务消息案例 事务消息共有三种状态&#xff0c;提交状态、回滚状态、中间状态&#xff1a; TransactionStatus.CommitTransaction: 提交事务&#xff0c;它允许消费者消费此消息。TransactionStatus.RollbackTransaction: 回滚事务&#xff0c;它代表该消息将被删除…...

基于多设计模式下的同步异步日志系统

基于多设计模式下的同步&异步日志系统 代码链接&#xff1a;https://github.com/Janonez/Log_System 1. 项目介绍 本项目主要实现一个日志系统&#xff0c; 其主要支持以下功能&#xff1a; 支持多级别日志消息支持同步日志和异步日志支持可靠写入日志到标准输出、文件…...

API接口与电商平台之间的联系,采集京东平台数据按关键字搜索商品接口示例

关键字搜索商品的重要性&#xff1a; 1.引入精准流量 关键词第一个也是最重要的作用就是为我们宝贝引进精准的流量&#xff0c;这一作用无论是在自然搜索中还是直通车中都是一样的。 第一步关乎的是我们宝贝的展现&#xff0c;而第二步用户是否会点进我们的宝贝&#xff0c;…...

代码随想录day41|343. 整数拆分96. 不同的二叉搜索树

343. 整数拆分 class Solution:def integerBreak(self, n: int) -> int:dp [0] *(n1)dp[2]1if n <3:return dp[n]for i in range(3,n1):for j in range(1,n):dp[i]max(j*(i-j),j*dp[i-j],dp[i])return dp[n] 96. 不同的二叉搜索树 class Solution:def numTrees(self, …...

Less常用内置函数

1&#xff0c;类型函数 isnumber(value) - 判断是否为数字isstring(value) - 判断是否为字符串isurl(value) - 判断是否为urliscolor(value) - 判断是否为颜色isunit(value, unit) - 判断value值是否为指定单位 示例&#xff1a; isnumber(12); // true isnumber(#333); // f…...

pdf转换成图片转换器在线怎么转?pdf转换成图片具体方法介绍

很多用户们都是比较喜欢使用pdf文档的&#xff0c;由于这种文件格式的便携性非常高&#xff0c;所以广泛的应用于工作和学习领域&#xff0c;再加上pdf文档可以随意转换成为其他的文件格式&#xff0c;更是让pdf文档受到了更多用户们的欢迎&#xff0c;那么pdf转换成图片转换器…...

JavaScript动态设置浏览器可视区域元素的文字颜色、监听滚动条、querySelectorAll、getBoundingClientRect

文章目录 前言htmlJavaScriptquerySelectorAllgetBoundingClientRect 前言 当元素出现在浏览器可视区域时给元素设置颜色等其他操作&#xff0c;比如当元素进入浏览器可视区域时&#xff0c;设置元素进入动画。 html <div id"idBox" class"box"><…...

意向客户的信息获取到底是怎样的,快来get一下

客户信息获取技术真的可以为企业提供精准客源吗&#xff1f;这个渠道到底安不安全&#xff0c;技术到底成不成熟&#xff1f;效果到底如何&#xff1f;下面简单的和大家分析一下。 客户信息获取技术是怎样的 手机采集引流方面&#xff0c;上量不精准&#xff0c;精准不上量的说…...

自动化测试常用脚本语言有哪些?

在自动化测试中&#xff0c;常用的脚本语言包括&#xff1a; 1. Python&#xff1a;Python是一个简洁、易读且功能强大的脚本语言&#xff0c;广泛应用于自动化测试领域。它具有丰富的测试框架和库&#xff0c;可以用于Web、移动应用和API等各种类型的测试。 2. Java&#xff1…...

mapreduce 的工作原理以及 hdfs 上传文件的流程

推荐两篇博文 mapreduce 的工作原理&#xff1a; 图文详解 MapReduce 工作流程_mapreduce工作流程_Shockang的博客-CSDN博客 hdfs 上传文件的流程 HDFS原理 - 知乎...

Ubuntu22.04安装ROS2

Ubuntu22.04安装ROS2 Excerpt ROS2官方文档 ROS2清华镜像站sudo apt update sudo apt upgrade locale # check for UTF-8 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLe… ROS2官方文档 ROS2清华镜像站…...

uniapp - 倒计时组件-优化循环时间倒计时

使用定时器的规避方法 为了避免定时器误差导致倒计时计算错误&#xff0c;可以采用一些规避方法&#xff0c;比如将倒计时被中断时的剩余时间记录下来&#xff0c;重新开启定时器时再将这个剩余时间加到新的计算中。同时&#xff0c;为了避免定时器延迟&#xff0c;可以在每次执…...

java 实现访问者模式

访问者模式是一种行为设计模式&#xff0c;它允许您在不修改对象结构的情况下&#xff0c;向对象结构中的元素添加新的操作。这通常用于解决对象结构中元素类型多变&#xff0c;但操作类型相对稳定的问题。在访问者模式中&#xff0c;我们有一个访问者接口和多个具体的元素类&a…...

JDK源码剖析之PriorityQueue优先级队列

写在前面 版本信息&#xff1a; JDK1.8 PriorityQueue介绍 在数据结构中&#xff0c;队列分为FIFO、LIFO 两种模型&#xff0c;分别为先进先出&#xff0c;后进后出、先进后出&#xff0c;后进先出&#xff08;栈&#xff09; 而一切数据结构都是基于数组或者是链表实现。 在…...

TSINGSEE青犀AI视频分析/边缘计算/AI算法·人脸识别功能——多场景高效运用

旭帆科技AI智能分析网关可提供海量算法供应&#xff0c;涵盖目标监测、分析、抓拍、动作分析、AI识别等&#xff0c;可应用于各行各业的视觉场景中。同时针对小众化场景可快速定制AI算法&#xff0c;主动适配大厂近百款芯片&#xff0c;打通云/边/端灵活部署&#xff0c;算法一…...

力扣(LeetCode)算法_C++——最大连续 1 的个数 III

给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1,0,0,0,1,1,1,1,0], K 2 输出&#xff1a;6 解释&#xff1a;[1,1,1,0,0,1,1,1,1,1,1] 粗体数字…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...