论文阅读(一种新的稀疏PCA求解方式)Sparse PCA: A Geometric Approach
这是一篇来自JMLR的论文,论文主要关注稀疏主成分分析(Sparse PCA)的问题,提出了一种新颖的几何解法(GeoSPCA)。
该方法相比传统稀疏PCA的解法的优点:1)更容易找到全局最优;2)计算效率更高;3)因为不再需要计算存储整个协方差矩阵,所以对存储资源需求更少;4)GeoSPCA能够一次性构建所有主成分,而不是通过迭代的方式逐步添加,这有助于避免因迭代过程中的数据秩减而导致的信息损失。
这个笔记不会记录原文中过于数学的证明和推理部分,仅整理原理、结论和算法流程等。对数学推理感兴趣的,可自行到以下地址查看原文:
https://www.jmlr.org/papers/volume24/22-0088/22-0088.pdf
1,什么是稀疏PCA
首先给不了解的读者补充一下稀疏PCA概念:
普通PCA得到的主成分有大量非0的原始变量,所以主成分其实是不太清晰的。稀疏PCA通过减少构建主成分的变量数量,可以提高模型的可解释性、预测能力或降低操作成本。相比较而言,稀疏PCA更适用于需要模型解释性的场景。
稀疏PCA 在普通PCA的基础上,引入了一个惩罚函数。这样做的目的是使得大部分系数变为零,从而凸现出主成分的主要部分。
稀疏PCA的实现通常涉及到在标准的PCA优化问题中加入一个正则化项,以促使某些系数变为零。
2,现有稀疏PCA计算方式的缺陷
大多数现有方法通过迭代方式构建主成分(PCs),这些方法通常无法保证整体最优解,且计算成本较高。
3,本文提出的GeoSPCA方法
这种方法通过将问题转化为一个二元线性优化问题(BLO)来近似原始问题,从而绕开了非凸优化的问题。
GeoSPCA算法一次性构建所有主成分,而不是通过迭代的方式。这种方法通过引入一个参数η来近似原始问题,并通过一系列切割平面算法(cut generation algorithm)来逐步改进解。
切割平面算法的核心思想是逐步添加约束条件(即切割平面),以逼近问题的最优解。
3.1 整体流程思路:
-
初始化:算法开始时,首先解决一个没有额外约束的基本二元线性优化问题(BLO),以获得初始解。
-
计算当前解的正交投影:对于当前解,计算数据矩阵在由当前解定义的子空间上的正交投影。
-
检查投影误差:计算当前解的正交投影与原始数据矩阵之间的差异(即误差)。如果这个误差小于预设的阈值η,当前解就是可接受的。
-
生成切割平面:如果投影误差超过阈值η,算法会生成一个新的线性约束(切割平面),该约束会排除当前解,迫使算法在下一次迭代中寻找更好的解。
-
迭代过程:将新生成的切割平面添加到优化问题中,并重新解决BLO问题以获得新的解。这个过程会不断重复,直到找到满足误差阈值的解或达到预设的迭代次数。
-
终止条件:算法在以下情况下终止:1)找到一个满足误差阈值η的解。2)达到预设的最大迭代次数。3)无法进一步改进当前解。
注:其中,线性约束(也称为切割平面或切割约束)是一种限制变量取值范围的表达式,它以线性方程或不等式的形式出现。
3.2 具体落实的算法
在具体落实层面,原文提出了2个算法。
算法1在给定参数η的情况下,找到一组最优支持(Optimal support),这些支持用于构建稀疏主成分。
算法2是从较大的η值开始,逐步细化η的值,以逼近最优的η值,同时也获得稀疏PCA的最优解。
算法1:
算法步骤如下:
-
初始化:开始时,使用一个二元线性优化(BLO)问题,目标是最大化数据矩阵列的范数加权和,约束条件是支持的大小不超过k。
-
求解BLO问题:使用BLO求解器找到当前问题的最优解 s∗。
-
计算正交投影:对找到的解 s∗,计算数据矩阵在由解 s∗ 定义的子空间上的正交投影,并求解PCA以得到对应的主成分。
-
检查投影误差:计算正交投影与原始数据矩阵之间的Frobenius范数误差 η(s∗)。(注:两个矩阵之间的Frobenius范数一般指的是两个矩阵差的Frobenius范数,也就是同位置元素相减后的平方和的平方根)
-
生成切割平面:如果误差 η(s∗)超过给定的阈值η,则生成一个新的线性约束(切割平面),将其添加到BLO问题中,以排除当前解。
-
迭代:重复求解BLO问题,并根据需要生成和添加新的切割平面,直到找到满足误差阈值的解。
-
返回结果:算法返回找到的支持集,这些支持集定义了稀疏主成分。
算法2:
算法步骤如下:
-
初始化:设置初始η值 η0和最优解的η值 η∗ 为较大的值。
-
迭代过程:进行多次迭代,每次迭代使用算法1来求解当前η值下的BLO问题。
-
更新η值:如果当前解的η值 ηt小于 η∗,并且当前解的函数值 f(ηt) 高于 η∗,则更新 η∗为 ηt,并减小η值以进行下一步迭代。
-
检查停止条件:如果经过λ次迭代后没有改进,或者达到预设的迭代次数,则停止迭代。
-
返回结果:算法返回找到的近似最优解的支持集 s∗,以及对应的η值 η∗和函数值 f(η*)。
相关文章:
论文阅读(一种新的稀疏PCA求解方式)Sparse PCA: A Geometric Approach
这是一篇来自JMLR的论文,论文主要关注稀疏主成分分析(Sparse PCA)的问题,提出了一种新颖的几何解法(GeoSPCA)。 该方法相比传统稀疏PCA的解法的优点:1)更容易找到全局最优ÿ…...
Chrome/Edge浏览器视频画中画可拉动进度条插件
目录 前言 一、Separate Window 忽略插件安装,直接使用 注意事项 插件缺点 1 .无置顶功能 2.保留原网页,但会刷新原网页 3.窗口不够美观 二、弹幕画中画播放器 三、失败的尝试 三、Potplayer播放器 总结 前言 平时看一些视频的时候ÿ…...
pg修炼之道学习笔记
一、数据库逻辑结构介绍 1、一个pg数据库服务下有多个db(多个数据库),当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库的内容(限制) 2、表索引:一…...
使用宝塔面板部署Django应用(不成功Kill Me!)
使用宝塔面板部署Django应用 文章目录 使用宝塔面板部署Django应用 本地操作宝塔面板部署可能部署失败的情况 本地操作 备份数据库 # 备份数据库 mysqldump -u root -p blog > blog.sql创建requirements # 创建requirements.txt pip freeze > requirements.txt将本项目…...
c++深拷贝、浅拷贝
在 C 中,深拷贝和浅拷贝是两个重要的概念,尤其在涉及动态内存分配和指针成员时。这两个概念描述了对象复制时的行为。 浅拷贝 浅拷贝是指复制对象时,仅复制对象的基本数据成员,对于指针成员,只复制指针地址ÿ…...
k8s核心组件
Master组件: kube-apiserver:用于暴露Kubernetes API,任何资源请求或调用操作都是通过kube-apiserver提供的接口进行。它是Kubernetes集群架构的大脑,负责接收所有请求,并根据用户的具体请求通知其他组件工作。etcd&am…...
反编译腾讯vmp
反编译腾讯vmp 继续学习的过程 多翻译几个vmp 学习 看看他们的是怎么编译的 写一个自己的vmp function __TENCENT_CHAOS_VM(U, T, g, D, j, E, K, w) {// U指令起点// T是指令list// g是函数this 或window对象// D是内部变量和栈}for (0; ;)try {for (var B !1; !B;) {let no…...
Ollama:本地部署大模型 + LobeChat:聊天界面 = 自己的ChatGPT
本地部署大模型 在本地部署大模型有多种方式,其中Ollama方式是最简单的,但是其也有一定的局限性,比如大模型没有其支持的GGUF二进制格式,就无法使用Ollama方式部署。 GGUF旨在实现快速加载和保存大语言模型,并易于阅读…...
JS中splice怎么使用
在JavaScript中,splice() 是一个数组方法,用于添加/删除项目,并返回被删除的项目。这个方法会改变原始数组。 splice() 方法的基本语法如下: array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) start(必…...
Flutter项目,Xcode15, 编译正常,但archive报错
错误提示 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/目录/Developer/Xcode/DerivedData/Runner-brgnkruocugbipaswyuwsjsnqkzm/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner…...
云动态摘要 2024-06-17
给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠,新用户1折起! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…...
【JavaScript脚本宇宙】图像处理新纪元:探索六大JavaScript图像处理库
揭开图像处理的奥秘:六款顶级JavaScript库详解 前言 在现代Web开发中,图像处理变得越来越重要。从图像比较到图像编辑,每个步骤都需要高效、强大的工具来完成。JavaScript生态系统为开发者提供了丰富的图像处理库,这些库不仅功能…...
使用python调ffmpeg命令将wav文件转为320kbps的mp3
320kbps竟然是mp3的最高采样率,有点低了吧。 import os import subprocessif __name__ __main__:work_dir "D:\\BaiduNetdiskDownload\\周杰伦黑胶\\魔杰座" fileNames os.listdir(work_dir)for filename in fileNames:pure_name, _ os.path.spli…...
程序启动 报错 no main manifest attribute
1、报错问题 未找到启动类 2、可能的原因 启动没加注解maven打包插件没有设置...
java-内部类 2
### 8. 内部类的访问规则和限制 #### 8.1 访问外部类的成员 内部类可以直接访问外部类的成员变量和方法,包括私有成员。例如: java class OuterClass { private String outerField "Outer field"; class InnerClass { void di…...
【小技巧】pycharm中自动换行的实现
pycharm如何自动换行 pycharm在setting里面设置自动化换行 具体步骤如下: (我这边用的版本为PyCharm 2023.3版本) 1、打开pycharm,选择“file”(文件) 2、选择“Setting“(设置)…...
如何修改倍福CX7000PLC IP地址
我们可以通过登录网页修改PLC的IP地址,这个需要我们知道PLC的初始IP地址 1、浏览器直接输入PLC 的IP地址 2、点击修改按钮(就是那个旋转) 修改IP地址前DHCP要先disable关闭 。 3、DHCP关闭 4、点击保存 5、在CAT3里搜索 在SYSTEM双击,之后点击搜索,具体过程可以参考下…...
python安装flask,flask框架,使用静态文件、模板、get和post请求
flask框架安装 pip install flask1.创建app.py文件 启动运行 # 导入Flask类 from flask import Flask#Flask类接收一个参数__name__ app Flask(__name__)# 装饰器的作用是将路由映射到视图函数index app.route(/) def index():return Hello World# Flask应用程序实例的run方…...
Docker:Harbor
目录 一、Harbor介绍 二、安装 Harbor 2.1 环境准备 2.2下载 Harbor 3.3 修改配置(可选) 3.4 启动 Harbor 3.5访问 Harbor 三、使用 Harbor 3.1 管理Harbor 一、Harbor介绍 Docker Harbor 是由 VMware 公司开源的一款企业级的 Docker Registry …...
2024 6.10~6.16 周报
一、上周工作 完成毕设 二、本周计划 吴恩达的机器学习、实验-回顾之前密集连接部分,调整损失函数 三、完成情况 3.1 机器学习的两种主要类型: 监督学习(supervised learning)(实际中使用最多的)&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
