最优化方法Python计算:有约束优化应用——线性Lasso回归预测器

实际应用中,特征维度 n n n通常远大于样本容量 m m m n ≪ m n\ll m nm),这种高维小样本场景下特征数据可能含有对标签数据 y i y_i yi的取值不必要的成分,甚至是噪声。此时,我们希望回归模型中的优化问题
{ minimize 1 2 ∥ F ( w ; X ) − y ∥ 2 2 s.t. w ∈ R p \begin{cases} \text{minimize}\quad\frac{1}{2}\lVert\boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})-\boldsymbol{y}\rVert_2^2\\ \text{s.t.}\quad\quad\quad\quad\boldsymbol{w}\in\text{R}^{p} \end{cases} {minimize21F(w;X)y22s.t.wRp
其中, p ≥ n p\geq n pn,的最优解 w 0 \boldsymbol{w}_0 w0稀疏的: w 0 \boldsymbol{w}_0 w0中对应冗余特征项的元素为0,即过滤掉那些噪声的影响。为此,需要在上述无约束优化问题中添加一个约束条件: w \boldsymbol{w} w所含非零元素最少(但并非全为零)。即
{ minimize 1 2 ∥ F ( w ; X ) − y ∥ 2 2 s.t. w 非零元素个数尽可能少 , w ∈ R p \begin{cases} \text{minimize}\quad\frac{1}{2}\lVert\boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})-\boldsymbol{y}\rVert_2^2\\ \text{s.t.}\quad\quad\quad\quad\boldsymbol{w}\text{非零元素个数尽可能少},\boldsymbol{w}\in\text{R}^{p} \end{cases} {minimize21F(w;X)y22s.t.w非零元素个数尽可能少,wRp
用度量向量“稀疏性”的伪范数 L 0 L_0 L0
∥ x ∥ 0 = ∑ i = 1 n { 1 , x i ≠ 0 0 , x i = 0 } . \lVert\boldsymbol{x}\rVert_0=\sum_{i=1}^n\left\{\begin{array}{ll} 1,&x_i\neq0\\ 0,&x_i=0\end{array}\right\}. x0=i=1n{1,0,xi=0xi=0}.
则上述优化问题等价第表示为:
{ minimize ∥ w ∥ 0 s.t. F ( w ; X ) = y . \begin{cases} \text{minimize}\quad\lVert\boldsymbol{w}\rVert_0\\ \text{s.t.}\quad\quad\quad\quad\boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})=\boldsymbol{y} \end{cases}. {minimizew0s.t.F(w;X)=y.
由于 ∥ ⋅ ∥ 0 \Vert\cdot\rVert_0 0非连续函数,故常用的优化问题解法很难解决上述问题。可以证明, L 1 L_1 L1范数 ∥ ⋅ ∥ 1 \Vert\cdot\rVert_1 1也可用于度量向量的稀疏性。即可用
{ minimize ∥ w ∥ 1 s.t. F ( w ; X ) = y \begin{cases} \text{minimize}\quad\lVert\boldsymbol{w}\rVert_1\\ \text{s.t.}\quad\quad\quad\quad\boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})=\boldsymbol{y} \end{cases} {minimizew1s.t.F(w;X)=y
得到回归模型的稀疏解。这是一个有等式约束的优化问题,可以通过将约束条件作为罚项,求解无约束优化问题
{ minimize ∥ w ∥ 1 + σ 1 2 ∥ F ( w ; X ) − y ∥ 2 2 s.t. w ∈ R p \begin{cases} \text{minimize}\quad\lVert\boldsymbol{w}\rVert_1+\sigma\frac{1}{2}\lVert\boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})-\boldsymbol{y}\rVert_2^2\\ \text{s.t.}\quad\quad\quad\quad\boldsymbol{w}\in\text{R}^p \end{cases} {minimizew1+σ21F(w;X)y22s.t.wRp
完成。这称为Lasso回归问题,若令 α = 1 σ \alpha=\frac{1}{\sigma} α=σ1,上述问题的目标函数等价于
obj ( w , α ) = 1 2 ∥ F ( w ; X ) − y ∥ 2 2 + α ∥ w ∥ 1 . \text{obj}(\boldsymbol{w},\alpha)=\frac{1}{2}\lVert \boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})-\boldsymbol{y}\rVert_2^2+\alpha\lVert\boldsymbol{w}\rVert_1. obj(w,α)=21F(w;X)y22+αw1.
σ → ∞ \sigma\rightarrow\infty σ当且仅当 α → 0 \alpha\rightarrow0 α0。而当 α = 0 \alpha=0 α=0时, arg ⁡ min ⁡ w ∈ R p obj ( w , 0 ) = arg ⁡ min ⁡ w ∈ R p 1 2 ∥ F ( w ; A ) − y ∥ 2 2 \arg\min\limits_{\boldsymbol{w}\in\text{R}^p}\text{obj}(\boldsymbol{w},0)=\arg\min\limits_{\boldsymbol{w}\in\text{R}^p}\frac{1}{2}\lVert F(\boldsymbol{w};\boldsymbol{A})-\boldsymbol{y}\rVert_2^2 argwRpminobj(w,0)=argwRpmin21F(w;A)y22。即Lasso回归退化为原回归问题,这显然不符合预期。因此,Lasso回归需要寻求合适的 0 < α < + ∞ 0<\alpha<+\infty 0<α<+,使得 w 0 = arg ⁡ min ⁡ w ∈ R p obj ( w , α ) \boldsymbol{w}_0=\arg\min\limits_{\boldsymbol{w}\in\text{R}^p}\text{obj}(\boldsymbol{w},\alpha) w0=argwRpminobj(w,α)为稀疏解。以式 1 2 ∥ F ( w ; X ) − y ∥ 2 2 + α ∥ w ∥ 1 \frac{1}{2}\lVert \boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})-\boldsymbol{y}\rVert_2^2+\alpha\lVert\boldsymbol{w}\rVert_1 21F(w;X)y22+αw1为目标函数的优化问题也称为 L 1 L_1 L1范数正则化模型,其中正则化参数 α \alpha α用来控制最优解 w 0 \boldsymbol{w}_0 w0的稀疏程度。当回归函数 F ( w ; X ) \boldsymbol{F}(\boldsymbol{w};\boldsymbol{X}) F(w;X)为线性函数 A w \boldsymbol{Aw} Aw,其中 A = ( X ⊤ , 1 ) \boldsymbol{A}=(\boldsymbol{X}^\top, \boldsymbol{1}) A=(X,1),此时 p = n + 1 p=n+1 p=n+1,称为线性Lasso回归。而当 F ( w ; X ) = 1 1 + e − A w \boldsymbol{F}(\boldsymbol{w};\boldsymbol{X})=\frac{1}{1+e^{-\boldsymbol{Aw}}} F(w;X)=1+eAw1时,称为逻辑Lasso回归。
下列代码实现线性Lasso回归模型。

import numpy as np										#导入numpy
class LineLassoModel(LineModel):						#线性lasso模型def obj(self,w):h = lambda x: np.linalg.norm(x, ord = 1)return super().obj(w) + self.alpha * h(w)
class LassoRegressor(Regression, LineLassoModel):		#线性Lasso回归预测器def __init__(self, alpha = 1.0):self.alpha = alphaself.tagVal = identity

程序中,

  • 第2~5行将LineLassoModel定义为LineModel(见博文《最优化方法Python计算:无约束优化应用——线性回归模型》)的子类,其中的第3~5行重载目标函数obj。第4行定义 L 1 L_1 L1范数函数 h ( x ) = ∥ x ∥ 1 h(\boldsymbol{x})=\lVert\boldsymbol{x}\rVert_1 h(x)=x1。注意,此处调用Numpy的norm函数,传递ord参数为1,计算一阶范数。
  • 第6~9行将线性Lasso回归预测器类LassoRegressor定义为Regression(见博文《最优化方法Python计算:无约束优化应用——线性回归预测器》)与LineLassoModel的子类。其中,第7~9行定义其构造函数__init__,第8行设置正则参数alpha,缺省值为1.0。第9行将标签值函数tagVal设置为恒等函数identity,已适用于回归预测。
    综合案例
    文件forestfires.csv(来自UC Irvine Machine Learning Repository)包含517条葡萄牙东北部地区蒙特西尼奥公园森林火灾的烧毁面积的数据记录。
XYmonthdayFFMCDMCDCISItempRHwindrainarea
75marfri86.226.294.35.18.2516.700
⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots
14septue91129.5692.6721.7382.200.43
⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots
76jultue93.1180.4430.81126.9285.4086.45
⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots
44augwed95.1141.3605.817.728.733400
⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots ⋯ \cdots
63novtue79.53106.71.111.8314.500

其中:

  • X - 蒙特西尼奥公园地图内的x轴空间坐标:1到9
  • Y - 蒙特西尼奥公园地图内的y轴空间坐标:2到9
  • month - 月份-一年中的月份:“jan”到“dec”
  • day - 一周中的某一天:“mon”到“sun”
  • FFMC - 来自快速预警系统的FFMC指数:18.7至96.20
  • DMC - 来自快速预警系统的DMC指数:1.1至291.3
  • DC - 来自快速预警系统的DC指数:7.9至860.6
  • ISI - 来自快速预警系统的ISI指数:0.0至56.10
  • temp - 摄氏度:2.2至33.30
  • RH - 相对湿度%{}:15.0至100
  • wind - 风速(公里/小时):0.40至9.40
  • rain - 室外雨,以毫米/平方米为单位:0.0至6.4
  • area - 森林被烧毁面积(以公顷为单位):0.00至1090.84
    以森林烧毁面积area作为标签,其余12个数据项作为样本特征,我们用线性回归来创建、训练和测试模型。下列代码完成计算
import numpy as np
data = np.loadtxt('forestfires.csv', delimiter=',',		#读取数据文件dtype=str, skiprows=1)				#跳过表头
X = np.array(data)										#转换为数组
Y = X[:, 12].astype(float)								#读取标签数据
X=np.delete(X, [12], axis = 1)
X1 = X[:, 2]											#读取月份列
X1 = np.array([0 if x == 'jan' else						#串转换为数值1 if x == 'feb' else2 if x == 'mar' else3 if x == 'apr' else4 if x == 'may' else5 if x == 'jun' else6 if x == 'jul' else7 if x == 'aug' else8 if x == 'sept' else9 if x == 'oct' else10 if x == 'nov' else11 for x in X1])
X[:, 2] = X1											#修改月份列
X1 = X[:, 3]											#读取星期列
X1 = np.array([0 if x == 'mon' else						#串转换为数值1 if x == 'tue' else2 if x == 'wed' else3 if x == 'thu' else4 if x == 'fri' else5 if x == 'sat' else6 for x in X1])
X[:, 3] = X1											#修改季节列
X = X.astype(float)										#所有数据转换为实数型
m, n = X.shape											#读取样本个数
print('共有%d个数据样本'%m)
a = np.arange(m)										#下标集
print('随机抽取%d个样本作为训练数据。'%(m // 2))
np.random.seed(7503)									#随机种子
train = np.random.choice(a, m // 2, replace = False)	#随机取得一半作为训练集下标
test = np.setdiff1d(a, train)							#测试集下标
print('LINE REGRESSION:')
forestfires = LinearRegressor()							#构造线性回归模型
forestfires.fit(X[train], Y[train])						#训练模型
coef, inte=forestfires.coef_inte()
print('系数:', coef)
print('截距:%.4f'%inte)
score=forestfires.score(X[test], Y[test])				#测试模型
print('对其余%d个样本数据测试,评估分:%.4f'%(m - m // 2, score))

程序的2~4行读取文件,转换为数组X。第5~6行分离出标签数据Y。第7~20行将month列的字串行转换为数值。第21~29行将day列的字串转换为数值。第30行将特征数据转换为浮点型。第31~37行从数据集的下标中随机选取一半作为训练集下标train,其余的作为测试集下标test。第39行创建线性回归模型LinearRegressor(见《最优化方法Python计算:无约束优化应用——线性回归预测器》)类对象forestfires。第40行调用forestfires的fit函数用X[train]和Y[train]训练forestfires。第44行调用forestfires的score函数用X[test]和Y[test]测试训练好的forestfires。运行程序,输出

共有517个数据样本
随机抽取258个样本作为训练数据。
LINE REGRESSION:
训练中...,稍候
20次迭代后完成训练。
系数: [ 1.2764 -0.2223  4.3442  1.5441  0.2316  0.1098 -0.0589 -1.2177  1.0874-0.2069  1.4681 -9.0991]
截距:-36.2409
对其余259个样本数据测试,评估分:0.0248

意为用线性回归模型计算本问题,经20次迭代训练所得模型的测试评分为0.0248>0,属正常回归。接下来,我们对相同的训练集和测试集训练和测试一个Lasso回归模型。

……
print('LASSO REGRESSION:')
forestfires=LassoRegressor(alpha=0.035)		#构造Lasso回归模型
forestfires.fit(X[train], Y[train])			#训练模型
coef, inte=forestfires.coef_inte()
print('系数:',coef)
print('截距:%.4f'%inte)
score=forestfires.score(X[test], Y[test])	#测试模型
print('对其余%d个样本数据测试,评估分:%.4f'%(m - m // 2, score))

紧接前一程序,本程序第1行的省略号即表示前一程序的代码。第2行创建Lasso回归模型LassoRegressor(程序8.3第2行导入)类对象forestfires。第3行调用forestfires的fit函数用X[train]和Y[train]训练forestfires,注意传递给表示正则化参数 α \alpha α的参数alpha的值为0.035。第7行调用forestfires的score函数用X[test]和Y[test]测试forestfires。运行程序,输出

……
LASSO REGRESSION:
训练中...,稍候
39次迭代后完成训练。
系数: [ 6.9598e-03  9.8288e-11  2.5677e-02  8.2371e-03 -9.7036e-09  1.9184e-02-2.4566e-02 -1.6390e-02  1.6269e-02 -2.0274e-02  5.5864e-03 -1.1389e-08-5.0886e-04]
截距:-0.5551
对其余259个样本数据测试,评估分:0.0260

所得模型的评分与线性回归模型的相差无几。现在我们观察Lasso回归模型训练所得的拟合函数系数,其中有若干个的绝对值小于 1 0 − 4 10^{-4} 104,这意味着这些系数对应的特征数据项对标签数据并无贡献。删掉这些数据项,用筛选后的数据集再次训练、测试线性回归模型。

……
a=np.where(np.abs(coef)<1e-4)[0]			#绝对值小于1/10000的系数下标
print('LASSO回归绝对值小于1/10000的系数下标:%s'%a)
X = np.delete(X,a,axis = 1)					#删除对应特征数据列
print('LINE REGRESSION:')
forestfires = LinearRegressor()				#创建线性回归模型
forestfires.fit(X[train], Y[train])			#训练模型
coef, inte = forestfires.coef_inte()
print('系数:%s'%coef)
print('截距:%.4f'%inte)
score=forestfires.score(X[test], Y[test])	#测试模型
print('对其余%d个样本数据测试,评估分:%.4f'%(m - m // 2, score))

紧接前一程序,本程序第1行的省略号表示前两个程序的代码。第2行调用numpy的where函数计算Lasso回归模型的系数数组coef中绝对值小于 1 0 − 4 10^{-4} 104的元素下标,赋予a。第4行调用numpy的delete函数删除特征数据集X中对应a的数据列。第6行创建线性回归模型类对象forestfires。第7行训练forestfires。第11行测试forestfires。运行程序,输出

……
LASSO回归绝对值小于1/10000的系数下标:[ 1  4 11]
LINE REGRESSION:
训练中...,稍候
18次迭代后完成训练。
系数:[ 1.1912  4.4249  1.5407  0.115  -0.06   -1.08    1.0462 -0.24    1.2875]
截距:-14.7009
对其余259个样本数据测试,评估分:0.0302

这意味着特征数据项Y(地图的y坐标)、预警系统的FFMC指数及下雨量rain对应的Lasso回归系数接近零。删除X的这3项数据后,用X[train]和Y[train]经18次迭代训练所得模型对X[test]和Y[test]作测试的评分为0.0302,比原数据(未删除Y、FFMC、rain数据)迭代20次所得模型测试评分0.0248还略有改善。

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

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

相关文章

如何为APP应用程序选择合适的服务器

搭建一个成功的APP应用程序&#xff0c;服务器选择是至关重要的决策之一。合适的服务器不仅能确保应用流畅运行&#xff0c;还能节省成本并保障安全性。本文将为您详细解析如何为APP选择最佳服务器方案。 一、了解您的APP需求 在选择服务器前&#xff0c;首先需要明确您的应用…

k8s(11) — 探针和钩子

钩子和探针的区别&#xff1a; 在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;钩子&#xff08;Hooks&#xff09;和探针&#xff08;Probes&#xff09;是保障应用稳定运行的重要机制&#xff0c;不过它们的用途和工作方式存在差异&#xff0c;以下为你详细介绍&…

Kafka消息队列之 【消费者分组】 详解

消费者分组(Consumer Group)是 Kafka 提供的一种强大的消息消费机制,它允许多个消费者协同工作,共同消费一个或多个主题的消息,从而实现高吞吐量、可扩展性和容错性。 基本概念 消费者分组:一组消费者实例的集合,这些消费者实例共同订阅一个或多个主题,并通过分组来协调…

什么是Blender?怎么获取下载Blender格式文件模型

glbxz.com glbxz.com 官方可以下载Blender格式文件模型 BlenderBlender 是一个免费的开源程序&#xff0c;用于建模和动画&#xff0c;最初由一家名为 Neo Geo 的动画工作室作为内部应用程序开发&#xff0c;后来作为自己的程序发布。这是一个称职的程序&#xff0c;近年来由于…

IC ATE集成电路测试学习——PLL测试(一)

PLL测试 什么是PLL&#xff1f; PLL Phase-Locked Loop&#xff08;锁相环&#xff09;它的作用就是&#xff1a;把低速、稳定的外部时钟&#xff0c;转换成芯片内部需要的高速时钟。 PLL的作用 我们知道&#xff0c;芯片的内部不同的模块&#xff0c;很可能用的不是一个频…

ReaRAG:教 AI 思考、搜索和自我纠正以获得事实准确答案(含git实现)

推理模型&#xff08;LRMs&#xff09;的发展取得了显著进展&#xff0c;展现出强大的推理能力&#xff0c;能在复杂任务中表现出色。然而&#xff0c;这些模型在多跳问答&#xff08;QA&#xff09;任务中仍面临挑战&#xff0c;主要归因于其对参数化知识的依赖&#xff0c;导…

第2章——springboot核心机制

一、为何以继承方式引入SpringBoot 1.提出疑问 以前我们在开发项目时&#xff0c;需要什么&#xff0c;引入对应的依赖就行&#xff0c;比如我们需要连接mysql数据&#xff0c;则引入mysql驱动的依赖&#xff0c;如下&#xff1a; <dependency><groupId>com.mys…

网络接入服务商查询

要查询网站的 网络接入服务商&#xff08;即网站服务器托管或接入的ISP公司&#xff09;&#xff0c;可以通过以下方法进行查询&#xff1a; 方法1&#xff1a;通过IP地址查询 步骤1&#xff1a;获取网站IP 使用 ping 命令&#xff1a; ping example.com 返回的IP地址即为服务…

超详细!RxSwift 中的 BehaviorRelay 使用教程(含原理 + 示例 + 实战)

目录 前言 1.什么是 BehaviorRelay 2.基本使用方式 3.BehaviorRelay的常用API 4.BehaviorRelay 和其它类型的对比 5.BehaviorRelay的使用场景 1.绑定UITableView 2.MVVM 场景下使用 BehaviorRelay 6.使用注意事项以及建议 1.注意事项 2.使用建议总结 7.推荐阅读 前…

vue-grid-layout实现拖拽修改工作台布局

效果图 vue-grid-layout 文档地址&#xff1a;vue-grid-layout 官网介绍&#xff1a; 使用 // 安装&#xff1a; npm install vue-grid-layout --save// 引用&#xff1a; import { GridLayout, GridItem } from vue-grid-layout// 注册&#xff1a; components:{ GridLay…

windows使用bat脚本激活conda环境

本文不生产技术&#xff0c;只做技术的搬运工&#xff01;&#xff01;&#xff01; 前言 最近需要在windows上使用批处理脚本执行一些python任务&#xff0c;但是被自动激活conda环境给卡住了&#xff0c;研究了一下解决方案 解决方案 call your_conda_path\Scripts\activa…

u-boot学习笔记(四)

文章目录 cmd/sub_cmd/exit.cdo_exit()exit.c可提供的命令及使用方式&#xff1a; ext2.cdo_ext2ls()do_ext2load()ext2.c可提供的命令及使用方式&#xff1a; ext4.cdo_ext4_size()do_ext4_load()do_ext4_ls()do_ext4_write()ext4.c可提供的命令及使用方式&#xff1a; fastbo…

OpenCV 图形API(80)图像与通道拼接函数-----仿射变换函数warpAffine()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对图像应用仿射变换。 函数 warpAffine 使用指定的矩阵对源图像进行变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 , M 21 x M…

《React Native热更新实战:用Pushy打造无缝升级体验》

《React Native热更新实战:用Pushy打造应用“空中加油”,实现无缝升级体验》 写在前面:当你的APP需要"空中加油"时… 想象一下这样的场景:凌晨2点,你的React Native应用刚上线就爆出重大BUG,用户差评如潮水般涌来,应用商店审核至少需要3天…此刻你多么希望能…

《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》

React Native和Flutter作为当下热门的跨平台开发框架&#xff0c;在社交应用开发领域各显神通。今天&#xff0c;我们深入探索它们在高可用架构中的部署与容灾策略。 React Native凭借其独特优势&#xff0c;在社交应用开发中拥有一席之地。它基于JavaScript和React&#xff0…

网络靶场基础知识

一、网络靶场的核心概念 网络靶场&#xff08;Cyber Range&#xff09;是一种基于虚拟化和仿真技术的网络安全训练与测试平台&#xff0c;通过模拟真实网络环境和业务场景&#xff0c;为攻防演练、漏洞验证、安全测试和人才培养提供安全可控的实验空间。其核心目标是通过“虚实…

AutoGen 框架解析:微软开源的多人 Agent 协作新范式

一、引言 在大语言模型&#xff08;LLM&#xff09;快速发展的今天&#xff0c;复杂任务的自动化协作需求日益增长。微软开源的AutoGen 框架&#xff08;GitHub Star 超 10 万&#xff09;提供了一种基于多智能体对话的协作范式&#xff0c;通过自然语言交互实现多角色 Agent …

极简远程革命:节点小宝 — 无公网IP的极速内网穿透远程解决方案

极简远程革命&#xff1a;节点小宝&#xff0c;让家庭与职场无缝互联 ——打破公网桎梏&#xff0c;重塑数字生活新体验 关键词&#xff1a;节点小宝&#xff5c;内网穿透&#xff5c;P2P直连&#xff5c;家庭网络&#xff5c;企业协作&#xff5c;智能组网节点小宝&#xff5…

【MySQL】存储引擎 - CSV详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

云原生安全治理体系建设全解:挑战、框架与落地路径

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:云原生环境下,安全治理正在被重构 在传统IT架构中,安全防护多依赖边界设备(如防火墙、WAF、堡垒机)进行集中式防护。然而,在云原生环境下,这种“边界式”安全模型正面临颠覆。 应用微服务化…