邏輯回歸:損失和正則化技術的深入研究

邏輯回歸:損失和正則化技術的深入研究

引言

邏輯回歸是一種廣泛應用于分類問題的統計模型,尤其在機器學習領域中占據著重要的地位。盡管其名稱中包含"回歸",但邏輯回歸本質上是一種分類算法。它的核心思想是在線性回歸的基礎上添加一個Sigmoid函數,將線性回歸的輸出映射到[0,1]區間,從而將連續值問題轉換為概率分類問題[1]。
邏輯回歸模型的訓練過程與線性回歸有兩個關鍵區別:損失函數的選擇和正則化的應用。本研究報告將深入探討這兩個方面,幫助讀者理解邏輯回歸模型的工作原理及其優化方法。

損失函數

邏輯回歸與線性回歸的損失函數差異

在線性回歸中,我們通常使用平方損失函數(也稱為L2損失函數)作為損失函數。平方損失函數計算預測值與實際值之間的平方差:
Loss = 1 2 ( y predicted ? y actual ) 2 \text{Loss} = \frac{1}{2}(y_{\text{predicted}} - y_{\text{actual}})^2 Loss=21?(ypredicted??yactual?)2
其中, y predicted y_{\text{predicted}} ypredicted?是模型的預測值, y actual y_{\text{actual}} yactual?是實際值。
然而,在邏輯回歸中,我們使用對數損失函數(也稱為交叉熵損失)作為損失函數。對數損失函數的計算公式為:
Loss = ? 1 m ∑ i = 1 m [ y i log ? ( y ^ i ) + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log(\hat{y}_i) + (1 - y_i)\log(1 - \hat{y}_i)] Loss=?m1?i=1m?[yi?log(y^?i?)+(1?yi?)log(1?y^?i?)]
其中:

  • m m m是樣本數量
  • y i y_i yi?是第 i i i個樣本的真實標簽(0或1)
  • y ^ i \hat{y}_i y^?i?是模型對第 i i i個樣本的預測概率
    對數損失函數在邏輯回歸中的應用有以下幾個原因:
  1. 處理概率輸出:由于邏輯回歸的輸出是概率(范圍在0到1之間),對數損失函數可以有效地衡量預測概率與真實標簽之間的差異。
  2. 解決梯度下降問題:在線性回歸中,使用平方損失函數在梯度下降過程中可能會遇到梯度消失或梯度爆炸的問題。而對數損失函數可以提供更穩定的梯度。
  3. 處理類別不平衡:在類別不平衡的數據集中,對數損失函數可以給予少數類更多的權重,從而提高模型的性能。

對數損失函數的數學推導

對數損失函數的推導基于最大似然估計。假設我們有一個二分類問題,其中每個樣本 i i i都有一個特征向量 x i x_i xi?和一個標簽 y i y_i yi?(0或1)。邏輯回歸模型的預測概率可以表示為:
y ^ i = P ( y i = 1 ∣ x i ) = σ ( w T x i + b ) \hat{y}_i = P(y_i=1|x_i) = \sigma(w^T x_i + b) y^?i?=P(yi?=1∣xi?)=σ(wTxi?+b)
其中, σ \sigma σ是Sigmoid函數, w w w是權重向量, b b b是偏置項。
根據二項分布的似然函數,我們可以寫出所有樣本的似然函數:
L ( w , b ) = ∏ i = 1 m P ( y i ∣ x i ; w , b ) = ∏ i = 1 m y ^ i y i ( 1 ? y ^ i ) 1 ? y i L(w, b) = \prod_{i=1}^{m} P(y_i|x_i; w, b) = \prod_{i=1}^{m} \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i} L(w,b)=i=1m?P(yi?xi?;w,b)=i=1m?y^?iyi??(1?y^?i?)1?yi?
為了最大化似然函數,我們通常會取對數,得到對數似然函數:
log ? L ( w , b ) = ∑ i = 1 m [ y i log ? y ^ i + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] \log L(w, b) = \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] logL(w,b)=i=1m?[yi?logy^?i?+(1?yi?)log(1?y^?i?)]
最大化對數似然函數等價于最小化負的對數似然函數,即對數損失函數:
Loss = ? 1 m ∑ i = 1 m [ y i log ? y ^ i + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] Loss=?m1?i=1m?[yi?logy^?i?+(1?yi?)log(1?y^?i?)]

對數損失函數的梯度計算

為了使用梯度下降算法優化邏輯回歸模型,我們需要計算對數損失函數對權重 w w w和偏置 b b b的梯度。
假設模型的輸出為:
y ^ = σ ( w T x + b ) \hat{y} = \sigma(w^T x + b) y^?=σ(wTx+b)
其中, σ ( a ) = 1 1 + e ? a \sigma(a) = \frac{1}{1 + e^{-a}} σ(a)=1+e?a1?
那么,對數損失函數對權重 w w w的梯度為:
? Loss ? w = 1 m ∑ i = 1 m ( y ^ i ? y i ) x i \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i ?w?Loss?=m1?i=1m?(y^?i??yi?)xi?
對偏置 b b b的梯度為:
? Loss ? b = 1 m ∑ i = 1 m ( y ^ i ? y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ?b?Loss?=m1?i=1m?(y^?i??yi?)
這些梯度可以直接用于梯度下降算法來更新權重和偏置。

正則化

正則化的必要性

在邏輯回歸中,正則化是防止過擬合的重要手段。過擬合是指模型在訓練數據上表現很好,但在測試數據上表現不佳的現象。正則化通過降低模型的復雜度來提高其泛化能力。
邏輯回歸模型的損失函數通常會添加一個正則化項:
Loss = 對數損失 + λ ? 正則化項 \text{Loss} = \text{對數損失} + \lambda \cdot \text{正則化項} Loss=對數損失+λ?正則化項
其中, λ \lambda λ是正則化系數,控制正則化項的強度。

L2正則化

L2正則化(也稱為Ridge正則化)是最常用的正則化方法之一。在L2正則化中,正則化項是權重向量的L2范數的平方:
正則化項 = 1 2 ∥ w ∥ 2 2 = 1 2 ∑ j = 1 n w j 2 \text{正則化項} = \frac{1}{2} \|w\|^2_2 = \frac{1}{2} \sum_{j=1}^{n} w_j^2 正則化項=21?w22?=21?j=1n?wj2?
其中, n n n是特征的數量, w j w_j wj?是第 j j j個特征的權重。
L2正則化的損失函數可以表示為:
Loss = ? 1 m ∑ i = 1 m [ y i log ? y ^ i + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] + λ ? 1 2 ∑ j = 1 n w j 2 \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot \frac{1}{2} \sum_{j=1}^{n} w_j^2 Loss=?m1?i=1m?[yi?logy^?i?+(1?yi?)log(1?y^?i?)]+λ?21?j=1n?wj2?
L2正則化的梯度計算如下:
對權重 w w w的梯度:
? Loss ? w = 1 m ∑ i = 1 m ( y ^ i ? y i ) x i + λ w \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i + \lambda w ?w?Loss?=m1?i=1m?(y^?i??yi?)xi?+λw
對偏置 b b b的梯度:
? Loss ? b = 1 m ∑ i = 1 m ( y ^ i ? y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ?b?Loss?=m1?i=1m?(y^?i??yi?)
L2正則化的效果是通過增加權重的平方和來懲罰模型的復雜度,從而使得權重向量的長度被限制在一個較小的范圍內。這有助于防止模型對訓練數據過于敏感,從而提高其泛化能力。

L1正則化

L1正則化(也稱為Lasso正則化)是另一種常用的正則化方法。在L1正則化中,正則化項是權重向量的L1范數:
正則化項 = ∥ w ∥ 1 = ∑ j = 1 n ∣ w j ∣ \text{正則化項} = \|w\|_1 = \sum_{j=1}^{n} |w_j| 正則化項=w1?=j=1n?wj?
L1正則化的損失函數可以表示為:
Loss = ? 1 m ∑ i = 1 m [ y i log ? y ^ i + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] + λ ? ∑ j = 1 n ∣ w j ∣ \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot \sum_{j=1}^{n} |w_j| Loss=?m1?i=1m?[yi?logy^?i?+(1?yi?)log(1?y^?i?)]+λ?j=1n?wj?
L1正則化的梯度計算如下:
對權重 w w w的梯度:
? Loss ? w = 1 m ∑ i = 1 m ( y ^ i ? y i ) x i + λ ? sign ( w ) \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i + \lambda \cdot \text{sign}(w) ?w?Loss?=m1?i=1m?(y^?i??yi?)xi?+λ?sign(w)
其中, sign ( w ) \text{sign}(w) sign(w)是權重向量的符號函數,即:
sign ( w j ) = { 1 , w j > 0 ? 1 , w j < 0 0 , w j = 0 \text{sign}(w_j) = \begin{cases} 1, & w_j > 0 \\ -1, & w_j < 0 \\ 0, & w_j = 0 \end{cases} sign(wj?)=? ? ??1,?1,0,?wj?>0wj?<0wj?=0?
對偏置 b b b的梯度:
? Loss ? b = 1 m ∑ i = 1 m ( y ^ i ? y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ?b?Loss?=m1?i=1m?(y^?i??yi?)
L1正則化的一個重要特點是它可以產生稀疏權重向量,即一些權重會變成零。這有助于特征選擇,因為權重為零的特征可以被排除在模型之外。

彈性網絡正則化

彈性網絡正則化是L1和L2正則化的結合。它的正則化項可以表示為:
正則化項 = α ∥ w ∥ 1 + ( 1 ? α ) ? 1 2 ∥ w ∥ 2 2 \text{正則化項} = \alpha \|w\|_1 + (1 - \alpha) \cdot \frac{1}{2} \|w\|^2_2 正則化項=αw1?+(1?α)?21?w22?
其中, α \alpha α是介于0和1之間的參數,控制L1和L2正則化的相對強度。
彈性網絡正則化的損失函數可以表示為:
Loss = ? 1 m ∑ i = 1 m [ y i log ? y ^ i + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] + λ ? [ α ∥ w ∥ 1 + ( 1 ? α ) ? 1 2 ∥ w ∥ 2 2 ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot [\alpha \|w\|_1 + (1 - \alpha) \cdot \frac{1}{2} \|w\|^2_2] Loss=?m1?i=1m?[yi?logy^?i?+(1?yi?)log(1?y^?i?)]+λ?[αw1?+(1?α)?21?w22?]
彈性網絡正則化結合了L1和L2正則化的優點。它不僅可以產生稀疏權重向量,還可以處理特征之間的相關性問題。

早停法

早停法是另一種防止過擬合的方法。它通過監控模型在驗證集上的性能來決定何時停止訓練。具體來說,當模型在驗證集上的性能連續若干個epoch沒有改善時,訓練過程就會被停止。
早停法的實現通常包括以下步驟:

  1. 將訓練數據集劃分為訓練集和驗證集。
  2. 在每個epoch結束時,計算模型在驗證集上的損失或準確率。
  3. 如果模型在驗證集上的性能連續若干個epoch沒有改善,就停止訓練過程。
    早停法的一個重要參數是"耐心"(patience),它表示在停止訓練之前等待的epoch數量。耐心的值可以根據具體問題進行調整。
    早停法的優點是它可以防止模型過度擬合訓練數據,同時充分利用訓練數據中的信息。此外,早停法還可以作為正則化的一種形式,因為它限制了模型的訓練步驟。

實際應用中的考慮因素

特征縮放

在邏輯回歸中,特征縮放(也稱為特征歸一化)是一個重要的考慮因素。由于邏輯回歸使用梯度下降算法來優化權重,特征的尺度可能會影響算法的收斂速度。
常見的特征縮放方法包括:

  1. 標準化:將每個特征減去其均值并除以其標準差,使得特征的均值為0,標準差為1。
  2. 歸一化:將每個特征縮放到[0,1]范圍內,通過減去最小值并除以最大值與最小值的差。
    在邏輯回歸中,特征縮放可以加速梯度下降算法的收斂,同時也可以提高模型的性能。

處理類別不平衡

在實際應用中,數據集可能存在類別不平衡的問題,即一個類別的樣本數量遠多于另一個類別。這會導致邏輯回歸模型偏向于多數類,從而降低模型的性能。
處理類別不平衡的方法包括:

  1. 重新采樣:通過過采樣少數類或欠采樣多數類來平衡類別分布。
  2. 調整類別權重:在損失函數中為少數類賦予更高的權重。
  3. 使用不同的評估指標:例如精確率、召回率、F1分數等,而不是僅僅依賴準確率。
    在邏輯回歸中,可以使用class_weight參數來調整類別權重。例如,在scikit-learn的邏輯回歸實現中,可以設置class_weight='balanced'來自動調整類別權重。

處理多分類問題

邏輯回歸本質上是用于二分類問題的,但可以通過多種方法將其擴展到多分類問題。
常見的多分類方法包括:

  1. 一對多(One-vs-All):將多分類問題分解為多個二分類問題,每個二分類問題對應一個類別與其他類別的比較。
  2. 一對一(One-vs-One):將多分類問題分解為多個二分類問題,每個二分類問題對應兩個類別之間的比較。
  3. ** softmax回歸**:在邏輯回歸的基礎上,使用softmax函數將輸出轉換為概率分布。
    在scikit-learn中,邏輯回歸默認使用一對多方法來處理多分類問題。

超參數調優

邏輯回歸模型有幾個重要的超參數需要調優,包括:

  1. 正則化系數(C):在scikit-learn中,C是正則化強度的倒數。較小的C表示更強的正則化。
  2. 求解器(solver):不同的求解器適用于不同的場景。例如,'lbfgs’適用于小數據集,'sag’和’saga’適用于大數據集。
  3. 最大迭代次數(max_iter):控制算法的最大迭代次數。
  4. 學習率(learning_rate):在’sgd’求解器中使用,控制每一步的更新幅度。
    超參數調優可以通過網格搜索(Grid Search)或隨機搜索(Random Search)來實現。在scikit-learn中,可以使用GridSearchCVRandomizedSearchCV來完成這一任務。

Python實例

以下是一個完整的Python實例,展示了如何使用scikit-learn庫實現邏輯回歸模型,并應用對數損失函數和正則化技術。

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 加載Iris數據集
data = load_iris()
X = data.data
y = data.target
# 將數據集劃分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 創建邏輯回歸模型
model = LogisticRegression(solver='saga', max_iter=1000, random_state=42)
# 訓練模型
model.fit(X_train, y_train)
# 預測測試集
y_pred = model.predict(X_test)
# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
# 打印混淆矩陣
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
# 打印分類報告
print("Classification Report:")
print(classification_report(y_test, y_pred))
# 應用L2正則化
model_l2 = LogisticRegression(solver='lbfgs', max_iter=1000, random_state=42, C=0.1)
model_l2.fit(X_train, y_train)
y_pred_l2 = model_l2.predict(X_test)
accuracy_l2 = accuracy_score(y_test, y_pred_l2)
print(f"Accuracy with L2 Regularization: {accuracy_l2:.2f}")
# 使用GridSearchCV進行超參數調優
param_grid = {'C': [0.01, 0.1, 1, 10, 100], 'solver': ['lbfgs', 'saga']}
grid_search = GridSearchCV(LogisticRegression(max_iter=1000, random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 獲取最佳模型
best_model = grid_search.best_estimator_
# 預測測試集
y_pred_best = best_model.predict(X_test)
# 計算準確率
accuracy_best = accuracy_score(y_test, y_pred_best)
print(f"Accuracy with Best Parameters: {accuracy_best:.2f}")
# 打印最佳參數
print("Best Parameters:")
print(grid_search.best_params_)

結論

邏輯回歸是一種強大的分類算法,其損失函數和正則化技術是模型性能的關鍵因素。通過對數損失函數,邏輯回歸可以有效地處理概率輸出,并提供穩定的梯度。通過正則化技術,邏輯回歸可以防止過擬合,提高模型的泛化能力。
在實際應用中,我們需要根據具體問題選擇合適的正則化方法、調整超參數,并處理數據集中的不平衡問題。通過合理的模型設計和參數調整,邏輯回歸可以成為解決分類問題的有效工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78103.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型面經 | 介紹一下CLIP和BLIP

大家好,我是皮先生!! 今天給大家分享一些關于大模型面試常見的面試題,希望對大家的面試有所幫助。 往期回顧: 大模型面經 | 春招、秋招算法面試常考八股文附答案(RAG專題一) 大模型面經 | 春招、秋招算法面試常考八股文附答案(RAG專題二) 大模型面經 | 春招、秋招算法…

【MCP】第二篇:IDE革命——用MCP構建下一代智能工具鏈

【MCP】第二篇&#xff1a;IDE革命——用MCP構建下一代智能工具鏈 一、引言二、IDE集成MCP2.1 VSCode2.1.1 安裝VSCode2.1.2 安裝Cline2.1.3 配置Cline2.1.4 環境準備2.1.5 安裝MCP服務器2.1.5.1 自動安裝2.1.5.2 手動安裝 2.2 Trae CN2.2.1 安裝Trae CN2.2.2 Cline使用2.2.3 內…

【新能源科學與技術】MATALB/Simulink小白教程(一)實驗文檔【新能源電力轉換與控制仿真】

DP讀書&#xff1a;新能源科學與工程——專業課「新能源發電系統」 2025a 版本 MATLAB下面進入正題 仿真一&#xff1a;Buck 電路一、仿真目的二、仿真內容&#xff08;一&#xff09;Buck電路基本構成及工作原理&#xff08;二&#xff09;Buck電路仿真模型及元件連接&#xf…

BootStrap:首頁排版(其一)

今天我要介紹的是在BootStrap中有關于首頁排版的內容知識點&#xff0c;即&#xff08;模態框&#xff0c;選項卡&#xff09;。 模態框&#xff1a; 模態框經過了優化&#xff0c;更加靈活&#xff0c;以彈出對話框的形式出現&#xff0c;具有最小和最實用的功能集。 在運行…

Spring Data

目錄 一、Spring Data 簡介與生態概覽 什么是 Spring Data&#xff1f; Spring Data 與 Spring Data JPA 的關系 Spring Data 家族&#xff1a;JPA、MongoDB、Redis、Elasticsearch、JDBC、R2DBC…… 與 MyBatis 的本質差異&#xff08;ORM vs SQL 顯式控制&#xff09; 二…

建筑末端配電回路用電安全解決方案

一、電氣火災的嚴峻現狀 根據國家應急管理部消防救援局的數據&#xff0c;電氣火災長期占據各類火災原因之首&#xff0c;2021年占比高達50.4%。其中&#xff0c;末端配電回路因保護不足、監測手段落后&#xff0c;成為火災高發隱患點。私拉電線、線路老化、接觸不良、過載等問…

華為開發崗暑期實習筆試(2025年4月16日)

刷題小記&#xff1a; 第一題懷疑測試樣例不完整&#xff0c;貪心法不應該能夠解決該題。第二題使用0-1BFS解決單源最短路徑的問題&#xff0c;往往搭配雙端隊列實現。第三題是運用動態規劃解決最大不重疊子區間個數的問題&#xff0c;難點在于滿足3重判斷規則&#xff0c;所需…

Rust: 從內存地址信息看內存布局

內存布局其實有幾個&#xff1a;address&#xff08;地址&#xff09;、size&#xff08;大小&#xff09;、alignment&#xff08;對齊位數&#xff0c;2 的自然數次冪&#xff0c;2&#xff0c;4&#xff0c;8…&#xff09;。 今天主要從address來看內存的布局。 說明&…

每日一題算法——兩個數組的交集

兩個數組的交集 力扣題目鏈接 我的解法&#xff1a;利用數組下標。 缺點&#xff1a;當取值范圍很大時&#xff0c;浪費空間。 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {int count1[1001]{0…

c++ 互斥鎖

為練習c 線程同步&#xff0c;做了LeeCode 1114題. 按序打印&#xff1a; 給你一個類&#xff1a; public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("third"…

山東大學軟件學院創新項目實訓開發日志(20)之中醫知識問答自動生成對話標題bug修改

在原代碼中存在一個bug&#xff1a;當前對話的標題不是現有對話的用戶的第一段的前幾個字&#xff0c;而是歷史對話的第一段的前幾個字。 這是生成標題的邏輯出了錯誤&#xff1a; 當改成size()-1即可

WSL2-Ubuntu22.04下拉取Docker MongoDB鏡像并啟動

若未安裝docker可參考此教程&#xff1a;可以直接在wsl上安裝docker嗎&#xff0c;而不是安裝docker desktop&#xff1f;-CSDN博客 1. 拉取鏡像 docker pull mongo:latest 2.打開網絡加速&#xff0c;再次拉取鏡像 3.創建docker-compose.yml 進入vim編輯器后輸入i進行編輯&a…

中通 Redis 集群從 VM 遷移至 PVE:技術差異、PVE 優劣勢及應用場景深度解析

在數字化轉型浪潮下&#xff0c;企業對服務器資源的高效利用與成本控制愈發重視。近期&#xff0c;中通快遞將服務器上的 Redis 集群服務從 VM&#xff08;VMware 虛擬化技術&#xff09;遷移至 PVE&#xff08;Proxmox VE&#xff09;&#xff0c;這一技術舉措引發了行業廣泛關…

Prometheus+Grafana實時監控系統各項指標

一、監控架構設計 核心組件與數據流 Prometheus&#xff1a;時序數據采集、存儲與告警規則管理Node Exporter&#xff1a;采集主機指標&#xff08;CPU、內存、磁盤、網絡等&#xff09;數據庫Exporter&#xff1a;如 mysqld_exporter、postgres_exporterGrafana&#xff1a;…

[密碼學基礎]GMT 0029-2014簽名驗簽服務器技術規范深度解析

GMT 0029-2014簽名驗簽服務器技術規范深度解析 引言 在數字化轉型和網絡安全需求激增的背景下&#xff0c;密碼技術成為保障數據完整性與身份認證的核心手段。中國密碼管理局發布的GMT 0029-2014《簽名驗簽服務器技術規范》&#xff0c;為簽名驗簽服務器的設計、開發與部署提…

多路轉接select服務器

目錄 select函數原型 select服務器 select的缺點 前面介紹過多路轉接就是能同時等待多個文件描述符&#xff0c;這篇文章介紹一下多路轉接方案中的select的使用 select函數原型 #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds, f…

QT6 源(45):分隔條 QSplitter 允許程序的用戶修改布局,程序員使用 IDE時,就是分隔條的用戶,以及其 QSplitter 源代碼

&#xff08;1&#xff09; &#xff08;2&#xff09;本類的繼承關系如下&#xff0c;所以說分隔條屬于容器&#xff1a; &#xff08;3&#xff09;本類的屬性&#xff1a; &#xff08;4&#xff09; 這是一份 QSplitter 的舉例代碼&#xff0c;注意其構造函數時候的傳參&am…

VSCode PIO使用Jlink SWD燒錄Stm32

一、背景 PIO的編譯速度比Arduino快很多&#xff0c;同樣支持Arduino的語法。VScode的自動補全和插件也能夠幫助快速開發目前使用JLINK SWD的方式連接STM32 二、配置 在ini配置文件中&#xff0c;添加如下內容 [env:genericSTM32F103C8] platform ststm32 board genericS…

JavaScript 渲染內容爬取:Puppeteer 入門

在現代網絡應用中&#xff0c;許多網頁內容是通過 JavaScript 渲染生成的&#xff0c;傳統的爬蟲工具往往難以獲取這些動態內容。Puppeteer 作為一種強大的瀏覽器自動化工具&#xff0c;為這一問題提供了優雅的解決方案。本文將帶你入門 Puppeteer&#xff0c;介紹如何安裝、啟…

卷積神經網絡:視覺煉金術士的數學魔法

引言&#xff1a;當數學遇見視覺煉金術 在人工智能的奇幻世界里&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;猶如掌握視覺奧秘的煉金術士&#xff0c;將原始像素的"鉛塊"淬煉成認知的"黃金"。這種融合數學嚴謹性與生物靈感的算法架構&#xff0c…